Mudanças entre as edições de "AULA - Representação de Algoritmos. Constantes, Variáveis e Expressões."
Linha 400: | Linha 400: | ||
<li> | <li> | ||
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. | 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. | ||
− | + | Considere: | |
− | Vi=0 | + | Vi=0<br /> |
− | O--> | + | O--> <br /> |
− | m=1Kg F=1N | + | m=1Kg F=1N<br /> |
{{collapse top|Solução - Exercicio 12}} | {{collapse top|Solução - Exercicio 12}} | ||
[[imagem:Exercicio12_Programacao1.jpg|500px]] | [[imagem:Exercicio12_Programacao1.jpg|500px]] |
Edição das 09h55min de 26 de julho de 2019
AULA 1
Como fazer um churrasco
Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:
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:
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. Neste caso os dados
LIDOS serão ARMAZENADOS em áreas de "memória" específicas rotuladas por um nome. São as "variáveis".
Observe no exemplo anterior que nada é dito sobre as variáveis NUM1, NUM2 e MEDIA.
Símbolos de um Fluxograma
Teste de Mesa
O teste de mesa serve para acompanharmos passo a passo a execução de um algoritmo, verificando e atualizando a cada momento o valor das diversas variáveis envolvidas no processamento do algoritmo. Observe no exemplo abaixo que as "caixas" (áreas de armazenamento) correspondentes as variáveis estão inicialmente com valores indeterminados. A medida que as instruções são executadas estas variáveis são atualizadas.
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.
Observe a necessidade dos parênteses para garantir a PRECEDÊNCIA das operações. Uma expressão da forma: MEDIA = NUM1 + NUM2 / 2 (neste caso primeiro será dividido NUM2 por 2 e depois somado com NUM1. NÃO é a média...
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
Abaixo um programa em C implementando o algoritmo de cálculo da média de dois números.
OBSERVE que uma pessoa que não conhece a sintaxe da linguagem terá um pouco de dificuldade de entender...
#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
-
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.
-
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: .
-
Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados. Apresente também um TESTE DE MESA para o algoritmo proposto.
-
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>
-
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>
-
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>
-
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>
-
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.
-
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
-
Implementar um fluxograma para computar a área e o comprimento de uma circunferência dado o RAIO.
-
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.
-
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.
Considere:
Vi=0
O-->
m=1Kg F=1N
- Faça um algoritmo para computar o desvio padrão de 7 números reais . Suponha que você dispõe de uma função SQRT() que permite computar a raiz quadrada de um número. Usar:
(extraído da wikipedia)
(extraído da wikipedia)
SUGESTÃO: computar primeiramente a média