Você está na página 1de 20

PROGRAMAÇÃO

Engª Mecânica 2007 - 2008

Sérgio Rodrigues
sergio.rodrigues@ipt.pt

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.

DADOS PROCESSAMENTO INFORMAÇÃO

Sérgio Rodrigues, ESTA 2007

GESTÃO DO SISTEMA DE INFORMAÇÃO

DADOS TI

INFORMAÇÃO

GESTÃO DA OUTROS
INFORMAÇÃO 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
ENTRADA SAÍDA
MEMÓRIA

• 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
Vantagens – De universal entendimento
FORMAS DE
REPRESENTAÇÃO Desvantagens – Pode gerar Ambiguidades

1. Linguagem Natural
Exemplo:
2. Fluxograma 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 Desvantagens – Inadequado para


problemas complexos
3. Diagrama de Chapin

4. Pseudo-Código

Sérgio Rodrigues, ESTA 2007

10
Primitivas:
FORMAS DE
REPRESENTAÇÃO Início de fluxograma

1. Linguagem Natural Acção Estado com espera

2. Fluxograma
Acção Estado sem espera
3. Diagrama de Chapin

4. Pseudo-Código N S
Condição Decisão

Fluxo

Fim de fluxograma

n Elemento de ligação

Sérgio Rodrigues, ESTA 2007

Exemplo:
FORMAS DE
REPRESENTAÇÃO
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

Vantagens – Visual e simples, pelo que


FORMAS DE
REPRESENTAÇÃO facilita o entendimento global
do algoritmo
1. Linguagem Natural
Facilita a representação do
2. Fluxograma
encapsulamento e da
3. Diagrama de Chapin
(Nassi-Schneiderman) recursividade em relação ao
1. Pseudo-Código fluxograma

Desvantagens – Inadequado para


problemas complexos

Ocupa muito espaço.

Sérgio Rodrigues, ESTA 2007

12
Primitivas (mais comuns):
FORMAS DE
REPRESENTAÇÃO Processo

1. Linguagem Natural

2. Fluxograma
Decisão
3. Diagrama de Chapin

4. Pseudo-Código

Iteração

Sérgio Rodrigues, ESTA 2007

Primitivas (mais comuns):


FORMAS DE
REPRESENTAÇÃO

1. Linguagem Natural Iteração

2. Fluxograma

3. Diagrama de Chapin

4. Pseudo-Código

Decisão Múltipla

Sérgio Rodrigues, ESTA 2007

13
FORMAS DE Exemplo:
REPRESENTAÇÃO

1. Linguagem Natural
Ligada?
2. Fluxograma SIM NÃO

3. Diagrama de Chapin Ligar


Limpar Visor
4. Pseudo-Código
Recolher 1º Operando

Recolher Operação

Recolher 2º Operando

Efectuar Cálculo
Apresentar Resultado

Sérgio Rodrigues, ESTA 2007

FORMAS DE
REPRESENTAÇÃO Vantagens – Permite a representação de
um algoritmo, tanto ao seu
1. Linguagem Natural
nível mais abstracto ou ao
2. Fluxograma
seu nível mais específico.
3. Diagrama de Chapin
Simplicidade, Legibilidade e
4. Pseudo-Código
Exactidão.

Desvantagens – Pode esconder os


problemas de eficiência
face a linguagem de mais
baixo nível.

Sérgio Rodrigues, ESTA 2007

14
Primitivas:
FORMAS DE SEQUÊNCIAIS
REPRESENTAÇÃO START
Identificação do ponto inicial do algoritmo
1. Linguagem Natural
END
2. Fluxograma
Identificação do ponto final do algoritmo
3. Diagrama de Chapin
INPUT <string>, <variável>
4. Pseudo-Código
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

Primitivas (continuação):
FORMAS DE SELECTIVAS
REPRESENTAÇÃO
IF <condição>
1. Linguagem Natural THEN
<instruções a executar se condição verdadeira>
2. Fluxograma
ELSE
<instruções a executar se condição falsa>
3. Diagrama de Chapin
END IF
4. Pseudo-Código

Sérgio Rodrigues, ESTA 2007

15
Primitivas (continuação):
FORMAS DE REPETITIVAS
REPRESENTAÇÃO
FOR <valor inicial> TO <valor controlo> [STEP
1. Linguagem Natural <incremento>]
<instruções a executar enquanto não for atingida a
condição limite>
2. Fluxograma
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

Primitivas (continuação):
FORMAS DE FUNÇÕES
REPRESENTAÇÃO
FUNCTION <nome da função> (parâmetros da
1. Linguagem Natural função[,])
<instruções da função>
2. Fluxograma

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
Primitivas (continuação):
FORMAS DE DECLARAÇÕES
REPRESENTAÇÃO
VAR <tipo da variável> <nome da variável> [,]
1. Linguagem Natural <nome da variável>

2. Fluxograma
CONST <tipo da const.> <nome da const.> [,]
3. Diagrama de Chapin <nome da const.>

4. Pseudo-Código 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

FUNCTION EfectuarCalculo(Op1, Oper, Op2)


FORMAS DE START
REPRESENTAÇÃO VAR Op1 DECIMAL (10,2)
Op2 DECIMAL (10,2)
Oper Char
1. Linguagem Natural R DECIMAL (10,2)
2. Fluxograma OUTPUT “Introduza o 1º operando”
INPUT Op1
3. Diagrama de Chapin
OUTPUT “Introduza o operador”
4. Pseudo-Código 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

Você também pode gostar