Mudanças entre as edições de "PRG1-2012-2-Engenharia"
(→AULA 2) |
|||
Linha 233: | Linha 233: | ||
===A Descrição de Algoritmos usando Fluxogramas=== | ===A Descrição de Algoritmos usando Fluxogramas=== | ||
− | Um fluxograma é uma linguagem semi-gráfica que pode ser utilizada para descrição de algoritmos. | + | 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 da aula anterior: | ||
+ | [[imagem:FluxogramaMediaDoisNumeros.jpg|450px]] | ||
Pontos fortes: | Pontos fortes: | ||
Linha 239: | Linha 243: | ||
Ponto fraco: | Ponto fraco: | ||
− | *a descrição | + | *a descrição das estrutura dos dados inexiste. O usuário deve descrevê-los a parte; |
− | |||
− | |||
− | |||
===Símbolos de um Fluxograma=== | ===Símbolos de um Fluxograma=== |
Edição das 21h55min de 5 de outubro de 2012
PRG1 - PROGRAMAÇÃO I
CARGA HORÁRIA
TOTAL: 72 HORAS (4 HORAS/SEMANA)
TEÓRICA: 36 HORAS
LABORATÓRIO: 36 HORAS
DIAS COM AULA: 36 (18 semanas)
PRÉ REQUISITOS: LÓGICA
EMENTA
Introdução a lógica de programação e algoritmos. Constantes, variáveis e tipos de dados. Operadores aritméticos, relacionais e lógicos. Concepção de fluxograma e pseudocódigo. Estruturas de decisão e estruturas de repetição. Introdução a linguagem de programação c. Vetores de caracteres e multidimensionais. Ponteiros e aritmética de ponteiros. Funções: chamada por valor e por referência. Chamada recursiva de funções. Tipos de dados compostos. Operação com arquivos textos e binários.
Bibliografia Básica
- SCHILDT, Herbert. C Completo e Total - 3.ed. [S.l.]: Makron, 1997. 830p. ISBN 978-8534605953
Referências Complementares
- Apostila adotada: Curso de Linguagem C - Engenharia Elétrica - UFMG
AULAS
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?
O problema da raposa, do milho e da galinha
EXERCÍCIO 1: 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 2: Descrever na forma de etapas uma solução para o problema dos canibais/padres.
Torres de Hanoi
Veja este jogo:
EXERCÍCIO 3: Escrever na forma de etapas numeradas a solução para o problema das torres de Hanói usando 3 discos.
EXERCÍCIO 4: Escrever na forma de etapas numeradas a solução para o problema das torres de Hanói usando 4 discos.
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, em um computador.
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.
Como funciona um computador? Como ele executa programas ("receitas")?
- Partes de um computador:
- O computador é digital:
- Dados e Instruções são sequências de bits
- Representação de dados em sistemas computacionais: uso de códigos (ex:código ASCII);
A -> 01000001 B -> 01000010
- As instruções também são palavras binárias interpretadas pela CPU;
De forma simplificada podemos dizer que as instruções ficam em uma memória de programa enquanto os dados a serem processados pelo programa ficam em uma memória de DADOS;
O programa que está na memória de programa está escrito em LINGUAGEM DE MÁQUINA
- Funcionamento Simplificado de um Computador
Suponha que um programa a ser executado se encontra em uma memória de programa. Ao ligar o sistema, a CPU busca na memória de programa uma instrução a ser executada (ciclo de busca) e, então, executa a instrução (ciclo de execução). Na SEQUÊNCIA, a CPU busca a PRÓXIMA instrução na memória de programa, e assim sucessivamente...
O fluxo de execução do programa é, a princípio SEQUENCIAL no sentido que a execução de uma instrução é realizada somente após a execução da instrução antecedente.
(apresentação do Prof.Semprebom sobre computadores)
Possíveis linguagens de programação
Na prática, é inviável desenvolver programas complexos em LINGUAGEM DE MÁQUINA. Em geral, utilizamos linguagens de ALTO NÍVEL que podem, de alguma forma, serem traduzidas (compiladas) para a linguagem de baixo nível ou interpretadas em tempo de execução.
Exemplo:
- Linguagem C
- Fortran
- Basic
- C++
- Pascal
- Java
- Python
Neste curso utilizaremos a linguagem C. Por que? É uma linguagem muito usada na implementação de produtos eletrônicos, incluindo àqueles voltados as Telecomunicações.
Um exemplo completo
PROBLEMA: Computar a média de dois números reais fornecidos pelo teclado. Mostrar o resultado no monitor.
SOLUÇÃO:
ALGORITMO DADOS DE ENTRADA: NUM1 e NUM2 DADOS DE SAÍDA: MEDIA INÍCIO 1.Ler NUM1 2.Ler NUM2 3.MEDIA <- (NUM1+NUM2)/2 4.Mostrar MEDIA FIM
/* Calculador de media de dois números reais */
#include <stdio.h>
main()
{
float num1,num2;
scanf(&num1);
scanf(&num2);
media = (num1+num2)/2;
printf ("media =\n", media);
}
EXERCÌCIO 5: Implementar o algoritmo com o Scratch.
Plano de Ensino
Agora que temos uma ideia do que será tratado neste curso, vamos apresentar o plano de ensino.
AULA 2
Objetivos
O aluno deverá ser capaz de:
- Entender o significado de variáveis e sua relação com a memória de um computador;
- Utilizar fluxogramas para descrever algoritmos simples, usando caixa de ínicio/fim, caixa de processos (instruções) e caixas decisão;
- Identificar os pontos fortes e fracos no uso de fluxogramas;
- Construir expressões usando variáveis e constantes sando os 4 operadores matemáticos;
- Construir instruções de atribuição a uma variável;
Recordando o significado de algoritmo
Segundo Knuth um algoritmo deve:
- Sempre terminar após um determinado número de passos;
- Cada passo do algoritmo deve ser precisamente definido (sem ambiguidades);
- Um certo número (ou nenhum) de dados de entrada deve ser fornecido no início ou dinamicamente na execução do algoritmo;
- Ter dados de saída, resultantes do processamento dos dados de entrada;
- Ser efetivo, no sentido que suas operações sejam simples e se executem em tempo finito de tempo;
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 da aula anterior:
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;
Símbolos de um Fluxograma
AULA 3
AULA 4
AULA 5
AULA 6
AULA 7
AULA 8
AULA 9
AULA 10
AULA 11
AULA 12
AULA 13
AULA 14
AULA 15
AULA 16
AULA 17
AULA 18
AULA 19
AULA 20
AULA 21
AULA 22
AULA 23
AULA 24
AULA 25
AULA 26
AULA 27
AULA 28
AULA 29
AULA 30
AULA 31
AULA 32
AULA 33
AULA 34
AULA 35
SOLUÇÔES:
1.Atravessar G 2.Retornar 3.Atravessar M 4.Retornar G 5.Atravessar R 6.Retornar 7.Atravessar G
1.ATR CP 2.RET P 3.ATR CC 4.RET C 5.ATR PP 6.RET PC 8.ATR PP 9.RET C 10.ATR CC 11.RET C 12.ATR CC