Mudanças entre as edições de "PRG1-2013-2-Engenharia Programação 1 - Engenharia"
Linha 180: | Linha 180: | ||
É uma linguagem muito usada na implementação de produtos | É uma linguagem muito usada na implementação de produtos | ||
eletrônicos, incluindo àqueles voltados as Telecomunicações. | eletrônicos, incluindo àqueles voltados as Telecomunicações. | ||
+ | |||
+ | === Compilando um programa C=== | ||
+ | |||
+ | Neste curso usaremos o compilador da coleção [http://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc] do [http://en.wikipedia.org/wiki/GNU_Project projeto GNU]. | ||
+ | O manual completo do gcc pode ser encontrado [http://gcc.gnu.org/ aqui]. | ||
+ | |||
+ | O processo de desenvolvimento do programa envolve: | ||
+ | |||
+ | *Editar o programa com um editor de texto tal como o ''vi'' ou ''gedit''; | ||
+ | *Salvar o programa com a terminação ".c" (ou ".h" se for um cabeçalho); | ||
+ | |||
+ | |||
+ | NOTA: crie um diretório para trabalhar nos exercícios que se seguem: | ||
+ | mkdir ExerciciosC | ||
+ | cd Exercicios | ||
+ | |||
+ | Exemplo: salve o programa abaixo como teste.c | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | |||
+ | #include <stdio.h> | ||
+ | |||
+ | main() | ||
+ | { | ||
+ | printf("Alo Mundo\n"); | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Compilar/gerar executável do programa usando o gcc: | ||
+ | |||
+ | gcc teste.c -o teste | ||
+ | |||
+ | *Testar o programa: | ||
+ | |||
+ | ./teste | ||
+ | |||
+ | Nota: o atributo -o permite que se forneça um nome para o executável diferente de a.out | ||
+ | |||
+ | É possível somente compilar (gerar código objeto): | ||
+ | |||
+ | gcc -c teste.c | ||
+ | |||
+ | Observe os subprodutos listando com detalhes: | ||
+ | |||
+ | ls -l | ||
+ | |||
=== Um exemplo completo === | === Um exemplo completo === | ||
Linha 203: | Linha 250: | ||
main() | main() | ||
{ | { | ||
− | float num1,num2; | + | float num1,num2, media; |
+ | printf("Entrar com o primeiro número\n"); | ||
scanf(&num1); | scanf(&num1); | ||
+ | printf("Entrar com o segundo número\n"); | ||
scanf(&num2); | scanf(&num2); | ||
media = (num1+num2)/2; | media = (num1+num2)/2; | ||
− | printf ("media =\n", media); | + | printf ("media = \n", media); |
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Edição das 16h03min de 14 de agosto de 2013
PRG1 - PROGRAMAÇÃO I
DADOS DA DISCIPLINA
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
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 DIA 15/08/2013 |
---|
AULA 1 DIA 15/08/2013Como fazer um churrascoVamos 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 algoritmoUm 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:
A PENSAR: É possível mudar a ordem das instruções? É possível paralelizar algumas instruções? O problema da raposa, do milho e da galinhaEmbedVideo received the bad id "yifW9XueSaI#!" for the service "youtube".
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 HanoiVeja este jogo: EmbedVideo received the bad id "hLnuMXO95f8#!" for the service "youtube". 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 - 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. Como funciona um computador? Como ele executa programas ("receitas")?
A -> 01000001 B -> 01000010
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
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çãoNa 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:
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. Compilando um programa CNeste curso usaremos o compilador da coleção gcc do projeto GNU. O manual completo do gcc pode ser encontrado aqui. O processo de desenvolvimento do programa envolve:
mkdir ExerciciosC cd Exercicios Exemplo: salve o programa abaixo como teste.c
#include <stdio.h>
main()
{
printf("Alo Mundo\n");
}
gcc teste.c -o teste
./teste Nota: o atributo -o permite que se forneça um nome para o executável diferente de a.out É possível somente compilar (gerar código objeto): gcc -c teste.c Observe os subprodutos listando com detalhes: ls -l
Um exemplo completoPROBLEMA: 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, media;
printf("Entrar com o primeiro número\n");
scanf(&num1);
printf("Entrar com o segundo número\n");
scanf(&num2);
media = (num1+num2)/2;
printf ("media = \n", media);
}
EXERCÌCIO 5: Implementar o algoritmo com o Scratch. Plano de EnsinoAgora que temos uma ideia do que será tratado neste curso, vamos apresentar o plano de ensino. |