Introdução (Informal) à Programação
Jorge Cruz
DI/FCT/UNL
Introdução aos Computadores e à Programação
1º Semestre 2005/2006
29 de Setembro de 2005
Introdução (Informal) à Programação
1
Programa e Algoritmo
• Um programa é um conjunto de instruções que
aplicadas aos dados de entrada (input) e a outros
intermédios auxiliares produz um resultado (output).
input
Programa
output
• Um programa é a materialização para uma dada
máquina (computador e linguagem de programação)
de um algoritmo.
29 de Setembro de 2005
Introdução (Informal) à Programação
2
Níveis de Abstração
• Um programa pode ser entendido a vários níveis de
abstracção (detalhe).
• Quanto mais “inteligente/conhecedor” for o
interlocutor, a mais alto nível podem ser dadas as
instruções.
Saia da sala
Vá para Lisboa
Saia do Edifício
Dirija-se à portaria
Vá para a paragem de autocarro
Apanhe o autocarro
....
29 de Setembro de 2005
Introdução (Informal) à Programação
3
Níveis de Abstração
Nível Máquina e Nível “Humano”
• Um computador só executa instruções extremamente
simples. Por exemplo:
– Transferir palavras entre a memória e os registos
– Processar dados nos registos (p.ex. soma binária)
• Um programador humano raciocina a um nível mais
alto de abstração.
LDA 1005
CA+B
LDB 22345A91
ADD A,B
STA 1234FE88
29 de Setembro de 2005
Introdução (Informal) à Programação
4
Linguagens de Programação
• As linguagens de programação permitem a um utilizador
especificar um programa de uma forma semelhante ao
algoritmo.
• Um compilador/interpretador da linguagem deverá fazer a
tradução das intruções de alto nível para as de nível máquina
(por exemplo, manter os endereços de memória onde estão
guardadas as variáveis).
LDA 11A810A0
CA+B
LDB 22345A91
ADD A,B
STA 1234FE88
29 de Setembro de 2005
Introdução (Informal) à Programação
5
Linguagens de Programação (2)
• Existem vários tipos de linguagens de programação baseadas em
diferentes paradigmas (estilos) de programação.
– Linguagens imperativas:Fortran, Pascal, C, Octave/MATLAB
• Controle explícito da execução
– Linguagens Orientadas por Objectos: Smalltalk, C++, Java
• Controle implícito na manipulação dos dados
– Linguagens Funcionais: LISP, Scheme
• Baseadas na especificação de funções
– Linguagens Lógicas: Prolog
• Implementando a Lógica de Predicados
29 de Setembro de 2005
Introdução (Informal) à Programação
6
Programação Imperativa
• No paradigma de programação imperativa, o programador
especifica explicitamente o controle de execução, isto é, a
sequenciação das instruções base.
• Informalmente podemos considerar as seguintes instruções
base, na especificação de algoritmos:
– Afectação:
A Expressão
• A variável A toma o valor da Expressão
– Entrada:
Entra A
• A variável A toma um valor dado do exterior (teclado, ficheiro)
– Saída:
Sai A
• A variável A é passada para o exterior (monitor, ficheiro)
29 de Setembro de 2005
Introdução (Informal) à Programação
7
Controle de Execução
• A ordem pela qual as várias instruções são executadas é
controlada explicitamente por instruções de
– Sequência
– Execução Condicional
– Execução Repetida
• Sequência (“;”)
– Exemplo:
entra A ; % O valor de A é “entrado”. Seja A = 2
B  A + 3 ;
% A variável B toma o valor 2+3 = 5
C  B * 2 ;
% A variável C toma o valor 5*2 = 10
sai C ;
% O valor de C é passado para o exterior
29 de Setembro de 2005
Introdução (Informal) à Programação
8
Controle de Execução
• Execução condicional (“se”)
– Exemplo:
entra A ;
se A > 0 então
B  A
senão
B  - A
fim se;
sai B ;
29 de Setembro de 2005
% o valor de A é “entrado”
% à variável B é atribuído
% o valor absoluto
% da variável A
% o valor de B é comunicado
Introdução (Informal) à Programação
9
Controle de Execução
• Execução Repetida (“enquanto”)
– Exemplo:
entra A;
B  1;
enquanto A > 1 fazer
B  B * A;
A  A – 1;
fim enquanto;
sai B;
29 de Setembro de 2005
% o valor de A é “entrado”
% o valor de B é inicializado a 1
% à variável B é atribuído
% o factorial de A
% o valor de B é comunicado
Introdução (Informal) à Programação
10
Tipos de Dados Simples
• Às variáveis usadas têm sido atribuídos valores inteiros. No
entanto podem ser considerados outros valores nos algoritmos
(e programas).
• Os tipos de dados simples habituais são
– Booleanos (Verdade/Falso ou 1/0)
– Numéricos (Inteiros, Reais e Imaginários)
– Não numéricos (caracteres)
• Normalmente o contexto torna claro os tipos de dados
pretendidos para as variáveis, mas as linguagens de
programação típicas (não o Octave) requerem a declaração dos
tipos de dados das variáveis.
29 de Setembro de 2005
Introdução (Informal) à Programação
11
Estruturas de Dados
• Os dados simples podem ser agrupados em estruturas de dados
mais complexas.
• As estruturas mais vulgares correspondem a matrizes de
dimensão arbitrária.
• Um caso
(vectores).
importante são as
matrizes unidimensionais
• Como o nome indica (MATrix LABoratory), o sistema Octave
/MATLAB tem um suporte muito completo dos tipos de dados
matriz, permitindo a sua definição e as operações habituais.
29 de Setembro de 2005
Introdução (Informal) à Programação
12
Estruturas de Dados
• Exemplo 1:
1 2 3
A = [1 2 3 ; 4 5 6 ; 7 8 9]
A =
4 5 6
7 8 9
• Exemplo 2:
3 3 3
B = [3 3 3 ; 2 2 2 ; 1 1 0]
B =
2 2 2
1 1 0
• Exemplo 3:
4 5 6
C = A + B
C =
8 9 9
• Exemplo 4:
D = 30 36 42
D = [1 2 3] * A
29 de Setembro de 2005
6 7 8
Introdução (Informal) à Programação
13
Algoritmo 1 – Raízes da equação do 2º grau
29 de Setembro de 2005
entra A ;
entra B ;
% Ax2 + Bx + C = 0
entra C ;
Disc  B^2 – 4 * A * C;
se Disc < 0 então
sai ‘não há raízes reais’
senão
D  sqrt(Disc);
se D = 0 então
sai ‘ 2 raízes iguais’
R  -B/(2*A);
sai R
senão
R1  (-B + D)/(2*A); sai R1;
R2  (-B - D)/(2*A); sai R2;
fim se;
fim se;
Introdução (Informal) à Programação
14
Algoritmo 2 – Cálculo da Raiz Quadrada
entra X ;
entra P ;
% P é a precisão pretendida
R  1 ;
T  X ;
enquanto abs(T-R) >= P fazer
R  (R + T)/2;
T  X / R;
fim enquanto;
Sai R ;
% R  sqrt(X)
29 de Setembro de 2005
# iter
R
T
dif
0
1.00
49.00
48.000
1
25.00
1.96
23.040
2
13.48
3.64
9.845
3
8.56
5.73
2.832
4
7.14
6.86
0.281
5
7.00
7.00
2.81E-03
6
7.00
7.00
2.83E-07
7
7.00
7.00
3.55E-15
Introdução (Informal) à Programação
15
Algoritmo 3 – Teste da “Primalidade”
entra N ;
primo  verdade ;
limA = sqrt(N);
para A de 2 a limA fazer
limB = N / A;
para B de A a limB fazer
se A * B = N então
primo  falso;
fim se;
fim para
fim para
se primo então
sai ‘o número é primo’
senão
sai ‘o número não é primo’
fim se;
29 de Setembro de 2005
Exemplo: 23
sqrt(23) = 4.7958...
Introdução (Informal) à Programação
2*2
...
2 * 11 % 23/2 = 11.5
3*3
...
3 * 7 % 23/3 = 7.67
4*4
...
4 * 5 % 23/4 = 5.75
16
Download

Introdução (Informal) à Programação