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

16
29 de Setembro de 2 005 Introdução (Informal) à P rogramação 1 Introdução (Informal) à Programação Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2005/2006

description

Introdução (Informal) à Programação. Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2005/2006. input. output. Programa. Programa e Algoritmo. - PowerPoint PPT Presentation

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

Page 1: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 1

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

Jorge CruzDI/FCT/UNL

Introdução aos Computadores e à Programação1º Semestre 2005/2006

Page 2: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 2

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).

• Um programa é a materialização para uma dada máquina (computador e linguagem de programação) de um algoritmo.

Programainput output

Page 3: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 3

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.

Vá para Lisboa

Saia da sala

Saia do Edifício

Dirija-se à portaria

Vá para a paragem de autocarro

Apanhe o autocarro

....

Page 4: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 4

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.

C A + BLDA 1005

LDB 22345A91

ADD A,B

STA 1234FE88

Page 5: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 5

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).

C A + BLDA 11A810A0

LDB 22345A91

ADD A,B

STA 1234FE88

Page 6: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 6

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

Page 7: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 7

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)

Page 8: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 8

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 = 2B A + 3 ; % A variável B toma o valor 2+3 = 5C B * 2 ; % A variável C toma o valor 5*2 = 10sai C ; % O valor de C é passado para o exterior

Page 9: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 9

Controle de Execução

• Execução condicional (“se”) – Exemplo:

entra A ; % o valor de A é “entrado”se A > 0 então B A % à variável B é atribuído senão % o valor absoluto B - A % da variável Afim se;

sai B ; % o valor de B é comunicado

Page 10: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 10

Controle de Execução

• Execução Repetida (“enquanto”) – Exemplo:

entra A; % o valor de A é “entrado”B 1; % o valor de B é inicializado a 1enquanto A > 1 fazer B B * A; % à variável B é atribuído A A – 1; % o factorial de Afim enquanto;

sai B; % o valor de B é comunicado

Page 11: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 11

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.

Page 12: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 12

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 importante são as matrizes unidimensionais (vectores).

• 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.

Page 13: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 13

Estruturas de Dados

• Exemplo 1:

A = [1 2 3 ; 4 5 6 ; 7 8 9]

• Exemplo 2:

B = [3 3 3 ; 2 2 2 ; 1 1 0]

• Exemplo 3:

C = A + B

• Exemplo 4:

D = [1 2 3] * A

1 2 3

A = 4 5 6

7 8 9

3 3 3

B = 2 2 2

1 1 0

4 5 6

C = 6 7 8

8 9 9

D = 30 36 42

Page 14: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 14

Algoritmo 1 – Raízes da equação do 2º grauentra A ; entra B ; % Ax2 + Bx + C = 0entra 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;

Page 15: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 15

Algoritmo 2 – Cálculo da Raiz Quadrada

# 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

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)

Page 16: Introdução (Informal) à Programação

29 de Setembro de 2005 Introdução (Informal) à Programação 16

Algoritmo 3 – Teste da “Primalidade”

entra N ; primo verdade ;limA = sqrt(N);para A de 2 a limA fazerlimB = N / A; para B de A a limB fazer se A * B = N então primo falso; fim se; fim parafim parase primo então sai ‘o número é primo’senão sai ‘o número não é primo’fim se;

Exemplo: 23sqrt(23) = 4.7958...

2 * 2 ...

2 * 11 % 23/2 = 11.53 * 3 ...3 * 7 % 23/3 = 7.674 * 4 ...4 * 5 % 23/4 = 5.75