AULA - Representação de Algoritmos. Constantes, Variáveis e Expressões.

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

AULA 1

Como fazer um churrasco

Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:

EmbedVideo received the bad id "U0xSYIXE9vo#!" for the service "youtube".
O que tem o churrasco com a nossa aula??
Trata-se de uma sequência de passos para execução  
de um objetivo.
EXERCÍCIO: Na forma textual, descrever as etapas
para fazer um bom churrasco.

O que é um algoritmo

Um algoritmo pode ser visto como uma sequência de instruções ou operações que resolvem um dado problema.

A receita de um bom churrasco corresponde 
a um algoritmo.

Como representar um algoritmo ?

Uma forma é representar na forma textual ordenada:

1.Comprar a carne
2.Colocar carvão na churrasqueira
3.Acender o carvão
4.Cortar a carne (picanha)
5.Espetar a carne
6.Salgar a carne
7.Colocar a carne na churrasqueira
8.Aguardar a carne ficar no ponto desejado
9.Bater a carne
10.Servir a carne

Outras formas são mais apropriadas para o uso no meio computacional:

  • pseudo-código
  • fluxogramas
A PENSAR: É possível mudar a ordem das instruções?
É possível paralelizar algumas instruções?


E para quem são os algoritmos?

Uma receita de bolo é apropriada para ser executada 
por um ser humano. 
Um procedimento de como trocar um pneu também. 
Mas muitas vezes  queremos que o algoritmo seja executado 
por uma máquina! O computador é perfeito para isto!
Neste curso vamos nos concentrar no desenvolvimento de
algoritmos simples,  desde a sua concepção até  a sua  
implementação (e depuração) através de uma LINGUAGEM DE
PROGRAMAÇÃO -  a linguagem C , por exemplo.
Um PROGRAMA implementa um algoritmo. É o algoritmo 
materializado na forma de uma sequência de instruções.

Neste sentido, vamos entender minimamente o funcionamento de um computador (próxima aula)

A Descrição de Algoritmos usando Fluxogramas

Um fluxograma é uma linguagem semi-gráfica que pode ser utilizada 
para descrição de algoritmos.

Exemplo: O algoritmo de cálculo da média de dois números:

FluxogramaMediaDoisNumeros.jpg

Pontos fortes:

  • permite fácil entendimento do algoritmo, mesmo para pessoas leigas;

Ponto fraco:

  • a descrição das estrutura dos dados inexiste. O usuário deve descrevê-los a parte;
Observe no exemplo anterior que nada é dito sobre as variáveis NUM1, NUM2 e MEDIA.

Símbolos de um Fluxograma

TabelaSimbolosFluxograma.jpg

Teste de Mesa

TesteMesaMediaDoisNumeros.jpg

Constantes, Variáveis

Algoritmos operam sobre dados. O que podem ser estes dados?

Variáveis e Constantes

No exemplo anterior podemos identificar três variáveis NUM1, NUM2 e MEDIA Também podemos identificar uma CONSTANTE. O número 2.

  • Tipo de Variáveis:
    • Numéricas: reais e inteiras
Ex: NUM1 = 5.5 /* NUM1 é uma variável real */
    • Booleanas: true ou false
Ex: RES = TRUE /* RES é uma variável booleana */ 
    • caracter:
Ex: LETRA = 'A'
    • alfanumérica
Ex: FRASE = "ALO MUNDO"
E como estas variáveis armazenam os dados?? Depende da linguagem usada.

Expressões

Expressões sentenças que relacionam variáveis e constantes através de operadores matemáticos
e que RESULTAM em um valor.

A instrução do algoritmo:

MEDIA = (NUM1 + NUM2) / 2 

será considerada como uma expressão, que usa os operadores '+', '/' e '='

O operador '=' é um OPERADOR DE ATRIBUIÇÃO e indica que a expressão do lado direito
do '=' será atribuída a variável do lado esquerdo.
Neste curso, para mantermos coerência com a Linguagem C, consideraremos que a expressão
como um todo resulta no valor que é atribuído a variável.

Notar que a expressão de atribuição não se trata de uma IGUALDADE MATEMÁTICA. Uma expressão viável pode ser:

X = X + 1

Significa que o valor da variável X deve ser somado com a constante 1 sendo o resultada da expressão colocado em X.

Operadores Aritméticos

Os operadores aritméticos que usaremos neste curso serão os disponíveis no C:

Operador Significado
+ adição
- subtração
* multiplicação
/ divisão
% resto

O único operador desconhecido aqui é o resto, cujo significado é o resto entre dois números inteiros. Exemplo, se B possui o valor 9, então o resultado da atribuição na expressão:

A = B%2

será 1.

Representando o algoritmo com pseudo-código

Uma possível representação em pseudo-código do fluxograma acima seria:

ALGORITMO MEDIA VARIAVEIS

  NUM1: INTEIRO
  NUM2: INTEIRO
  MEDIA: REAL

INICIO

  LER NUM1
  LER NUM2
  MEDIA = (NUM1+NUM2)/2
  MOSTRAR MEDIA

FIM </syntaxhighlight>

NOTE que agora informamos quais variáveis existem e de que tipo elas são (inteiras e real).

Representando o algoritmo em linguagem C

#include <stdio.h>

main()
{
  int num1,num2;
  float media;

  scanf("%d",&num1);
  scanf("%d",&num2);
  media = (num1+num2)/2.0;
  prinft("media = %f\n", media);
}

Exercícios

  1. Fazer um algoritmo na forma de fluxograma para calcular o valor y de uma função de uma reta dado x. Identifique quem são as variáveis e constantes do problema. (erro na solução)
    Solução - Exercicio 01

    Exercicio01 Progamacao 1 correto.jpg

  2. Fazer um algoritmo na forma de fluxograma para calcular o DELTA de uma equação do segundo grau, dados os coeficientes a, b e 'c'. OBS: .
    Solução - Exercicio 02

    Exercicio02 Programacao1 correto.jpg

  3. Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados.
  4. Implementar um algoritmo na forma de pseudocódigo para calcular a conversão de CELSIUS para Farenheit.
    Solução - Exercicio 04

    ALGORITMO CONVERSOR VARIAVEIS

     Celsius: FLOAT  
     Fahrenheit: FLOAT  
    

    INICIO

     LER Celsius
     Fahrenheit = Celsius * (9/5) + 32
     MOSTRAR Fahrenheit
    

    FIM </syntaxhighlight>

  5. Implementar um algoritmo na forma de pseudo-código para calcular a corrente sobre um resistor, dado a tensão V aplicada sobre ele. Considere um resistor com R constante de 5K ohm.
    Solução - Exercicio 05

    ALGORITMO CIRCUITO VARIAVEIS

    V : REAL
    I : REAL
    

    CONSTANTES

    R : 5000
    

    INICIO

     LER V
     I = V/R
     MOSTRAR I
    

    FIM </syntaxhighlight>

  6. Incremente o exercício 5 para computar também a potência dissipada sobre o resistor.
    Solução - Exercicio 06

    ALGORITMO CIRCUITO 2 VARIAVEIS

    V : REAL
    I : REAL
    P: REAL
    

    CONSTANTES

    R : 5000
    

    INICIO

     LER V
     I = V/R
     MOSTRAR I
     P = V*I
     MOSTRAR P
    

    FIM </syntaxhighlight>

  7. Implementar um algoritmo na forma de pseudo-código para converter um ângulo em radianos para graus.
    Solução - Exercicio 07

    ALGORITMO CONVERSOR RAD VARIAVEIS

     rad : REAL
     graus : REAL
    

    INICIO

     LER rad
     graus = rad * 180/3.1415
     MOSTRAR graus
    

    FIM </syntaxhighlight>

  8. O problema da raposa, do milho e da galinha.
    EmbedVideo received the bad id "yifW9XueSaI#!" for the service "youtube".


    EXERCÍCIO 8A: Descrever na forma de etapas um 
    solução para o problema da raposa, do milho e da galinha.
    
    Note que somente é possível escrever o algoritmo se tivermos uma solução para o problema.
    
    Solução

    1 - O homem leva a galinha ao outro lado do rio.

    2 - O homem leva o milho ao outro lado do rio.

    3 - O homem volta com a galinha para o lado inicial do rio e deixa o milho.

    4 - O homem leva a raposa para o outro lado do rio onde está o milho.

    5 - O homem ele volta ao lado inicial do rio e leva a galinha para o lado do rio onde está o milho e a raposa.

  9. Torres de Hanoi Veja este jogo:
    EmbedVideo received the bad id "hLnuMXO95f8#!" for the service "youtube".

    (a)Escrever na forma de etapas numeradas a solução para o problema das torres de Hanói usando 3 discos.

    Solução - 3 Discos

    7 Passos

    1 - Disco um para o terceiro pino

    2 - Disco dois para o segundo pino

    3 - Disco um para o segundo pino

    4 - Disco tres para o terceiro pino

    5 - Disco um para o primeiro pino

    6 - Disco dois para o terceiro pino

    7 - Disco um para o terceiro pino

    (b) Escrever na forma de etapas numeradas a solução para o problema das torres de Hanói usando 4 discos.

    Solução - 4 Discos

    15 Passos

    1 - Disco um para o segundo pino

    2 - Disco dois para o terceiro pino

    3 - Disco um para o terceiro pino

    4 - Disco tres para o segundo pino

    5 - Disco um para o primeiro pino

    6 - Disco dois para o segundo pino

    7 - Disco um para o segundo pino

    8 - Disco quatro para o terceiro pino

    9 - Disco um para o terceiro pino

    10 - Disco dois para o primeiro pino

    11 - Disco um para o primeiro pino

    12 - Disco tres para o terceiro pino

    13 - Disco um para o segundo pino

    14 - Disco dois para o terceiro pino

    15 - Disco um para o terceiro pino

  10. Implementar um fluxograma para computar a área e o comprimento de uma circunferência dado o RAIO.
    Solução - Exercicio 10

    Exercicio 10 Programacao 1.jpg

  11. Implementar um fluxograma para ler um número complexo (ler por partes) no formato retangular e apresentar o módulo e o ângulo EM GRAUS do mesmo (formato polar). Suponha que você dispõe de uma função ATG() que calcula o arco em radianos de uma dada tangente.
    Solução - Exercicio 11

    Exercicio11 Programacao1.jpg

  12. Implementar um fluxograma para apresentar a velocidade no instante T (a ser fornecido) de um corpo de massa 1Kg que está inicialmente parado (em T=0) e submetido a força F também fornecida como entrada. Despreze atrito. Vi=0 O--> m=1Kg F=1N
    Solução - Exercicio 12

    Exercicio12 Programacao1.jpg