Introduo Programao ETI e IGE ISCTE Introduo Programao

  • Slides: 36
Download presentation
Introdução à Programação ETI e IGE ISCTE Introdução à Programação 2003/2004

Introdução à Programação ETI e IGE ISCTE Introdução à Programação 2003/2004

Docentes ¢ Manuel Menezes de Sequeira Joaquim Esmerado Maria Albuquerque Luís Mota ¢ Responsável:

Docentes ¢ Manuel Menezes de Sequeira Joaquim Esmerado Maria Albuquerque Luís Mota ¢ Responsável: ¢ ¢ ¢ l l l l 2 Prof. Manuel Menezes de Sequeira Manuel. Sequeira@iscte. pt Gabinete D 6. 18 Cacifo 202 Telefone 217903909 Telemóvel 962337428 MSN: MMSequeira@hotmail. com Yahoo!: Manuel_Menezes_de_Sequeira Introdução à Programação 2003/2004

Informação ¢ ¢ ¢ 3 http: //iscte. pt/programacao/p 1 http: //br. groups. yahoo. com/group/ip-iscte@yahoogrupos.

Informação ¢ ¢ ¢ 3 http: //iscte. pt/programacao/p 1 http: //br. groups. yahoo. com/group/ip-iscte@yahoogrupos. com. br Folhas teóricas Diapositivos das aula teóricas Resumos das aulas práticas Introdução à Programação 2003/2004

Avaliação ¢ Problema: 10% l ¢ Trabalho Final: 40% l l l ¢ 4

Avaliação ¢ Problema: 10% l ¢ Trabalho Final: 40% l l l ¢ 4 Entrega intermédia: avaliação negativa = -3 Entrega final: trabalho completo Em grupo, com discussão individual Frequência: 50% l ¢ Em grupo Individual, sem consulta: nota mínima 7 Grupos: 2 alunos Introdução à Programação 2003/2004

Objectivos ¢ ¢ 5 Conhecer abordagens típicas de resolução de problemas Ser capaz de

Objectivos ¢ ¢ 5 Conhecer abordagens típicas de resolução de problemas Ser capaz de planear resolução de problemas, desenhando e estruturando programas Dominar ambiente de desenvolvimento e respectivas ferramentas Ter conhecimentos intermédios de C++ Introdução à Programação 2003/2004

Programa (I) ¢ Programação procedimental l l l 6 Tipos, variáveis e constantes Modularização,

Programa (I) ¢ Programação procedimental l l l 6 Tipos, variáveis e constantes Modularização, abstracção e encapsulamento Rotinas Noções de programação por contrato: asserções Controlo de fluxo Desenvolvimento de ciclos Agregados Introdução à Programação 2003/2004

Programa (II) ¢ Programação baseada em objectos: l l 7 Tipos abstractos de dados

Programa (II) ¢ Programação baseada em objectos: l l 7 Tipos abstractos de dados Invariantes de classe Classes e categorias de acesso De novo modularização, abstracção e encapsulamento Introdução à Programação 2003/2004

Metodologia ¢ ¢ ¢ 8 Aulas teóricas (2 x 50 m) Aulas laboratoriais (3

Metodologia ¢ ¢ ¢ 8 Aulas teóricas (2 x 50 m) Aulas laboratoriais (3 x 50 m) Aulas de dúvidas Esclarecimento de dúvidas via correio electrónico Por vezes no canal #C++ do IRC Introdução à Programação 2003/2004

Aula 1 Introdução à programação Introdução à Programação 2003/2004

Aula 1 Introdução à programação Introdução à Programação 2003/2004

O que é um computador? ¢ Máquina programável genérica ¢ Processador Memória rápida ¢

O que é um computador? ¢ Máquina programável genérica ¢ Processador Memória rápida ¢ l ¢ Memória lenta l 10 Introdução à Programação RAM e ROM disco rígido 2003/2004

Arte de Resolver Problemas Diz-se que só se compreende realmente um assunto depois de

Arte de Resolver Problemas Diz-se que só se compreende realmente um assunto depois de o ter ensinado a alguém. Na realidade, só se compreende realmente um assunto depois de o ter ensinado a um computador. Donald E. Knuth 11 Introdução à Programação 2003/2004

Algoritmo ¢ ¢ Método de resolução de problema Características: l l l 12 Finitude:

Algoritmo ¢ ¢ Método de resolução de problema Características: l l l 12 Finitude: tem de terminar Definitude: cada passo bem definido Entradas: zero ou mais, de conjunto bem definido Saídas: uma ou mais, dependem das entradas Eficácia: operações todas executáveis Introdução à Programação 2003/2004

Problema ¢ Cálculo do máximo divisor comum de dois inteiros positivos ¢ Entradas: m

Problema ¢ Cálculo do máximo divisor comum de dois inteiros positivos ¢ Entradas: m e n Saídas: k, tal que k = mdc(m, n) ¢ ¢ ¢ 13 0 < mdc(m, n), ou seja, 1 <= mdc(m, n) <= min(m, n) Introdução à Programação 2003/2004

Variáveis Nome Tipo m : inteiro 12 Valor 14 Introdução à Programação 2003/2004

Variáveis Nome Tipo m : inteiro 12 Valor 14 Introdução à Programação 2003/2004

Algoritmo do mdc 1 2 3 4 5 6 7 8 15 se m

Algoritmo do mdc 1 2 3 4 5 6 7 8 15 se m < n então k <- m senão k <- n enquanto m ÷ k <> 0 ou n ÷ k <> 0 faça-se: k <- k – 1 fim do enquanto Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição 16 m n k m<n m ÷ k

Traçado do algoritmo do mdc Transição 16 m n k m<n m ÷ k <> 0 n ÷ k <> 0 Introdução à Programação m ÷ k <> 0 ou n ÷ k <> 0 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 17 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 18 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 19 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 20 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 21 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 22 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 7 12 8 6 Falso Verdadeiro 23 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 7 12 8 6 Falso Verdadeiro 6 12 8 6 Falso Verdadeiro 24 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 7 12 8 6 Falso Verdadeiro 6 12 8 6 Falso Verdadeiro 7 12 8 5 Falso Verdadeiro 25 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 7 12 8 6 Falso Verdadeiro 6 12 8 6 Falso Verdadeiro 7 12 8 5 Falso Verdadeiro 6 12 8 5 Falso Verdadeiro 26 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 7 12 8 6 Falso Verdadeiro 6 12 8 6 Falso Verdadeiro 7 12 8 5 Falso Verdadeiro 6 12 8 5 Falso Verdadeiro 7 12 8 4 Falso 27 Introdução à Programação 2003/2004

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <>

Traçado do algoritmo do mdc Transição m n k m<n m ÷ k <> 0 n ÷ k <> 0 m ÷ k <> 0 ou n ÷ k <> 0 1 12 8 ? Falso ? ? ? 4 12 8 ? Falso ? ? ? 5 12 8 8 Falso Verdadeiro 6 12 8 8 Falso Verdadeiro 7 12 8 7 Falso Verdadeiro 6 12 8 7 Falso Verdadeiro 7 12 8 6 Falso Verdadeiro 6 12 8 6 Falso Verdadeiro 7 12 8 5 Falso Verdadeiro 6 12 8 5 Falso Verdadeiro 7 12 8 4 Falso 8 12 8 4 Falso 28 Introdução à Programação 2003/2004

Diagrama de actividade Início da actividade Entroncamento Transição Ramificação [¬G] Guarda [G] Actividade passo

Diagrama de actividade Início da actividade Entroncamento Transição Ramificação [¬G] Guarda [G] Actividade passo Fim da actividade 29 Introdução à Programação 2003/2004

Diagrama de actividade do mdc {0 m 0 n} [m < n] [m n]

Diagrama de actividade do mdc {0 m 0 n} [m < n] [m n] k m k n {k = min(m, n)} {mdc(m, n) k} [m ÷ k = 0 n ÷ k = 0] {mdc(m, n) < k} [m ÷ k 0 n ÷ k 0] {k = mdc(m, n)} k k-1 {mdc(m, n) k} 30 Introdução à Programação 2003/2004

Linguagens ¢ Linguagem natural l l ¢ Linguagem máquina l ¢ Muito básica: usada

Linguagens ¢ Linguagem natural l l ¢ Linguagem máquina l ¢ Muito básica: usada pelos computadores Linguagem de programação de alto nível l l 31 Português Ambígua e imprecisa Sem ambiguidades nem imprecisões Não tão penosa como linguagem máquina Introdução à Programação 2003/2004

Linguagem de programação C++ Linguagem C++ Compilador de C++ Linguagem máquina Processador 32 Introdução

Linguagem de programação C++ Linguagem C++ Compilador de C++ Linguagem máquina Processador 32 Introdução à Programação 2003/2004

Programa mdc em C++ #include <iostream> using namespace std; int main() { cout <<

Programa mdc em C++ #include <iostream> using namespace std; int main() { cout << "Introduza dois inteiros positivos: "; int m, n; cin >> m >> n; int k; if(m < n) k = m; else k = n; while(m % k != 0 or n % k != 0) --k; } 33 cout << "O máximo divisor comum de " << m << " e " << n << " é " << k << endl; Introdução à Programação 2003/2004

Fases da resolução de problemas ¢ Especificação l ¢ Desenvolvimento do algoritmo l ¢

Fases da resolução de problemas ¢ Especificação l ¢ Desenvolvimento do algoritmo l ¢ Computador Execução do programa (e. g. , mdc(131, 47)) l 34 Humano Tradução do programa para linguagem máquina l ¢ Humano Concretização do algoritmo na linguagem de programação l ¢ Humano Computador Introdução à Programação 2003/2004

A reter. . . ¢ Programar l ¢ Algoritmo l ¢ Concretização numa linguagem

A reter. . . ¢ Programar l ¢ Algoritmo l ¢ Concretização numa linguagem de programação Compilador l 35 Naturais, de programação de alto nível, máquina, etc. Programa l ¢ Não se demonstra por testes Tipos de linguagens l ¢ Receita finita, definida, com entradas, com saídas e eficaz Correcção de algoritmo l ¢ Resolver problemas Traduz programa de linguagem de programação para linguagem máquina Introdução à Programação 2003/2004

Aula 1: Sumário ¢ ¢ ¢ 36 Computador como máquina programável Programação: arte de

Aula 1: Sumário ¢ ¢ ¢ 36 Computador como máquina programável Programação: arte de resolver problemas Conceito de algoritmo Conceitos de linguagens naturais, de programação e máquina Programa: concretização dum algoritmo Fases da resolução dum problema usando um computador Introdução à Programação 2003/2004