You are on page 1of 49

Programao e Sistema de Informao

Mdulo 1
Introduo Algoritmia

Introduo Lgica de Programao

Lgica

Lgica de programao a
tcnica de encadear
pensamentos para atingir um
determinado
objetivo.

Sequncia

Lgica

Sequncia Lgica so
passos executados at
atingir um objectivo ou
soluo de um
problema.

A lgica de programao necessria para pessoas que desejam


trabalhar com desenvolvimento de sistemas e programas, permite
definir a sequncia lgica para o desenvolvimento.

Instrues

Instrues so um conjunto de regras ou normas definidas


para a realizao ou emprego de algo. Em informtica, o
que indica a um computador uma ao elementar
a executar.
Por exemplo, se quisermos fazer uma omelete de batatas, temos
que colocar em prtica uma srie de instrues:
descascar as batatas, bater os ovos, fritar as batatas, etc...
Essas instrues tem que ser executadas numa ordem adequada; no se pode
descascar as batatas depois de fritas.
Uma instruo tomada em separado no tem muito sentido; para obtermos o
resultado, precisamos colocar em prtica o conjunto de todas as instrues, na
ordem correcta.

Algoritmo

Um algoritmo uma sequncia finita de instrues que


levam a execuo de uma tarefa.

Exemplos de algoritmos no computacional:


Comer um rebuado:

Pegar no rebuado

Retirar o papel

Comer o rebuado

Deitar o papel no lixo

Somar dois nmeros quaisquer:

Escreva o primeiro nmero no rectngulo A

Escreva o segundo nmero no rectngulo B

Somar o nmero do rectngulo A com o


nmero do rectngulo B

Colocar o resultado no rectngulo C

Algoritmo no a soluo de um problema, pois, se assim fosse,


cada problema teria um nico algoritmo. Algoritmo um dos
caminhos para a soluo de um problema.

Algoritmos no se aprende:
Copiando Algoritmos
Estudando Algoritmos

Algoritmos s se aprendem:
Construindo Algoritmos
Testando Algoritmos

Aprender algoritmos no se consegue a no ser atravs de


muitos exerccios.

Programas

Os programas de computadores nada mais so do que


algoritmos escritos numa linguagem de computador
(Pascal, C, C#, Perl, Java, Python, Visual Basic entre
outras) e que so interpretados e executados por uma
mquina, no caso um computador.
Um programa por natureza muito especfico e rgido em
relao aos algoritmos da vida real.

Exerccios
Faa um algoritmo para somar dois nmeros e
multiplicar o resultado pelo primeiro nmero.
Descreva com detalhes a sequncia lgica para
trocar um pneu de um carro.
Faa um algoritmo detalhado para trocar uma
lmpada.

Desenvolvimento do algoritmo

Regras para construo do


Algoritmo
Usar somente um verbo por frase.
Imaginar que se est a desenvolver um algoritmo para
pessoas que no trabalham com informtica.
Usar frases curtas e simples.
Ser objetivo.
Procurar usar palavras que no tenham sentido
duvidoso.

Fases
Vimos que ALGORITMO uma sequncia lgica de instrues
que podem ser executadas.
Entretanto ao Construir um algoritmo, precisamos primeiro
dividir o problema apresentado em trs fases fundamentais.

ENTRADA: So os dados de entrada do algoritmo.


PROCESSAMENTO: So os procedimentos utilizados para
chegar ao resultado final.
SADA: So os dados j processados.

ENTRADA

PROCESSAMENTO

SADA

Exemplo de Algoritmo
Imagine o seguinte problema: Calcular a mdia final dos alunos. Os alunos
realizaro 3 provas: P1, P2 e P3.
Onde: Mdia Final = (P1+P2+P3)/3
Para construir o algoritmo proposto, faremos trs perguntas:
a) Quais so os dados de entrada?
R: Os dados de entrada so P1, P2 e P3
b) Qual ser o processamento a ser utilizado?
R: O procedimento ser somar todos os dados de entrada e dividi-los por 3: (P1 +
P2 + P3)/3
c) Quais sero os dados de sada?
R: O dado de sada ser a mdia final

Algoritmo: Calcular Mdia do aluno


Receber a nota da prova1
Receber a nota de prova2
Receber a nota de prova3
Somar todas as notas e dividir o resultado por 3
Mostrar o resultado da diviso

Outro Exemplo de Algoritmo


Algoritmo do clculo do mltiplo de um nmero.
Algoritmo do clculo dos mltiplos de um nmero:
1. Anotar o limite dos mltiplos (limite)
2. Anotar o nmero do qual se quer saber os mltiplos (nmero)
3. O primeiro mltiplo o prprio nmero (mltiplo = nmero)
4. Enquanto o mltiplo for menor que o limite indicado fazer:
4.1. Anotar o mltiplo
4.2. O novo mltiplo ser igual ao mltiplo anterior mais o
nmero (mltiplo = mltiplo + nmero)
5. Fim do algoritmo.

Teste do Algoritmo
Aps desenvolver um algoritmo este dever sempre ser testado.
Deve-se seguir as instrues do algoritmo de maneira precisa
para verificar se o procedimento utilizado est correto.
Exemplo:
Nota da Prova 1
Nota da Prova 2
Nota da Prova 3
Utilizar a tabela abaixo:
P1

P2

P3

Mdia

Exerccios
Identifique os dados de entrada, processamento e sada no
algoritmo seguinte

Receber cdigo da pea


Receber valor da pea
Receber Quantidade de peas
Calcular o valor total da pea (Quantidade * Valor da pea)
Mostrar o cdigo da pea e seu valor total

Faa um algoritmo para Calcular o stock mdio de uma pea,


sendo que STOCKMDIO = (QUANTIDADE MNIMA + QUANTIDADE
MXIMA) /2

Teste o algoritmo anterior com dados sua escolha.

Formas de Apresentao dos


Algoritmos para Computador

Pseudocdigo

Os algoritmos podem ser descritos em uma linguagem chamada


pseudocdigo.
Os algoritmos so independentes das linguagens de programao.
Ao contrrio de uma linguagem de programao no existe um
formalismo rgido de como deve ser escrito o algoritmo.
O algoritmo deve ser fcil de se interpretar e fcil de codificar.
O algoritmo deve ser o intermedirio entre a linguagem falada e a
linguagem de programao.
A pseudolinguagem pode ser visto como a tentativa de fundir a
expressividade da linguagem natural e o rigor lgico de esquemas
como o fluxograma.
A pseudolinguagem permite a descrio do algoritmo de uma forma
linear, fcil de ler e fcil de compreender.

Exemplo de pseudocdigo
Algoritmo circunferncia
[Este algoritmo d as caractersticas de uma circunferncia]
Dados
raio: inteiro
rea, permetro: reais
PI 3,14159
Incio
Ler (raio)
rea PI x raio2
permetro 2 x PI x raio
Escrever (rea, permetro)
Fim

Pseudocdigo
Num algoritmo, podemos definir trs seces:
Cabealho

dado o nome ao algoritmo. Comea com a palavra "Algoritmo".


Declaraes

Descrio das variveis usadas.


Corpo

Contm a sequncia dos passos (aes) do algoritmo.


Inicia-se com a palavra "Incio e termina com "Fim".
Comentrios

Cada passo do algoritmo pode iniciar com um comentrio entre dois


parnteses retos. Estes comentrios do uma breve descrio do
passo ou dum grupo de passos seguintes.

Os comentrios so uma parte importante do algoritmo.


Eles servem para tornar a leitura, do algoritmo, mais fcil e clara.

Fluxogramas
uma forma padronizada e eficaz de representar os
passos lgicos de um determinado processamento.
Define uma sequncia de smbolos, com significado
bem definido.
A principal funo a de facilitar a visualizao dos
passos de um processamento.
Atualmente, a utilizao restringe-se ao apoio na
documentao do algoritmo, valendo pela vantagem
grfica da apresentao das interligaes.

Alguns Smbolos Usados na Construo de Fluxogramas


Processamento em geral (ex. soma de dois nmeros)
Leitura/Escrita de dados (escrever a nota da prova 1)
Incio/Fim de processamento (ex. inicio do algoritmo)
Conector de fluxos (Ligao entre partes do fluxograma)
Deciso condicional
Escolha mltipla
Subprograma
Linha de fluxo

Exemplo de Fluxograma
Incio

Ler valor 1

Ler valor 2

Valor 1 > Valor 2

No

Valor 1 < Valor 2

Yes

Yes

Escrever valor
1 maior

Escrever valor
2 maior

Rotina Adeus

Fim

No

Escrever
valores iguais

Algoritmo Comparar
Dados
valor1, valor2: Inteiros
frase: Caracteres
Incio
Ler (valor1, valor2)
Se valor1 > valor2 ento
frase valor1 maior
Seno
Se valor1 < valor2 ento
frase valor2 maior
Seno
frase valores iguais
Fim se
Fim se
Escrever (frase)
Chamar Rotina Adeus
Fim

Abordagem Estruturada e
Concepo Top-Down

Numa linguagem estruturada como por ex. o Pascal distingue-se


a parte onde so declarados os dados e o corpo com as
instrues do programa parte declarativa e parte operativa.
A abordagem top-down procura identificar os pontos essenciais
da questo; parte-se dos pontos mais gerais para os seus
componentes mais particulares, em nveis sucessivos mais
concretos, at ao nvel de pormenor desejado.

Elementos Fundamentais de
Programao

Constantes, Variveis e Tipos de


Dados
Variveis e constantes so os elementos bsicos que um programa
manipula.
Uma varivel um espao reservado na memria do computador
para armazenar um tipo de dado determinado.
Variveis devem receber identificadores (nomes) para poderem ser
referenciadas e modificadas quando necessrio.
Um programa deve conter declaraes que especificam de que
tipo so as variveis que ele utilizar e por vezes um valor inicial.
Tipos de dados podem ser por exemplo: inteiros, reais, caracteres,
alfanumrico, lgico, etc.
As expresses combinam variveis e constantes para calcular
novos valores.

Constantes
Constante um determinado valor fixo que no
se modifica durante a execuo de um
programa.
Conforme o seu tipo, a constante classificada
como sendo numrica, lgica e literal
(caracteres).

Variveis
Varivel a representao simblica dos
elementos de um certo conjunto.
Cada varivel corresponde a uma posio de
memria, cujo contedo pode se alterado ao
longo do tempo durante a execuo de um
programa.
Embora uma varivel possa assumir diferentes
valores, ela s pode armazenar um valor a cada
instante.

Tipo de Dados

As variveis e as constantes podem ser basicamente de quatro tipos:


Numricas, caracteres, caracteres ou lgicas.
Numricas: especficas para armazenar nmeros, que posteriormente
podero ser utilizados para clculos. Podem ser ainda classificadas
como Inteiras ou Reais.
As variveis do tipo inteiro so para armazenamento de nmeros
inteiros e as Reais so para o armazenamento de nmeros com casas
decimais.
Caracter: Especficas para armazenar um carcter (caracteres
individuais). Os caracteres disponveis so geralmente os caracteres da
Tabela ASCII. Este tipo de dado pode assumir qualquer carcter da
referida Tabela ASCII, mas apenas um de cada vez.
Caracteres: Especficas para armazenar uma cadeia de caracteres
alfanumricos (adequados ao manuseamento de texto). As aspas () so
delimitadores da cadeia de caracteres.
Lgicas: Armazenam somente dados lgicos que podem ser Verdadeiro
ou Falso.

Tipo de Dados
Caractere
s

Char
Short int

Principais
tipos de
dados

Inteiros

integer
Long int

Reais

Lgicos

Real

Boolea
n

Exemplos em Pseudocdigo

Total Produto * Quantidade


Nome: caracteres[20]
Preo 23,5
Casar Verdadeiro
Saltar 1
Idade: inteiro
Mdia, Nota1, Nota2: reais

Operadores
Os operadores so meios pelo qual
incrementamos, decrementamos,
comparamos e avaliamos dados dentro
do computador. Temos trs tipos de
operadores:
Operadores Aritmticos
Operadores Relacionais
Operadores Lgicos

Operadores Aritmticos

Os operadores aritmticos so os utilizados para obter resultados


numricos.
Alm da adio, subtrao, multiplicao e diviso, podem utilizar
tambm o operador para exponenciao.
Alguns smbolos para os operadores aritmticos so:
+

Adio

Subtraco

Diviso

Mod
div

Resto da diviso (Resto)


Diviso inteira (Quociente)

multiplicao

potenciao

Operadores Relacionais
Os operadores relacionais so utilizados para
comparar String de caracteres e nmeros.
Os valores a serem comparados podem ser
caracteres ou variveis.
Estes operadores sempre retornam valores
lgicos (Verdadeiro ou Falso / True ou False)
Para estabelecer prioridades no que diz respeito
a qual operao executar primeiro, utilize os
parnteses.

Os operadores relacionais so:


=

Igual a

<>

Diferente de

>

Maior que

<

Menor que

>=

Maior ou igual a

<=

Menor ou igual a

Operadores Lgicos
Os operadores lgicos servem para combinar
resultados de expresses, retornando se o
resultado final verdadeiro ou falso.
Os operadores lgicos so:
OU
E
NO
NO OU

OR
AND
NOT
XOR

a) Operador AND:
TRUE AND TRUE
TRUE AND FALSE
FALSE AND TRUE
FALSE AND FALSE

=> TRUE
=> FALSE
=> FALSE
=> FALSE

b) Operador OR:
TRUE OR TRUE
TRUE OR FALSE
FALSE OR TRUE
FALSE OR FALSE

=> TRUE
=> TRUE
=> TRUE
=> FALSE

c) Operador NOT:
NOT TRUE
NOT FALSE

=> FALSE
=>
TRUE

d) Operador XOR:
TRUE XOR TRUE
TRUE XOR FALSE
FALSE XOR TRUE
FALSE XOR FALSE

=> FALSE
=> TRUE
=> TRUE
=> FALSE

Instrues Bsicas
Comando de escrita:
Escrever(Paula)
Escrever(A minha idade : , IDADE)

Comado de leitura:
Ler(NOME)
Ler(IDADE, NOME)

Instrues de atribuio

A VALOR
NUM 3
A 3+ B/2
CIDADE Lisboa

Estruturas Fundamentais de
Programao

Num algoritmo ou programa muitas vezes


necessrio:
Utilizar determinadas condies para decidir se se deve executar
uma ou outra ao ou aes
Repetir uma srie de instrues um determinado nmero de vezes
ou enquanto se verifica uma condio

As estruturas de controlo das sequncias de um


algoritmo podem classificar-se em:
1.Estruturas de deciso ou seleo;
2.Estruturas de repetio.

Estrutura de Deciso
Condicional Se
A deciso ter sempre como resposta o
resultado VERDADEIRO ou FALSO.
Essas decises interferem diretamente na
execuo do programa.

Se condio ento
aco1
seno
aco2
fim se

condio

instruo se falso

Yes
instruo se
verdadeiro

condio

Se condio ento
aco1
fim se

No

Yes

instruo se
verdadeiro
No

Estrutura de Deciso
Condicional Se
se <expresso-lgica> entao
<sequncia-de-comandos>
fimse
se <expresso-lgica> entao
<sequncia-de-comandos-1>
senao
<seqncia-de-comandos-2>
fimse

Comando de Seleo Mltipla Caso


A sintaxe a seguinte:
escolha <expresso-de-seleo>
caso <exp11>, <exp12>, ..., <exp1n>
<seqncia-de-comandos-1>
caso <exp21>, <exp22>, ..., <exp2n>
<seqncia-de-comandos-2>

algoritmo "Clube futebol"


var

Exemplo: Caso
clube: caractere

inicio
escreva ("Introduza o seu clube de futebol de futebol: ")
leia (clube)
escolha clube
caso "Benfica", "Sporting"
escreval (" um clube alfacinha.")

caso "Porto", "Braga", "Guimares"


escreval (" um Clube do Norte.")

outrocaso
escreval (" de outra regio.")
fimescolha

Estrutura de Repetio
Para
Para ... Faa
Esta estrutura repete uma sequncia de comandos n vezes.
para <varivel> de <valor-inicial> ate <valor-limite> [passo
<incremento>] faca
<sequncia-de-comandos>
fimpara

Estrutura de Repetio
Enquanto
Esta estrutura repete uma ude comandos enquanto uma
determinada condio (especificada atravs de uma
expresso lgica) for satisfeita.
enquanto <expresso-lgica> faca
<sequncia-de-comandos>
fimenquanto

Estrutura de Repetio
Repita ... at
repita
<sequncia-de-comandos>
ate <expresso-lgica>

Exemplo
Repita ... at
algoritmo "!!!!!!"
var j: inteiro
inicio
j <- 1
repita
escreva (j)
j <- j + 1
ate j > 10
fimalgoritmo

You might also like