Introdução à
Programação
ETI e IGE
ISCTE
Docentes

Manuel Menezes de Sequeira
Joaquim Esmerado
Maria Albuquerque
Luís Mota

Responsável:











2
Prof. Manuel Menezes de Sequeira
[email protected]
Gabinete D6.18
Cacifo 202
Telefone 217903909
Telemóvel 962337428
MSN: [email protected]
Yahoo!: Manuel_Menezes_de_Sequeira
Introdução à Programação
2003/2004
Informação






3
http://iscte.pt/programacao/p1
http://br.groups.yahoo.com/group/ip-iscte
[email protected]
Folhas teóricas
Diapositivos das aula teóricas
Resumos das aulas práticas
Introdução à Programação
2003/2004
Avaliação

Problema: 10%


Trabalho Final: 40%




4
Entrega intermédia: avaliação negativa = -3
Entrega final: trabalho completo
Em grupo, com discussão individual
Frequência: 50%


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 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







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:




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 50m)
Aulas laboratoriais (3 x 50m)
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
O que é um computador?

Máquina
programável
genérica

Processador
Memória rápida



Memória lenta

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 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:





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 e n
Saídas: k, tal que k = mdc(m, n)



13
0 < mdc(m, n), ou seja, 1 <= mdc(m, n)
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
Algoritmo do mdc
1
se m < n então
2
k <- m
3
senão
4
k <- n
5
enquanto m ÷ k <> 0 ou n ÷ k <> 0 faça-se:
6
k <- k – 1
7
fim do enquanto
8
15
Introdução à Programação
2003/2004
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 <> 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 <> 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 <> 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
Falso
Verdadeiro
19
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
20
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
21
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
22
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
23
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
6
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
24
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
6
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
7
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
25
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
6
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
7
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
26
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
6
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
7
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
4
Falso
Falso
Falso
Falso
27
Introdução à Programação
2003/2004
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
Falso
Verdadeiro
6
12
8
8
Falso
Verdadeiro
Falso
Verdadeiro
7
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
7
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
6
12
8
6
Falso
Falso
Verdadeiro
Verdadeiro
7
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
6
12
8
5
Falso
Verdadeiro
Verdadeiro
Verdadeiro
7
12
8
4
Falso
Falso
Falso
Falso
8
12
8
4
Falso
Falso
Falso
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
Fim da actividade
29
Introdução à Programação
2003/2004
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



Linguagem máquina


Muito básica: usada pelos computadores
Linguagem de programação de alto nível


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 à Programação
2003/2004
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


Desenvolvimento do algoritmo


Computador
Execução do programa (e.g., mdc(131, 47))

34
Humano
Tradução do programa para linguagem máquina


Humano
Concretização do algoritmo na linguagem de
programação


Humano
Computador
Introdução à Programação
2003/2004
A reter...

Programar


Algoritmo


Concretização numa linguagem de programação
Compilador

35
Naturais, de programação de alto nível, máquina, etc.
Programa


Não se demonstra por testes
Tipos de linguagens


Receita finita, definida, com entradas, com saídas e eficaz
Correcção de algoritmo


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 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
Download

Aula teórica - iscte-iul