PROGRAMAÇÃO Engª Mecânica 2007 - 2008 Sérgio Rodrigues [email protected] OBJECTIVOS DA CADEIRA Fornecer aos alunos os conhecimentos básicos de algoritmia, capacitando-os para o desenho e documentação dos algoritmos de suporte a programas informáticos e/ou procedimentos genéricos que venham a ser necessários. Adicionalmente os alunos ficarão capacitados com conhecimentos gerais de programação conducentes à implementação de algoritmos simples recorrendo à linguagem de programação. Aprendizagem e utilização do ambiente Matlab para apoio prático, ao programa da cadeira. Sérgio Rodrigues, ESTA 2007 1 PROGRAMA DA CADEIRA • Algoritmia – Identificação e definição do problema – Estruturação e especialização do algoritmo – Representação gráfica de algoritmos • Fluxogramas • Pseudo-linguagem • Outras Representações • Noções Matemáticas – Bases de representação numérica: decimal, binária, octal e hexadecimal – Conversões entre bases – Operações aritméticas de soma e diminuição na base binária – Operações lógicas de AND, OR e XOR na base binária Sérgio Rodrigues, ESTA 2007 PROGRAMA DA CADEIRA • Paradigmas da Programação – Estrutura básica de programa – Código fonte, Compilação e Linkagem – Tipos de dados, operadores e expressões – Instruções de controlo de fluxo – Tipos de dados derivados – Funções e procedimentos – Regras de alcance dos nomes e tempo de vida dos objectos – Indentação do código fonte – Normalização das nomenclaturas utilizadas Sérgio Rodrigues, ESTA 2007 2 PROGRAMA DA CADEIRA • Ambiente Aplicacional Matlab – Ambiente de Trabalho Matlab – Variáveis – Funções matemáticas elementares – Matrizes – Operadores – Gráficos 2D e 3D – Elementos de Controlo de Fluxo – Tratamento de Erros – Strings e Funções – Ficheiros-M Sérgio Rodrigues, ESTA 2007 BIBLIOGRAFIA Disponíveis na sessão de cópias • Apontamentos da cadeira; Carlos Mora, 2006/2007 • Frequências e exames efectuados nos anos anteriores Disponível na Biblioteca do IPT-ESTA • Dirceu Douglas Salvetti, Lisbete Madsen Barbosa, “Algoritmos”, Makron Books • Sara Baase, Allen Van Gelder, “Computer Algorithms – Introduction to Design & Analysis”, Addison-Wesley • Vagner Morais e Cláudio Vieira, “MATLAB 7&6, FCA Editora Sérgio Rodrigues, ESTA 2007 3 SISTEMAS DE INFORMAÇÃO Sistema de Informação é um sistema que reúne, guarda, processa e faculta informação relevante para a organização (...), de modo que a informação é acessível e útil para aqueles que a querem utilizar, incluíndo gestores, funcionários, clientes, (...). Um Sistema de Informação é um sistema de actividade humana (social) que pode envolver ou não, a utilização de computadores. [Buckingham, et al. 1978] Sistema de Informação é uma combinação de procedimentos, informação, pessoas e Tecnologias de Informação, organizadas para o alcance de objectivos de uma organização. [Alter 1992] Sérgio Rodrigues, ESTA 2007 TI-TECNOLOGIAS DE INFORMAÇÃO Tecnologias de Informação, são o conjunto de equipamentos e suportes lógicos (hardware e software) que permitem executar tarefas como aquisição, transmissão, armazenamento, recuperação e exposição de dados. [Alter 1992] Exemplos de T I • • • • • Hardware Software de sistema Software aplicacional Comunicações Ferramentas de desenvolvimento Sérgio Rodrigues, ESTA 2007 4 DADOS VS. INFORMAÇÃO Dados, são elementos primitivos, com os quais e através de algum tipo de processamento, se obtém a informação. INFORMAÇÃO PROCESSAMENTO DADOS Sérgio Rodrigues, ESTA 2007 GESTÃO DO SISTEMA DE INFORMAÇÃO DADOS TI INFORMAÇÃO GESTÃO DA INFORMAÇÃO OUTROS RECURSOS GESTÃO DO SISTEMA DE INFORMAÇÃO Sérgio Rodrigues, ESTA 2007 5 GESTÃO DO SISTEMA DE INFORMAÇÃO Gestão de Sistemas de Informação é a gestão do recurso informação e de todos os recursos envolvidos no planeamento , desenvolvimento, exploração e manutenção do SI. [Amaral, Varajão 2000] “Investir em TI não significa investir nos Sistemas de Informação” Sérgio Rodrigues, ESTA 2007 ARQUITECTURA GERAL DE UM COMPUTADOR Sérgio Rodrigues, ESTA 2007 6 ORGANIZAÇÃO DE UM COMPUTADOR CPU MEMÓRIA ENTRADA SAÍDA • Memória • Programas • Problemas Computacionais Sérgio Rodrigues, ESTA 2007 TIPOS DE DADOS Tipos Abstractos de Dados Um tipo abstracto de dados, é uma abstracção de uma Estrutura de Dados associado a operações e relações entre os varios elementos e dando enfoque ao seu comportamento em detrimento de qualquer detalhe de representação (e.g.: Pilha ou Stack) Tipos de Dados Programas vs Linguagens de Programação Cada Linguagem tem o seu tipo de Dados (Valores, Operações e Relações) Sérgio Rodrigues, ESTA 2007 7 ESTRUTURAS DE DADOS Estruturas de Dados Localizações da memória onde os dados são armazenados. São organizadas conforme o tipo de dados disponiveis na LP, de forma a representar fielmente os tipos abstractos de dados em causa. Sérgio Rodrigues, ESTA 2007 TÉCNICAS DE PROGRAMAÇÃO Metodologia Genérica Análise do Problema Projecto do Programa: Algoritmo e estrutura de dados Implementação e teste do programa Verificação/Execução do programa Sérgio Rodrigues, ESTA 2007 8 ALGORITMOS Algoritmo é uma sequência ordenada e finita de operações bem definidas, que partido de informação fornecida previamente, produz, num tempo finito, um resultado que é a solução de um determinado problema, ou em alternativa a indicação de que a solução não pode ser obtida. Caracteristicas Principais • • • • • [Horowitz e Sahni 82]: Limitação Definição Entradas Saídas Eficiencia Sérgio Rodrigues, ESTA 2007 ALGORITMOS-ESTRUTURAS LÓGICAS Um algoritmo pode ser constítuido por qualquer combinação das seguintes estruturas lógicas: Sequêncial Uma acção executa a seguir à outra numa ordem pré estabelecida Repetitiva A execução de uma ou mais acções repete-se cíclicamente de forma finita Selectiva Uma ou mais acções são executadas em detrimento de uma ou mais conjuntos de acções. Sérgio Rodrigues, ESTA 2007 9 FORMAS DE REPRESENTAÇÃO 1. Linguagem Natural 2. Fluxograma Vantagens – De universal entendimento Desvantagens – Pode gerar Ambiguidades Exemplo: Máquina de calcular simples para a execução das operações de x, :, + e – 3. Diagrama de Chapin 4. Pseudo-Código • Verificar se a máquina está ligada, senão ligar • Limpar memória do visor • Recolher 1º operando • Recolher operação • Recolher 2º operando • Efectuar cálculo • Apresentar Resultado Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO Vantagens – Visual e Simples 1. Linguagem Natural 2. Fluxograma 3. Diagrama de Chapin Desvantagens – Inadequado para problemas complexos 4. Pseudo-Código Sérgio Rodrigues, ESTA 2007 10 FORMAS DE REPRESENTAÇÃO Primitivas: Início de fluxograma 1. Linguagem Natural Acção Estado com espera Acção Estado sem espera 2. Fluxograma 3. Diagrama de Chapin 4. Pseudo-Código N Condição S Decisão Fluxo Fim de fluxograma n Elemento de ligação Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO Exemplo: Recolher 1º Operando 1. Linguagem Natural 2. Fluxograma Recolher Operação Ex.: Implentar calculadora com as operações +, -, /, x 1. Diagrama de Chapin Recolher 2º Operando 2. Pseudo-Código Efectuar Cálculo Apres. Resultado Sérgio Rodrigues, ESTA 2007 11 EXERCÍCIO: FACTORIAL Desenvolver um programa que dado um determinado número calcule o seu factorial F = N! = N x (N-1) x (N-2) x ... x(N-(N-1) Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO Vantagens – Visual e simples, pelo que facilita o entendimento global do algoritmo 1. Linguagem Natural Facilita a representação do 2. Fluxograma 3. Diagrama de Chapin (Nassi-Schneiderman) 1. Pseudo-Código encapsulamento e da recursividade em relação ao fluxograma Desvantagens – Inadequado para problemas complexos Ocupa muito espaço. Sérgio Rodrigues, ESTA 2007 12 FORMAS DE REPRESENTAÇÃO Primitivas (mais comuns): Processo 1. Linguagem Natural 2. Fluxograma Decisão 3. Diagrama de Chapin 4. Pseudo-Código Iteração Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO 1. Linguagem Natural Primitivas (mais comuns): Iteração 2. Fluxograma 3. Diagrama de Chapin 4. Pseudo-Código Decisão Múltipla Sérgio Rodrigues, ESTA 2007 13 FORMAS DE REPRESENTAÇÃO Exemplo: 1. Linguagem Natural 2. Fluxograma SIM Ligada? Ligar 3. Diagrama de Chapin 4. Pseudo-Código NÃO Limpar Visor Recolher 1º Operando Recolher Operação Recolher 2º Operando Efectuar Cálculo Apresentar Resultado Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO 1. Linguagem Natural Vantagens – Permite a representação de um algoritmo, tanto ao seu nível mais abstracto ou ao 2. Fluxograma 3. Diagrama de Chapin 4. Pseudo-Código seu nível mais específico. Simplicidade, Legibilidade e Exactidão. Desvantagens – Pode esconder os problemas de eficiência face a linguagem de mais baixo nível. Sérgio Rodrigues, ESTA 2007 14 FORMAS DE REPRESENTAÇÃO Primitivas: SEQUÊNCIAIS START Identificação do ponto inicial do algoritmo 1. Linguagem Natural 2. Fluxograma END Identificação do ponto final do algoritmo 3. Diagrama de Chapin 4. Pseudo-Código INPUT <string>, <variável> Primitiva para recolha de dados do utilizador OUTPUT <string>, <variável> Primitiva para apresentação de dados ao utilizador <variável> <expressão> Atribuição do resultado da expressão à variável indicada Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO Primitivas (continuação): SELECTIVAS IF <condição> 1. Linguagem Natural 2. Fluxograma 3. Diagrama de Chapin THEN <instruções a executar se condição verdadeira> ELSE <instruções a executar se condição falsa> END IF 4. Pseudo-Código Sérgio Rodrigues, ESTA 2007 15 FORMAS DE REPRESENTAÇÃO 1. Linguagem Natural 2. Fluxograma Primitivas (continuação): REPETITIVAS FOR <valor inicial> TO <valor controlo> [STEP <incremento>] <instruções a executar enquanto não for atingida a condição limite> END FOR 3. Diagrama de Chapin 4. Pseudo-Código WHILE <condição> <instruções a executar enquanto a condição for verdadeira> END WHILE DO <instruções a executar enquanto a condição for verdadeira> WHILE <condição> Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO 1. Linguagem Natural 2. Fluxograma Primitivas (continuação): FUNÇÕES FUNCTION <nome da função> (parâmetros da função[,]) <instruções da função> 3. Diagrama de Chapin [RETURN <variável da função>] 4. Pseudo-Código END FUNCTION CALL <nome da função> (parâmetros da função) Sérgio Rodrigues, ESTA 2007 16 FORMAS DE REPRESENTAÇÃO Primitivas (continuação): DECLARAÇÕES VAR <tipo da variável> 1. Linguagem Natural 2. Fluxograma 3. Diagrama de Chapin 4. Pseudo-Código CONST <tipo da const.> <nome da variável> [,] <nome da variável> <nome da const.> [,] <nome da const.> STRUCT <struct name> <tipo da variável> <nome da variável> [,] <tipo da variável> <nome da variável> END STRUCT Sérgio Rodrigues, ESTA 2007 FORMAS DE REPRESENTAÇÃO 1. Linguagem Natural 2. Fluxograma 3. Diagrama de Chapin 4. Pseudo-Código FUNCTION EfectuarCalculo(Op1, Oper, Op2) START VAR Op1 DECIMAL (10,2) Op2 DECIMAL (10,2) Oper Char R DECIMAL (10,2) OUTPUT “Introduza o 1º operando” INPUT Op1 OUTPUT “Introduza o operador” INPUT Oper Ex. Implentar calculadora com as operações +, -, /, x, n2 e √n IF Oper necessita 2º operando THEN OUTPUT “Introduza o 2º operando” INPUT Op2 R = Op1 Oper Op2 ELSE R = Op1 Oper END IF RETURN R END FUNCTION Sérgio Rodrigues, ESTA 2007 17 FORMAS DE REPRESENTAÇÃO (...) CALL EfectuarCalculo (Op1, Oper, Op2) 1. Linguagem Natural OUTPUT “ O RES. da operação é:”, R 2. Fluxograma 3. Diagrama de Chapin (...) 4. Pseudo-Código Ex.: Chamar função EfectuarCalculo Sérgio Rodrigues, ESTA 2007 OUTRAS NOTAÇÕES for i := 1,...., n do for j := 1,...., n do cij := 0 for k := 1,...., n do cij := cij + aik ⋅ bkj Szwarcfiter e Markenzon ( [SM94] ) for i ← 1 até n do for j ← 1 até n do cij ← 0 for k ← 1 até n do cij ← cij + aik ⋅ bkj Terada ( [TER91] ) Sérgio Rodrigues, ESTA 2007 18 OUTRAS NOTAÇÕES for i ← 1 to n by 1 do for j ← 1 to n by 1 do c(i,j) ← 0 for k ← 1 to n by 1 do c(i,j) ← c(i,j) + a(i,k) ⋅ b(k,j) Horowitz e Sahni ( [HS82] ) 1 set i ← 1 2 set j ← 1 set c[i,j] ← 0 3 set k ← 1 c[i,j] ← c[i,j] + a[i,k] ⋅ b[ if k <= n then go to 3 if j <= n then go to 2 if i <= n then go to 1 Knuth ( [KNU73] ) Sérgio Rodrigues, ESTA 2007 EXERCÍCIOS ESTRUTURAS DE REPETIÇÃO COM VARIÁVEL DE CONTROLO < FOR > Somatório de Inteiros Calcular a soma dos n primeiros números inteiros pares positivos n = 2 => S = 2 + 4 = 6 n = 3 => S = 2 + 4 + 6 = 12 n = 4 => S = 2 + 4 + 6 + 8 = 20 n n = n => S = 2 + 4 + 6 + ... + n = 2i i 1 Sérgio Rodrigues, ESTA 2007 19 FLUXOGRAMA: SOMATÓRIO DE INTEIROS Esboço do Algoritmo 1. Recolher número de inteiros pares a somar 2. Repetir n vezes calcular número par acumular soma 3. Apresentar resultado (Soma) Sérgio Rodrigues, ESTA 2007 PSEUDO CÓDIGO: SOMATÓRIO DE INTEIROS PARES START VAR INT i, S INPUT “Introduza o número de inteiros que pretende somar”, n S0 FOR i 1 TO n S=S+2xi END FOR OUTPUT “O somatório dos”, n, “primeiros inteiros pares positivos é:”, S END Sérgio Rodrigues, ESTA 2007 20