Mudanças entre as edições de "AULA 1 - Programação 1 - Graduação"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(32 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 130: Linha 130:
 
===Operadores Aritméticos===
 
===Operadores Aritméticos===
 
----
 
----
Os operadores aritméticos que usaremos neste curso serão os disponíveis no C:
+
:Os operadores aritméticos que usaremos neste curso serão os disponíveis no C:
  
{| border="1" cellpadding="5" cellspacing="0" style="background: #ffdead;"
 
!Operador
 
!Significado
 
|-
 
|style="background: #FFFFFF;" +
 
|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:
+
{| border="1" cellpadding="5" cellspacing="0"  
A = B%2
+
! style="background: #ffdead;" | Operador
será 1.
+
! style="background: #ffdead;" | Significado
 
+
|-
TESTE
+
! style="text-align: center;" | +
 
+
|adição
{| border="1" cellpadding="5" cellspacing="0" style="text-align: center;"
 
|+'''Exemplo de tabela'''
 
 
|-
 
|-
! style="background: #efefef;" | Primeiro cabeçalho
+
! style="text-align: center;" | -
! colspan="2" style="background: #ffdead;" | Segundo cabeçalho
+
|subtração
 
|-
 
|-
| Superior esquerdo
+
! style="text-align: center;" | *
|
+
|multiplicação
| rowspan=2 style="border-bottom: 3px solid grey; vertical-align: top;" |
 
lateral direita
 
 
|-
 
|-
| style="border-bottom: 3px solid grey;" | inferior esquerdo
+
! style="text-align: center;" | /
| style="border-bottom: 3px solid grey;" | inferior central
+
|divisão
 
|-
 
|-
| colspan="3" style="text-align: center;" |
+
! style="text-align: center;" | %
{| border="0"
+
|módulo
|+''Tabela dentro de tabela''
 
 
|-
 
|-
| style="width: 150px; text-align: center;" | [[Imagem:Wikipedia-logo-pt.png]]
+
! style="text-align: center;" | ++
| style="width: 150px; text-align: center;" | [[Imagem:Wikipedia-logo-pt.png]]
+
|incremento
 
|-
 
|-
| colspan="2" style="text-align: center; border: 1px solid red;" | Dois logos da Wikipédia
+
! style="text-align: center;" | --
|}
+
|decremento
 +
 
 
|}
 
|}
  
===Representando o algoritmo com pseudo-código===
+
 
 +
:Os operadores desconhecidos aqui são o módulo (resto), cujo significado é o resto da divisão 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.
 +
 
 +
:Incremento ++:
 +
 
 +
::B = 0
 +
::B++
 +
 
 +
:B será igual a 1.
 +
 
 +
:Decremento --:
 +
 
 +
::C = 10
 +
::C--
 +
 
 +
:C será igual a 9.
 +
 
 +
===Representando o algoritmo (pseudo-código)===
  
 
<code>
 
<code>
Linha 199: Linha 198:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===Representando o algoritmo em linguagem C===
+
===Implementado o algoritmo em linguagem C===
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
Linha 212: Linha 211:
 
   scanf("%d",&num2);
 
   scanf("%d",&num2);
 
   media = (num1+num2)/2.0;
 
   media = (num1+num2)/2.0;
   prinft("media = %f\n", media);
+
   printf("media = %f\n", media);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
===Exercícios===
 
===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.
  
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. a) 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>.  
  
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>.  
+
:b) Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados.
  
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 os pontos: a1, b1, a2 e b2.  
 
 
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.
+
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
+
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.
+
um resistor, dado a tensão V aplicada sobre ele. Considere um resistor com R constante de 1k&Omega;.
  
6.Incremente o exercício 5 para computar também a potência dissipada sobre o resistor.
+
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.
+
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
+
8. O problema da raposa, do milho e da galinha:
  
 
<center>{{#ev:youtube|yifW9XueSaI#!}} </center>
 
<center>{{#ev:youtube|yifW9XueSaI#!}} </center>
  
  
EXERCÍCIO 8A: Descrever na forma de etapas um  
+
:EXERCÍCIO 8 a) Descrever na forma de etapas um solução para o problema da raposa, do milho e da galinha.
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.
+
: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  
+
:EXERCÍCIO 8 b) Descrever na forma de etapas uma solução para o problema dos canibais e padres.
solução para o problema dos canibais/padres.
 
  
9.Torres de Hanoi
 
  
Veja este jogo:
+
9. Torres de Hanoi
 +
 
 +
:Veja este jogo:
  
 
<center>{{#ev:youtube|hLnuMXO95f8#!}} </center>
 
<center>{{#ev:youtube|hLnuMXO95f8#!}} </center>
  
EXERCÍCIO 9A: Escrever na forma de etapas numeradas a solução para o problema  
+
:EXERCÍCIO 9 a) Escrever na forma de etapas numeradas a solução para o problema  
das torres de Hanói usando 3 discos.
+
:das torres de Hanói usando 3 discos.
  
EXERCÍCIO 9B: Escrever na forma de etapas numeradas a solução para o problema  
+
:EXERCÍCIO 9 b) Escrever na forma de etapas numeradas a solução para o problema  
das torres de Hanói usando 4 discos.
+
: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.
+
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.  
+
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.
+
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
+
:Vi=0
      O-->  
+
:O-->  
      m=1Kg   F=1N
+
:m=1kg   F=1N
 +
 
 +
 
 +
 
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="background: #cdc5bf;" | [[PRG1-_Programação_I_-_Graduação | << ]]
 +
! style="background: #cdc5bf;" | AULA 1
 +
! style="background: #cdc5bf;" | [[AULA 3 - Programação 1 - Graduação | >> ]]
 +
|}

Edição atual tal como às 16h33min de 26 de março de 2015

AULA 1 DIA 05 e 10/02/2015

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: é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples
(nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a
sintaxe de nenhuma linguagem de programação.
Fluxogramas: veremos a seguir.


A PENSAR: É possível mudar a ordem das instruções?
É possível paralelizar algumas instruções?

Para que servem 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.

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 e Variáveis


Algoritmos operam sobre dados. O que podem ser estes dados?
Podem ser: 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
% módulo
++ incremento
-- decremento


Os operadores desconhecidos aqui são o módulo (resto), cujo significado é o resto da divisão 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.
Incremento ++:
B = 0
B++
B será igual a 1.
Decremento --:
C = 10
C--
C será igual a 9.

Representando o algoritmo (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>

Implementado 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;
  printf("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. a) 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: .

b) 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 os pontos: 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Ω.

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 8 a) 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 8 b) Descrever na forma de etapas uma solução para o problema dos canibais e padres.


9. Torres de Hanoi

Veja este jogo:
EmbedVideo received the bad id "hLnuMXO95f8#!" for the service "youtube".
EXERCÍCIO 9 a) Escrever na forma de etapas numeradas a solução para o problema
das torres de Hanói usando 3 discos.
EXERCÍCIO 9 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


<< AULA 1 >>