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
 
(43 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 3: Linha 3:
  
 
=== Como fazer um churrasco ===
 
=== Como fazer um churrasco ===
 
+
----
 
Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:
 
Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:
  
Linha 20: Linha 20:
  
 
=== Como representar um algoritmo? ===
 
=== Como representar um algoritmo? ===
 
+
----
 
:Uma forma é representar na forma textual ordenada:
 
:Uma forma é representar na forma textual ordenada:
  
Linha 47: Linha 47:
 
:É possível paralelizar algumas instruções?
 
:É possível paralelizar algumas instruções?
  
=== E para quem são os algoritmos? ===
+
=== Para que servem os algoritmos? ===
 
+
----
 
:Uma receita de bolo é apropriada para ser executada  por um ser humano.  
 
:Uma receita de bolo é apropriada para ser executada  por um ser humano.  
 
:Um procedimento de como trocar um pneu também.  
 
:Um procedimento de como trocar um pneu também.  
Linha 85: Linha 85:
 
[[imagem:TesteMesaMediaDoisNumeros.jpg|650px]]
 
[[imagem:TesteMesaMediaDoisNumeros.jpg|650px]]
  
===Constantes, Variáveis===
+
===Constantes e Variáveis===
 
----
 
----
 
:Algoritmos operam sobre dados. O que podem ser estes dados?
 
:Algoritmos operam sobre dados. O que podem ser estes dados?
Linha 96: Linha 96:
 
:<b>Tipo de Variáveis:</b>
 
:<b>Tipo de Variáveis:</b>
  
:'''Numéricas''':  reais e inteiras
+
::'''Numéricas''':  reais e inteiras
:Ex.: NUM1 = 5.5 /* NUM1 é uma variável real */
+
::Ex.: NUM1 = 5.5 /* NUM1 é uma variável real */
  
:'''Booleanas''': true ou false
+
::'''Booleanas''': true ou false
:Ex.: RES = TRUE /* RES é uma variável booleana */  
+
::Ex.: RES = TRUE /* RES é uma variável booleana */  
  
:'''Caracter''':  
+
::'''Caracter''':  
:Ex.: LETRA = 'A'
+
::Ex.: LETRA = 'A'
  
:'''Alfanumérica''':
+
::'''Alfanumérica''':
:Ex.: FRASE = "ALO MUNDO"
+
::Ex.: FRASE = "ALO MUNDO"
  
:E como estas variáveis armazenam os dados?? Depende da linguagem usada.  
+
::E como estas variáveis armazenam os dados?? Depende da linguagem usada.  
:Vamos passar uma primeira noção do C.
+
::Vamos passar uma primeira noção do C.
  
 
===Expressões===
 
===Expressões===
 +
----
 +
:Expressões sentenças que relacionam variáveis e constantes através de operadores matemáticos
 +
:e que RESULTAM em um valor.
  
Expressões sentenças que relacionam variáveis e constantes através de operadores matemáticos
+
:<b>A instrução do algoritmo:</b>
e que RESULTAM em um valor.
 
  
A instrução do algoritmo:
+
::MEDIA = (NUM1 + NUM2) / 2
  
MEDIA = (NUM1 + NUM2) / 2
+
:será considerada como uma expressão, que usa os operadores '+', '/' e '='
  
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.
  
O operador '=' é um OPERADOR DE ATRIBUIÇÃO e indica que a expressão do lado direito
+
:Neste curso, para mantermos coerência com a Linguagem C, consideraremos que a expressão
do '=' será atribuída a variável do lado esquerdo.
+
:como um todo resulta no valor que é atribuído a variável.
  
Neste curso, para mantermos coerência com a Linguagem C, consideraremos que a expressão
+
===Operadores Aritméticos===
como um todo resulta no valor que é atribuído a variável.
+
----
 +
:Os operadores aritméticos que usaremos neste curso serão os disponíveis no C:
  
===Operadores Aritméticos===
 
  
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
 +
! style="background: #ffdead;" | Significado
 +
|-
 +
! style="text-align: center;" | +
 +
|adição
 +
|-
 +
! style="text-align: center;" | -
 +
|subtração
 +
|-
 +
! style="text-align: center;" | *
 +
|multiplicação
 +
|-
 +
! style="text-align: center;" | /
 +
|divisão
 +
|-
 +
! style="text-align: center;" | %
 +
|módulo
 +
|-
 +
! style="text-align: center;" | ++
 +
|incremento
 +
|-
 +
! style="text-align: center;" | --
 +
|decremento
  
{| 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===
+
: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 172: Linha 198:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===Representando o algoritmo em linguagem C===
+
===Implementado o algoritmo em linguagem C===
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
Linha 185: 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 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.
  
EXERCÍCIO 9B: Escrever na forma de etapas numeradas a solução para o problema
+
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).
das torres de Hanói usando 4 discos.
+
:Suponha que você dispõe de uma função ATG() que calcula o arco em radianos de uma dada tangente.  
  
10.Implementar um fluxograma para computar a área e o comprimento de uma circunferência dado o RAIO.
+
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.
  
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.
+
:Vi=0
 +
:O-->
 +
:m=1kg    F=1N
  
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-->
+
{| border="1" cellpadding="5" cellspacing="0"
      m=1Kg    F=1N
+
! 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 >>