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