Mudanças entre as edições de "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
Linha 244: Linha 244:
 
{{collapse top|solução}}
 
{{collapse top|solução}}
 
3 Discos
 
3 Discos
 +
 
7 Passos
 
7 Passos
 +
 
1 - Disco um para o terceiro pino
 
1 - Disco um para o terceiro pino
 +
 
2 - Disco dois para o segundo pino
 
2 - Disco dois para o segundo pino
 +
 
3 - Disco um para o segundo pino
 
3 - Disco um para o segundo pino
 +
 
4 - Disco tres para o terceiro pino
 
4 - Disco tres para o terceiro pino
 +
 
5 - Disco um para o primeiro pino
 
5 - Disco um para o primeiro pino
 +
 
6 - Disco dois para o terceiro pino
 
6 - Disco dois para o terceiro pino
 +
 
7 - Disco um para o terceiro pino
 
7 - Disco um para o terceiro pino
 +
 
{{collapse bottom}}
 
{{collapse bottom}}
 
(b) Escrever na forma de etapas numeradas a solução para o problema  das torres de Hanói usando 4 discos.
 
(b) Escrever na forma de etapas numeradas a solução para o problema  das torres de Hanói usando 4 discos.

Edição das 14h03min de 8 de fevereiro de 2019

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 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.
  2. Fazer um algoritmo na forma de fluxograma para calcular o DELTA de uma equação do segundo grau, dados os coeficientes a e b. OBS: .
  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.
  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 1K ohm.
  6. Incremente o exercício 5 para computar também a potência dissipada sobre o resistor.
  7. Implementar um algoritmo na forma de pseudo-código para converter um ângulo em radianos para graus.
  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.
    
  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.

  10. Implementar um fluxograma para computar a área e o comprimento de uma circunferência dado o RAIO.
  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.
  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