Este documento apresenta o plano de ensino para a disciplina de Computação Científica no 1o ano do 1o semestre. O objetivo é permitir o desenvolvimento do raciocínio lógico, aprender técnicas de resolução de problemas através de algoritmos e utilizar esses conhecimentos para desenvolver programas de computador. Os alunos serão avaliados por meio de avaliações contínuas, provas parcelares, exame final escrito e um projeto em grupo. As aulas serão ministradas de forma teórico-pr
2. Objec&vos
A
disciplina
de
Computação
Cien.fica
consiste
em:
•
Permi?r
o
desenvolvimento
do
raciocínio
lógico
•
Aprender
as
técnicas
de
resolução
de
problemas
por
meio
de
algoritmos
•
U?lizar
os
conhecimentos
adquiridos
durante
as
aulas
para
desenvolver
programas
de
computadores.
Avaliação
Os
estudantes
serão
avaliados
nas
componentes
prá?cas
e
teóricas:
•
Avaliações
con.nuas
•
Prova
parcelares
•
Exame
final
escrito
•
Projecto
em
grupo
de
duas
(2)
pessoas
3. Metodologia
•
As
aulas
são
ministradas
de
forma
Teórica
/
Prá?ca,
com
algumas
imagens
ilustra?vas
relacionadas
ao
contexto
da
aula.
•
Assuntos
de
interesse
geral
deverão
ser
tratados
na
sala
de
aula.
•
Em
questão
de
dúvidas,
poderão
u?lizar
o
endereço
electrônico:
ccisptec@gmail.com
4. Programa
da
Disciplina
1.
Conceitos
sobre
a
informá?ca
• Definição
e
surgimento
da
Informá?ca
• Computador:
definição,
funcionamento,
gerações
de
computadores,
esquema
de
um
computador,
arquitectura,
classificação
dos
computadores
2.
Algoritmo
• Conceito
de
Algoritmo
• Técnicas
de
Resolução
de
problemas
• Formas
de
representação
dos
Algoritmos
• Tipos
de
Dados
• Variáveis
3.
Expressões
• Operadores
Aritmé?cos
• Expressões
Aritmé?cas
• Precedências
gerais
dos
operadores
aritmé?cos
5. Programa
da
Disciplina
3.
Expressões
(cont)
• Operadores
Lógicos
• Expressões
Lógicas
• Operadores
Relacionais
• Estrutura
Condicional
4.
Estruturas
de
Repe?ção
• Definição
e
?pos
existentes
• Importância
das
Estruturas
de
Repe?ção
na
construção
de
um
Algoritmo
5.
Estrutura
de
Dados
• Variáveis
compostas
homogêneas
Unidimensional
e
Mul?dimensional
(Definição,
declaração
e
manipulação)
6.
Projecto
Final
da
Disciplina
Nota:
Cada
capítulo
será
acompanhado
por
um
conjunto
de
Exercícios
a
serem
resolvidos
na
sala
de
aula
e/ou
Tarefa
para
Casa
6. Bibliografia
Barbosa,
Lisbete
Madsen.
Ensino
de
Algoritmos
em
cursos
de
Computação.
Educ.
2001
Boente,
Alfredo.
Construindo
Algoritmos
Computacionais:
Lógica
de
Programação.
Rio
de
Janeiro:
Basport,
2003
CORMEN,
Thomas
H
(et
al.).
Algoritmos:
Teoria
e
Prá?ca.
Rio
de
Janeiro:
Ed.
Campus,
2002
FARBELLONE,
André
Luiz
Villar,;
ERBERSPACHER,
Henri
Freederico.
Lógica
de
Programação:
A
construção
de
Algoritmo
e
Estrutura
de
Dados.
São
Paulo,
Editora
Pearson
Fren?ce
Hall,
2005
SOUZA,
Marco
António
Furlan
de.
Algoritmos
e
Lógica
de
Programação.
São
Paulo:
Thomson,
2005
7. CAP.
I:
Conceitos
sobre
a
Informá&ca
O
Termo
informá?ca
foi
criado
pelo
cien?sta
francês
Philips
Dreyfus
em
1962,
como
sendo
o
resultado
dos
termos:
Informação
+
Automá?ca
Informá?ca
é
definida
como
a
ciência
que
estuda
o
tratamento
automá?co
da
Informação
tendo
como
suporte
o
computador.
Informação:
define
o
conjunto
de
dados
bem
estruturados
que
geram
o
conhecimento
de
um
determinado
assunto
ou
temá?ca.
Ex:
Conjunto
de
dados
do
B.I
de
um
indivíduo
Automá?ca:
define
a
forma
de
como
a
informação
é
manipulada.
8. CAP.
I:
Conceitos
sobre
a
Informá&ca
Dados
consiste
em:
•
Factos
ob?dos
a
par?r
de
uma
observação,
levantamento
ou
ocorrência.
Ex:
temperatura,
nome,
idade.
Caracterís?cas
da
Informação
•
Intangibilidade
(não
possui
existência
nsica)
•
U&lidade
(deve
corresponder
aos
objec?vos
a
a?ngir)
•
Codificação
(Para
receber
a
informação,
o
receptor
deve
conhecer
o
código
em
que
foi
transmi?da)
•
Tempo
(a
informação
pode
variar
dependendo
do
tempo)
9. CAP.
I:
Conceitos
sobre
a
Informá&ca
Computador:
é
designado
ao
conjunto
de
disposi?vos
electrônicos
capazes
de
receber
dados,
processá-‐los
de
forma
automá?ca
e
fornecer
resultados.
COMPUTADOR
=
HARDWARE
+
SOFTWARE
Hardware:
define
a
parte
nsica
de
um
computador.
Ex:
Monitor,
teclado,
mouse,
etc.
Sosware:
Define
a
parte
lógica
de
um
computador.
Ex:
Sistema
opera?vo,
programas
aplica?vos,
etc.
Funções
principais:
•
Receber
dados
•
Processar
dados
•
Armazenar
dados
•
Mostrar
resultado
10. CAP.
I:
Conceitos
sobre
a
Informá&ca
Os
soswares
são
dis?nguidos
em
Sosware
de
Sistema
e
Sosware
de
Aplicação.
Sosware
de
Sistema:
é
o
elo
de
ligação
entre
o
homem
e
o
computador.
Isto
é,
todo
o
programa
que
permite
dar
vida
ao
computador.
Ex:
Sistema
Opera?vo.
Sosware
de
Aplicação:
é
todo
o
programa
que
facilita
a
realização
das
nossas
tarefas.
Ex:
Office,
programas
de
jogos,
Autocad,
windows
media
player,
etc.
Para
podermos
u?lizar
os
soswares
de
aplicação,
é
necessário
a
existência
de
um
sistema
opera?vo
instalado
no
computador.
Caso
contrário,
consis?rá
em
uma
simples
máquina
que
não
sa?sfaz
as
nossas
necessidades.
Sistema
Opera?vo:
é
todo
o
programa
que
efectua
a
gestão
de
todas
as
tarefas
a
serem
executadas
no
computador
bem
como
a
gestão
de
recursos
(drive
de
CD,
Impressora,
etc).
São
exemplos
de
sistemas
opera?vos:
Windows
Vista,
Windows
8,
Mac
OS
x
,
Linux
(Ubuntu,
Xubuntu,
Fedora),
etc.
11. CAP.
I:
Conceitos
sobre
a
Informá&ca
Arquitectura
do
Computador
Define
a
estrutura
de
um
computador,
bem
como
a
interação
entre
os
elementos
que
o
cons?tuem
para
obter
o
resultado
desejado.
A
Arquitectura
a
ser
estudada
é
denominada
Arquitectura
de
Von
Neumann.
É
representada
pelos
periféricos
de
Entrada,
Saída,
Memórias
e
a
Unidade
Central
de
Processamento.
Ver
a
figura
abaixo:
Fig.1
–
Arquitectura
de
Von
Neumann
12. CAP.
I:
Conceitos
sobre
a
Informá&ca
Arquitectura
do
Computador
Periférico
de
Entrada:
é
todo
o
disposi?vo
que
permite
a
inserção
de
dados
no
computador.
Ex:
Teclado,
leitor
de
código
de
barras,
rato,
Scanner,
etc.
Periférico
de
Saída:
é
todo
o
disposi?vo
que
permite
a
visualização
da
informação
após
o
seu
processamento.
Periférico
de
E/S:
permitem
a
comunicação
entre
o
homem
e
o
computador
ou
vice-‐versa.
Ex:
Pendrives,
disco
rígido,
drive
de
CD,
drive
de
disquete,
etc.
CPU
(Unidade
Central
de
Processamento):
É
considerado
como
o
cérebro
do
computador,
pois
é
nela
em
que
os
dados
são
manipulados
e
os
cálculos
são
feitos.
É
cons?tuída
por
dois
(2)
componentes
principais:
Unidade
de
Controlo
(UC)
e
a
Unidade
Aritmé?ca
e
Lógica
(ULA).
A
unidade
de
Controlo,
carrega
as
instruções
na
Memória
principal,
interpreta
e
executa
e
a
ULA
é
responsável
pela
execução
de
cálculos
aritmé?cos
e
Lógicos.
Memória:
são
disposi?vos
capazes
de
armazenar
dados
e/ou
instruções.
13. CAP.
I:
Conceitos
sobre
a
Informá&ca
Funcionamento
Primeiramente
quando
ligamos
o
computador,
é
carregado
o
sosware
de
inicialização
(Boot),
que
verifica
o
estado
de
cada
hardware
e
se
está
pronto
para
ser
usado.
A
seguir,
é
carregado
o
sistema
opera?vo
junto
com
outros
os
programas
que
entram
em
execução
logo
que
o
computador
é
ligado.
É
necessário
ter
em
conta
que
toda
a
informação
que
circula
no
computador
não
é
passada
com
a
nossa
linguagem
(natural),
mas
sim
um
conjunto
de
códigos
binários
denominados
bits
(menor
unidade
de
representação
da
informação
no
computador).
Quando
digitamos
uma
letra
apar?r
do
teclado,
na
verdade
esta
letra
passa
por
uma
conversão
e
só
assim
é
que
ela
é
manipulada.
Após
o
envio
de
um
comando
(qualquer
acção
feita
pelo
disposi?vo
de
entrada),
o
processador
interpreta
este
comando
(responsabilidade
da
U.C),
e
carrega
as
instruções
con?das
na
memória
primária
para
a
sua
execução.
Caso
seja
necessário
efectuar
algum
cálculo
lógico
ou
aritmé?co,
a
U.C
trata
de
encaminhar
para
a
ULA
para
serem
executados.
Só
após
toda
a
operação
de
processamento
dos
dados
e
execução
de
instruções
é
que
são
a?vados
os
sinais
de
saída
para
podemos
obter
o
resultado
desejado.
14. CAP.
I:
Conceitos
sobre
a
Informá&ca
Gerações
de
Computadores
Tudo
começou
com
a
necessidade
do
ser
humano
efectuar
cálculos,
sendo
que
a
contagem
com
os
dedos,
pedras
e
paus
tornaram-‐se
insuficiente
para
a?ngir
os
melhores
êxitos
nas
suas
ac?vidades.
Foi
a
par?r
desta
fase
que
surgiu
o
Ábaco
inventado
pelos
Chineses
a
aproximadamente
1.000
a.c
(placa
de
madeira
com
arames
e
pequenas
pedrinhas
que
podiam
ser
movidas)
para
auxiliar
nas
operações
aritmé?cas.
Esta
placa
era
fortemente
u?lizado
por
Egípcios
e
Babilônios.
Já
em
1612,
foi
desenvolvida
a
primeira
calculadora
portá?l
por
John
Napier
que
se
chamou
Ossos
de
Napier
que
eram
cons?tuidos
por
um
conjunto
de
bastões
para
realizar
as
mul?plicações
por
meio
de
adições.
Fig.2
–
Ábaco
Fig.3
–
Ossos
de
Napier
15. CAP.
I:
Conceitos
sobre
a
Informá&ca
Gerações
de
Computadores
Em
1642,
o
matemá?co
Blaise
Pascal
criou
uma
máquina
calculadora
mecânica
que
efectuava
as
operações
de
adição
e
subtração
denominada
Pascaline,
com
o
intuito
de
ajudar
nos
negócios
do
seu
pai.
Para
o
caso
das
mul?plicações
e
divisões,
efectuava
somas
e
subtrações
sucessivas.
Em
1801
na
França,
Joseph
Jacquard
criou
uma
máquina
de
tear
que
usava
cartões
perfurados
onde
con?nha
a
configuração
dos
modelos
de
tecidos
a
serem
produzidos,
com
intuito
de
subs?tuir
o
trabalho
humano.
Fig.1.4
–
Somador
Pascaline
Fig.
1.5
–
Tear
de
Jacquard
16. CAP.
I:
Conceitos
sobre
a
Informá&ca
Gerações
de
Computadores
Já
em
1822,
Charles
Babbage
começa
a
projectar
uma
máquina
a
vapor
programável
denominada
máquina
de
diferenças
que
efectuava
apenas
adições;
após
10
anos,
Babbage
pensou
em
criar
uma
máquina
que
pudesse
realizar
qualquer
?po
de
cálculo
tendo
como
principio
básico
a
programação,
foi
denominada
como
máquina
analí?ca.
Esta
máquina
seria
alimentada
por
cartões,
usando
o
conceito
de
cartões
perfurados
de
Jacquard
mas
para
armazenar
instruções
e
dados.
Ela
não
foi
concluída
por
descrédito
dos
seus
financiadores,
mas
a
sua
colaboradora
Ada
King
(Ada
Lovelace)
propôs
programas
e
ainda
técnicas
de
programação
para
a
referida
máquina.
Ada
Lovelace
tornou-‐se
a
primeira
programadora
do
mundo
e
Charles
Babbage
como
o
pai
da
Computação.
Fig.
1.6
–
Máquina
de
diferenças
de
Babbage
17. CAP.
I:
Conceitos
sobre
a
Informá&ca
Gerações
de
Computadores
Em
1890,
o
norte
americano
Hermann
Hollerith
projectou
um
tabulador
electromecânico,
que
processava
automa?camente
os
cartões
perfurados
que
era
um
instrumento
essencial
para
entrada
de
dados;
originando
assim
o
nome
de
processamento
de
dados.
Cartões
perfurados:
cartão
de
papel
perfurado
em
código
BCD
(Binary
Coded
Decimal),
era
usado
para
recolha
de
dados
no
censo
de
1890
nos
EUA.
Fig.
1.7
–
Tabulador
de
Hollerith
Fig.
1.8
–
Cartões
perfurados
de
Hollerith
18. CAP.
I:
Conceitos
sobre
a
Informá&ca
1ª
Geração
de
Computadores
Z1
de
Konrad
Zuse
projectado
em
1936
a
par?r
de
relés,
executavam
os
cálculos
e
dados
lidos
em
fitas
perfuradas.
Tornou-‐se
assim
no
primeiro
computador
electro-‐mecânico.
Em
1944
Howard
Aiken
concebeu
o
computador
eletromecânico
Harvard
Mark
1,
que
funcionava
sem
o
conceito
de
programa
armazenado
ou
seja
para
que
o
programa
fosse
executado,
era
necessário
carregá-‐lo
a
par?r
de
uma
fita
perfurada
e
as
instruções
eram
executadas
durante
a
leitura
da
fita.
Em
1946
é
apresentado
o
ENIAC
(Electronic
Numeric
Integrator
and
Calculator
)
cujo
o
desenvolvimento
foi
liderado
por
John
Mauchly
e
J.
Presper
Eckert,
era
cons?tuído
por
18
mil
válvulas,
pesava
30
toneladas,
possuía
uma
memória
pequena
e
os
programas
eram
configurados
por
cabos.
John
Von
Neumann
juntou-‐se
a
equipa
do
ENIAC
após
ter
proposto
o
conceito
de
programa
armazenado,
ou
seja
as
instruções
e
os
dados
deviam
ser
armazenados
segundo
uma
única
representação
este
conceito
foi
denominado
por
Arquitectura
de
Von
Neumann
e
implementado
no
computador
EDVAC
(Electronic
Discrete
Variable
Computer)
19. CAP.
I:
Conceitos
sobre
a
Informá&ca
COMPUTADORES
DA
1ª
GERAÇÃO
(1940
-‐
1955)
Construídos
a
base
de
Válvulas
electrônicas
Aplicações
nos
campos
cien.fico
e
militar
Linguagem
Máquina
Uso
restrito
Cartões
perfurados
e
fitas
de
papel
como
memória
Grande
consumo
de
energia
Elevado
peso
e
processamento
na
ordem
dos
milissegundos
Grandes
problemas
de
aquecimento
Necessidade
de
reprogramação
para
cada
tarefa
a
executar
Fig.
1.9
–
ENIAC
Fig.
1.8
–
MARK
1
Fig.
1.10
–
Válvula
electrônica
20. CAP.
I:
Conceitos
sobre
a
Informá&ca
2ª
Geração
de
Computadores
Com
o
surgimento
do
transistor
em
1947,
reduziu
significa?vamente
as
dificuldades
apresentadas
pelas
válvulas
electrônicas.
A
velocidade
de
processamento
passou
a
ser
medida
em
microssegundos,
e
surgiram
as
linguagens
de
programação
de
alto
nível
como
a
FORTRAN
e
o
COBOL.
Primeiro
computador
transistorizado
foi
o
TX-‐0,
construido
no
Massachuse~s
Ins?tute
of
Tecnology
em
1957.
Posteriormente
a
IBM
criou
o
primeiro
modelo
comercial
denominado
IBM
1401,
mais
barato
e
bastante
rápido.
Em
1964
a
CDC
(Control
Data
Corpora?ion)
criou
um
Supercomputador
denominado
CDC
–
6600
que
permi?a
descarregar
o
processamento
da
CPU
pelo
uso
de
pequenos
computadores
auxiliares
que
tratavam
da
entrada
e
saída
de
dados,
bem
como
o
gerenciamento
de
tarefas
de
forma
paralela.
21. CAP.
I:
Conceitos
sobre
a
Informá&ca
COMPUTADORES
DA
2ª
GERAÇÃO
(1955
-‐
1963)
Subs?tuição
de
válvulas
pelo
transistor
Ocupavam
menos
espaço
e
consome
menos
energia
Construção
de
computadores
mais
baratos,
mais
potentes
e
mais
fiáveis
Uso
do
conceito
sobre
memória
auxiliar
(fitas
magné?cas
e
discos
magné?cos)
Uso
das
linguagens
de
programação
de
Alto
nível
(Cobol
e
Fortran)
Velocidade
de
processamento
na
ordem
dos
Microssegundos
Fig.
1.10
–
TRANSISTOR
22. CAP.
I:
Conceitos
sobre
a
Informá&ca
3ª
Geração
de
Computadores
A
principal
caracterís?ca
desta
geração
é
o
uso
dos
Circuitos
Integrados
criado
em
1958
por
Robert
Noyce.
O
Circuito
Integrado
é
cons?tuído
por
dezenas
de
Transistores,
que
executam
desde
funções
lógicas
simples
até
as
funções
mais
complexas.
Reduziu
bastante
o
espaço,
baixou
o
consumo
de
energia,
e
reduziu
a
velocidade
de
processamento
para
nanossegundos.
•IBM
360
é
um
exemplo
de
computadores
desta
geração.
COMPUTADORES
DA
3ª
GERAÇÃO
(1963
-‐
1970)
Subs?tuição
dos
transistores
por
Circuitos
integrados
Velocidade
de
Processamento
em
nanossegundos
Generalização
das
linguagens
de
alto-‐nível
Sistemas
opera?vos
mul?-‐u?lizadores
Invenção
do
Mouse
(rato
em
1963
por
Douglas
Engelbart)
Fig.
1.10
–
CIRCUITO
INTEGRADO
23. CAP.
I:
Conceitos
sobre
a
Informá&ca
COMPUTADORES
DA
4ª
GERAÇÃO
(1971
-‐
1990)
Esta
geração
é
marcada
pelos
microprocessadores.
Um
Microprocessador
consiste
em
um
disposi?vo
electrônico
encapsulado
em
um
chip
que
possui
internamente
uma
Unidade
de
controlo,
uma
unidade
lógico-‐aritmé?ca
e
uma
memória
interna.
Primeiro
Microprocessador
que
surgiu
foi
o
Intel
4004
desenvolvido
para
uma
empresa
de
calculadoras.
Já
em
1981,
a
IBM
decidiu
inves?r
em
microprocessadores
lançando
assim
o
IBM
–PC
baseado
no
processador
Intel
8088
com
16
KB
de
memória
RAM.
CARACTERÍSTICAS
Computadores
com
Chips
VLSI
(Aperfeiçoamento
dos
Circuitos
Integrados)
Miniaturização
de
componentes
Velocidade
de
Processamento
em
picossegundos
Baixa
de
preços
24. CAP.
I:
Conceitos
sobre
a
Informá&ca
COMPUTADORES
DA
5ª
GERAÇÃO
(1991
–
até
hoje)
A
5ª
Geração
de
Computadores
é
marcada
pela
u?lização
dos
Circuitos
Integrados
em
grande
escala
de
Integração.
Isto
implica
a
integração
de
elevados
circuitos
electrônicos
na
ordem
dos
100.000
à
1.000.000
de
transistores.
Os
computadores
que
u?lizamos
hoje
ainda
podemos
enquadrá-‐los
na
5ª
geração.
CARACTERÍSTICAS
Aumento
da
capacidade
de
processamento
de
dados,
armazenamento
e
transferência
Miniaturização
de
componentes
Processamento
paralelo
(várias
operações
a
serem
executadas
ao
mesmo
tempo)
Baixa
de
preços
25. CAP.
I:
Conceitos
sobre
a
Informá&ca
CLASSIFICAÇÃO
DOS
COMPUTADORES
Os
computadores
podem
ser
classificados
quanto
a
sua
função
que
exercem
ou
pelas
suas
dimensões
(porte).
Quanto
as
suas
funções:
Servidores:
são
computadores
que
servem
as
redes
de
computadores.
Disponibilizam
inúmeros
serviços,
como
por
exemplo:
internet,
base
de
dados,
ficheiros,
impressoras,
etc.
Consola
de
vídeo
games:
prove
ao
u?lizador
um
ambiente
de
entretenimento
(jogos).
Sistemas
Embarcados:
são
disposi?vos
que
incorporam
um
computador
no
seu
interior
para
realizar
uma
tarefa
específica.
Ex:
Computadores
de
bordo
de
um
automóvel
Quanto
ao
porte:
Grande
porte:
supercomputadores
e
mainframes.
Supercomputadores,
são
bastante
rápidos,
potentes
capazes
de
processar
informações
na
ordem
dos
Bilhões
de
instruções
por
segundo.
Mainframes,
processam
grandes
quan?dades
de
informação,
sendo
bastante
usados
pelos
bancos,
companhias
de
seguro
e
aéreas,
na
internet,
etc.
Fig.
1.11
–
Mainframe
26. CAP.
I:
Conceitos
sobre
a
Informá&ca
CLASSIFICAÇÃO
DOS
COMPUTADORES
Médio
Porte:
Denominadas
estações
de
trabalho,
correspondem
aos
computadores
com
grande
capacidade
de
processamento,
e
em
alguns
casos
permitem
o
ambiente
mul?
u?lizador.
Os
também
denominados
mini
computadores,
são
menores
que
os
mainframes,
e
maiores
em
relação
aos
computadores
pessoais.
Onde
são
u&lizados?
Hoje
em
dia,
os
minicomputadores
são
geral-‐
mente
u?lizados
como
servidores
nas
redes
de
Computadores.
Fig.
1.12
–
Worksa&ons
27. CAP.
I:
Conceitos
sobre
a
Informá&ca
CLASSIFICAÇÃO
DOS
COMPUTADORES
Pequeno
porte:
Computadores
de
uso
pessoal.
Ex:
Desktop,
laptop,
tablet.
São
os
computadores
que
u?lizamos
no
nosso
dia
à
dia,
quer
os
que
se
mantém
em
nossas
casas,
bem
como
os
que
usamos
em
qualquer
parte
(laptops,
tablets).
29. Algoritmo
Definição
Sequência finita de passos que visam a atingir um objectivo específico.
Conjunto de passos com uma determinada ordem, que nos permitem
resolver um problema.
Para a solução de qualquer problema computacional, é necessário recorrer a
técnica de algoritmo pelo facto de permitir extrair deste o conjunto de detalhes
envolvidos, e encontrar a melhor solução para o devido problema.
É importante saber que o computador não compreende a linguagem humana;
então os programas quando são construídos, geralmente utiliza-se uma
linguagem de alto nível (JAVA, C, C++, PASCAL) e posteriormente convertidos
para linguagem máquina (zeros e uns) por intermédio de um compilador.
Exemplos de algoritmos: receita de bolo, passos para trocar o pneu de um carro,
passos para ligar um computador, passos para levantar dinheiro de um Multicaixa,
etc.
30. Algoritmo
Um algoritmo actua sobre um conjunto de entradas(ingredientes no caso do bolo),
procedimentos para manipulação das entradas (preparação do bolo) de formas a
gerar uma saída benéfica para o utilizador. os algoritmos uma vez concebidos,
podem ser traduzidos para qualquer linguagem de programação (processo de
codificação), ou seja precisamos projectar apenas uma vez e escrever para
qualquer linguagem. Exemplo: a forma como cozinhamos o arroz, pode ser
traduzida para o inglês, o francês, etc, tornando-se compreensível caso utilizamos
as regras das respectivas línguas (sintaxe). Veja abaixo as etapas de um
algoritmo
CAP.
II
Fig.
2.1
–
Fases
de
um
Algoritmo
31. Algoritmo
CARACTERÍSTICAS
Todo
algoritmo
tem
as
seguintes
caracterís?cas
principais:
Finitude:
deve
possuir
um
número
finito
de
passos.
Definição:
as
acções
devem
ser
definidas
de
forma
rigorosa
e
sem
ambiguidades
Entradas:
um
algoritmo
deve
ter
zero
ou
mais
entradas
isto
é,
as
quan?dades
que
lhe
são
fornecidas
antes
do
seu
início.
Saídas:
um
algoritmo
deve
ter
uma
ou
mais
saídas,
isto
é,
quan?dades
relacionadas
com
as
entradas.
Efec?vidade:
as
operações
devem
ser
alcançáveis
em
um
tempo
finito.
Eficácia:
Deve
resolver
o
problema
proposto
Livre
de
linguagem:
a
construção
de
um
algoritmo
não
depende
de
uma
linguagem
específica,
mas
o
contrário
é
válido.
32. Algoritmo
Exemplo:
Algoritmo
para
tomar
banho
1º
Entre
em
baixo
do
chuveiro.
2º
Ligue
a
água
e
ajuste
a
temperatura.
3º
Pegue
o
champô
e
esfregue
no
cabelo.
4º
Molhe
o
cabelo.
5º
Pegue
o
sabonete
e
esfregue
por
todo
o
corpo.
6º
Molhe
o
corpo.
7º
Desligue
o
chuveiro.
8º
Pegue
uma
toalha.
9º
Enxugue
o
cabelo
e
o
corpo.
33. Algoritmo
RESOLUÇÃO
DE
PROBLEMAS
Acabamos
por
definir
o
conceito
sobre
algoritmos,
agora
sabemos
que
é
o
meio
que
possuímos
para
resolver
problemas
quer
computacionais
ou
não.
Mas
como
podemos
analisar
um
problema
e
chegar
ao
resultado
exacto?
Precisamos
de
antemão:
Compreender
o
problema:
geralmente
o
problema
é
proposto
por
um
enunciado,
ou
seja
um
texto
que
explica
o
problema
e
fornece
detalhes
para
a
solução.
Nesta
podemos
nos
ques?onar:
O
que
pede
o
problema?;
Quais
são
as
condições
do
problema?
Existe
alguma
informação
para
descobrir
ou
cálculo
a
efectuar?
Elabore
uma
estratégia
de
resolução:
Encontre
conexões
entre
os
dados,
use
teoremas
ou
formulas
para
ajudar,
verifique
se
está
a
levar
em
conta
todos
os
dados
e
condições.
Execute
a
estratégia:
nesta
fase
é
posta
em
prá?ca
todas
as
estratégias
elaboradas
para
a
resolução
do
problema.
Revise:
Examine
a
solução
ob?da
a
par?r
do
resultado
ob?do
executando
o
teste
de
mesa.
34. Algoritmo
Exercícios
1. Crie
um
algoritmo
que
recebe
dois
números
inteiros,
fornece
o
resultado
da
soma
dos
mesmos.
2. Três
músicos:
Damião,
Paulino
e
Emanuel,
tocam
guitarra,
bateria
e
baixo.
Contudo,
não
se
sabe
quem
toca
o
quê.
Sabe-‐se
que
o
Damião
não
é
o
baixista.
Que
Paulino
ensaia
com
o
guitarrista
às
Quintas.
E
que
o
baixista
ensaia
sempre
sozinho
às
Terças.
Quem
toca
cada
um
dos
instrumentos?
3. Um
comboio
parte
de
Luanda
a
uma
velocidade
de
120
Km/h
em
direcção
a
Malange,
ao
mesmo
tempo
em
que
outro
comboio
parte
de
Malange
a
uma
velocidade
de
80km/h
em
direcção
a
Luanda.
Quando
os
comboios
se
encontram,
qual
deles
está
mais
próximo
de
Luanda?
Aquele
que
parte
de
Luanda
ou
o
que
parte
de
Malange?
35. Formas
de
Representação
de
um
Algoritmo
Um
algoritmo
pode
ser
representado
em
três
(3)
formas
principais:
Descrição
Narra?va,
Fluxograma
e
Pseudocódigo
(Portugol).
Descrição
Narra&va:
Representa-‐se
pela
descrição
de
uma
sequência
de
passos
em
nossa
língua
natural
(português).
Este
método
ajuda
a
compreender
e
organizar
as
etapas
necessária
para
resolver
um
problema;
mas
esta
técnica
não
é
compreendida
pelo
computador,
pois
não
compreende
a
linguagem
humana.
Sendo
assim,
é
importante
construir
os
algoritmos
em
uma
linguagem
de
programação
específica;
normalmente
o
Pseudocódigo.
Regras
de
construção
• U?lizar
somente
um
verbo
em
cada
frase
• Construir
o
algoritmo
numa
visão
para
leigos
em
informá?ca
•
U?lizar
frases
curtas
e
simples
• Ser
objec?vo
• Não
u?lizar
palavras
que
tenham
mais
do
que
um
sen?do
de
compreensão
36. Exemplos
de
algoritmo
em
Descrição
Narra&va
SOLUÇÃO
1. Crie
um
algoritmo
que
recebe
dois
números
inteiros,
fornece
o
resultado
da
soma
dos
mesmos.
Algor?mo
“soma
de
dois
numeros”
Entrada:
dois
numeros
Inicio
Receber
primeiro
numero
Receber
segundo
numero
Somar
primeiro
e
segundo
numero
Saída:
Mostrar
resultado
da
soma
Fim
do
algoritmo
37. SOLUÇÃO
2. Três
músicos:
Damião,
Paulino
e
Emanuel,
tocam
guitarra,
bateria
e
baixo.
Contudo,
não
se
sabe
quem
toca
o
quê.
Sabe-‐se
que
o
Damião
não
é
o
baixista.
Que
Paulino
ensaia
com
o
guitarrista
às
Quintas.
E
que
o
baixista
ensaia
sempre
sozinho
às
Terças.
Quem
toca
cada
um
dos
instrumentos?
Algoritmo
“instrumento
do
musico”
Entrada:
tres
musicos
tres
instrumentos
Inicio
Excluir
o
Damião
do
baixo
Excluir
o
Paulino
da
guitarra
Excluir
o
Paulino
do
Baixo
Associar
Damião
a
Guitarra
Associar
Emanuel
ao
Baixo
Associar
Paulino
a
Bateria
Saída:
Mostrar
resultado
da
associacao
Fim
do
algoritmo
Exemplos
de
algoritmo
em
Descrição
Narra&va
38. Formas
de
Representação
de
um
Algoritmo
Fluxograma:
Representa-‐se
por
símbolos
gráficos
predefinidos,
que
ilustram
os
passos
individuais
e
suas
interligações
até
chegar
a
solução
do
problema;
é
como
se
es?vesse
a
juntar
um
quebra
cabeças.
As
instruções
a
serem
executadas
são
colocadas
no
interior
de
cada
figura.
Modo
de
representação
Indica
o
início
ou
fim
do
algoritmo
Processamento
de
dados
ou
execução
de
operações
Entrada
de
dados
Saída
de
dados
39. Exemplos
de
algoritmo
em
Fluxograma
1. Crie
um
algoritmo
que
recebe
dois
números
inteiros,
fornece
o
resultado
da
soma
dos
mesmos.
SOLUÇÃO
inicio
Primeiro
numero
Segundo
numero
Primeiro
+
Segundo
Primeiro
+
Segundo
fim
Nota:
Na
saída
o
resultado
é
representado
novamente
(Primeiro
+
Segundo)
para
ilustrar
o
conteúdo
que
sairá
no
ecrã.
O
uso
de
variáveis
simplifica
esta
operação.
Ver
nas
próximas
aulas.
40. Exemplos
de
algoritmo
em
Fluxograma
1. Crie
um
algoritmo
para
tomar
banho
no
chuveiro.
SOLUÇÃO
inicio
Entrar
no
chuveiro
Ligar
a
água
Pegar
no
champô
e
esfregar
na
cabeça
Molhar
o
cabelo
Pegar
no
sabonete
e
esfregar
no
corpo
Molhar
o
corpo
Desligar
o
chuveiro
Pegar
na
toalha
e
enxugar
o
corpo
e
o
cabelo
fim
41. Formas
de
Representação
de
um
Algoritmo
Pseudocódigo
(Portugol):
u?liza
palavras
escolhidas
e
bem
definidas.
É
um
método
bastante
aproximado
a
uma
linguagem
de
programação
de
alto
nível.
As
instruções
escritas
em
Pseudocódigo,
são
facilmente
traduzidas
em
outras
linguagens,
desde
a
definição
dos
?pos
de
dados,
instruções
de
repe?ção,
selecção,
etc,
para
além
do
facto
destas
serem
escritas
em
português.
Mas,
é
importante
aprender
as
regras
de
representação
para
cada
instrução
(Sintaxe).
Regras
de
representação
programa
<nome_do_programa>
declaracoes<definicoes_de_constantes>
<declaracoes_de_variaveis>
Inicio
<instrucoes_do_programa>
fim
42. Formas
de
Representação
de
um
Algoritmo
Representação
de
instruções
principais
Entrada
de
dados:
u?lize
a
instrução
leia().
No
interior
do
parênteses
são
postos
os
elementos
que
deseja
de
entrada
do
algoritmo.
Por
ex:
uma
variável.
Saída
de
dados:
u?lize
a
instrução
escreva
().
No
interior
do
parênteses
são
postos
os
elementos
que
deseja
mostrar.
Por
ex:
um
resultado.
Exemplo
1:
Crie
um
algoritmo
que
imprima
na
tela
a
seguinte
mensagem:
“Ola,
este
é
o
meu
primeiro
programa”
Solução
programa
“imprime_mensagem”
Inicio
Escreva(“Ola,
este
é
o
meu
primeiro
programa”)
fim
43. Crie
um
algoritmo
que
recebe
três
notas
de
um
aluno
(p1,p2,p3)
e
calcula
a
média
final
deste
aluno.
Resolução
Algoritmo
“media
do
aluno”
var
P1,p2,p3:inteiro
media:real
Inicio
Escreva(“digite
a
primeira
nota”)
Leia(p1)
Escreva(“digite
a
segunda
nota”)
Leia(p2)
Escreva(“digite
a
terceira
nota”)
Leia(p3)
media<-‐(p1+p2+p3)/3
Escreva(“A
media
final
do
aluno
e”,media)
Fim
do
algoritmo
Exemplos
de
algoritmo
em
Pseudocódigo
44. Formas
de
Representação
de
um
Algoritmo
Conceitos
a
ter
em
conta
na
criação
dos
algoritmos
em
Pseudocódigo
Sintaxe:
define
o
conjunto
de
regras
grama?cais
de
formação
de
sentenças
válidas
ou
grama?calmente
correctas
segundo
determinada
linguagem.
Ex:
No
português
não
deve
escrever
a
palavra
Programação
como
Programacao.
Neste
caso
existe
um
erro
de
sintaxe.
Semân&ca:
indica
a
associação
das
sentenças,
permi?ndo
a
sua
correcta
interpretação.
Ex:
Belo
Angola
é
país
um.
Neste
caso,
em
termos
de
sintaxe
está
correcto
mas
não
se
consegue
interpretar
a
frase
pois
os
termos
não
estão
enquadrados
apropriadamente.
Considera-‐se
um
erro
de
semân?ca.
Com
base
nas
definições,
conclui-‐se
que
a
sintaxe
expressa
as
regras
que
devem
ser
obedecidas
para
a?ngir
determinado
resultado
e
a
semân?ca
representa
o
conteúdo
das
palavras
da
linguagens,
permi?ndo
assim
uma
interpretação
correcta
do
escrito
com
determinada
linguagem.
45. Tipos
de
Dados
Para
que
o
computador
consiga
armazenar
ou
manipular
um
dado,
necessita
saber
o
seu
?po.
Sendo
assim,
um
?po
de
dado
define
o
?po
de
informação
que
entra
e
sai
do
computador.
Os
?pos
de
dados
podem
ser:
inteiro,
real,
literal
ou
caracter,
booleano
Tipo
de
dado
Inteiro:
envolve
o
conjunto
de
números
inteiros
posi?vos
e
nega?vos.
Ex:
-‐1,
3,
10,
12,
-‐50.
Tipo
de
dado
Real:
envolve
o
conjunto
de
números
decimais
ou
fraccionários
posi?vos
e
nega?vos.
Ex:
0.5,
-‐1.3,
-‐11.3,
12.4.
Todo
o
?po
de
dado
real
possui
envolvido
um
valor
inteiro;
ou
seja
os
inteiros
são
subconjuntos
dos
números
reias.
Tipo
de
dado
Literal:
representa
uma
sequência
de
caracteres
com
letras,
dígitos,
ou
ainda
símblos
especiais.
São
também
denominados
por
Strings(cadeia
de
caracteres)
Ex:
Nome
de
uma
pessoa,
morada,
nº
do
B.I,
etc.
Dentro
destes
existe
igualmente
o
?po
Caractere
que
permite
armazenar
apenas
um
caractere
(uma
letra,
um
símbolo,
ou
um
dígito).
Ex:
Sexo
(M,F)
Tipo
Lógico
(Booleano):
é
representado
por
dois
valores
principais
(Verdadeiro
(V)
e
Falso
(F))
CAP.
II
46. Tipos
de
Dados
Quando
u?lizar
um
ou
outro
?po
de
dado?
Imagine
que
precisas
armazenar
os
dados
de
uma
pessoa:
Nome,
idade,
morada,
sexo,
altura,
e
precisa
saber
se
esta
é
ou
não
casada?
Sugestão:
Nome
da
pessoa
-‐>
Literal
Idade
-‐>
Inteiro
Morada
-‐>
Literal
Sexo-‐>
caractere
Altura-‐>
Real,
pois
possui
a
parte
inteira
e
faccionária.
Ex:
1,70
cm
A
condição
de
ser
casado
ou
não
dará
sempre
em
V
ou
F;
então
u?lize
o
lógico
CAP.
II
47. Variáveis
Uma
variável
corresponde
a
uma
posição
de
memória
por
onde
guardamos
os
dados,
cujo
conteúdo
pode
mudar
ao
longo
da
execução
do
programa.
Toda
variável
tem
um
nome
que
é
conhecido
como
iden&ficador.
É
importante
saber
que
quando
ocorre
uma
alteração
do
valor
con?do
na
variável,
o
valor
armazenado
anteriormente
é
perdido
na
mémória.
Isto
é,
supondo
que
tenho
o
nome
Sampaio
armazenado
em
memória;
se
por
algum
mo?vo
eu
alterar
o
nome
Sampaio
para
Lufialuiso,
o
nome
anterior
é
eliminado
da
memória
e
subs?tuido
pelo
novo.
CAP.
II
Necessidade
da
u&lização
de
variáveis
Vamos
supor
que
queremos
fazer
um
programa
que
solicita
para
um
u?lizador
digitar
a
sua
idade
e
exibe
a
este
quantos
anos
faltam
para
ele
a?ngir
100
anos
de
idade.
Precisaremos
armazenar
a
idade
do
u?lizador
para
depois
realizar
o
cálculo
100
-‐
idade_u?lizador
e
depois
armazenar
também
o
resultado.
Usando
a
ideologia
acima
que
a
variável
é
um
espaço
na
memória
em
que
armazenamos
os
dados,
seria
necessário
dizer
o
endereço
que
o
mesmo
está
localizado.
Neste
contexto,
em
programação
é
usado
o
conceito
de
variável
para
representar
o
apelido
do
endereço.
48. Variáveis
Regras
de
uso
e
declaração
de
variáveis
Toda
a
variável
deve
ser
declarada
antes
de
ser
usada
(inclui
o
seu
?po
e
o
iden?ficador);
Toda
a
variável
deve
ter
sempre
um
?po
de
dado
associado
O
primeiro
caractere
deve
ser
uma
letra;
Uma
variável
deve
ter
sempre
um
valor
inicial
antes
de
ser
usada;
Nome
de
variáveis
escritas
com
letras
maiúsculas
serão
diferentes
de
letras
minúsculas
(case
sensi?ve);
Nenhuma
palavra
reservada
à
ferramenta
(COMPILADOR)
poderá
ser
usada
como
nome
da
variável;
U?lize
nomes
representa?vos
para
dar
uma
visão
do
conteúdo
con?do
nela;
Se
haver
mais
de
um
caractere,
este
só
poderá
ser:
letra
ou
algarismo;
O
nome
de
uma
variável
não
deve
conter
caracteres
especiais,
com
excepção
do
underline
(_).
CAP.
II
• São exemplo de variáveis os seguintes: Nome, aluno1, nome_completo, a, b, idade
• Não representam identificadores válidos os seguintes: ~nome, 1aluno, nome?completo,
idade-pessoa, filhação
49. Variáveis
Atribuição:
é
um
termo
u?lizado
para
atribuir
um
valor
a
uma
variável,
ou
seja
armazenar
um
determinado
conteúdo
em
uma
variável.
Esta
operação
é
representada
em
Pseudocódigo
por
uma
seta
apontando
para
a
esquerda,
onde
a
direita
fica
o
valor
a
ser
atribuído
e
a
esquerda
a
variável
a
receber
o
valor.
Ex:
variável
<-‐
constante
variável
<-‐
variável
Variável
<-‐
expressão
Para
o
1ª
linha
lê-‐se:
variável
recebe
constante
(idem
para
os
outros
subs?tuindo
o
que
está
a
ser
atribuído).
CAP.
II
•
São
exemplo
de
variáveis
os
seguintes:
Nome,
aluno1,
nome_completo,
a,
b,
idade
•
Não
representam
iden?ficadores
válidos
os
seguintes:
~nome,
1aluno,
nome?completo,
idade-‐
pessoa,
filhação
Regras
de
uso
e
declaração
de
variáveis
50. Variáveis
Regra
de
declaração
de
variável
<nome_do_?po>
<nome_da_variavel>;
<nome_da_variavel>
:<nome_do_?po>
ou
<nome_do_?po>
<nome_da_variavel>,
...
,
<nome_da_variavel>;
<nome_da_variavel>,
...
,
<nome_da_variavel>:
<nome_do_?po>
Ex:
inteiro
idade
-‐>
inteiro
representa
o
?po
de
dado
e
idade
representa
o
nome
da
variável
Ano_nascimento
:
inteiro
-‐>
Ano
nascimento
é
a
variável
e
o
inteiro
é
o
?po
de
dado
real
peso
-‐>
real
representa
o
?po
de
dado
e
peso
representa
o
nome
da
variável
O
modo
de
declaração
de
variável
pode
variar
de
acordo
com
a
linguagem
de
programação
a
ser
u?lizada
ou
o
compilador
em
causa.
Para
algoritmos,
usando
o
compilador
VISUAL
G,
a
declaração
é
feita
da
seguinte
maneira:
idade:
inteiro
Isto
quer
dizer,
que
a
SINTAXE
(Regra
de
escrita)
do
compilador
define
a
declaração
de
variável
deste
modo.
CAP.
II
51. Variáveis
Exercício
Faça
um
algoritmo
que
recebe
três
notas
de
um
aluno
e
calcula
a
média
das
notas.
Solução
1-‐
Compreenda
o
problema
e
elabore
a
estratégia
de
resolução
Questão:
O
que
o
problema
pede?
Preciso
de
alguma
variável
para
resolver
este
problema;
se
sim,
que
?po
de
dado
vou
armazenar
nestas
variáveis?
O
resultado
de
que
?po
será?
De
que
modo
vou
representar
o
algoritmo?
Fluxograma
ou
Pseudocódigo?
2-‐
Execute
a
estratégia.
CAP.
II
52. Variáveis
Solução
do
exercício
u?lizando
pseudocódigo:
algoritmo
“media_de_tres_notas”
Var
nota1,
nota2,
nota3:
real
media
:
real
Inicio
escreva
(“Digite
as
tres
notas
do
aluno”)
leia
(nota1)
leia
(nota2)
leia
(nota3)
media<-‐(nota1+nota2+nota3)/3
escreva
(“A
média
do
aluno
corresponde
a
”,
media)
fimalgoritmo
CAP.
II
53. Constantes
Uma
constante
é
um
valor
fixo
que
não
é
alterado
durante
o
tempo
ou
durante
a
execução
do
algoritmo.
Ex1:
5,
2.4,
“OLA”,
V.
Nota:
A
constante
V
con?da
no
exemplo
é
do
?po
lógico.
Ex2:
escreva(“estás
a
aprender”)
-‐>
o
frase
con?da
no
parênteses
determina
uma
constante.
Para
diferenciar
os
dados
constantes
do
?po
Caractere
dos
outros
?pos
de
dados,
usa-‐se
aspas
(“
”)
para
delimitá-‐los;
e
os
dados
do
?po
lógico
u?lizam
as
constantes
V
-‐>
Verdadeiro
e
F
-‐>
Falso.
Possuem
um
nome
único
para
a
sua
iden?ficação
(iden?ficador)
Recomenda-‐se
o
uso
de
nomes
suges?vos.
Ex:
pi=3.1415
,
sexo=“feminino”
As
regras
para
a
declaração
de
constantes
são
as
mesmas
usadas
para
as
variáveis
CAP.
II
54. Constantes
Declaração
de
constantes
Sintaxe:
const
<nome_da_constante>
=
valor
Const
–
é
uma
palavra
reservada,
usada
sempre
que
declarar
uma
constante.
nome_da_constante
–
iden?ficador
da
constante
Valor
–
valor
fixo
atribuído
a
constante.
Ex:
const
pi=3,1415
morada=“Sambizanga”
CAP.
II
55. Operadores
e
Expressões
aritmé&cas
CAP.
II
São
denominados
operadores
aritmé?cos
os
seguintes
elementos:
OPERADOR
DENOMINAÇÃO
PRIORIDADE
DE
EXECUÇÃO
(os
com
maior
prioridade
são
os
primeiros
a
serem
executados)
+
Adição
1
-‐
Subtracção
1
*
Mul?plicação
2
/
Divisão
2
DIV
Divisão
inteira
2
MOD
ou
%
Resto
da
divisão
inteira
2
**
ou
^
Potenciação
3
As
expressões
aritmé?cas
são
expressões
cujos
operadores
são
aritmé?cos
e
os
operandos
são
variáveis
ou
constantes
do
?po
inteiro
ou
real.
Ex:
3+3/2
,
X+Y,
2*K
Nota:
Caso
a
prioridade
for
igual,
a
expressão
aritmé?ca
é
resolvida
da
esquerda
para
a
direita.
56. Operadores
lógicos
e
relacionais
CAP.
II
São
denominados
operadores
lógicos
os
seguintes
elementos:
Operador
Tipo
PRIORIDADE
DE
EXECUÇÃO
(os
com
maior
prioridade
são
os
primeiros
a
serem
executados)
OU
Binário
1
E
Binário
2
NÃO
Unário
3
As
expressões
lógicas
são
cons?tuídas
por
operadores
lógicos
e
variáveis
ou
constantes
do
?po
lógico
originando
resultados
do
?po
verdadeiro
ou
falso.
Nota:
U?lizando
os
operadores
lógicos
é
necessário
saber
que:
uma
expressão
A
E
B
só
será
verdadeira
se
A
for
Verdadeira
e
B
for
Verdadeira.
Caso
contrário
será
falsa
Uma
expressão
A
OU
B
será
verdadeira
caso
pelo
menos
uma
delas
(A
OU
B)
forem
verdadeiras.
57. Operadores
Relacionais
CAP.
II
São
denominados
operadores
os
seguintes
elementos:
O
Resultado
ob?do
numa
relação
é
sempre
um
valor
lógico
(
V
ou
F).
Ex:
A+B=C,
é
uma
expressão
que
será
verdadeira
ou
falsa
a
medida
em
que
o
resultado
da
expressão
aritmé?ca
for
igual
ao
conteúdo
de
C.
Operador
Função
=
Igual
>
Maior
que
<
Menor
que
>=
Maior
ou
igual
<=
Menor
ou
igual
<
>
Diferente
de
59. Estrutura
de
Selecção
(Condicional)
A
estrutura
de
selecção
permite
a
execução
de
instruções
caso
determinadas
condições,
representadas
por
expressões
lógicas
ou
relacionais,
são
ou
não
verdadeiras.
Existem
as
seguintes
estruturas
de
selecção:
Estrutura
de
Selecção
Simples
Estrutura
de
Selecção
Composta
Estrutura
de
Selecção
encadeada
Escolha
múl?pla
Estrutura
de
Selecção
Simples:
É
u?lizada
quando
necessitamos
executar
uma
ou
várias
ins-‐
truções
caso
uma
condição
seja
sa?sfeita.
Esta
estrutura
não
executa
nada
caso
a
condição
seja
falsa.
Sintaxe:
Se
<condição>
entao
Instrução
fimse;
SIM
NÃO
Representação
gráfica
de
uma
estrutura
condicional
(Fluxograma):
CAP.
III
60. Estrutura
de
Selecção
CAP.
III
Ex:
Faça
um
algoritmo
que
verifica
se
um
dado
número
é
par?
Resolva
u?lizando
Fluxograma
e
Pseudocódigo.
Solução
usando
Fluxograma:
61. Estrutura
de
Selecção
CAP.
III
Ex:
Faça
um
algoritmo
que
verifica
se
um
dado
número
é
par?
Resolva
u?lizando
Fluxograma
e
Pseudocódigo.
Solução
usando
Pseudocodigo:
algoritmo
"numero
par”
var
n:inteiro
Inicio
escreva("Insira
um
numero")
leia
(n)
se
(n
mod
2=0)
entao
escreva
(n,"
é
par
")
fimse
fimalgoritmo
62. Estrutura
de
Selecção
CAP.
III
Estrutura
de
Selecção
Composta:
permite
a
execução
de
duas
alterna?vas
a
par?r
de
uma
única
condição;
isto
é
suponha
que
um
conjunto
de
acções
dependa
da
avaliação
verdadeira
e
apenas
uma
dependa
de
uma
falsa?
Usando
o
?po
de
selecção
Simples
estudada
anteriormente,
isto
não
é
possível.
Mas
vejamos
como
a
composta
funciona:
Sintaxe:
se
<condição>
entao
<sequência
de
instruções>
senão
<instruções>
fimse;
63. Estrutura
de
Selecção
CAP.
III
Ex:
Crie
um
algoritmo
que
dado
a
idade
de
um
indivíduo,
determina
se
o
mesmo
é
Jovem
ou
não.
Admite
que
o
indivíduo
é
Jovem
caso
a
sua
idade
es?ver
entre
os
18
e
40
Anos.
Solução
em
pseudocódigo
algoritmo
"teste
se
é
jovem"
var
idade:inteiro
inicio
escreva("Digite
a
Idade
do
indivíduo")
leia(idade)
se
((idade>=18)E
(idade<=40))
entao
escreva("Este
individuo
é
Jovem")
senao
escreva("O
individuo
não
Jovem.
Poderá
ser
um
Adolescente
ou
Idoso")
fimse
fimalgoritmo
64. Estrutura
de
Selecção
Estrutura
de
Selecção
Encadeada:
representa
o
agrupamento
de
várias
selecções.
Normalmente,
é
usada
quando
uma
determinada
ação
ou
bloco
deve
ser
executado
caso
um
grande
conjunto
de
possibilidades
forem
sa?sfeitas.
Sintaxe:
se
<condição>
entao
se
<condição>
entao
<conjunto
de
instruções>
fimse;
senao
<instrução>
fimse;
CAP.
III
65. Estrutura
de
Selecção
Ex:
Crie
um
algoritmo
em
que
dado
dois
números
inteiros,
verifique
se
os
dois
são
pares.
Caso
forem,
adicione
2
ao
maior.
Caso
forem
ímpares
some
os
dois
números
e
imprima
os
resultados.
Solucione
u?lizando
pseudocódigo
Solução
CAP.
III
algoritmo
"dois_pares”
var
n1:inteiro
n2:inteiro
inicio
escreva("Insira
o
primeiro
numero")
leia
(n1)
escreva("Insira
o
segundo
numero")
leia
(n2)
se
((n1
mod
2=0)
e
(n2
mod
2=0))
entao
se
(n1>n2)
entao
n1<-‐n1+2
escreva
("O
primeiro
número
é
par
e
resulta
em
",
n1)
senao
n2<-‐n2+2
escreva
("O
segundo
número
é
par
e
resulta
em
",
n2)
fimse
senao
escreva
("Condição
para
impares
e
a
soma
é
",
n1+n2)
fimse
fimalgoritmo
66. Estrutura
de
Selecção
Selecção
de
múl&pla
escolha:
é
u?lizada
quando
necessitamos
testar
um
conjunto
de
valores,
e
quando
acções
diferentes
são
associadas
a
esses
valores.
Imagine
que
?véssemos
mais
do
que
cinco
(5)
condições
para
serem
testadas
para
executar
determinadas
acções;
poderia-‐mos
u?lizar
várias
selecções
encadeadas.
Mas
não
é
prá?co.
Sintaxe:
escolha
(expressão)
caso
<hipótese
1>:
<instrução1>
caso
<hipótese
2>:
<instrução2>
caso
<hipótese
3>:
<instrução3>
caso
contrário
:
<instrução
n>
fimescolha
CAP.
III
67. Estrutura
de
Selecção
Questões
a
levar
em
conta
na
Selecção
de
múl&pla
escolha:
A
expressão
é
avaliada,
e
o
valor
será
comparado
com
cada
uma
das
hipóteses.
A
opção
caso
contrário
(outrocaso
em
outros
compiladores)
é
opcional
A
hipótese
referida
na
sintaxe
é
definida
como
uma
constante
caractere,
uma
constante
numérica,
e
em
alguns
casos
literais
Esta
estrutura,
é
amplamente
u?lizada
em
algoritmos
com
menus
(P.e:
Calculadora)
Exemplo:
Crie
um
algoritmo
que
simule
a
execução
de
uma
máquina
calculadora.
CAP.
III
68. algoritmo
”calculadora”
a,b:inteiro
soma,subtraccao,
mul&plicacao:inteiro
divisao:real
op:caractere
inicio
escreva
("Digite
o
primeiro
numero")
leia(a)
escreva
("Digite
o
segundo
numero")
leia(b)
escreval
("Digite
a
operação
que
deseja:
+
(soma)
-‐
(subtraccao)
*
(Mul&plicacao)
/
(Divisao)")
leia(op)
escolha
(op)
caso
"+"
soma<-‐a+b
escreva
(soma)
caso
"-‐"
subtraccao<-‐a-‐b
escreva
(subtraccao)
caso
"*"
mul&plicacao<-‐
a*b
escreva
(mul&plicacao)
caso
"/"
divisao<-‐a/b
escreva
(divisao)
outrocaso
escreva
("Operacao
inexistente")
fimescolha
fimalgoritmo
CAP.
III
70. Estruturas
de
Repe&ção
São
estruturas
que
permitem
a
execução
repe?da
de
um
certo
trecho
do
programa
por
um
determinado
número
de
vezes
ou
ainda
enquanto
uma
certa
condição
mantém-‐se
verdadeira.
Existem
três
principais
?pos
de
estruturas
de
repe?ção:
enquanto
repita
para
As
estruturas
de
repe?ção
diferem-‐se
pelo
seu
modo
de
funcionamento,
algumas
precisam
que
uma
certa
condição
seja
verdadeira
para
que
execute
o
loop
(laço
de
repe?ção),
outras
dependem
do
valor
de
uma
variável
de
controlo
para
que
execute
as
instruções.
Imagine
que
deseja
mostrar
a
tabuada
de
um
número
inteiro
qualquer.
Até
o
momento,
com
o
que
foi
aprendido,
o
ideal
seria
mul?plicar
o
número
dado
com
cada
número
no
intervalo
de
1
à
n.
Isto
quer
dizer
que
teríamos
n
mul?plicações,
o
que
não
seria
viável.
Sendo
assim,
aplica-‐se
o
conceito
sobre
laços
de
repe?ção
para
resolver
casos
similares.
CAP.
IV
71. Estruturas
de
Repe&ção
Enquanto:
é
uma
estrutura
que
efectua
um
teste
condicional
no
início
do
laço
e
a
execução
do
bloco
de
acções
ou
da
acção
necessita
que
a
condição
seja
verdadeira.
Quando
a
condição
for
falsa,
as
instruções
não
são
executadas
nenhuma
vez.
Sintaxe
(Pseudocódigo):
Representação
Fluxograma:
enquanto
(condição)
faca
/*
instruções
a
serem
executadas
enquanto
a
condição
for
verdadeira*/
fimenquanto
CAP.
IV
72. Estruturas
de
Repe&ção
Modo
de
funcionamento:
1. Na
estrutura
enquanto,
o
teste
lógico
permite
controlar
o
número
de
repe?ções
a
serem
realizadas
pelo
laço.
2. Ao
executarmos
o
algoritmo,
caso
o
resultado
do
teste
lógico
for
verdadeiro,
as
instruções
dentro
do
laço
serão
realizadas;
quando
o
algoritmo
encontra
o
“fimenquanto”
(ou
a
bolinha
do
fluxograma)
ele
retorna
para
o
teste
lógico
afim
de
avaliá-‐lo
novamente
para
saber
se
deve
repe?r
mais
uma
vez.
3.
Se
o
teste
der
verdadeiro,
os
comandos
do
laço
são
novamente
executados,
mas
se
der
falso
o
algoritmo
sai
do
laço
e
segue
a
sua
execução
realizando
o
próximo
comando
que
es?ver
após
o
“fimenquanto”.
CAP.
IV
73. Estruturas
de
Repe&ção
Contadores
e
Somadores:
Em
laços
de
repe?ção,
necessitamos
de
contadores
para
contar
o
número
de
repe?ções
a
serem
efectuadas,
e
de
somadores
para
acumular
os
valores
de
entrada
em
uma
única
variável.
Imagine
que
deseja
mostrar
a
soma
dos
10
primeiros
números
naturais.
Como
vamos
saber
o
número
de
vezes
já
repe?das?
A
resposta
é
u?lizando
uma
variável
contadora
que
receberá
um
valor
inicial
(geralmente
zero)
e
em
cada
repe?ção
é
incrementada
em
uma
unidade
através
de
uma
atribuição
(Ex:
a<-‐a+1).
Usando
esta
analogia,
podemos
dizer
que
incremento:
é
a
acção
de
acrescentar
uma
unidade
ao
valor
de
uma
variável;
e
decremento
é
a
acção
contrária.
E
como
obter
o
total
da
soma
dos
números?
Neste
caso
temos
de
u?lizar
um
acumulador
para
que
em
cada
laço,
acumule
numa
variável
os
valores
que
serão
fornecidos(neste
caso
1+2+3+.....10).
CAP.
IV
74. Estruturas
de
Repe&ção
Ex:
Crie
um
algoritmo
que
soma
a
quan?dade
de
números
pares
de
1
à
20.
Solução:
Algoritmo
"soma_pares"
var
soma:inteiro
cont:inteiro
inicio
cont
<-‐
1
soma<-‐
0
enquanto
(cont<=20)
faca
se
(cont
mod
2
=
0)
entao
soma<-‐
soma+cont
fimse
cont<-‐
cont+1
fimenquanto
escreva
("A
soma
total
é
",
soma)
fimalgoritmo
CAP.
IV
75. CAP.
IV
cont
<-
cont+1
soma:inteiro
cont:inteiro
início
cont<-1
soma<-0
Cont<=20
Cont
mod
2
=
0
soma
<-
soma+cont
7im
F
V
V
F
76. Estruturas
de
Repe&ção
Repita:
é
uma
estrutura
que
efectua
um
teste
condicional
no
final
do
laço.
Deste
modo,
o
bloco
de
instruções
do
laço
serão
executados
no
mínimo
uma
vez,
até
que
uma
determinada
condição
seja
verdadeira;
isto
quer
dizer
que
ela
executa
enquanto
for
falsa.
Sintaxe
(Pseudocódigo):
Representação
Fluxograma:
repita
/*
instruções
a
serem
executadas
enquanto
a
condição
for
falsa*/
até
(condição)
CAP.
IV
77. Estruturas
de
Repe&ção
Para:
é
uma
estrutura
que
repete
um
conjunto
de
operações
por
um
determinado
número
de
vezes
previamente
definido.
Esta
estrutura
não
prevê
uma
condição
tal
como
as
outras,
pois
possui
limites
fixos
(inicio
e
final).
Sintaxe
(Pseudocódigo):
Representação
Fluxograma:
para
V
de
vi
até
vf
passo
p
faca
/*
instruções
a
serem
executadas
enquanto
a
condição
for
verdadeira*/
fimpara
Ou
ainda
para
V
de
vi
até
vf
faca
/*
instruções
a
serem
executadas
enquanto
a
condição
for
verdadeira*/
fimpara
CAP.
IV
78. Estruturas
de
Repe&ção
Onde:
V
-‐
é
a
variável
de
controlo
vi
–
é
o
valor
inicial
da
variável
V
vf
–
é
o
valor
final
da
variável
V
p
–
é
o
valor
do
incremento
à
variável
V
Nota:
tudo
o
que
es?ver
o
faça
e
o
fimpara
será
caracterizado
como
o
que
deve
ser
feito
para
cada
ocorrência.
CAP.
IV
80. Estruturas
de
Dados
Definição:
As
estruturas
de
dados,
definem
a
forma
como
os
dados
estão
organizados
e
armazenados
na
memória
do
computador,
por
forma
a
facilitar
o
seu
acesso
e
manipulação.
Até
aqui,
estudamos
que
numa
variável
só
é
possível
armazenar
um
valor;
ou
seja,
caso
?ver
um
valor
armazenado
numa
variável,
e
desejar
armazenar
outro
valor
na
mesma
variável,
o
que
poderá
acontecer
será
a
subs?tuição
do
an?go
pelo
novo.
Quando
precisamos
armazenar
um
conjunto
de
valores
são
u?lizadas
variáveis
compostas
que
podem
ser:
Homogêneas
e
Heterogêneas;
as
variáveis
compostas
Homogêneas
agregam
um
conjunto
de
dados
do
mesmo
?po
e
as
variáveis
compostas
Heterogêneas,
agregam
um
conjunto
de
dados
de
?pos
diferentes.
Nesta
primeira
secção,
estudaremos
as
variáveis
compostas
Homogêneas,
que
envolvem
Vectores
e
Matrizes,
também
conhecidas
como
Arrays.
CAP.
V
81. Variáveis
compostas
homogêneas
unidimensional
(vectores)
Suponhamos
que
nos
é
proposto
o
seguinte
problema:
Crie
um
algoritmo
que
solicita
o
nome
de
10
estudantes
e
as
suas
respec?vas
notas,
calcula
as
suas
médias
e
imprime
o
nome
de
cada
um
e
a
média
do
final
do
semestre.
Possível
solução:
Algoritmo
“dados
escolares
de
10
alunos”
var
nome1,
nome2,....nome10:literal
media1,
media2,
media3,.....media10:real
inicio
leia(nome1)
leia(nome2)
......
leia(nome10)
..........
fimalgoritmo
CAP.
V
82. Variáveis
compostas
homogêneas
unidimensional
(vectores)
U?lizando
a
solução
apresentada
anteriormente,
seria
bastante
trabalhoso
solucionar
o
problema
proposto;
o
mais
fácil
seria
u?lizar
o
conceito
de
vectores.
Definição:
Vector
representa
um
conjunto
de
variáveis
capazes
de
armazenar
valores
do
mesmo
?po
(literal,
inteiro,
real,
etc).
Um
vector
é
visto
como
uma
caixa
com
vários
compar?mentos
onde
podemos
guardar
documentos;
para
o
nosso
caso
específico
é
considerado
como
uma
variável
onde
podemos
armazenar
mais
de
um
dado.
Caracterís&cas
de
um
Vector
Possui
um
nome
(iden?ficador)
Possui
um
índice
(posição)
U?liza
colchetes
(dois
parênteses
rectos
)
para
representar
as
posições
do
vector
Armazena
apenas
dados
do
mesmo
?po
(qualquer
?po
de
dado)
Elementos
individuais
são
acessados
por
meio
da
sua
posição
CAP.
V
83. Variáveis
compostas
homogêneas
unidimensional
(vectores)
Sintaxe
para
declaração
de
um
vector
<nome
do
vector>:
vetor
[Li..Lf]
de
<&po
de
dado>
Ex:
nome:
vetor
[0..4]
de
literal
Representação
gráfica
de
um
Vector
A
figura
acima
representa
um
vector
de
cinco
(5)
posições
com
valores
do
?po
literal.
Imagine
que
o
nome
da
variável
do
?po
vector
seja
nome
tal
como
na
figura
acima:
Significa
o
seguinte:
nome[0]
=
“Maria”,
nome[1]=“Valdino”,
...
,
nome[4]=“Sandra”
CAP.
V
Maria
Valdino
Sónia
Eliana
Sandra
[0]
[1]
[2]
[3]
[4]
nome
84. Variáveis
compostas
homogêneas
unidimensional
(vectores)
OPERAÇÕES
COM
VECTORES
Não
é
possível
manipular
directamente
todos
os
elementos
do
vector;
apenas
um
de
cada
vez.
O
acesso
individual
a
cada
componente
do
vector
é
realizado
pela
especificação
do
nome
e
a
posição
do
mesmo
por
meio
de
índices.
O
índice
não
representa
o
valor
con?do
no
vector;
mas
sim
a
posição
em
que
um
determinado
valor
está
armazenado
no
vector.
ATRIBUIÇÃO
DE
VALORES
Ex:
Nome[2]
<-‐
“Joaquim”
,
quer
dizer
que
é
atribuído
a
constante
Joaquim
do
?po
literal
para
a
segunda
posição
do
vector
Nome.
idade[10]
<-‐
50,
quer
dizer
que
é
atribuído
o
valor
50
para
a
décima
posição
do
vector
idade
CAP.
V
85. Variáveis
compostas
homogêneas
unidimensional
(vectores)
Nota:
É
necessário
levar
em
conta
que
o
valor
a
ser
atribuído
pode
ser
uma
constante,
uma
variável
ou
uma
expressão.
LEITURA
DE
VECTORES
A
leitura
dos
elementos
do
vector
é
feita
passo
a
passo;
ou
seja
um
elemento
de
cada
vez,
considerando
o
nome
do
vector
e
a
posição
correspondente.
Neste
caso
é:
Sintaxe
leia
(<lista
de
variáveis>).
Ex:
leia
(escola
[3])
ESCRITA
DE
VECTORES
Os
passos
são
os
mesmos
em
comparação
aos
referidos
acima.
Sendo
assim
teremos:
Sintaxe
escreva
(<lista
de
variáveis>).
Ex:
escreva
(escola
[3])
CAP.
V
86. Variáveis
compostas
homogêneas
unidimensional
(vectores)
Para
a
manipulação
dos
vectores,
quer
para
a
leitura
como
para
a
escrita
de
valores
nele
con?dos,
ou
qualquer
operação
a
ser
efectuada
são
u?lizadas
estruturas
repe?ção.
Suponha
que
deseja
armazenar
em
um
vector
N,
5
valores
do
?po
inteiro
e
imprimir
os
mesmos
valores.
Considerando
uma
leitura
e
escrita
normal
sem
estruturas
de
repe?ção,
teríamos
o
seguinte:
CAP.
V
leia
(N[0],
N[1],N[2],N[3],N[4])
escreval(N[0])
escreval(N[1])
escreval(N[2])
escreval(N[3])
escreval(N[4])
87. Variáveis
compostas
homogêneas
unidimensional
(vectores)
Para
solucionar
esta
situação,
u?lizamos
estruturas
de
repe?ção
(enquanto
...
faca,
repita...até
e
para
de...
até)
então
teremos:
CAP.
V
algoritmo
"vector
de
5
elementos”
Var
N:vetor
[0..4]
de
inteiro
i:inteiro
Inicio
para
i
de
0
ate
4
faca
leia
(N[i])
fimpara
para
i
de
0
ate
4
faca
escreval(N[i])
fimpara
fimalgoritmo
88. Variáveis
compostas
homogêneas
unidimensional
(vectores)
Exemplos:
1. Crie
um
algoritmo
que
dado
10
números
aleatórios,
imprima
os
mesmos
na
ordem
inversa
em
que
foram
inseridos.
Ex:
2,3,4,6
resultará
em:
6,4,3,2
2. Escreva
um
algoritmo
que
soma
todos
elementos
con?dos
no
vector
e
imprima
o
resultado
da
soma.
3. Faça
um
algoritmo
que
lê
uma
sequência
infinita
de
números
e
termina
apenas
quando
digitar
o
número
zero
(0)
CAP.
V
89. Variáveis
compostas
homogêneas
unidimensional
(vectores)
1.
Solução
CAP.
V
algoritmo
"vector
de
10
elementos"
var
N:vetor
[0..9]
de
inteiro
i:inteiro
inicio
i<-‐0
escreva("Digite
10
números")
enquanto
(i<=9)
faca
leia
(N[i])
i<-‐i+1
fimenquanto
escreval("O
inverso
dos
valores
inseridos
é:
")
enquanto
(i>0)
faca
i<-‐i-‐1
escreval(N[i])
fimenquanto
fimalgoritmo
90. Variáveis
compostas
homogêneas
unidimensional
(vectores)
2.
Solução
CAP.
V
algoritmo
"soma
de
10
elementos"
var
N:vetor
[0..9]
de
inteiro
soma:inteiro
i:inteiro
inicio
i<-‐0
soma<-‐0
escreva("Digite
10
números")
enquanto
(i<=9)
faca
leia
(N[i])
i<-‐i+1
fimenquanto
para
i
de
0
ate
9
faca
soma<-‐soma+N[i]
fimpara
escreval("O
somatório
dos
valores
inseridos
é:
",soma)
fimalgoritmo