Académique Documents
Professionnel Documents
Culture Documents
1º Ano de EIT
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área Científica de Informática, Universidade Metodista Unida de Moçambique 1
OBJETIVOS E COMPETÊNCIAS A DESENVOLVER
• A disciplina tem como objectivo apresentar conceitos básicos sobre
algorítmo, assim como a definição e modelação de problemas do
mundo real através de algorítmos.
• No final desta Unidade curricular, o estudante deverá ser capaz de
resolver problemas reais através de algorítmos, ter noções básicas
de lógica programação.
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área Científica de Informática, Universidade Metodista Unida de Moçambique 2
Metodologia de avaliação
A avaliação dos alunos inclui:
– A presença e participação nas aulas teóricas e práticas (10%)
– Oito exercícios em pares (20%)
– Um projecto em grupos de dois alunos (30%)
– Dois testes teóricos (40%)
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área Científica de Informática, Universidade Metodista Unida de Moçambique 3
Bibliografia Principal
• Vasconcelos, J. B., & Carvalho, J. V. (2005). Algoritmia e Estruturas
de Dados. LIsboa: Centro Atlantico Lda.
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área Científica de Informática, Universidade Metodista Unida de Moçambique 4
Aula Teórica #1
• Algoritmia e a modelação de problemas
– O contexto
• A noção formal de algorítmo
• A algoritmia como ciência de computação
• Algorítmos, computadores e programação
• Características de uma algorítmo
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área Científica de Informática, Universidade Metodista Unida de Moçambique 5
Noção formal de um algorítmo
• Um algoritmo representa uma sequência finita e não ambígua
de instruções elementares bem definidas, conducente à
solução de um determinado problema, cada uma das quais
pode ser executada mecanicamente numa quantidade finita de
tempo.
• Exemplo: receita de cozinha
Fonte:https://www.google.co.mz/search?q=entrada+processamento+e+saida+de+um+computador&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi66O-
Ni7bcAhWkCsAKHVk4BpsQ_AUICigB&biw=1707&bih=789&dpr=1.13#imgrc=vu7Nj0xPO-oFxM:
Conceber os algorítmos
Codificar os algorítmos
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área
Científica de Informática, Universidade Metodista Unida de 14
Moçambique
Aproximação descendente (top-down approach)
• Estruturas de dados
• Instruções de manipulação de dados
• Estruturas condicionais
• Estruturas de controle
• Módulos
n!=1 se n=0
n!=n*(n-1)*(n-2)*…*3*2*1 se n>0
Function factorial (n)
fact 1
For i=1 to n
{
fact fact*i
i i+1
}
return fact
Método recursivo
• Capacidade de um algoritmo (função ou rotina) evocar-se a si
próprio;
• Tem duas partes distintas: uma parte que resolve parte
concreta do problema, e outra parte que diminui a dimensão do
problema através de uma chamada recursiva do algoritmo;
• Aplicado frequentemente em algoritmos de manipulação de
estruturas de dados não lineares (arvores e grafos).
Estrutura geral de um algoritmo recursivo
Problema (P):
[caso base]
se o caso base B resolve P
então devolver B
[chamadas recursivas de P ate chegar ao caso base]
Senão decompor P em P1, P2, …,Pn
C1 problema (P1)
C1 problema (P1)
…
Cn problema (Pn)
Um exemplo da função factorial, que pode ser definida
recursivamente da seguinte forma:
1 Se n=0
n!=
n*(n-1)! Se n>0
Function Factorial_rec(F)
Fonte:
https://www.google.co.mz/search?q=tipo+de+dado+ponteiro&source=lnms&tbm=isch&sa=X&ved=0ahUKE
wj_xKmis9ncAhWLjZAKHfMqDL8Q_AUICigB&biw=1707&bih=789&dpr=1.13#imgrc=NHFPCrE0vgh1RM:
Representação dos dados
• Os tipos de dados referidos anteriormente são representados
na memória principal do computador de diferentes formas. Os
sistemas de computação digital utilizam vulgarmente três tipos
de dados:
• Dados simbólicos
• Dados Numéricos
• Informação Contextual
Representação Numérica
• Os dados representam quantidades numéricas no sistema de
numeração binário (ou num outro sistema codificado em
binário).
Exemplo:
Informação Contextual
• Conteúdo informativo (significado) de um dado, depende do
contexto. Por exemplo, o dado 0100 0001, pode representar:
Aula prática 4
• O índice de massa corpórea (IMC) de um indivíduo é obtido
dividindo-se o seu peso (em Kg) por sua altura (em m) ao
quadrado. Assim, por exemplo, uma pessoa de 1,67m e
pesando 55kg tem IMC igual a 20,14, já que:
• Conjuntos e dicionários
Tipos de dados abstractos
Estudante{
String nome;
Int NumeroProcesso
OPERADOR DESRIÇÃO
AND (E) Para a conjunção
OR (OU) Para a disjunção
NOT (NÃO) Para negação
XOR Para disjunção exclusiva
Finalização do algoritmo
• A palavra reservada Exit, é normalmente a última instrução do
algoritmo e provoca a sua imediata finalização. Contudo, Exit
também pode ser utilizada no meio do algoritmo.
Algoritmo ALUNOS; Algoritmo ALUNOS;
1 [leitura de numeros de alunos] 1 [leitura de numeros de alunos]
Read (N) Read (N)
Do For I=1 to N 2 [verifica se o número de alunos é
Write (Nome_Aluno[I]) zero]
2 [termina] If N=0
Exit Then Exit
Do For I=1 to N
Write (Nome_Aluno[I])
3 [termina]
Exit
Aula prática 6
• Elabore um algoritmo (natural, fluxograma e pseudocódigo) de
um programa para gerenciamento de contas de um banco.
Sabe se que o rograma deve receber o numero de cliente, e
para cada cliente, deve recolher o numero de conta e saldo.
Depois da recolha, o programa deve mostar os dados de cada
cliente, e uma mensagem que indica se o saldo é negativo ou
positive.
Exemplo:
numero de conta: 2345333 Saldo: -23 Negativo
Aula teórica 8
• Estruturas lógicas de um algoritmo
• Estrutura sequencia
• Estrutura condicional
• Estruturas de repetição
Estrutura sequencia
• A execução de uma instrução é realizada imediatamente após
a conclusão da sua precedente.
Estrutura condicional
• Expressão cujos operandos são relações, constantes e/ou
variáveis do tipo lógico.
• Esta declaração representa um teste de condição lógica (se ...
então ... senão) na qual é executado um conjunto de instruções
consoante a condição especificada for verdadeira ou falsa. A
declaração If pode ter uma das seguintes formas:
• Como exemplo, que analiza a nota de um aluno e actualiza a
sua situação.
Instruções de repetição
• Existem três tipos de instruções que permitem controlar
iterações ou ciclos de processamento. As instruções de
repetição podem ter uma das seguintes formas:
1. Do While <condição lógica>
2. Repeat until <condição lógica>
3. Do For INDEX = <sequencia numeral>
Do While (Fazer para…)
• A instrução Do While é utilizada quando é necessário repetir um
conjunto de passos em função de uma determinada expressão lógica.
Os referidos passos são repetidos enquanto a expressão lógica for
verdadeira, ou seja, o ciclo de processamento termina quando a
condição se tornar falsa.
sintaxe:
Do While <condição>
---------------------------
---------------------------
Repeat Until (Repetir até …)
• A instrução Repeat Until é utilizada quando é necessário repetir
um conjunto de passos em função de uma determinada
expressão lógica. Os referidos passos são repetidos até a
expressão lógica se tornar verdadeira, ou seja, o ciclo de
processamento termina quando a condição se tornar
verdadeira.
Sintaxe:
Repeat until < condição>
----------------
------------------
Do For (Fazer para …)
• A instrução Do For é utilizada quando é necessário repetir um
conjunto de passos um determinado número de vezes.
Sintaxe:
Do For INDEX = N1 to N2 Step P
-----------------------------
-----------------------------
• INDEX indica o índice que é incrementado em cada ciclo de
processamento. N1 e N2 referem dois números inteiros
representativos do intervalo inferior e superior da sequência de
números a executar. A clausula Step determina o incremento na
sequência numérica. Por defeito, o Step tem valor 1.
Aula prática 7
• Elabore um programa (natural, fluxograma e pseudocódigo)
que calcula a média aritimetica das notas de uma determinada
disciplina dos 5 alunos da turma de EIT18B.
Media=(nota1+nota2+nota3+nota4+nota5)/5
• nota1, e nota2…representam as respectivamente as notas do primeiro
aluno, do segunto…..introduzidas pelo usuário
• As representaçãos em fluxograma e pseudocódigo, devem usar
as diferentes estruturas (sequencial e todas de repetição
estudadas, repeat until…, do while….. E do for….).
Aula Teórica 8
Aula prática 8
• O resultado da divisão inteira de um número inteiro por outro
número inteiro pode sempre ser obtido utilizando-se apenas o
operador de subtracção. Assim, se quisermos calcular 7/2,
basta subtrair o dividendo (2) ao divisor (7), sucessivamente,
até que o resultado seja menor do que o dividendo.
• O número de subtracções realizadas corresponde ao quociente
inteiro, conforme o exemplo seguinte:
• Descrever um algoritmo (natural, fluxograma e
pseudocódigo) para o cálculo da divisão de um inteiro pelo
outro. Note que se o dividendo for zero, esta é uma operação
matematicamente indefinida.
Exercício adicional
• Elaborar um àlgoritmo (natural, fluxograma e pseudocódigo)
para converter um número escrito em binário para o
correspondente na base decimal.