programação objectivos da cadeira

Propaganda
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
S0
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
Download