Mudanças entre as edições de "PRG1- Programação I - Graduação"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '== AULA 1 DIA 05/02/2015== === Como fazer um churrasco === Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação: <center>{{#ev:youtube|U0xSYIX...')
 
 
(163 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
== AULA 1 DIA 05/02/2015==
+
<!--<blockquote style="background: #32CD32; border: 1px solid black; padding: 1em; color:blue">
 +
=Plano de Ensino=
  
=== Como fazer um churrasco ===
+
[http://wiki.sj.ifsc.edu.br/index.php/PRG1-EngTel_(Plano_de_Ensino) Plano de Ensino da Disciplina]
  
Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:
+
</blockquote> -->
  
<center>{{#ev:youtube|U0xSYIXE9vo#!}} </center>
+
=Plano de Ensino=
  
O que tem o churrasco com a nossa aula??
+
:<span style="font-size:large;">[http://wiki.sj.ifsc.edu.br/index.php/PRG1-EngTel_(Plano_de_Ensino) Plano de Ensino da Disciplina]</span>
Trata-se de uma sequência de passos para execução 
 
de um objetivo.
 
  
EXERCÍCIO: Na forma textual, descrever as etapas
+
=Aulas=
para fazer um bom churrasco.
 
  
=== O que é um algoritmo ===
+
:AULA 1 - [[AULA 1 - Programação 1 - Graduação |  Dia 05/02/2015 - Aula Inaugural]]
 +
:AULA 2 - [[AULA 1 - Programação 1 - Graduação |  Dia 10/02/2015 - Aula Inaugural (continuação)]]
 +
:AULA 3 - [[AULA 3 - Programação 1 - Graduação |  Dia 12/02/2015 - Lógica de Programação: Expressões - Estruturas de Decisão]]
 +
:AULA 4 - [[AULA 4 - Programação 1 - Graduação |  Dia 19/02/2015 - Lógica de Programação: Estruturas de Repetição/Subprogramas]]
 +
:AULA 5 - [[AULA 5 - Programação 1 - Graduação |  Dia 24/02/2015 - Introdução a Programação C]]
 +
:AULA 6 - [[AULA 6 - Programação 1 - Graduação |  Dia 26/02/2015 - Estruturas de Decisão]]
 +
:AULA 7 - [[AULA 7 - Programação 1 - Graduação |  Dia 03/03/2015 - Estruturas de Repetição no C (parte I)]]
 +
:AULA 8 - [[AULA 8 - Programação 1 - Graduação |  Dia 05/03/2015 - Estruturas de Repetição no C (parte II)]]
 +
:AULA 9 - [[AULA 9 - Programação 1 - Graduação |  Dia 10/03/2015 - Funções no C]]
 +
:AULA 10 - [[Lista Exercícios 1 - Programação 1 - Graduação |  Dia 12/03/2015 - Lista de Exercícios 1]]
 +
:AULA 11 - <span style="color:gray;">Dia 17/03/2015 - Avaliação 1 - Teórica </span> | [[AV1_A]] | [[AV1_B]]
 +
:AULA 12 - <span style="color:gray;">Dia 24/03/2015 - Correção da Avaliação 1 - Teórica </span>
 +
:AULA 13 - [[AULA 10 - Programação 1 - Graduação |  Dia 26/03/2015 - Vetores no C (int, float, double)]]
 +
:AULA 14 - [[AULA 11 - Programação 1 - Graduação |  Dia 31/03/2015 - Vetores no C (char)]]
 +
:AULA 15 - [[AULA 12 - Programação 1 - Graduação |  Dia 07/04/2015 - Exercícios Propostos I]]
 +
:AULA 16 - [[AULA 13 - Programação 1 - Graduação |  Dia 09/04/2015 - Arranjos Multidimensionais]] <span style="color:red;">| Excepcionalmente às 15h40min com todos.</span>
 +
:AULA 17 -  <span style="color:gray;">Dia 14/04/2015 - Exercícios</span>
 +
:AULA 18 - [[AULA 14 - Programação 1 - Graduação |  Dia 16/04/2015 - Estruturas]]
 +
:AULA 19 - <span style="color:gray;">Dia 23/04/2015 - Exercícios</span>
 +
:AULA 20 - [[AULA 15 - Programação 1 - Graduação |  Dia 28/04/2015 - Exercícios Propostos II]]
 +
:AULA 21 - [[AULA 16 - Programação 1 - Graduação |  Dia 30/04/2015 - Exercícios Prévia Avaliação]]
 +
:AULA 22 - <span style="color:gray;">Dia 05/05/2015 - Exercícios</span>
 +
:AULA 23 - [[AP1 |  Dia 07/05/2015 - Avaliação 2 - Prática 1]]
 +
:AULA 24 - [[AULA 17 - Programação 1 - Graduação |  Dia 12/05/2015 - Ponteiros ]]
 +
:AULA 25 - <span style="color:gray;">Dia 14/05/2015 - Dúvida sobre ponteiros. Correção individual da AP1 </span><span style="color:red;">| Em virtude da viagem de estudos a aula será das 13h30min às 15h20min.</span>
 +
:AULA 26 - [[AULA 17 - Programação 1 - Graduação |  Dia 19/05/2015 - Ponteiros (continuação)]]
 +
:AULA 27 - [[AULA 18 - Programação 1 - Graduação |  Dia 21/05/2015 - Exercícios sobre ponteiros]]
 +
:AULA 28 - [[AULA 19 - Programação 1 - Graduação |  Dia 26/05/2015 - Alocação Dinâmica de Memória]]
 +
:AULA 29 - [[AULA 20 - Programação 1 - Graduação |  Dia 28/05/2015 - Listas Encadeadas]]
 +
:AULA 30 - [[AULA 21 - Programação 1 - Graduação |  Dia 02/06/2015 - Organização de Equipes Projeto]]
 +
:AULA 31 - [[AULA 22 - Programação 1 - Graduação |  Dia 09/06/2015 - Tratamento de Arquivos]]
 +
:AULA 32 - [[AULA 23 - Programação 1 - Graduação |  Dia 11/06/2015 - Um Programa em Múltiplos Arquivos]]
 +
:AULA 33 - [[AULA 24 - Programação 1 - Graduação |  Dia 16/06/2015 - Representando o Tempo em C]]
 +
:AULA 34 - <span style="color:gray;">Dia 18/06/2015 -  Avaliação 3 - Prática 2</span>
 +
:AULA 35 - [[AP2 | Dia 23/06/2015 - Correção da AP2]]
 +
:AULA 36 - <span style="color:gray;">Dia 25/06/2015 - Tirar dúvidas e Apresentação dos Projetos</span><span style="color:red;"> | A aula será das 13h30min às 15h20min.</span>
 +
:AULA 37 - [[AULA 21 - Programação 1 - Graduação |  Dia 30/06/2015 - Apresentação dos Projetos]]
 +
:AULA 38 - [[AREC_PROG1_20151 | Dia 02/07/2015 - Avaliação de Recuperação]] <span style="color:red;"> | Das 13h30min às 16h30min</span>
  
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.
+
:''<span style="color:gray;">Em cinza, aulas sem apresentação de novos conteúdos. Exemplo: Avaliações, exercícios, projeto.''</span>
  
A receita de um bom churrasco corresponde
+
=Atendimento paralelo=
a um algoritmo.
 
  
=== Como representar um algoritmo ? ===
+
:<span style="color:red;">O atendimento extra-classe aos alunos será realizado nas '''terças-feiras''' depois do horário de aula: das '''17h30 às 18h30'''.</span>
  
Uma forma é representar na forma textual ordenada:
+
:[[Programa_de_monitoria_dos_cursos_superiores_de_Telecomunicações | Programa de monitoria dos cursos superiores de Telecomunicações]]
  
1.Comprar a carne
+
=Material de apoio=
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:
+
:[http://wiki.sj.ifsc.edu.br/images/8/82/Curso_de_linguagem_C_UFMG.pdf Apostila de C - UFMG]
* pseudo-código
 
* fluxogramas
 
  
A PENSAR: É possível mudar a ordem das instruções?
+
:[http://wiki.sj.ifsc.edu.br/images/5/50/C-refcard.pdf C Reference Card (ANSI) - Guia rápido]
É possível paralelizar algumas instruções?
 
  
 
+
:[http://wiki.sj.ifsc.edu.br/index.php/Biblioteca_de_programa%C3%A7%C3%A3o Biblioteca de programação - Placa I/O]
 
 
=== 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 atual tal como às 10h10min de 18 de setembro de 2015


Plano de Ensino

Plano de Ensino da Disciplina

Aulas

AULA 1 - Dia 05/02/2015 - Aula Inaugural
AULA 2 - Dia 10/02/2015 - Aula Inaugural (continuação)
AULA 3 - Dia 12/02/2015 - Lógica de Programação: Expressões - Estruturas de Decisão
AULA 4 - Dia 19/02/2015 - Lógica de Programação: Estruturas de Repetição/Subprogramas
AULA 5 - Dia 24/02/2015 - Introdução a Programação C
AULA 6 - Dia 26/02/2015 - Estruturas de Decisão
AULA 7 - Dia 03/03/2015 - Estruturas de Repetição no C (parte I)
AULA 8 - Dia 05/03/2015 - Estruturas de Repetição no C (parte II)
AULA 9 - Dia 10/03/2015 - Funções no C
AULA 10 - Dia 12/03/2015 - Lista de Exercícios 1
AULA 11 - Dia 17/03/2015 - Avaliação 1 - Teórica | AV1_A | AV1_B
AULA 12 - Dia 24/03/2015 - Correção da Avaliação 1 - Teórica
AULA 13 - Dia 26/03/2015 - Vetores no C (int, float, double)
AULA 14 - Dia 31/03/2015 - Vetores no C (char)
AULA 15 - Dia 07/04/2015 - Exercícios Propostos I
AULA 16 - Dia 09/04/2015 - Arranjos Multidimensionais | Excepcionalmente às 15h40min com todos.
AULA 17 - Dia 14/04/2015 - Exercícios
AULA 18 - Dia 16/04/2015 - Estruturas
AULA 19 - Dia 23/04/2015 - Exercícios
AULA 20 - Dia 28/04/2015 - Exercícios Propostos II
AULA 21 - Dia 30/04/2015 - Exercícios Prévia Avaliação
AULA 22 - Dia 05/05/2015 - Exercícios
AULA 23 - Dia 07/05/2015 - Avaliação 2 - Prática 1
AULA 24 - Dia 12/05/2015 - Ponteiros
AULA 25 - Dia 14/05/2015 - Dúvida sobre ponteiros. Correção individual da AP1 | Em virtude da viagem de estudos a aula será das 13h30min às 15h20min.
AULA 26 - Dia 19/05/2015 - Ponteiros (continuação)
AULA 27 - Dia 21/05/2015 - Exercícios sobre ponteiros
AULA 28 - Dia 26/05/2015 - Alocação Dinâmica de Memória
AULA 29 - Dia 28/05/2015 - Listas Encadeadas
AULA 30 - Dia 02/06/2015 - Organização de Equipes Projeto
AULA 31 - Dia 09/06/2015 - Tratamento de Arquivos
AULA 32 - Dia 11/06/2015 - Um Programa em Múltiplos Arquivos
AULA 33 - Dia 16/06/2015 - Representando o Tempo em C
AULA 34 - Dia 18/06/2015 - Avaliação 3 - Prática 2
AULA 35 - Dia 23/06/2015 - Correção da AP2
AULA 36 - Dia 25/06/2015 - Tirar dúvidas e Apresentação dos Projetos | A aula será das 13h30min às 15h20min.
AULA 37 - Dia 30/06/2015 - Apresentação dos Projetos
AULA 38 - Dia 02/07/2015 - Avaliação de Recuperação | Das 13h30min às 16h30min
Em cinza, aulas sem apresentação de novos conteúdos. Exemplo: Avaliações, exercícios, projeto.

Atendimento paralelo

O atendimento extra-classe aos alunos será realizado nas terças-feiras depois do horário de aula: das 17h30 às 18h30.
Programa de monitoria dos cursos superiores de Telecomunicações

Material de apoio

Apostila de C - UFMG
C Reference Card (ANSI) - Guia rápido
Biblioteca de programação - Placa I/O