Introdução (Informal) à Programação
DI/FCT/UNL
1º Semestre 2004/2005
1
Linguagens de Programação
• Um algoritmo é um conjunto ordenado de passos que
definem como uma tarefa deve ser executada.
• Um programa é a materialização para uma dada máquina
(computador e linguagem de programação) de um algoritmo.
• As linguagens de programação permitem a um utilizador
especificar um programa de forma semelhante ao algoritmo.
• Um compilador/interpretador da linguagem deverá fazer a
tradução das instruções de alto nível para as de nível máquina
(operações que possam ser executadas pela CPU).
2
Linguagens de Programação
• 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
3
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
x = (3+5)*2
– Entrada:
Entra A
• A variável A toma um valor dado do exterior (teclado, ficheiro)
x = input(‘Qual o valor de x?’)
– Saída:
Sai A
• A variável A é passada para o exterior (monitor, ficheiro
disp(x)
4
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
5
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 ;
% o valor de A é “entrado”
% à variável B é atribuído
% o valor absoluto
% da variável A
% o valor de B é comunicado
6
Controle de Execução
• Execução Repetida (“enquanto”)
– Exemplo:
entra A ;
B  1 ;
% o valor de A é “entrado”
enquanto A > 1 fazer
B  B * A ;
% à variável B é atribuído
A  A - 1 ;
% o factorial de A
fim enquanto ;
sai B ;
% o valor de B é comunicado
7
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.
8
Estruturas de Dados
• Os dados simples podem ser agrupados em estruturas de dados
mais complexas.
• As estruturas mais vulgares correspondem a matrizes.
• 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.
9
Estruturas de Dados
• Exemplo 1:
A = [1 2 3 ; 4 5 6 ; 7 8 9]
1 2 3
A =
4 5 6
7 8 9
• Exemplo 2:
B = [3 3 3 ; 2 2 2 ; 1 1 0]
3 3 3
B =
2 2 2
1 1 0
• Exemplo 3:
C = A + B
• Exemplo 4:
D = [1 2 3] * A
4 5 6
C =
6 7 8
8 9 9
D = 30 36 42
10
Algoritmo 1 – Raízes da equação do 2º grau
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);
R1  (-B + D)/(2*A);
R2  (-B - D)/(2*A);
sai R1;
sai R2;
fim se;
11
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)
# 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
12
Download

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