introdução (informal) à programação

17
16/17 de Março de 2 004 Introdução (Informal) à P rogramação 1 Introdução (Informal) à Programação Pedro Barahona DI/FCT/UNL Março 2004

Upload: jela

Post on 13-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Introdução (Informal) à Programação. Pedro Barahona DI/FCT/UNL Março 2004. Responsável (substituição): Pedro Barahona ( [email protected] / centria.di.fct.unl.pt/~pb) Assistentes: Susana Nascimento, Joaquim Ferreira da Silva, Jorge Simão, Jorge Custódio, Alexandre Pinto, Bruno Barreiros - PowerPoint PPT Presentation

TRANSCRIPT

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

16/17 de Março de 2004 Introdução (Informal) à Programação 1

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

Pedro BarahonaDI/FCT/UNL

Março 2004

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

16/17 de Março de 2004 Introdução (Informal) à Programação 2

• Responsável (substituição):

– Pedro Barahona ( [email protected] / centria.di.fct.unl.pt/~pb)

• Assistentes:

– Susana Nascimento, Joaquim Ferreira da Silva, Jorge Simão, Jorge Custódio, Alexandre Pinto, Bruno Barreiros

• Objectivos– Introdução à Algoritmia

– Familiarização com uma linguagem imperativa (Octave/MATLAB)

– Aplicação a problemas de engenharia

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

16/17 de Março de 2004 Introdução (Informal) à Programação 3

Avaliação

• Regras de Avaliação: – Trabalho de HTML

• Semana de 15-Mar a 19-Mar

– Mini-teste de Octave• Semana de 29-Mar a 2-Abr

– Trabalho de Octave (1)• Semana de 3-Mai a 7-Mai

– Trabalho de Octave (2)• Semana de 31-Mai a 4-Jun

• Nota Final: – 25 % - Testes e Trabalhos em grupos de 2– 75% - Exame Individual (Programação - Algoritmia e Octave)

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

16/17 de Março de 2004 Introdução (Informal) à Programação 4

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 5: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 5

Níveis de Abstração

• Um programa pode ser entendido a vários níveis de abstracção (detalhe).

• Quanto mais “inteligente/conhecedor” fôr o interlocutor, a mais alto nível podem ser dadas as intruções.

Vá para Lisboa

Saia da sala

Saia do Edifício

Dirija-se à portaria

Vá para a paragem de autocarro

Apanhe o autocarro

....

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

16/17 de Março de 2004 Introdução (Informal) à Programação 6

Níveis de AbstraçãoNí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 11A810A0

LDB 22345A91

ADD A,B

STA 1234FE88

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

16/17 de Março de 2004 Introdução (Informal) à Programação 7

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 8: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 8

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 9: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 9

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 10: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 10

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 e

– 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 11: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 11

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 12: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 12

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 Afim enquanto ;

sai B ; % o valor de B é comunicado

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

16/17 de Março de 2004 Introdução (Informal) à Programação 13

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 14: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 14

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 15: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 15

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 16: Introdução (Informal) à Programação

16/17 de Março de 2004 Introdução (Informal) à Programação 16

Algoritmo 1 – Raízes da equação do 2º grau

entra 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); R1 (-B + D)/(2*A); R2 (-B - D)/(2*A); sai R1; sai R2; fim se;

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

16/17 de Março de 2004 Introdução (Informal) à Programação 17

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)