Mudanças entre as edições de "AULA - Representação de Algoritmos. Constantes, Variáveis e Expressões."
(Limpou toda a página) |
|||
Linha 1: | Linha 1: | ||
+ | == AULA 1 DIA 13/03/2014== | ||
+ | === Como fazer um churrasco === | ||
+ | |||
+ | Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação: | ||
+ | |||
+ | <center>{{#ev:youtube|U0xSYIXE9vo#!}} </center> | ||
+ | |||
+ | 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 [http://pt.wikipedia.org/wiki/Algoritmo 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: | ||
+ | |||
+ | [[imagem:FluxogramaMediaDoisNumeros.jpg|150px|center]] | ||
+ | |||
+ | 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=== | ||
+ | [[imagem:TabelaSimbolosFluxograma.jpg|450px]] | ||
+ | |||
+ | ===Teste de Mesa=== | ||
+ | |||
+ | [[imagem:TesteMesaMediaDoisNumeros.jpg|650px]] | ||
+ | |||
+ | ===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. Vamos passar | ||
+ | uma primeira noção do C | ||
+ | |||
+ | ===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. | ||
+ | |||
+ | ===Operadores Aritméticos=== | ||
+ | |||
+ | Os operadores aritméticos que usaremos neste curso serão os disponíveis no C: | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !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úmerosinteiros. 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=== | ||
+ | |||
+ | <code> | ||
+ | ALGORITMO MEDIA | ||
+ | VARIAVEIS | ||
+ | NUM1: INTEIRO | ||
+ | NUM2: INTEIRO | ||
+ | MEDIA: REAL | ||
+ | INICIO | ||
+ | LER NUM1 | ||
+ | LER NUM2 | ||
+ | MEDIA = (NUM1+NUM2)/2 | ||
+ | MOSTRAR MEDIA | ||
+ | FIM | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Representando o algoritmo em linguagem C=== | ||
+ | |||
+ | <syntaxhighlight lang=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); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Exercícios=== | ||
+ | |||
+ | 1.Fazer um algoritmo na forma de fluxograma para calcular o valor y de uma função de uma reta <math> y = 5x+2 </math> 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: <math>DELTA=b^2-4ac</math>. | ||
+ | |||
+ | 2A.Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados. | ||
+ | |||
+ | 3.Implementar um algoritmo na forma de fluxograma para calcular o ponto de intersecção de duas retas dados: a1,b1,a2 e b2. | ||
+ | |||
+ | 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 | ||
+ | |||
+ | <center>{{#ev:youtube|yifW9XueSaI#!}} </center> | ||
+ | |||
+ | |||
+ | 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. | ||
+ | |||
+ | EXERCÍCIO 8B: Descrever na forma de etapas uma | ||
+ | solução para o problema dos canibais/padres. | ||
+ | |||
+ | 9.Torres de Hanoi | ||
+ | |||
+ | Veja este jogo: | ||
+ | |||
+ | <center>{{#ev:youtube|hLnuMXO95f8#!}} </center> | ||
+ | |||
+ | EXERCÍCIO 9A: Escrever na forma de etapas numeradas a solução para o problema | ||
+ | das torres de Hanói usando 3 discos. | ||
+ | |||
+ | EXERCÍCIO 9B: 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 |
Edição das 18h09min de 29 de julho de 2014
AULA 1 DIA 13/03/2014
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 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;
Observe no exemplo anterior que nada é dito sobre as variáveis NUM1, NUM2 e MEDIA.
Símbolos de um Fluxograma
Teste de Mesa
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. Vamos passar uma primeira noção do C
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.
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úmerosinteiros. 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
ALGORITMO MEDIA
VARIAVEIS
NUM1: INTEIRO
NUM2: INTEIRO
MEDIA: REAL
INICIO
LER NUM1
LER NUM2
MEDIA = (NUM1+NUM2)/2
MOSTRAR MEDIA
FIM
</syntaxhighlight>
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: .
2A.Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados.
3.Implementar um algoritmo na forma de fluxograma para calcular o ponto de intersecção de duas retas dados: a1,b1,a2 e b2.
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.
EXERCÍCIO 8B: Descrever na forma de etapas uma
solução para o problema dos canibais/padres.
9.Torres de Hanoi
Veja este jogo:
EmbedVideo received the bad id "hLnuMXO95f8#!" for the service "youtube".
EXERCÍCIO 9A: Escrever na forma de etapas numeradas a solução para o problema
das torres de Hanói usando 3 discos.
EXERCÍCIO 9B: 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