Secretaria Municipal de Educação Equipe de Estatística Situação do Aluno 2011.
pa-1-introducao [Modo de Compatibilidade]slago/pa-1.pdf · Fluxograma Exemplo 2. Situação de um...
Transcript of pa-1-introducao [Modo de Compatibilidade]slago/pa-1.pdf · Fluxograma Exemplo 2. Situação de um...
Programação Avançada(para o curso de Tecnologia em Mecânica de Precisão)
Prof. Dr. Silvio do Lago Pereira
Departamento de Tecnologia da Informação
Faculdade de Tecnologia de São Paulo
Contato
Sala: 623 – Bloco A
E-mail: [email protected]
Página: www.ime.usp.br/~slago
Ementa, bibliografia e critérios de avaliação
Cronograma de aulas e provas
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 2
Cronograma de aulas e provas
Compilador Pelles C
Slides das aulas
Notas
Curso
Objetivo: Implementar algoritmos e estruturas de dados em C.
Tópicos:
Algoritmos e estruturas de controle
Funções e recursão
Tipos de dados agregados
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 3
Tipos de dados agregados
Ponteiros e alocação dinâmica
Estruturas de dados fundamentais
Avaliação
Provas
P1: 09/09
P2: 21/10
P3: 02/12
SUB: 09/12
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 4
Média = (P1 + P2 + P3) / 3
Aprovação requer média maior ou igual a 6,0.
Prova substitutiva
Apenas para quem não atingir a média
Substitui a menor nota entre P1, P2 e P3
Introdução
Algoritmo
Fluxograma
Programa
Compilador
Algoritmo
AlgoritmoAlgoritmo
é uma sequência finita e ordenada de passos executáveis que resolve um problema.é uma sequência finita e ordenada de passos executáveis que resolve um problema.
Exemplo 1. Torres de HanóiExemplo 1. Torres de Hanói
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 6
Problema:
Mover os discos da torre A para a torre C, usando a torre B
Restrições:
Mover um disco de cada vez
Não colocar um disco sobre outro menor
Transferir os discos de uma torre para outra, imediatamente
Problema:
Mover os discos da torre A para a torre C, usando a torre B
Restrições:
Mover um disco de cada vez
Não colocar um disco sobre outro menor
Transferir os discos de uma torre para outra, imediatamente
A B C
Algoritmo
A B C
Sequência de passosSequência de passos
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 7
Sequência de passosSequência de passos
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 8
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de C.
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 9
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 10
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B. Mover o disco do topo de C para o topo de B.
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B. Mover o disco do topo de C para o topo de B.
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 11
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 12
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 13
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.Mover o disco do topo de B para o topo de C.
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.Mover o disco do topo de B para o topo de C.
Algoritmo
Sequência de passosSequência de passos
A B C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 14
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.Mover o disco do topo de B para o topo de C.Mover o disco do topo de A para o topo de C.
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.Mover o disco do topo de B para o topo de C.Mover o disco do topo de A para o topo de C.
Algoritmo
Sequência de passosSequência de passos
A B CAlgoritmo que resolve o problema das Torres de Hanói com três discos!
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 15
Sequência de passosSequência de passos
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.Mover o disco do topo de B para o topo de C.Mover o disco do topo de A para o topo de C.
Mover o disco do topo de A para o topo de C.Mover o disco do topo de A para o topo de B.Mover o disco do topo de C para o topo de B.Mover o disco do topo de A para o topo de C.Mover o disco do topo de B para o topo de A.Mover o disco do topo de B para o topo de C.Mover o disco do topo de A para o topo de C.
Fluxograma
FluxogramaFluxograma
Descrição precisa e detalhada de um algoritmo, que usa textos e figuras.Descrição precisa e detalhada de um algoritmo, que usa textos e figuras.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 16
Fluxograma
Exemplo 2. Situação de um alunoExemplo 2. Situação de um aluno
Dadas as duas notas de um aluno, informe sua média e situação final(aprovado ou reprovado)Dadas as duas notas de um aluno, informe sua média e situação final(aprovado ou reprovado)
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 17
Sequência de passosSequência de passos
Exiba uma mensagem ao usuário, solicitando a digitação das notas
Leia os dados digitados e os armazene nas variáveis a e b
Calcule a média dos valores em a e b, guardando o resultado em c
Exiba uma mensagem indicando que a média é o valor em c
Se o valor da variável em c for maior ou igual a 6.0, exiba a
mensagem "Aprovado"; senão, exiba a mensagem "Reprovado"
Exiba uma mensagem ao usuário, solicitando a digitação das notas
Leia os dados digitados e os armazene nas variáveis a e b
Calcule a média dos valores em a e b, guardando o resultado em c
Exiba uma mensagem indicando que a média é o valor em c
Se o valor da variável em c for maior ou igual a 6.0, exiba a
mensagem "Aprovado"; senão, exiba a mensagem "Reprovado"
Fluxograma
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 18
Fluxograma
Exibe dados no vídeo
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 19
Fluxograma
Constante, variável
ou expressão
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 20
Fluxograma
Lê valores do teclado e
os atribui às variáveis
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 21
Fluxograma
Variável
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 22
Fluxograma
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 23
Processamento
Fluxograma
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 24
Atribuição
Fluxograma
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 25
Conector
Fluxograma
Decisão
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 26
Fluxograma
Condição
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 27
Fluxograma
Embora o fluxograma descreva detalhadamente a lógica do
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 28
Embora o fluxograma descreva detalhadamente a lógica do
programa, ele não pode ser executado pelo computador!
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 29
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
int main(void) {
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 30
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
printf("Notas? ");
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 31
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 32
scanf("%f %f",&a,&b);
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 33
c = (a+b)/2;
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
printf("Media = %.1f\n", c);
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 34
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
if( c >=6 )
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 35
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 36
printf("Aprovado\n");
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 37
printf("Reprovado\n");
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 38
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 39
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 40
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 41
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 42
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 43
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 44
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 45
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 46
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 47
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Programa
ProgramaPrograma
Algoritmo descrito em uma linguagem de programação.Algoritmo descrito em uma linguagem de programação.
// informa a situação de um aluno
#include <stdio.h>
int main(void) {
float a, b, c;
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 48
float a, b, c;
printf("Notas? ");
scanf("%f %f", &a, &b);
c = (a+b)/2;
printf("Media = %.1f\n", c);
if( c >= 6.0 ) printf("Aprovado\n");
else printf("Reprovado\n");
return 0;
}
Compilador
CompiladorCompilador
Programa que interpreta comandos escritos numa linguagem de programação
e os converte para uma forma que o computador é capaz de executar.
Programa que interpreta comandos escritos numa linguagem de programação
e os converte para uma forma que o computador é capaz de executar.
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 49
Compilador
Exercício 1. Criação de programaExercício 1. Criação de programa
(a) Abra o compilador Pelles C IDE
(b) Entre em File → New → Project
(c) Crie um projeto novo denominado situação (Win32 Console program EXE)
(d) Entre em File → New → Source Code
(e) Digite o programa em linguagem C
(a) Abra o compilador Pelles C IDE
(b) Entre em File → New → Project
(c) Crie um projeto novo denominado situação (Win32 Console program EXE)
(d) Entre em File → New → Source Code
(e) Digite o programa em linguagem C
Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 50
(f) Salve o programa (clicando no ícone )
(g) Compile, execute e teste o programa (clicando no ícone )
(f) Salve o programa (clicando no ícone )
(g) Compile, execute e teste o programa (clicando no ícone )
Exercício 2. Índice de Massa Corpórea (IMC)Exercício 2. Índice de Massa Corpórea (IMC)
O IMC de uma pessoa é igual ao seu peso (Kg) dividido pelo quadrado de sua
altura (m). Uma pessoa é considerada obesa quando seu IMC é superior a 30.
Dados o peso e a altura de uma pessoa, informe seu IMC e indique se ela está
ou não obesa.
O IMC de uma pessoa é igual ao seu peso (Kg) dividido pelo quadrado de sua
altura (m). Uma pessoa é considerada obesa quando seu IMC é superior a 30.
Dados o peso e a altura de uma pessoa, informe seu IMC e indique se ela está
ou não obesa.
Fim