Vous êtes sur la page 1sur 99

Algoritmo e Estruturas de Dados 1

1º Ano de EIT

Faustino Guinge, David Lamas


guingefaustino@gmail.com
dlamas.lamas@acm.org

Universidade Metodista Unida de Moçambique


Cambine, Inhambane, Moçambique

© 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

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 6
Moçambique
Algoritmia como Ciência da Computação
• A base da algoritmia assenta na lógica matemática e na
álgebra linear.
• A algoritmia é uma ciência da computação que estuda e
investiga a sintaxe e a semântica de expressões e instruções
simbólicas que, em conjunto com estruturas de dados que
representam entidades do mundo real, permitem a resolução
de problemas associados a diferentes domínios do nosso
conhecimento.

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 7
Moçambique
Aplicação de algoritmos em computação

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 8
Moçambique
Algoritmos, computadores e programação
• Os computadores executam algoritmos e manipulam dados. A
execução de um algoritmo é também designada por processamento
de dados e consiste em três partes ou fases de execução: entrada
de dados, o processo (ou processamento dos dados) e uma saída
de dados (ou resultados do processamento).

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:

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 9
Moçambique
• A implementação de um algoritmo para a resolução de um problema
é designada por programação de computadores feita atraves de
inserção de um conjunto de instruções no computador através
da conversão das instruções algorítmicas numa determinada
linguagem de programação;
• A linguagem do computador, designada por linguagem máquina, é
a única linguagem que o computador realmente conhece.
• No entanto, foram desenvolvidas as linguagens de programação
(C, C++, C#, Java, etc.) independentes da máquina (e mais
próximas da linguagem natural) de modo a facilitar o processo de
desenvolvimento de software.
© David Ribeiro Lamas & Faustino Ricardo Guinge, Área
Científica de Informática, Universidade Metodista Unida de 10
Moçambique
Características de um Algoritmo
• Um algoritmo representa uma sequência finita e não ambígua
de instruções de modo a obter a resolução do problema sob a
forma de resultado (saída de dados) tendo por base uma
entrada prévia de dados. Um algoritmo é representado através
de uma linguagem com uma determinada sintaxe e semântica
associada. Por fim, um algoritmo deve ser eficaz na resolução
do problema subjacente assim como eficiente de modo a
resolver o problema com o melhor desempenho (performance)
possível.

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 11
Moçambique
Aula Teórica #2
Modelação algorítmica e a resolução de problemas
• A algoritmia e a Engenharia de software
• Aproximação descendente
• Componentes de um algorítmo

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 12
Moçambique
Modelação algorítmica e a resolução de
problemas
• A definição de algoritmos para a resolução de problemas é uma
fase fundamental no processo de desenvolvimento de software.
• Esta tarefa é realizada inicialmente de um modo empírico
através da criação de um modelo mental do problema e da
solução, tendo como base o conhecimento previamente
adquerido sobre o domínio do problema.

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 13
Moçambique
Compreender o problema

Definir plano de desenvolvimento


• Investigar a viabilidade do projecto
• Top-down vs. botton-up approach
• Definir as estruturas de dados necessarias
• Definir as tecnicas de concepção algoritmica necessarias

Conceber os algorítmos

Analisar e validar os algorítmos


(analise algorítmica)

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)

• aproximação descendente (top-down) para a resolução de


problemas do mundo real permite raciocinar e estruturar
(atraves da divisao do problema em subproblemas) a solução
de um problema em linguagem natural (ex.: Português).

Problema Subproblemas Passos para a resolução


Objectivo Subobjectivos e definição de modulos

• Exemplo: Algoritmo Troca de pneu do carro:

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 15
Moçambique
1. Desligar o carro
2. Tirar o pnéu a ser substituido
3. colocar o novo pnéu
4. Guardar as ferramentas

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 16
Moçambique
1. desligar o carro
2.1. pegar o estilete
2.2. suspender o carro com macaco
2.3. desenrolar os parafusos do
pnéu
3.1. colocar o estelete
3.2. enrolar os parafusos
3.3. Baixar o carro com o macaco
4. Guardar as ferramentas

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 17
Moçambique
Componentes de um algorítmo

• Estruturas de dados
• Instruções de manipulação de dados
• Estruturas condicionais
• Estruturas de controle
• Módulos

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 18
Moçambique
Aula prática 1
• Usando uma abordagem descendente, elabore um algorítmo
(representaçao natural) para trocar a memória de um computador.

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 19
Moçambique
Exercicio adicional
• Imagine um algorítmo que calcula e determina se um estudante está
admitido, excluido ou dispensado na UMUM(ADE1). usando o
programa da Unidade curricular, assim como o regulamento
pedagógico represente o algoritmo na forma de representação
natural.

© David Ribeiro Lamas & Faustino Ricardo Guinge, Área


Científica de Informática, Universidade Metodista Unida de 20
Moçambique
Aula teórica 3
• Linguagem de representação algorítmica
• Natural;
• Fluxograma; e
• Pseudocódigo.
Representação natural
• Utiliza a nossa linguagem para representar a lógica de um
algoritmo;
• Está relacionada com a aproximação descendente (topdown)
• O exemplo que se segue, determina a aprovação ou
reprovação do aluno através dos procedimentos:
• Ler as notas das duas avaliações (Teórica-T e prática-P);
• Calcular a média (MED) através da fórmula (T+P)/2;
• Se a média aritmética for igual ou superior a 10 então o aluno está
aprovado, senão o aluno está reprovado
Pseudocódigo
• Consiste na descrição do algoritmo numa linguagem parecida
com a linguagem natural (português, inglês ou outra) de forma
estruturada;
• O objectivo deste formalismo é centrar a atenção do
programador na lógica ou fluxo do algoritmo, abstraindo-se das
questões relacionadas com a sintaxe específica de uma
determinada linguagem de programação;
• Uma característica essencial desta representação, é a sua
portabilidade para qualquer linguagem de programação.
Um exemplo do pseudocódigo

Function factorial (n)


fact 1
For i=1 to n
{
fact fact*i
i i+1
}
return fact
Fluxograma
• consiste na descrição de um algoritmo de forma gráfica;
• Este formalismo inclui um conjunto de símbolos gráficos que
representação os diferentes tipos de instruções anteriormente
descritas: sequência, decisão e repetição;
• A sua notação se segue:
Aula prática 2
• Faça a representação algorítmica em fluxograma e
pseudocódigo dos algoritmos da aula prática 1.
Aula teórica 4
Métodos de concepçao algorítmica
• Método iterativo
• Método recursivo
• Iteraçao vs recursao
Análise da complexidade algorítmica
• Objectivos da análise algorítmica
• Métodos de avaliação algorítmica
• Avaliação da complexidade de um algoritmo
Métodos de conceção algorítmica
• Definem a estratégica de concepção de um algoritmo para a
resolução de problemas subjacente, e a especificação do
algoritmo numa determinada linguagem.
• São associados ao paradigma (procedimental versus orientado
objectos por exemplo) de programação a adotar na
implementação dos algoritmos numa determinada linguagem.
• Existem vários métodos, mas somente vamos focar em dois
métodos principais: iterativo e recursivo.
Método iterativo
• Tem por base a divisão do problema principal em
subproblemas (aproximação descendente, top-down-design)
• Tem um padrão de comportamento repetitivo oque leva a
utilização de estruturas cíclicas de controle de problema.
• Exemplo: função para calculo de factorial de um numero inteiro.

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)

If F=0 [caso base]


Then return 1
Else return F* Factorial_rec(F-1)
[passo recursivo]
Analise da complexidade algorítmica
• Relacionada aos aspectos que interferem no desempenho dos
algoritmos e consequentes resoluções de problemas;
• Existem diferentes algoritmos/programas para um determinado
domínio (problema ou situação), por isso necessitamos de
definir métricas de avaliação, de modo a validar a melhor
implementação de um algoritmo;
• O tempo e o espaço são os dois indicadores mais relevantes
na analise na analise e avaliação algorítmica.
Objectivos da analise algorítmica
• Os principal objectivo da analise algorítmica é avaliar a
complexidade temporal (eficiência) e a complexidade especial
de um algoritmo/programa.
Métodos de avaliação algorítmica
• Método empírico
• Método experimental
• Método analítico
Fim da aula teórica #4
• Falamos de:
Métodos de concepçao algorítmica
• Método iterativo
• Método recursivo
• Iteraçao vs recursao
Análise da complexidade algorítmica
• Objectivos da análise algorítmica
• Métodos de avaliação algorítmica
• Avaliação da complexidade de um algoritmo
Aula prática 3
• Elabore um algoritmo que permite realizar a soma sucessiva de
N numeros inteiros: represente o nas tres formas (natural,
fluxograma e pseodocódigo)
Exemplo: para N=5, Soma=5+4+3+2+1
Exercício adicional
• Descreva um algoritmo que a partir de um determinado número
de segundos e calcula o número de horas, minutos e segundos
correspondentes. Conforme o seguinte exemplo: represente o
nas três formas (natural, fluxograma e pseodocódigo)
Aula teórica 5
Tipos e estruturas de dados
• Estruturas de dados primitivos
• Tipo de dados booleano
• Tipo de dado numérico
• Tipo de dados alfanumérico
• Ponteiros
• Repreentação dos dados em memória
• Representação simbólica
• Representação numérica
• Informação contextual
Estruturas de dados
• Um algoritmo é desenvolvido para resolver um problema do
mundo real. Este processo requer a manipulação de dados de
entrada para gerar saída.
• Um conhecimento sobre os tipos de dados é crucial para
desenvolver algoritmos/programas eficazes. Por exemplo,
poderia criar um “bug” se tentarmos somarmos um numero com
uma letra (5+a) e o resultado guardarmos em uma variável do
tipo inteiro.
Int x 8+B;
Dados Booleanos
• Este tipo de estrutura de dados permite representar dois (e só
dois) estados: ‘verdadeiro’ e ‘falso’.
• Pode ser representado através dos dois estados existentes na
codificação binário: 1 – ‘verdadeiro’; 0 – ‘falso’.
• É usualmente aplicado em situações reais que unicamente
denotam dois estados possíveis.
Dados numérico
• Tipo de dados representativo de valores numéricos no domínio
dos números inteiros e reais. Por exemplo, 45 é um dado do
tipo numérico inteiro, raiz quadrada de 2 é um dado do tipo
real.
Tipo de dados alfanumérico (string)
• Constituído por uma sêquencia de caracteres contendo letras,
dígitos (números) e/ou símbolos especiais.

Exemolo Comptimento (numero de caracteres)


‘eit2018’ 7
‘Faustino Guinge’ 15
‘1+2-3=’ 6
Operações com Strings
• Criação de uma string
• Concatenação de strings
• Pesquisa de uma string dentro da outra string
• Extração de uma string dentro da outra string
• Comparação de strings
• Comprimento de uma string
Tipo de dados ponteiro
• Um ponteiro (= apontador = pointer) é um tipo especial de variável
que armazena endereços da memoria.

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:

• Escreva um algoritmo (natural, fluxograma e pseudocódigo)


que solicite ao utilizador o fornecimento do seu peso em kg e
de sua altura em m e a partir deles calcule o índice de massa
corpórea do utilizador.
Exercício adicional
• Para as strings x universidade e y metodista, efectue as
seguintes operações:
a) concatenação de x e Y
b) INDEX (x, ‘ver’), INDEX (y, cam)
c) SUB (x, 4, 4), SUB (y, 1, 8)
d) Indique o resultado de comparação: x>y, y>x e x=y
e) U LENGTH (x), T LENGTH (SUB (y, 5, 3), Z LENGTH (y+(SUB
(y, 5, 1))
Aula Teórica 6
• Estruturas de dados complexos
• Vectores
• Matrizes
• Outras estruturas de dados
• Conjuntos e dicionários
• Tipos de dados abstractos
Estruturas de dados não primitivas
• As estruturas de dados não primitivas são definidas através de
conjuntos de estruturas de dados primitivas. Podem ser:
• Estruturas de comprimento fixo
• Estruturas de comprimento variável
Vectores
• Um vector é apresentado através de um nome e de um índice
entre parêntesis rectos.
NomeVector [tamanho]
Exemplo:
Vnum [8]
Onde: Vnum representa o nome do vector (variavel) e 8 o seu
tamanho
• O vector VNUM [I] representado na figura anterior é um vector
do tipo numérico (inteiro) com uma dimensão de 8 (variável N)
elementos. O acesso a elementos (valores) do vector são
efectuados através da utilização de um índice (no exemplo
anterior representado na variável I). Por exemplo, o valor
associado à posição 6 do vector VNUM é igual a 90.
Matrizes
• Uma matriz pode ser interpretada como um vector (array)
bidimensional (com dimensão 2).
• Uma matriz é representada através de um nome e dois índices
que permitem indexar e aceder os elementos que constam na
matriz.
• A matriz MAT[I,J] ilustrada na figura anterior contem 7 linhas e
6 colunas. O índice I representa as linhas e o índice J as
colunas da referida matriz. A inserção, acesso e a actualização
dos elementos da matriz efectua-se através da referência da
linha e da coluna. Por exemplo, MAT[3,6] = 212.
• Este tipo de estruturas de dados (vectores e matrizes) é
aplicado com notas explicativas em diversos exercícios e
exemplos propostos nas secções do próximo capítulo.
Outras estruturas de dados

• Conjuntos e dicionários
Tipos de dados abstractos
Estudante{
String nome;
Int NumeroProcesso

Int media (real teste1, real teste2)


{
Return (teste1+teste2)/2
}
}
Aula prática 5
• Elabore um algoritmo que armazena as notas semestrais
(frequência) de uma disciplina.
• O algoritmo deve rececer o nome da disciplina, número de
estudantes, e para cada estudante, deve armazenar a sua nota
de frequência. Estas notas devem ser introduzidas pelo
usuário.
• Representação natural
• pseudocódigo
• fluxograma
Aula Teórica 7
• Notação algorítmica e estruturas lógicas
• Pseudocódigo e programação estruturada
• Desenvolvimento de um algorítmo
• Notação algorítmica
• Identificadores, variáveis e constantes
• Instrução de atribuição
• Leitura e escrita de dados
• Operações e expressões Aritméticas
• Operadores e operações relacionais
• Operadores e operações lógicas
• Finalização do Algorítmo
Pseudocódigo e programação
estruturada
• O próximo exemplo apresenta um algoritmo que permite
calcular o factorial de um número inteiro. Este algoritmo utiliza
uma notação que será utilizada nos restantes exemplos:
1. Nome do algoritmo em letras maiúsculas.
2. Breve comentário das tarefas a desenvolver pelo algoritmo
3. Conjunto de passos numerados e comentados
4. Estruturas de dados, funções e subrotinas em letra maiúscula
5. Estruturas de controlo: primeira letra em maiúscula
6. O algoritmo termina com a instrução Exit (fim lógico).
Notação algorítmica
• Identificadores
• Variáveis
• Constantes
• Instrução de atribuição
• Leitura e escrita de dados
• Operações e expressões Aritméticas
• Operadores e operações relacionais
• Operadores e operações lógicas
• Operadores e operações lógicas
Identificadores
• São nomes dados a variáveis , funções e outros elementos.
• Em pseudocódigo, normalmente são adoptadas as seguintes
regras:
• O primeiro caracter não pode ser um algarismo (numero), e
deve necessariamente começar por uma letra;
• Podem ser constituídos por letras não acentuadas,
algarismos e não devem conter nenhum símbolo/caracter
especial, excepto o sub-linha (under-line) “_”;
• Letras maiúsculas e minúsculas representam caracteres
diferentes
Variáveis
• É um espaço reservado na memória do computador para
armazenar um pré-determinado tipo de dados, para o qual
existe, um nome conhecido como identificador;
• O conteúdo pode ser alterado ao longo do algoritmo;
• O identificador de uma variável deve ser diferente com as
demais variáveis ;
• Ela só pode armazenar um valor a cada instante;
Constantes
• Representa um dado cujo o valor permanece inalterado
durante a execução do algoritmo
Exemplo: pi(3.14)
Instrução de atribuição
• A instrução de atribuição é representada através do símbolo
que é colocado à direita da variável que recebe o valor da
atribuição (ex.: FACT 1). Ter atenção a diferença entre o sinal
de atribuição e o símbolo = que é utilizado como operador
relacional.
• Exemplo:
Leitura e escrita de dados
• Perante a notação algorítmica é possível obter (ou ler) valores
de variáveis, assim como escrever (ou imprimir) os valores
dessas variáveis através de instruções de leitura (entrada de
dados) e instruções de escrita (saída de dados).
• Leitura de dados
• Sintaxe:
• Read (<nome da varivel>)
• Exemplo:
Read(Numero_alunos)
For i=1 to Numero_alunos
Read(Nome_aluno[i]
• Saída de dados
• Sintaxe:
Write ( <nome da variável>) ou
Write (<‘texto’>) ou
Write ( <nome da variável>, <‘texto’ ) ou
Write (<‘texto’ >, <nome da variável 1>, ‘<texto’>, <nome da variável
2>,……)
Operações e expressões Aritméticas
• Operações e funções matemáticas que permitem efectuar
variados cálculos aritméticos.
• (*)-Multiplicação
• (+)-Adição
• (/)-divição
• ( )-Potencialização
Adicionalmente, determinadas funções matemáticas podem ser usadas:
• MOD(M, N)-função que reorna o resto da divisão de M por N
• INT(num)-função que retorna a parte inteira de NUM (numero real)
• SQR(NUM)- função que retorna a raiz quadrada de um numero inteiro
ou real
Operadores e operações relacionais
• = (igual)
• < (menor)
• > (maior)
• <= (menor ou igual)
• >= (maior ou igual)
• <> (diferente)
Operadores e operações lógicas
• Formadas por uma ou mais proposições.
• Sao utilizados em conjunto com os operadores relacionais e
aritmeticos.

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.

Vous aimerez peut-être aussi