SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
OBJECTIVOS DO MÓDULO
• Elaborar algoritmos de resolução para um dado um problema.
• Compreender a lógica de programação
• Identificar e dominar a utilização dos diferentes tipos de variáveis.
• Descrever a estrutura de um algoritmo identificando as palavras-chave, variáveis e funções.
• Elaborar algoritmos, sem ambiguidades, eficazes e eficientes.
O que é um programa?
Um programa de computador ou programa informático é uma colecção de instruções que
descrevem uma tarefa a ser realizada por um computador. O termo pode ser uma referência ao
código fonte, escrito numa linguagem de programação, ou ao arquivo que contém a forma
executável deste código fonte
O que é uma linguagem de programação?
Uma linguagem de programação é um método padronizado para expressar instruções para um
computador. Em programação, o uso da matemática é relativamente alto e é importante
também, que possuas um bom raciocínio lógico.
Porque Programar?
Podemos programar para alcançar inúmeros objectivos, como por exemplo:
- desenvolver um software, para automatizar tarefas, e quem sabe vende-lo
- criar um jogo de computador.
- Podes também programar para a Web e desenvolver aplicações .
- A área da tecnologia é um mercado em constante crescimento, com salários iniciais altos.
Então qual a linguagem que o computador entende?
O computador entende apenas a linguagem binário ou máquina, ou seja, 1 e 0, ligado ou
desligado.
Quer dizer que tenho que aprender a programar em 0 e 1?
Negativo. Hoje em dia, temos o que chamamos de compiladores e interpretadores. São eles
que fazem a tradução da nossa linguagem para linguagem de máquina.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Qual a diferença entre linguagem compilada e interpretada?
Na linguagem interpretada, o código fonte é traduzido para linguagem de máquina no
momento da interpretação (execução), e o código fica visível, enquanto na linguagem
compilada, este é feito anteriormente, não sendo possível visualizar o código fonte.
Qual a diferença entre linguagens de baixo nivel e alto nivel?
Resumidamente, as linguagens de baixo nível, são aquelas que possuem contacto directo
com o hardware do computador, geralmente linguagens compiladas, como por exemplo C,
C++, Assembly…
Enquanto as linguagens de alto nível o contacto é com o software, exemplos são linguagens
interpretadas como Python, PHP, JavaScript, Pascal, ASP.NET…
Noções de Lógica?
Lógica é a forma correcta de organizar os pensamentos e demonstrar o raciocínio de maneira
correcta. A utilização da lógica é a melhor forma de solucionar problemas e atingir objectivos.
Sempre que se quer pensar, falar ou escrever correctamente, deve-se colocar os pensamentos
em ordem.
Exemplo:
- Todo mamífero é animal
- Todo cavalo é mamífero
- Portanto, todo cavalo é animal
A lógica é muito importante em nossa vida, no dia – a – dia. Veja os exemplos abaixo:
a) A gaveta está fechada.
A bala está na gaveta.
Preciso primeiro abrir a gaveta, para depois pegar a bala.
b) Moramos três pessoas.
Nenhum de nós dois quebrou o vaso de porcelana.
Quem quebrou o vaso?
O que é um algoritmo?
Segundo a Wikipédia…
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma
das quais pode ser executada mecanicamente num período de tempo finito e com uma
quantidade de esforço finita.
traduzindo!!!
O algoritmo, é uma instrução, ou uma ordem que podemos dar ao computador, para que ele
realize determinada tarefa. Algoritmo é a lógica necessária para o desenvolvimento de um
programa.Ao contrário do que a maioria das pessoas pensam, o computador não é inteligente,
quem é inteligente, é o programador!
Simplificando…
Para se ter um algoritmo, é necessário:
1. Que se tenha um número finito de passos
2. Que cada passo esteja precisamente definido, sem possíveis ambigüidades
3. Que existam zero ou mais entradas tomadas de conjuntos bem definidos
4. Que existam uma ou mais saídas
5. Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo
finito.
Para que um computador possa desempenhar uma tarefa é necessário que esta seja
detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se
chama de programa. Neste sentido, um programa de computador nada mais é que um
algoritmo escrito numa forma compreensível pelo computador.
FORMAS DE REPRESENTAÇÃO DE ALGORITMOS
Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam:
a Descrição Narrativa
o Fluxograma Convencional
o Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol.
Descrição Narrativa
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Nesta forma de representação os algoritmos são expressos directamente em linguagem
natural. Como por exemplo, têm-se o algoritmo seguinte:
– Cálculo da média de um aluno:
– Obter as notas da primeira e da segunda prova
– Calcular a média aritmética entre as duas
– Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado
Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes
dá oportunidade a más interpretações, ambigüidades e imprecisões.
Fluxograma Convencional e Diagrama de Blocos
É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam
ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das idéias
contidas nos algoritmos.
A figura 2.1 mostra as principais formas geométricas usadas em fluxogramas.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
A figura 2.2 a seguir mostra a representação do algoritmo de cálculo da média de um aluno
sob a forma de um fluxograma.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Pode-se perceber então, que tudo pode ser um algoritmo.
O sistema de buscas do Google, tem um algoritmo por trás dele, o facebook, também tem um
algoritmo, e assim sucessivamente.
Para aprendermos melhor, antes de passar para qualquer tipo de linguagem de programação
propriamente dita, iremos aprender a programar em pseudocódigo, conhecido como Portugol
ou Português Estruturado.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Pseudocódigo . Portugol (Português Estruturado)
Esta forma de representação de algoritmos, , é bastante rica em detalhes e, por assemelhar-se
bastante à forma em que os programas são escritos, encontra muita aceitação, sendo portanto
a forma de representação de algoritmos que será adoptada nesta disciplina. a seguir iremos
passar a “programar” nesta linguagem, utilizando a ajuda do software VisualG.
O que são variáveis em programação?
Desenho de como seria uma variável
Vamos entender variável, como uma caixa, na qual podes dar o nome que achares
conveniente, e guardar o conteúdo que desejares.
Ou seja, toda a variável tem um nome, valor e tipo.
O que é o tipo?
As variáveis, podem ser classificadas em:
 numérica (numeros reais ou inteiros);
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
 caracteres (sequências de texto);
 booleanas (verdadeiro ou falso);
Em portugol, temos os tipos: real, inteiro, caractere e logico
Então eu posso colocar qualquer nome à minha variável?
Sim e Não!
Como assim?
Certas palavras, são reservadas para o uso da linguagem, ou seja, essas palavras não podem
ser utilizadas, pois haveria um conflito na hora de interpretar o código.
Tabela sobre as palavras reservadas do portugol:
Não tem de decorar esta tabela! A medida que for aprendendo a programar em portugol,
saberás exactamente qual palavra é, e qual não é reservada pela linguagem.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Outras restrições para o nome de uma variável é:
 O primeiro caractere da variável, deve ser necessariamente letra ou underline ‘_’. Não
pode começar em números
 Nomes das variáveis não podem ter espaços em branco. Nada de Coca Cola por
exemplo. Uma variável correcta seria cocacola, tudo junto e sem espaços.
 Não são permitidas variáveis com mais de 127 caracteres
 E por fim, em Portugol, diferente de outras linguagens de programação, as variáveis
não são case sensivity, ou seja, elas não diferenciam maiúsculas de minúsculas. Logo,
BrUnO = bruno.
Um pouco mais sobre tipo de variáveis…
A tabela abaixo, exemplifica que tipo de conteúdo de cada variável.
Estrutura do pseudocódigo…
Todo e qualquer algoritmo, terá sempre um Nome, Declaração de variáveis, Início e Fim. Na
estrutura abaixo:
Algoritmo “nome-do-seu-algoritmo”
VAR
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
nome-da-var: tipo
nome-da-var2: tipo
INICIO
|
FIMALGORITMO
O que é declaração de variáveis?
A declaração de variáveis, é uma parte obrigatória no portugol, assim como em outras
linguagens de programação como C por exemplo. Ela é necessária para que o interpretador
entenda que aquela palavra é uma variável, Na estrutura do Portugol, dentro da seção VAR,
declaramos a variável da seguinte maneira:
Nome-da-var: tipo
ex:
variavelnome: caractere
Vamos então criar o nosso primeiro programa…!
No ecrã Inicial do VisualG, já temos a estrutura do nosso portugol pronta.
algoritmo “olá mundo”
var
inicio
escreva(“Olá Mundo!”)
fimalgoritmo
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
O que é esse “escreva“?
O escreva é uma palavra reservada do portugol.
A sua função é escrever no ecrã o texto entre ” ” (aspas)
No visualg, ao digitar este código e apertar F9, o código será executado, verás que estará
escrito no ecrã apenas a frase: Olá Mundo!
E porque não hà nada no campo das variáveis?
Porque ainda não utilizamos nenhuma.
No algoritmo a seguir, vamos fazer o uso da função leia() e de variáveis.
algoritmo “leianumero”
var
num: inteiro
inicio
escreva(“Digite um número: “)
leia(num)
escreva(“O número digitado é: “, num)
fimalgoritmo
Entendendo o algoritmo…
Foi declarada a variável num, como inteiro. Ou seja, poderá receber e guardar qualquer
número não-fracionário (-2, -3, -20, 0, 1, 2, 40, 18…)
Em seguida, o algoritmo irá solicitar ao utilizador que digite um número, escrevendo no ecrã a
seguinte frase: Digite um número:
Se notarem, há um espaço após os : e antes da “, isso é necessário para que o cursor dê o
espaço desejado.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
o leia(num) irá aguardar com o cursor no ecrã até que o utilizador digite um número inteiro e
tecle enter.
O num é a variável que declaramos no início do algoritmo, lembram?
E finalmente, o resultado. escreva(“O número digitado é: “, num)
É importante notar, que no escreva, tudo o que estiver entre aspas, vai ser tratado como um
texto qualquer, então para retornarmos o conteúdo de uma variável, fechamos primeiro as
aspas, colocamos uma vírgula e digitamos o nome da variável, para só então fechar o
parenteses. Testem o algoritmo acima no VisualG, e vejam o resultado.
Treinem mais um pouco…
1. Crie um algoritmo que leia 2 números e mostrem o resultado.
2. Crie um algoritmo que leia o nome e a idade de alguém, e mostre no ecrã o que foi
digitado.
Dica: no exercício 2, terá que ser declarado duas variáveis, uma do tipo inteiro e outra do tipo
caractere.
Atribuir um valor a uma variavel sem interacção do utilizador?
Utilizaremos este símbolo/sinal/setinha…, para atribuir um valor a uma variável: <-
Exemplo:
numero <- 10
id <- 18
…
também, podemos atribuir a uma variável, o valor de outra variável.
Por exemplo, eu tenho a variável x, que possui o valor 20, e também a variável id, que pode
conter, ou não algum valor.
Para atribuir a variável id, o valor da variável x seria…
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
id <- x
Resumindo…
Para atribuir um valor qualquer a uma variável, basta digitar o nome da variável, seguida de
uma seta para esquerda, seguido do valor …
Como fazer mais do que escrever e ler dados no meu algoritmo…
Nem tudo na vida, é sequencial. As vezes, é preciso haver condições para executar
determinada tarefa, assim como efectuar operações matemáticas, e outros…
Nesse caso, utilizaremos operações matemáticas, estruturas condicionais, ciclos de
repetições, etc.
Operadores aritméticos…
Para se realizar cálculos com variáveis, ou números definidos pelo programador, utilizaremos
alguns sinais já bastante conhecidos:
Para entender os operadores aritméticos, é importante ressaltar, antes de mais nada, que
como estamos “ensinando” algo para o computador, não podemos e não temos como passar
para ele do jeito que escrevemos…
Por exemplo, numa fórmula matemática, teríamos que passar tudo para uma linha apenas.
é o que chamamos de linearização visualizado na imagem abaixo:
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Cada um desses, serão explicados mais detalhadamente a medida em que iremos utilizando-
os…
Operadores relacionais…
Os operadores relacionais, servem para realizar a comparação entre duas expressões, e
resultam apenas num valor… Verdadeiro ou Falso.
Observem a tabela abaixo:
por exemplo:
 2 + 2 < 5 ==> Verdadeiro
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
 18 <> 18 ==> Falso
Operadores lógicos…
Temos ainda mais 3 operadores, o E, OU e o NAO, esses são chamados de operadores
lógicos, e também irão resultar apenas num valor, podendo ser Verdadeiro ou Falso.
Vamos ver a aplicação desses operadores numa tabela verdade.
As vezes é necessário juntar, dois ou mais operadores diferentes para conseguir um
resultado…
Por exemplo:
(2 + 2 < 5) e (18 <> 18) resulta FALSO, pois como podemos observar na tabela verdade acima,
Verdadeiro e Falso resulta Falso.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Não é necessário decorar a tabela de verdade basta ter em atenção que:
 No operador E: Será verdadeiro quando as duas expressões forem verdadeiras.
 No operador Ou: Será verdadeiro quando qualquer uma das expressões forem
verdadeiras.
Logo,
 Se houver UMA expressão falsa no operador E, o resultado sempre será FALSO.
 No operador OU, será FALSO apenas quando as duas expressões forem FALSAS.
Que tal responder a alguns desafios? retornando o resultado da expressão, sendo ele,
Verdadeiro ou Falso.
1. ((3 + 5) / 2) > 0) :
2. (3 * 3 > 10) ou (2 + 2 < 10) :
3. (10 <> 5) ou (1 + 1 = 0) :
4. (2 + 3 >= 5) e (18 / 3 < 7) :
5. (1 + 1 = 0) e (0 – 1 > 0) :
Estruturas Condicionais…
Vejamos…
Se “o Benfica vencer” entao
…. “ele será campeão”
fimse
Sim, na vida, as vezes deparamos com situações na qual precisamos escolher algo se outra
coisa acontecer…
Chamamos isso de condição.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Nos algoritmos, também utilizaremos estruturas condicionais. O que está a negrito, as palavras
se, entao, fimse.
então, poderia basicamente dizer que num algoritmo a sintaxe seria a seguinte:
se <condição> entao
…. <ações a serem realizadas se a condição for verdadeira> //pode ser uma ou mais
Fimse
Em pseudocódigo, seria mais ou menos o seguinte:
algoritmo “campeao”
var
vencedor: caractere
inicio
se (vencedor = “benfica”) entao
escreva(“Benfica será campeão!!!“)
fimse
fimalgoritmo
E se a condiçãofor falsa?
“Se não mandar o computador fazer nada, ele nada fará!”
Nesse caso, podemos fazer o algoritmo de duas maneiras:
1 – utilizar duas condicões SE.
Um exemplo bem didático e de fácil entendimento:
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
1. se dinheiro >= 30 entao
2. …. ir_ao_cinema <- verdadeiro
3. …. assistir_tv <- falso
4. fimse
5. se dinheiro < 30 entao
6. …. ir_ao_cinema <- falso
7. …. assistir_tv <- verdadeiro
8. fimse
e a segunda opção, que é bem melhor e de mais agradável leitura…
1. se dinheiro >= 30 entao
2. …. ir_ao_cinema <- verdadeiro
3. …. assistir_tv <- falso
4. senao
5. …. ir_ao_cinema <- falso
6. …. assistir_tv <- verdadeiro
7. fimse
Observem que apareceu uma nova palavra… O senao…Paraqueserve osenao?
O senao, será executado sempre que o resultado do “se” for falso.
No exemplo acima, o interpretador fez uma pergunta, “o dinheiro é maior ou igual a 30?”
Caso fosse, a variavel “ir_ao_cinema” receberia o valor verdadeiro, e a variável “assistir_tv”
receberia o valor falso. Senão fosse verdadeiro receberia outros valores
Agora, um algoritmo fácil, para verem, como funciona a estrutura condicional se.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Como desafio de hoje…Tentem entender o algoritmo acima sem copia-lo no VisualG.
E mais dois desafios extras…
1. Faça um algoritmo que receba um número e mostre uma mensagem caso este número
seja maior que 10.
2. Faça um algoritmo que receba um número, e informe se este número está no intervalo
de 100 a 200.
3. Exercício de Fixação
4. 1) Para os valores (a=5) (b=7) e (c=9), assinale com X a seqüência de
execução dos algoritmos abaixo
a) Se (a=5) e (b=7) entao
c := c+1
senao
c := c-1
fim_se
b) Se (a=5) e (b<6) entao
c := 1
senao
Se (c=8) entao
c := 2
senao
c := 3
fim_se
fim_se
5. 2) Com base nas tabelas-verdade , assinale com V ou F, indicando
quais valores
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
6. são verdadeiros e quais valores são falsos. Utilize os valores:
X=1 A=3 B=5 C=8 D=7 E=6
a) nao (x>3) ( )
b) (x<1) e nao (b>d) ( )
c) nao (D<0) e (C> 5) ( )
d) nao (X>3) ou (C< 7) ( )
e) (A > B) ou (C> B) ( )
f) (X>=2) ( )
g) (X< 1) e (B>=D) ( )
h) (D >3) ou (C> 5) ( )
i) nao (D>3) ou nao (B<7) ( )
j) (A>B) ou nao (C>B) ( )
3) Indique a saída dos trechos de programa em português estruturado,
mostrado abaixo. Para as saídas,
considere os seguintes valores: A=2, B=3, C=5, D=9 e E=6.
a)
se nao (D > 5) entao
X (A + B) * D
senão
X (A - B) / c
Fim_se
escrever X
Resposta: ____
b)
se (A > 2) e (B < 7) entao
X (A + 2) * (B - 2)
senao
X (A + B) / D * (C + D)
fim_se
escrever X
Resposta: ____
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
c)
se (A = 2) ou ( B < 7) entao
X (A + 2) * (B - 2)
senao
X (A + B) / D * (C + D)
fim_se
escrever X
Resposta: ____
d)
se (A >= 2) ou (C <=1) entao
X (A + D)/2
senao
X D * C
fim_se
escrever X
Resposta: ____
e)
se nao (A > 2) ou nao (B < 7) entao
XA + E
senao
X A / E
fim_se
escrever X
Resposta: ____
f)
se nao (A > 3) e não (B < 5) entao
X A + D
senão
X D / B
fim_se
escrever X
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Resposta: ____
g)
se (C >=2) e (B <= 7) entao
X (A + D)/2
senão
X D * C
fim_se
escrever X
Resposta: ____
h)
se (A > 2) ou nao (B < 7) entao
X A + B - 2
senão
X A - B
fim_se
escrever X
Resposta: ____
Quando e como utilizar o operador SE-ENTAO-SENAO, depende da ocasião, quando há
muitas escolhas diferentes, o código pode ficar grande, e de difícil leitura…
Nesse caso, entra mais uma função condicional, a :
ESCOLHA… CASO… CASO… OUTROCASO…
Ela é tão simples quanto o SE,a seguir temos um algoritmo, sobre a classificação de atletas
pela sua faixa etária, este exemplo, poderia ter sido feito utilizando a estrutura condicional se –
então, mas aqui utilizarei o escolha – caso, para que vocês entendam como funciona o
mesmo.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Mas antes do algoritmo…
Vamos saber o que são comentários?
os comentários são bocados no código em que podemos escrever algo sem que o
interpretador ache que isso é uma linha de código.
Em portugol, os comentários são tudo aquilo precedido por // (duas barras)
Os comentários num código, servem para facilitar o entendimento por outros programadores..
Algoritmo
algoritmo “Classificação de Atletas”
var
nome, categoria: caractere
idade: inteiro
inicio
escreva(“Digite o nome do atleta: “)
leia(nome)
escreva(“Informe a idade do atleta: “)
leia(idade)
// Até aqui tudo bem, ele pede o nome e idade, lê os valores e coloca nas respectivas variáveis
escolha idade
// A função escolha irá interpretar os casos abaixo em cima da variável idade
caso 5,6,7,8,9,10
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
// Caso a variável idade receba os valores de 5 a 10, irá atribuir na variável categoria o valor:
infantil
…. categoria <- “infantil”
caso 11,12,13,14,15
// Caso a variável idade receba os valores de 11 a 15, irá atribuir na variável categoria o valor:
juvenil
…. categoria <- “juvenil”
caso 16,17,18,19,20
// Caso a variável idade receba os valores de 16 a 20, irá atribuir na variável categoria o valor:
junior
…. categoria <- “junior”
caso 21,22,23,24,25
// Caso a variável idade receba os valores de 21 a 25, irá atribuir na variável categoria o valor:
profissional
…. categoria <- “profissional”
outrocaso
// E se a variável idade não receber nenhum dos valores acima mencionados, vamos atribuir a
variável categoria o valor: inválido
…. categoria <- “INVALIDO”
fimescolha
// O fimescolha finaliza a função que abrimos anteriormente
escreva(“Categoria: “,categoria)
// E este último escreva, serve para que possamos mostrar o resultado ao utilizador
fimalgoritmo
REVISÃO ESTRUTURAS CONDICIONAIS FAÇA UM ALGORITMO QUE receba o
número do mês e mostre o mês correspondente. Valide mês inválido
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Estruturas de repetição (cíclicas) o que é isso?
Bom, até o momento, sempre fizemos algoritmos lineares, ou seja, o algoritmo possui um
começo, meio e fim, e segue essa ordem…
As estruturas de repetição, irão repetir determinados comandos, até que uma comparação
lógica se torne verdadeira ou falsa.
O Algoritmo abaixo, lê o nome e a nota de três provas de três alunos diferentes…
Algoritmo "MediaHarmonica"
var
a, b, c, MH: real
nome: caractere
inicio
escreva ("Entre com o nome do aluno: ")
leia (nome)
escreval ("Entre com as notas das três provas")
escreva ("Digite a primeira nota: ")
leia (a)
escreva ("Digite a segunda nota: ")
leia (b)
escreva ("Digite a terceira nota: ")
leia (c)
MH <- 3/(1/a + 1/b +1/c)
escreval ("A média harmônica do aluno: ", NOME, " é ", MH)
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
escreva ("Entre com o nome do aluno: ")
leia (nome)
escreval ("Entre com as notas das três provas")
escreva ("Digite a primeira nota: ")
leia (a)
escreva ("Digite a segunda nota: ")
leia (b)
escreva ("Digite a terceira nota: ")
leia (c)
MH <- 3/(1/a + 1/b +1/c)
escreval ("A média harmônica do aluno: ", NOME, " é ", MH)
escreva ("Entre com o nome do aluno: ")
leia (nome)
escreval ("Entre com as notas das três provas")
escreva ("Digite a primeira nota: ")
leia (a)
escreva ("Digite a segunda nota: ")
leia (b)
escreva ("Digite a terceira nota: ")
leia (c)
MH <- 3/(1/a + 1/b +1/c)
escreval ("A média harmônica do aluno: ", NOME, " é ", MH)
fimalgoritmo
Grande não?
Ainda bem que só tínhamos três alunos… E se fosse uma turma de 40 alunos?
Para isso vamos utilizar estruturas de repetição
Repita … até
Na estrutura repita – ate, todos os comandos serão executados e, no final, haverá uma
expressão lógica, para que avalie a repetição, esta que só irá terminar quando essa expressão
for verdadeira.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
// sintaxe da estrutura de repetição
repita
<comandos>
ate <expressão lógica/relacional>
Agora um exemplo didático…
algoritmo "DemonstraRepeticao"
var
i: inteiro
inicio
i <- 1
repita
escreva(i)
i <- i + 1
ate i > 10
fimalgoritmo
Este algoritmo irá retornar no ecrã do utilizador os números: 1 2 3 4 5 6 7 8 9 10
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Mas porquê?
Primeiramente foi declarado a variável i como inteiro, logo em seguida utilizamos uma estrutura
de repetição, o repita-ate, pedimos para escrever o valor de i e acrescentamos ao seu valor
mais uma unidade, ou seja, i + 1.
e até quando isso será repetido?
Até que o valor de i seja maior que 10…
Então quando o valor de i chegou a 11, ele perguntou se i era maior que 10, como a resposta
foi verdadeira, ele encerrou a repetição e foi para o próximo comando…
Como não temos mais nada, encerramos nosso algoritmo.
Agora o algoritmo da media dos alunos…
Só que dessa vez, nós teremos 40 alunos em nossa classe!
Vamos digitar um por um?
Não! Agora que já sabemos utilizar uma estrutura de repetição, vamos poupar trabalho e
resumir o algoritmo!
Enquanto…Faça…
Diferentemente do repita-ate, onde todos os comandos são interpretados, para só então haver
uma expressão lógica verificando se deve ou não continuar a repetição, o enquanto-faca irá
avaliar uma expressão lógica e, enquanto esta for verdadeira, irá executar os comandos…
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Sintaxe do enquanto faca
1
2
3
enquanto <expressão lógica ou relacional> faca
<comandos>
fimenquanto
Exemplo 1
Neste exemplo, vou criar um algoritmo utilizando o repita-ate e depois o mesmo algoritmo, só
que dessa vez utilizando a estrutura enquanto – faca, explicando passo-a-passo a vocês, para
que possam entender a diferença entre ambos.
- Faça um algoritmo que solicite que o utilizador digite um número, e informe se este
número é maior que 10 ou menor que 10. O programa só pode parar de solicitar o
número quando este for igual a 0 (zero)
Utilizando a estrutura de repetição repita .. ate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
algoritmo "exemplo 1"
var
numero: inteiro
inicio
repita
escreva("Digite um número: ")
leia(numero)
limpatela // Limpa a tela =P
se (numero > 10) entao
escreval("O número é maior que 10")
senao
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
15
16
17
18
19
20
escreval("O número é menor que 10")
fimse
ate (numero = 0)
fimalgoritmo
E agora o mesmo algoritmo, porém utilizando a estrutura de repetição enquanto .. faca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
algoritmo "exemplo 2"
var
numero: inteiro
inicio
numero <- 1
enquanto numero <> 0 faca
escreva("Digite um número: ")
leia(numero)
limpatela
se (numero > 10) entao
escreval("O número ",numero," é maior que 10")
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
15
16
17
18
19
20
21
senao
escreval("O número ",numero," é menor que 10")
fimse
fimenquanto
fimalgoritmo
Nesse exemplo, começamos nosso algoritmo atribuindo o valor 1 a variável número, para que
possamos começar a utilizar a estrutura de repetição, conforme podem ver na linha 9;
E na linha 10, a condição para que o ciclo continue a ser executado, ou seja, enquanto a
variável numero for diferente de 0 (zero), continuaremos executando o programa, e o utilizador
digitar números para descobrir se é maior ou menor que zero…
1. Crie dois algoritmos, um utilizando a estrutura de repetição repita .. ate e outro
utilizando o enquanto .. faca.
2. Uma loja está vendendo três modelos de carro, o algoritmo deve ler o nome e o valor
(euros) dos seguinte automóveis: FERRARI, PORCHE, AUDI
3. Ao final, informar quantos carros de cada modelo foram vendidos
4. O programa só pode encerrar quando o valor do veículo for igual a zero.
Para…Faca
5. A sintaxe geral da estrutura de repetição para .. faca é a seguinte:
1
2
3
para X de N ate M [passo Y] faca
<comandos>
fimpara
Explicando…
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
6. O X é a variável que deve ser previamente declarada, o N é o número que começará a
contagem, M até onde vai essa contagem, e o passo Y só será necessário se você
não quiser que seja de 1 em 1…
7. Sei que não entenderam nada, então vou mostrar um exemplo de uma estrutura de
repetição utilizando enquanto .. faca e após, um utilizando o para .. faca, você verá
que irá ficar bem mais simples!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
algoritmo "repetição 1"
var
num: inteiro
inicio
num <- 1
enquanto num <= 10 faca
escreva(num)
num <- num + 1
fimenquanto
fimalgoritmo
8. Nesse algoritmo, foi utilizado a estrutura de repetição enquanto .. faca, como vocês
podem notar, foi declarado a variável num para servir como condição para execução
do ciclo, e ao mesmo tempo, imprimimos o valor da mesma no ecrã através do
comando escreva.
9. Essa estrutura vai imprimir o seguinte resultado no ecrã do utilizador: 1 2 3 4 5 6 7 8 9
Agora, a mesma estrutura, agora utilizando o para .. ate…faca.
1
2
3
4
5
algoritmo "repetição 2"
var
num: inteiro
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
6
7
8
9
10
11
12
inicio
para num de 1 ate 10 faca
escreva(num)
fimpara
fimalgoritmo
Este algoritmo, tem a mesma função do algoritmo acima, porém dessa vez utilizando a
estrutura para .. faca.
Vamos entender o algoritmo…
10. Declaração de variáveis, nós já aprendemos, então vamos direto ao ciclo de repetição:
11. para num de 1 ate 10 faca
12. Neste comando, estamos dizendo ao interpretador VisualG que a variável num
receberá o valor 1 e a cada iteração, ou seja, toda vez que os comandos dentro do
para .. faca forem executados, a variável num receberá +1 no valor por padrão, e
assim sucessivamente, até que o valor de num seja 10.
13. escreva(num) // já abordado anteriormente.
14. e o fimpara, que serve para indicar o fim do ciclo.
Comando passo N:
Imprimir no ecrã todos os números pares de 2 até 200
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
1
2
3
4
5
6
7
8
9
10
11
12
algoritmo "numeros pares"
var
num: inteiro
inicio
para num de 2 ate 200 passo 2 faca
escreva(num)
fimpara
fimalgoritmo
Passo 2…
15. Vocês devem estar se perguntando de onde surgiu esse passo 2 agora…
16. Lembram que na sintaxe do para .. faca expliquei que ele não é obrigatório, mas
poderia surgir?
17. então! por padrão no portugol, ele sempre acrescentará +1 a variável que a gente está
utilizando no ciclo, mas nesse exemplo, eu preciso pegar apenas os números pares, ou
seja, de 2 em 2.
18. Bingo!
19. Está explicado então, o porquê do passo 2, assim em cada iteração, ele acrescentará
+2 na variável num, esta que sempre será um valor par, que é o que queremos nesse
exemplo.
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Como fazer o inverso de 100 até 1?
Para isso, mais uma vez utilizaremos o passo N.
1
2
3
para num de 100 ate 1 passo -1 faca
escreva(num)
fimpara
20. Sim, também podemos utilizar passo -N, ou seja, um passo negativo.
21. Porque?
22. Porque se o padrão do para .. faca é acrescentar mais 1 na variável, o objetivo do
passo N é justamente te dar o poder de escolher qual o valor que você quer
acrescentar ou reduzir no ciclo.
Revisões estruturas de decisão condicionais
Se….então…senão
Escolha….caso…outrocaso
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
- Faça um algoritmo que calcule o valor da conta de luz de uma pessoa. Sabe-se que o cálculo da
conta de luz segue a tabela abaixo:
Tipo de Cliente Valor do KW/h
1 (Residência) 0,60
2 (Comércio) 0,48
3 (Indústria) 1,29
Revisões estruturas de decisão cíclicas
Repita…ate
Enquanto…..faca
Para…ate…faca
-Escreva um algoritmo para calcular a soma de qualquer numero fornecido
pelo utilizador até ser inserido um zero.
-Escreva um algoritmo para calcular a soma de dez números quaisquer
fornecidos pelo utilizador.
- Alterar o algoritmo da venda de carros adicionando o calculo total do
valor da venda de cada marca de carros
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
VECTORES
Até então, aprendemos o que é uma variável e como declarar variáveis em portugol, e fizemos
isso inúmeras vezes.
O nosso problema começa, quando temos que declarar inúmeras variáveis para atender a um
fim.
Imagine que você tem que receber o nome e a nota de 50 alunos de uma escola, e depois listar
o nome de cada um e a média final de cada aluno e a média da turma.
Agora imagine você na declaração de variáveis, declarando uma a uma, as 50 variáveis para o
nome, depois as 50 variáveis para as notas…
1
2
3
var
aluno1, aluno2, aluno3, ........., aluno50: caractere
nota1, nota2, nota3, ............, nota50: real
Cansativo não? Acho que se fosse realmente assim, não haveria tantos programadores quanto
há hoje em dia…
É em casos como esse que entram os Vetores.
Vamos imaginar um vetor como sendo uma “caixa” com vários lugares separados para guardar
seus documentos, ou seja, uma variável onde se pode armazenar mais de um dado.
Vetor de 8 posições
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
No exemplo abaixo, temos um vetor com dados armazenados nas 5 primeiras posições.
Para poder acessar o conteúdo desse vetor usa-se índices. O índice define a posição da
variável dentro do vetor., vamos utilizar a sintaxe: nome[posição].
Ex: meuvetor[2]
- O retorno será a letra B.
Como posso então utilizar vectores nos
algoritmos?
Para usar os vectores, primeiro temos que declará-lo na seção de variáveis. Sim, vetor também
é uma variável!
A sintaxe para declaração do vetor é a seguinte:
var
nome-do-vetor: vetor[<posições>] de <tipo>
Exemplo:
Var
MeuVetor: vetor[1..5] de inteiro
Em todos os vetores tem o primeiro elemento na posição 0(zero). Assim, se
tomarmos "K" como sendo o tamanho do vetor a última posição é a de índice "K-1"
MeuVetor [0] <- 4; // Coloca 4 na primeira posição de " MeuVetor "
MeuVetor [4] <- 8; // Coloca 8 na última posição de " MeuVetor "
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Preenchimento de um vetor com um dado
Para i de 1 ate 10 faca
Vetor[i] <- 30
Colocar os números de 1 a 10 em Vetor
Para i de 1 ate 10 faca
Vetor[i] <- i
Colocar os números de 10 a 1 em Vetor
Para i de 1 ate 10 faca
Vetor[i] <- 10-i
1- Construa um algoritmo (pseudocódigo) para ler 10 números reais ,
armazena-los em um vetor e escreve-los de ordem inversa.
var
V : vetor[1..100] de real
i, numero : inteiro
Inicio
Escreval ("Algoritmo Reverso")
Escreva ("Nº de Elementos = ")
Leia (numero)
Para i de 1 ate numero faca
Escreva ("Elemento[", i, "] =")
Leia (V[i])
Fimpara
Escreva ("Números na Ordem Inversa")
Para i de 1 ate numero faca
Escreva (V[numero - i +1])
Fimpara
fimalgoritmo
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Construa um algoritmo (pseudocódigo) para ler cinco números reais,
armazena-los em um vetor e calcular a média entre eles.
var
numero : vetor[1..5] de real
i: inteiro
soma:real
Inicio
soma<-0.0
Para i de 1 ate 5 faca
Escreva ("Digite um numero = ")
Leia (numero[I])
SOMA <-SOMA + NUMERO[I]
Fimpara
Escreva ("media= ",SOMA/5)
Fimalgoritmo
Construa um algoritmo (pseudocódigo) para ler cinco números reais,
armazena-los em um vetor e calcular qual é o maior deles e em que posição
se encontra no vector.
var
x:inteiro
i,n ,posicao,programa: inteiro
maior: real
A: vetor[0..100] de real
sair: caractere
inicio
programa <- 1
enquanto programa = 1 faca
limpatela
Escreva("Numero de elementos?: ")
Leia(n)
Para i de 0 ate n-1 Faca // Ler elementos do vetor
Escreva("A[",i,"]=")
Leia(A[i])
FimPara
maior <- A[0] // Assumir 1o elemento o maior
posicao<-0
Para i de 1 ate n-1 Faca // Procurar maior do 2 elemento em diante
Se (A[i] > maior) Entao
maior <-A[i]
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
posicao<-posicao+1
FimSe
FimPara
Escreval("Maior elemento = ",maior," na posição", posicao)
escreva("Deseja finalizar? (S/N) ")
leia(sair)
se sair = "S" entao
programa <- 0
fimse
fimenquanto
fimalgoritmo
Construa um algoritmo (pseudocódigo) para somar dois vetores e
armazena-los em um vetor :
var
i: inteiro
A: Vetor[1..6] de real
B: Vetor[1..6] de real
R: Vetor[1..6] de real
Inicio
Para i de 1 ate 6 Faca
Escreva("entre com o valor para a posição ", i ," novetor A: ")
Leia(A[i])
Escreva ("entre com o valor para a posição ", i ,"no vetor B: ")
Leia (B[i])
R[i]<- A[i] + B[i]
Fimpara
Para i de 1 ate 6 faca
Escreval( i , " - " , R[ i ] )
Fimpara
Construa um Algoritmo. Dada uma classe de N >= 1 alunos, este algoritmo lê suas
notas, calcula a média da classe e imprime quais os alunos possuem nota acima
da média
var
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
soma, media: real
nota: vetor[1..100] de real
i, N : inteiro
Inicio
Escreva("Numero de alunos? ")
Leia(N)
Para i de 1 ate N Faca // Ler notas dos alunos
Escreva("Nota do aluno ",i,"? ")
Leia(nota[i])
FimPara
soma <- 0.0 // Calcular a média da classe
Para i de 1 ate N Faca
soma <- soma + nota[i]
FimPara
media <- soma / N
Escreval("Media = ",media)
Escreval("Alunos com nota acima da media")
Para i de 1 ate N Faca // Alunos com nota > media
Se (nota[i] > media) Entao
Escreval("Aluno ",i," Nota = ",nota[i])
senao
Escreval("não existem alunos com nota acima da média")
FimSe
FimPara
matriz?
Uma matriz, é nada mais, do que Vetores bi-dimensionais. Onde podemos aceder os dados ali
contidos através de dois valores. As “linhas” e as “colunas”.
Sintaxe…
1nome: vetor[<linhas>,<colunas>] de <tipo>
Exemplo:
1minhavar: vetor[1..3,1..3] de caractere
Onde o primeiro valor refere-se as linhas e o segundo as colunas. O exemplo acima, refere-se
a criação de uma matriz com 3 linhas e 3 colunas, conforme imagem abaixo:
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Como posso atribuir ou visualizar dados na minha matriz?
Para atribuir dados a uma determinada posição em uma Matriz, manteremos o mesmo padrão
para variáveis comuns ou vetores.
* Para atribuir um determinado valor:
melhorblog[1,2] <- "viseu online"
Atribui a palavra viseu online na posição (1,2) da matriz melhorblog.
* Para ler determinado valor:
escreva("O melhor blog é: ",melhorblog[1,2])
Lê o valor que se encontra na posição (1,2) da matriz melhorblog.
Construa um Algoritmo. Para preencher uma matriz 5x5 (25 elementos) com valores
de 1 até 25 automaticamente e depois o mesmo algoritmo inseridos pelo utilizador
var
m: vetor[1..5,1..5] de inteiro
i,j,contador : inteiro
inicio
contador<-1
Para i de 1 ate 5 Faca
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
Para j de 1 ate 5 Faca
m[i,j] <- contador
contador <- contador + 1
FimPara
FimPara
Para i de 1 ate 5 Faca
Para j de 1 ate 5 Faca
Escreval(m[i,j])
FimPara
FimPara
fimalgoritmo
E agora, um “pequeno” algoritmo, utilizando praticamente tudo o que vimos durante todas as
sessões:
Sistema de registo de alunos:
 Fazer um programa de registo de alunos;
 O programa deverá receber o nome, blog favorito e email de cada um dos alunos;
 Após o cadastro, fornecer as seguintes opções:
1. Consultar alunos cadastrados
2. Consultar blogs favoritos por aluno
3. Lista de emails cadastrados
4. Lista completa, com todos os dados dos alunos cadastrados
5. Finalizar o programa
11,12,13
21 22 23
Observação: O Programa só poderá ser finalizado quando escolhida a opção nº 5
algoritmo " Matriz"
var
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
alunos: vetor[1..2,1..4] de caractere
x, opcao, programa: inteiro
inicio
// Seção de Comandos
para x de 1 ate 2 faca
escreval("============================")
escreval("==== Registo DE ALUNOS ====")
escreval("============================")
escreva("Digite um Nome: ")
leia(alunos[x,1])
escreva("Digite o site favorito: ")
leia(alunos[x,2]) // http://www.viseu.tv
escreva("Digite o email: ")
leia(alunos[x,3])
escreva("Digite o numero aluno: ")
leia(alunos[x,4])
limpatela
fimpara
limpatela
programa <- 1
enquanto programa = 1 faca
escreval("============================")
escreval("=========== MENU ===========")
escreval("============================")
escreval("Digite a opção desejada: ")
escreval("1 - Consulta Alunos Registados")
escreval("2 - Consulta Sites Favoritos por aluno")
escreval("3 - Lista de emails registados")
escreval("4 - Lista completa de alunos registados")
escreval("5 - Sair do Programa")
leia(opcao)
limpatela
escolha(opcao)
caso 1
escreval("---- Alunos Registados: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,1])
fimpara
caso 2
escreval("---- Sites favoritos por aluno: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,1]," ",alunos[x,2])
fimpara
caso 3
escreval("---- Lista de emails Registados: ")
para x de 1 ate 2 faca
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA
escreval("---- ",alunos[x,3])
fimpara
caso 4
escreval("---- Lista completa de alunos registados: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,1]," ", alunos[x,2]," ", alunos[x,3]," ", alunos[x,4])
fimpara
caso 5
escreval("==== OBRIGADO POR UTILIZAR O PROGRAMA! ====")
programa <- 0
outrocaso
escreval("Opção Inválida...")
fimescolha
fimenquanto
fimalgoritmo
EXERCICIOS:
1.Crie um algoritimo que calcule quantos dias já viveu sabendo a sua idade o mês e o dia em que nasceu
algoritmo "semnome"
var
ano , mes , dia , a , b , r: inteiro
inicio
escreva("vamos calcular quantos dias já viveu: ")
escreva("______________________________")
escreva("")
escreva("QUANTOS ANOS VOCÊ TEM ?:")
leia(ano)
escreva("")
escreva("EM QUE MÊS VOCÊ NASCEU ?:")
leia(mes)
escreva("")
escreva("EM QUE DIA VOCÊ NASCEU ?:")
leia(dia)
escreva("")
a:=(ano*365)
b:=(mes*30)
r:=(a+b+dia)
escreva("VOCÊ JÁ VIVEU",r)
escreva("DIAS")
fimalgoritmo
Educação e Formação de Adultos – Tipologias de nível secundário
AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA

Contenu connexe

Tendances

Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoBruno Quaresma
 
LabMM3 - Aula teórica 02
LabMM3 - Aula teórica 02LabMM3 - Aula teórica 02
LabMM3 - Aula teórica 02Carlos Santos
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebDaniel Brandão
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2João Piedade
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoInstituto CENTEC
 
Algoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoAlgoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoMauro Pereira
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)Daniela Nunes
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaodiogoa21
 
Exercícios de Photoshop
Exercícios de PhotoshopExercícios de Photoshop
Exercícios de PhotoshopClara Ferreira
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Exercicios resolvidos algoritmos
Exercicios resolvidos algoritmosExercicios resolvidos algoritmos
Exercicios resolvidos algoritmosDébora Inocêncio
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosFabio Moura Pereira
 

Tendances (20)

Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de Programação
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
LabMM3 - Aula teórica 02
LabMM3 - Aula teórica 02LabMM3 - Aula teórica 02
LabMM3 - Aula teórica 02
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
02-Fluxograma.pptx
02-Fluxograma.pptx02-Fluxograma.pptx
02-Fluxograma.pptx
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2
 
Módulo 1 de PSI
Módulo 1 de PSIMódulo 1 de PSI
Módulo 1 de PSI
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de Programação
 
Algoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoAlgoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introdução
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacao
 
Exercícios de Photoshop
Exercícios de PhotoshopExercícios de Photoshop
Exercícios de Photoshop
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Exercicios resolvidos algoritmos
Exercicios resolvidos algoritmosExercicios resolvidos algoritmos
Exercicios resolvidos algoritmos
 
Criptografia
CriptografiaCriptografia
Criptografia
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 

Similaire à Educação e Formação de Adultos - Tipos de programação

CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
2.0_Programacao_PRG29002_-_Pseudocódigo.pdf
2.0_Programacao_PRG29002_-_Pseudocódigo.pdf2.0_Programacao_PRG29002_-_Pseudocódigo.pdf
2.0_Programacao_PRG29002_-_Pseudocódigo.pdfJustinoFontes
 
Aula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxAula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxGrsonEgnaciodaConcei
 
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.pptINFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.pptPatricaNascimento1
 
Aula 1 módulo i - psi
Aula 1   módulo i - psiAula 1   módulo i - psi
Aula 1 módulo i - psi111111119
 
Algoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardoAlgoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardozedaesquina98
 
Introdução á programação - 1ª parte
Introdução á programação - 1ª parteIntrodução á programação - 1ª parte
Introdução á programação - 1ª parteLuis Fernandes
 
Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202Ueliton Saint
 
Ebook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesEbook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesMarcio Lima
 
Paradigms of programming languagens
Paradigms of programming languagensParadigms of programming languagens
Paradigms of programming languagensMarcelo Hama
 
Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04thomasdacosta
 
Programação 1
Programação 1Programação 1
Programação 1essa
 

Similaire à Educação e Formação de Adultos - Tipos de programação (20)

CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
2.0_Programacao_PRG29002_-_Pseudocódigo.pdf
2.0_Programacao_PRG29002_-_Pseudocódigo.pdf2.0_Programacao_PRG29002_-_Pseudocódigo.pdf
2.0_Programacao_PRG29002_-_Pseudocódigo.pdf
 
Ufra tec prog_p_01
Ufra tec prog_p_01Ufra tec prog_p_01
Ufra tec prog_p_01
 
Aula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxAula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptx
 
134
134134
134
 
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.pptINFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
PDF.pdf
PDF.pdfPDF.pdf
PDF.pdf
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Aula 1 módulo i - psi
Aula 1   módulo i - psiAula 1   módulo i - psi
Aula 1 módulo i - psi
 
Algoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardoAlgoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardo
 
Introdução á programação - 1ª parte
Introdução á programação - 1ª parteIntrodução á programação - 1ª parte
Introdução á programação - 1ª parte
 
Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202
 
Ebook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesEbook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantes
 
Paradigms of programming languagens
Paradigms of programming languagensParadigms of programming languagens
Paradigms of programming languagens
 
Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04
 
Programação 1
Programação 1Programação 1
Programação 1
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 

Plus de Jose De Almeida Batista (9)

Modulo marketing digital
Modulo marketing digitalModulo marketing digital
Modulo marketing digital
 
Noções básicas De Informática Tutorial
Noções básicas De Informática TutorialNoções básicas De Informática Tutorial
Noções básicas De Informática Tutorial
 
Criação de Sites web Tutorial
Criação de Sites web TutorialCriação de Sites web Tutorial
Criação de Sites web Tutorial
 
PAF
PAFPAF
PAF
 
Actionscript 3.0 tutorial
Actionscript 3.0 tutorialActionscript 3.0 tutorial
Actionscript 3.0 tutorial
 
Alguns conceitos web
Alguns conceitos webAlguns conceitos web
Alguns conceitos web
 
Projeto multimedia tutorial
Projeto multimedia tutorialProjeto multimedia tutorial
Projeto multimedia tutorial
 
Javascript tutorial
Javascript tutorialJavascript tutorial
Javascript tutorial
 
Programação web ASP.NET Tutorial
Programação web ASP.NET TutorialProgramação web ASP.NET Tutorial
Programação web ASP.NET Tutorial
 

Dernier

Sistema de Bibliotecas UCS - A descoberta da terra
Sistema de Bibliotecas UCS  - A descoberta da terraSistema de Bibliotecas UCS  - A descoberta da terra
Sistema de Bibliotecas UCS - A descoberta da terraBiblioteca UCS
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREIVONETETAVARESRAMOS
 
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZAAVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZAEdioFnaf
 
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxSlides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxLuizHenriquedeAlmeid6
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoCelianeOliveira8
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira partecoletivoddois
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãodanielagracia9
 
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptxAULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptxGislaineDuresCruz
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...nexocan937
 
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfTIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfmarialuciadasilva17
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxHenriqueLuciano2
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxJMTCS
 
Revolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxRevolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxHlioMachado1
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024GleyceMoreiraXWeslle
 
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzparte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzAlexandrePereira818171
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.HildegardeAngel
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas BrasileirosMary Alvarenga
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxJMTCS
 

Dernier (20)

Sistema de Bibliotecas UCS - A descoberta da terra
Sistema de Bibliotecas UCS  - A descoberta da terraSistema de Bibliotecas UCS  - A descoberta da terra
Sistema de Bibliotecas UCS - A descoberta da terra
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
 
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZAAVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
 
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxSlides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e feminino
 
“O AMANHÃ EXIGE O MELHOR DE HOJE” _
“O AMANHÃ EXIGE O MELHOR DE HOJE”       _“O AMANHÃ EXIGE O MELHOR DE HOJE”       _
“O AMANHÃ EXIGE O MELHOR DE HOJE” _
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parte
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetização
 
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptxAULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
 
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfTIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptx
 
Revolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxRevolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptx
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024
 
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzparte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas Brasileiros
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
 

Educação e Formação de Adultos - Tipos de programação

  • 1. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA OBJECTIVOS DO MÓDULO • Elaborar algoritmos de resolução para um dado um problema. • Compreender a lógica de programação • Identificar e dominar a utilização dos diferentes tipos de variáveis. • Descrever a estrutura de um algoritmo identificando as palavras-chave, variáveis e funções. • Elaborar algoritmos, sem ambiguidades, eficazes e eficientes. O que é um programa? Um programa de computador ou programa informático é uma colecção de instruções que descrevem uma tarefa a ser realizada por um computador. O termo pode ser uma referência ao código fonte, escrito numa linguagem de programação, ou ao arquivo que contém a forma executável deste código fonte O que é uma linguagem de programação? Uma linguagem de programação é um método padronizado para expressar instruções para um computador. Em programação, o uso da matemática é relativamente alto e é importante também, que possuas um bom raciocínio lógico. Porque Programar? Podemos programar para alcançar inúmeros objectivos, como por exemplo: - desenvolver um software, para automatizar tarefas, e quem sabe vende-lo - criar um jogo de computador. - Podes também programar para a Web e desenvolver aplicações . - A área da tecnologia é um mercado em constante crescimento, com salários iniciais altos. Então qual a linguagem que o computador entende? O computador entende apenas a linguagem binário ou máquina, ou seja, 1 e 0, ligado ou desligado. Quer dizer que tenho que aprender a programar em 0 e 1? Negativo. Hoje em dia, temos o que chamamos de compiladores e interpretadores. São eles que fazem a tradução da nossa linguagem para linguagem de máquina.
  • 2. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Qual a diferença entre linguagem compilada e interpretada? Na linguagem interpretada, o código fonte é traduzido para linguagem de máquina no momento da interpretação (execução), e o código fica visível, enquanto na linguagem compilada, este é feito anteriormente, não sendo possível visualizar o código fonte. Qual a diferença entre linguagens de baixo nivel e alto nivel? Resumidamente, as linguagens de baixo nível, são aquelas que possuem contacto directo com o hardware do computador, geralmente linguagens compiladas, como por exemplo C, C++, Assembly… Enquanto as linguagens de alto nível o contacto é com o software, exemplos são linguagens interpretadas como Python, PHP, JavaScript, Pascal, ASP.NET… Noções de Lógica? Lógica é a forma correcta de organizar os pensamentos e demonstrar o raciocínio de maneira correcta. A utilização da lógica é a melhor forma de solucionar problemas e atingir objectivos. Sempre que se quer pensar, falar ou escrever correctamente, deve-se colocar os pensamentos em ordem. Exemplo: - Todo mamífero é animal - Todo cavalo é mamífero - Portanto, todo cavalo é animal A lógica é muito importante em nossa vida, no dia – a – dia. Veja os exemplos abaixo: a) A gaveta está fechada. A bala está na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala. b) Moramos três pessoas. Nenhum de nós dois quebrou o vaso de porcelana. Quem quebrou o vaso? O que é um algoritmo? Segundo a Wikipédia…
  • 3. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita. traduzindo!!! O algoritmo, é uma instrução, ou uma ordem que podemos dar ao computador, para que ele realize determinada tarefa. Algoritmo é a lógica necessária para o desenvolvimento de um programa.Ao contrário do que a maioria das pessoas pensam, o computador não é inteligente, quem é inteligente, é o programador! Simplificando… Para se ter um algoritmo, é necessário: 1. Que se tenha um número finito de passos 2. Que cada passo esteja precisamente definido, sem possíveis ambigüidades 3. Que existam zero ou mais entradas tomadas de conjuntos bem definidos 4. Que existam uma ou mais saídas 5. Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo finito. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador. FORMAS DE REPRESENTAÇÃO DE ALGORITMOS Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam: a Descrição Narrativa o Fluxograma Convencional o Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol. Descrição Narrativa
  • 4. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Nesta forma de representação os algoritmos são expressos directamente em linguagem natural. Como por exemplo, têm-se o algoritmo seguinte: – Cálculo da média de um aluno: – Obter as notas da primeira e da segunda prova – Calcular a média aritmética entre as duas – Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. Fluxograma Convencional e Diagrama de Blocos É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos. A figura 2.1 mostra as principais formas geométricas usadas em fluxogramas.
  • 5. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA A figura 2.2 a seguir mostra a representação do algoritmo de cálculo da média de um aluno sob a forma de um fluxograma.
  • 6. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Pode-se perceber então, que tudo pode ser um algoritmo. O sistema de buscas do Google, tem um algoritmo por trás dele, o facebook, também tem um algoritmo, e assim sucessivamente. Para aprendermos melhor, antes de passar para qualquer tipo de linguagem de programação propriamente dita, iremos aprender a programar em pseudocódigo, conhecido como Portugol ou Português Estruturado.
  • 7. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Pseudocódigo . Portugol (Português Estruturado) Esta forma de representação de algoritmos, , é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação, sendo portanto a forma de representação de algoritmos que será adoptada nesta disciplina. a seguir iremos passar a “programar” nesta linguagem, utilizando a ajuda do software VisualG. O que são variáveis em programação? Desenho de como seria uma variável Vamos entender variável, como uma caixa, na qual podes dar o nome que achares conveniente, e guardar o conteúdo que desejares. Ou seja, toda a variável tem um nome, valor e tipo. O que é o tipo? As variáveis, podem ser classificadas em:  numérica (numeros reais ou inteiros);
  • 8. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA  caracteres (sequências de texto);  booleanas (verdadeiro ou falso); Em portugol, temos os tipos: real, inteiro, caractere e logico Então eu posso colocar qualquer nome à minha variável? Sim e Não! Como assim? Certas palavras, são reservadas para o uso da linguagem, ou seja, essas palavras não podem ser utilizadas, pois haveria um conflito na hora de interpretar o código. Tabela sobre as palavras reservadas do portugol: Não tem de decorar esta tabela! A medida que for aprendendo a programar em portugol, saberás exactamente qual palavra é, e qual não é reservada pela linguagem.
  • 9. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Outras restrições para o nome de uma variável é:  O primeiro caractere da variável, deve ser necessariamente letra ou underline ‘_’. Não pode começar em números  Nomes das variáveis não podem ter espaços em branco. Nada de Coca Cola por exemplo. Uma variável correcta seria cocacola, tudo junto e sem espaços.  Não são permitidas variáveis com mais de 127 caracteres  E por fim, em Portugol, diferente de outras linguagens de programação, as variáveis não são case sensivity, ou seja, elas não diferenciam maiúsculas de minúsculas. Logo, BrUnO = bruno. Um pouco mais sobre tipo de variáveis… A tabela abaixo, exemplifica que tipo de conteúdo de cada variável. Estrutura do pseudocódigo… Todo e qualquer algoritmo, terá sempre um Nome, Declaração de variáveis, Início e Fim. Na estrutura abaixo: Algoritmo “nome-do-seu-algoritmo” VAR
  • 10. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA nome-da-var: tipo nome-da-var2: tipo INICIO | FIMALGORITMO O que é declaração de variáveis? A declaração de variáveis, é uma parte obrigatória no portugol, assim como em outras linguagens de programação como C por exemplo. Ela é necessária para que o interpretador entenda que aquela palavra é uma variável, Na estrutura do Portugol, dentro da seção VAR, declaramos a variável da seguinte maneira: Nome-da-var: tipo ex: variavelnome: caractere Vamos então criar o nosso primeiro programa…! No ecrã Inicial do VisualG, já temos a estrutura do nosso portugol pronta. algoritmo “olá mundo” var inicio escreva(“Olá Mundo!”) fimalgoritmo
  • 11. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA O que é esse “escreva“? O escreva é uma palavra reservada do portugol. A sua função é escrever no ecrã o texto entre ” ” (aspas) No visualg, ao digitar este código e apertar F9, o código será executado, verás que estará escrito no ecrã apenas a frase: Olá Mundo! E porque não hà nada no campo das variáveis? Porque ainda não utilizamos nenhuma. No algoritmo a seguir, vamos fazer o uso da função leia() e de variáveis. algoritmo “leianumero” var num: inteiro inicio escreva(“Digite um número: “) leia(num) escreva(“O número digitado é: “, num) fimalgoritmo Entendendo o algoritmo… Foi declarada a variável num, como inteiro. Ou seja, poderá receber e guardar qualquer número não-fracionário (-2, -3, -20, 0, 1, 2, 40, 18…) Em seguida, o algoritmo irá solicitar ao utilizador que digite um número, escrevendo no ecrã a seguinte frase: Digite um número: Se notarem, há um espaço após os : e antes da “, isso é necessário para que o cursor dê o espaço desejado.
  • 12. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA o leia(num) irá aguardar com o cursor no ecrã até que o utilizador digite um número inteiro e tecle enter. O num é a variável que declaramos no início do algoritmo, lembram? E finalmente, o resultado. escreva(“O número digitado é: “, num) É importante notar, que no escreva, tudo o que estiver entre aspas, vai ser tratado como um texto qualquer, então para retornarmos o conteúdo de uma variável, fechamos primeiro as aspas, colocamos uma vírgula e digitamos o nome da variável, para só então fechar o parenteses. Testem o algoritmo acima no VisualG, e vejam o resultado. Treinem mais um pouco… 1. Crie um algoritmo que leia 2 números e mostrem o resultado. 2. Crie um algoritmo que leia o nome e a idade de alguém, e mostre no ecrã o que foi digitado. Dica: no exercício 2, terá que ser declarado duas variáveis, uma do tipo inteiro e outra do tipo caractere. Atribuir um valor a uma variavel sem interacção do utilizador? Utilizaremos este símbolo/sinal/setinha…, para atribuir um valor a uma variável: <- Exemplo: numero <- 10 id <- 18 … também, podemos atribuir a uma variável, o valor de outra variável. Por exemplo, eu tenho a variável x, que possui o valor 20, e também a variável id, que pode conter, ou não algum valor. Para atribuir a variável id, o valor da variável x seria…
  • 13. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA id <- x Resumindo… Para atribuir um valor qualquer a uma variável, basta digitar o nome da variável, seguida de uma seta para esquerda, seguido do valor … Como fazer mais do que escrever e ler dados no meu algoritmo… Nem tudo na vida, é sequencial. As vezes, é preciso haver condições para executar determinada tarefa, assim como efectuar operações matemáticas, e outros… Nesse caso, utilizaremos operações matemáticas, estruturas condicionais, ciclos de repetições, etc. Operadores aritméticos… Para se realizar cálculos com variáveis, ou números definidos pelo programador, utilizaremos alguns sinais já bastante conhecidos: Para entender os operadores aritméticos, é importante ressaltar, antes de mais nada, que como estamos “ensinando” algo para o computador, não podemos e não temos como passar para ele do jeito que escrevemos… Por exemplo, numa fórmula matemática, teríamos que passar tudo para uma linha apenas. é o que chamamos de linearização visualizado na imagem abaixo:
  • 14. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Cada um desses, serão explicados mais detalhadamente a medida em que iremos utilizando- os… Operadores relacionais… Os operadores relacionais, servem para realizar a comparação entre duas expressões, e resultam apenas num valor… Verdadeiro ou Falso. Observem a tabela abaixo: por exemplo:  2 + 2 < 5 ==> Verdadeiro
  • 15. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA  18 <> 18 ==> Falso Operadores lógicos… Temos ainda mais 3 operadores, o E, OU e o NAO, esses são chamados de operadores lógicos, e também irão resultar apenas num valor, podendo ser Verdadeiro ou Falso. Vamos ver a aplicação desses operadores numa tabela verdade. As vezes é necessário juntar, dois ou mais operadores diferentes para conseguir um resultado… Por exemplo: (2 + 2 < 5) e (18 <> 18) resulta FALSO, pois como podemos observar na tabela verdade acima, Verdadeiro e Falso resulta Falso.
  • 16. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Não é necessário decorar a tabela de verdade basta ter em atenção que:  No operador E: Será verdadeiro quando as duas expressões forem verdadeiras.  No operador Ou: Será verdadeiro quando qualquer uma das expressões forem verdadeiras. Logo,  Se houver UMA expressão falsa no operador E, o resultado sempre será FALSO.  No operador OU, será FALSO apenas quando as duas expressões forem FALSAS. Que tal responder a alguns desafios? retornando o resultado da expressão, sendo ele, Verdadeiro ou Falso. 1. ((3 + 5) / 2) > 0) : 2. (3 * 3 > 10) ou (2 + 2 < 10) : 3. (10 <> 5) ou (1 + 1 = 0) : 4. (2 + 3 >= 5) e (18 / 3 < 7) : 5. (1 + 1 = 0) e (0 – 1 > 0) : Estruturas Condicionais… Vejamos… Se “o Benfica vencer” entao …. “ele será campeão” fimse Sim, na vida, as vezes deparamos com situações na qual precisamos escolher algo se outra coisa acontecer… Chamamos isso de condição.
  • 17. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Nos algoritmos, também utilizaremos estruturas condicionais. O que está a negrito, as palavras se, entao, fimse. então, poderia basicamente dizer que num algoritmo a sintaxe seria a seguinte: se <condição> entao …. <ações a serem realizadas se a condição for verdadeira> //pode ser uma ou mais Fimse Em pseudocódigo, seria mais ou menos o seguinte: algoritmo “campeao” var vencedor: caractere inicio se (vencedor = “benfica”) entao escreva(“Benfica será campeão!!!“) fimse fimalgoritmo E se a condiçãofor falsa? “Se não mandar o computador fazer nada, ele nada fará!” Nesse caso, podemos fazer o algoritmo de duas maneiras: 1 – utilizar duas condicões SE. Um exemplo bem didático e de fácil entendimento:
  • 18. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 1. se dinheiro >= 30 entao 2. …. ir_ao_cinema <- verdadeiro 3. …. assistir_tv <- falso 4. fimse 5. se dinheiro < 30 entao 6. …. ir_ao_cinema <- falso 7. …. assistir_tv <- verdadeiro 8. fimse e a segunda opção, que é bem melhor e de mais agradável leitura… 1. se dinheiro >= 30 entao 2. …. ir_ao_cinema <- verdadeiro 3. …. assistir_tv <- falso 4. senao 5. …. ir_ao_cinema <- falso 6. …. assistir_tv <- verdadeiro 7. fimse Observem que apareceu uma nova palavra… O senao…Paraqueserve osenao? O senao, será executado sempre que o resultado do “se” for falso. No exemplo acima, o interpretador fez uma pergunta, “o dinheiro é maior ou igual a 30?” Caso fosse, a variavel “ir_ao_cinema” receberia o valor verdadeiro, e a variável “assistir_tv” receberia o valor falso. Senão fosse verdadeiro receberia outros valores Agora, um algoritmo fácil, para verem, como funciona a estrutura condicional se.
  • 19. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Como desafio de hoje…Tentem entender o algoritmo acima sem copia-lo no VisualG. E mais dois desafios extras… 1. Faça um algoritmo que receba um número e mostre uma mensagem caso este número seja maior que 10. 2. Faça um algoritmo que receba um número, e informe se este número está no intervalo de 100 a 200. 3. Exercício de Fixação 4. 1) Para os valores (a=5) (b=7) e (c=9), assinale com X a seqüência de execução dos algoritmos abaixo a) Se (a=5) e (b=7) entao c := c+1 senao c := c-1 fim_se b) Se (a=5) e (b<6) entao c := 1 senao Se (c=8) entao c := 2 senao c := 3 fim_se fim_se 5. 2) Com base nas tabelas-verdade , assinale com V ou F, indicando quais valores
  • 20. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 6. são verdadeiros e quais valores são falsos. Utilize os valores: X=1 A=3 B=5 C=8 D=7 E=6 a) nao (x>3) ( ) b) (x<1) e nao (b>d) ( ) c) nao (D<0) e (C> 5) ( ) d) nao (X>3) ou (C< 7) ( ) e) (A > B) ou (C> B) ( ) f) (X>=2) ( ) g) (X< 1) e (B>=D) ( ) h) (D >3) ou (C> 5) ( ) i) nao (D>3) ou nao (B<7) ( ) j) (A>B) ou nao (C>B) ( ) 3) Indique a saída dos trechos de programa em português estruturado, mostrado abaixo. Para as saídas, considere os seguintes valores: A=2, B=3, C=5, D=9 e E=6. a) se nao (D > 5) entao X (A + B) * D senão X (A - B) / c Fim_se escrever X Resposta: ____ b) se (A > 2) e (B < 7) entao X (A + 2) * (B - 2) senao X (A + B) / D * (C + D) fim_se escrever X Resposta: ____
  • 21. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA c) se (A = 2) ou ( B < 7) entao X (A + 2) * (B - 2) senao X (A + B) / D * (C + D) fim_se escrever X Resposta: ____ d) se (A >= 2) ou (C <=1) entao X (A + D)/2 senao X D * C fim_se escrever X Resposta: ____ e) se nao (A > 2) ou nao (B < 7) entao XA + E senao X A / E fim_se escrever X Resposta: ____ f) se nao (A > 3) e não (B < 5) entao X A + D senão X D / B fim_se escrever X
  • 22. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Resposta: ____ g) se (C >=2) e (B <= 7) entao X (A + D)/2 senão X D * C fim_se escrever X Resposta: ____ h) se (A > 2) ou nao (B < 7) entao X A + B - 2 senão X A - B fim_se escrever X Resposta: ____ Quando e como utilizar o operador SE-ENTAO-SENAO, depende da ocasião, quando há muitas escolhas diferentes, o código pode ficar grande, e de difícil leitura… Nesse caso, entra mais uma função condicional, a : ESCOLHA… CASO… CASO… OUTROCASO… Ela é tão simples quanto o SE,a seguir temos um algoritmo, sobre a classificação de atletas pela sua faixa etária, este exemplo, poderia ter sido feito utilizando a estrutura condicional se – então, mas aqui utilizarei o escolha – caso, para que vocês entendam como funciona o mesmo.
  • 23. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Mas antes do algoritmo… Vamos saber o que são comentários? os comentários são bocados no código em que podemos escrever algo sem que o interpretador ache que isso é uma linha de código. Em portugol, os comentários são tudo aquilo precedido por // (duas barras) Os comentários num código, servem para facilitar o entendimento por outros programadores.. Algoritmo algoritmo “Classificação de Atletas” var nome, categoria: caractere idade: inteiro inicio escreva(“Digite o nome do atleta: “) leia(nome) escreva(“Informe a idade do atleta: “) leia(idade) // Até aqui tudo bem, ele pede o nome e idade, lê os valores e coloca nas respectivas variáveis escolha idade // A função escolha irá interpretar os casos abaixo em cima da variável idade caso 5,6,7,8,9,10
  • 24. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA // Caso a variável idade receba os valores de 5 a 10, irá atribuir na variável categoria o valor: infantil …. categoria <- “infantil” caso 11,12,13,14,15 // Caso a variável idade receba os valores de 11 a 15, irá atribuir na variável categoria o valor: juvenil …. categoria <- “juvenil” caso 16,17,18,19,20 // Caso a variável idade receba os valores de 16 a 20, irá atribuir na variável categoria o valor: junior …. categoria <- “junior” caso 21,22,23,24,25 // Caso a variável idade receba os valores de 21 a 25, irá atribuir na variável categoria o valor: profissional …. categoria <- “profissional” outrocaso // E se a variável idade não receber nenhum dos valores acima mencionados, vamos atribuir a variável categoria o valor: inválido …. categoria <- “INVALIDO” fimescolha // O fimescolha finaliza a função que abrimos anteriormente escreva(“Categoria: “,categoria) // E este último escreva, serve para que possamos mostrar o resultado ao utilizador fimalgoritmo REVISÃO ESTRUTURAS CONDICIONAIS FAÇA UM ALGORITMO QUE receba o número do mês e mostre o mês correspondente. Valide mês inválido
  • 25. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Estruturas de repetição (cíclicas) o que é isso? Bom, até o momento, sempre fizemos algoritmos lineares, ou seja, o algoritmo possui um começo, meio e fim, e segue essa ordem… As estruturas de repetição, irão repetir determinados comandos, até que uma comparação lógica se torne verdadeira ou falsa. O Algoritmo abaixo, lê o nome e a nota de três provas de três alunos diferentes… Algoritmo "MediaHarmonica" var a, b, c, MH: real nome: caractere inicio escreva ("Entre com o nome do aluno: ") leia (nome) escreval ("Entre com as notas das três provas") escreva ("Digite a primeira nota: ") leia (a) escreva ("Digite a segunda nota: ") leia (b) escreva ("Digite a terceira nota: ") leia (c) MH <- 3/(1/a + 1/b +1/c) escreval ("A média harmônica do aluno: ", NOME, " é ", MH)
  • 26. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA escreva ("Entre com o nome do aluno: ") leia (nome) escreval ("Entre com as notas das três provas") escreva ("Digite a primeira nota: ") leia (a) escreva ("Digite a segunda nota: ") leia (b) escreva ("Digite a terceira nota: ") leia (c) MH <- 3/(1/a + 1/b +1/c) escreval ("A média harmônica do aluno: ", NOME, " é ", MH) escreva ("Entre com o nome do aluno: ") leia (nome) escreval ("Entre com as notas das três provas") escreva ("Digite a primeira nota: ") leia (a) escreva ("Digite a segunda nota: ") leia (b) escreva ("Digite a terceira nota: ") leia (c) MH <- 3/(1/a + 1/b +1/c) escreval ("A média harmônica do aluno: ", NOME, " é ", MH) fimalgoritmo Grande não? Ainda bem que só tínhamos três alunos… E se fosse uma turma de 40 alunos? Para isso vamos utilizar estruturas de repetição Repita … até Na estrutura repita – ate, todos os comandos serão executados e, no final, haverá uma expressão lógica, para que avalie a repetição, esta que só irá terminar quando essa expressão for verdadeira.
  • 27. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA // sintaxe da estrutura de repetição repita <comandos> ate <expressão lógica/relacional> Agora um exemplo didático… algoritmo "DemonstraRepeticao" var i: inteiro inicio i <- 1 repita escreva(i) i <- i + 1 ate i > 10 fimalgoritmo Este algoritmo irá retornar no ecrã do utilizador os números: 1 2 3 4 5 6 7 8 9 10
  • 28. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Mas porquê? Primeiramente foi declarado a variável i como inteiro, logo em seguida utilizamos uma estrutura de repetição, o repita-ate, pedimos para escrever o valor de i e acrescentamos ao seu valor mais uma unidade, ou seja, i + 1. e até quando isso será repetido? Até que o valor de i seja maior que 10… Então quando o valor de i chegou a 11, ele perguntou se i era maior que 10, como a resposta foi verdadeira, ele encerrou a repetição e foi para o próximo comando… Como não temos mais nada, encerramos nosso algoritmo. Agora o algoritmo da media dos alunos… Só que dessa vez, nós teremos 40 alunos em nossa classe! Vamos digitar um por um? Não! Agora que já sabemos utilizar uma estrutura de repetição, vamos poupar trabalho e resumir o algoritmo! Enquanto…Faça… Diferentemente do repita-ate, onde todos os comandos são interpretados, para só então haver uma expressão lógica verificando se deve ou não continuar a repetição, o enquanto-faca irá avaliar uma expressão lógica e, enquanto esta for verdadeira, irá executar os comandos…
  • 29. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Sintaxe do enquanto faca 1 2 3 enquanto <expressão lógica ou relacional> faca <comandos> fimenquanto Exemplo 1 Neste exemplo, vou criar um algoritmo utilizando o repita-ate e depois o mesmo algoritmo, só que dessa vez utilizando a estrutura enquanto – faca, explicando passo-a-passo a vocês, para que possam entender a diferença entre ambos. - Faça um algoritmo que solicite que o utilizador digite um número, e informe se este número é maior que 10 ou menor que 10. O programa só pode parar de solicitar o número quando este for igual a 0 (zero) Utilizando a estrutura de repetição repita .. ate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 algoritmo "exemplo 1" var numero: inteiro inicio repita escreva("Digite um número: ") leia(numero) limpatela // Limpa a tela =P se (numero > 10) entao escreval("O número é maior que 10") senao
  • 30. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 15 16 17 18 19 20 escreval("O número é menor que 10") fimse ate (numero = 0) fimalgoritmo E agora o mesmo algoritmo, porém utilizando a estrutura de repetição enquanto .. faca 1 2 3 4 5 6 7 8 9 10 11 12 13 14 algoritmo "exemplo 2" var numero: inteiro inicio numero <- 1 enquanto numero <> 0 faca escreva("Digite um número: ") leia(numero) limpatela se (numero > 10) entao escreval("O número ",numero," é maior que 10")
  • 31. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 15 16 17 18 19 20 21 senao escreval("O número ",numero," é menor que 10") fimse fimenquanto fimalgoritmo Nesse exemplo, começamos nosso algoritmo atribuindo o valor 1 a variável número, para que possamos começar a utilizar a estrutura de repetição, conforme podem ver na linha 9; E na linha 10, a condição para que o ciclo continue a ser executado, ou seja, enquanto a variável numero for diferente de 0 (zero), continuaremos executando o programa, e o utilizador digitar números para descobrir se é maior ou menor que zero… 1. Crie dois algoritmos, um utilizando a estrutura de repetição repita .. ate e outro utilizando o enquanto .. faca. 2. Uma loja está vendendo três modelos de carro, o algoritmo deve ler o nome e o valor (euros) dos seguinte automóveis: FERRARI, PORCHE, AUDI 3. Ao final, informar quantos carros de cada modelo foram vendidos 4. O programa só pode encerrar quando o valor do veículo for igual a zero. Para…Faca 5. A sintaxe geral da estrutura de repetição para .. faca é a seguinte: 1 2 3 para X de N ate M [passo Y] faca <comandos> fimpara Explicando…
  • 32. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 6. O X é a variável que deve ser previamente declarada, o N é o número que começará a contagem, M até onde vai essa contagem, e o passo Y só será necessário se você não quiser que seja de 1 em 1… 7. Sei que não entenderam nada, então vou mostrar um exemplo de uma estrutura de repetição utilizando enquanto .. faca e após, um utilizando o para .. faca, você verá que irá ficar bem mais simples! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 algoritmo "repetição 1" var num: inteiro inicio num <- 1 enquanto num <= 10 faca escreva(num) num <- num + 1 fimenquanto fimalgoritmo 8. Nesse algoritmo, foi utilizado a estrutura de repetição enquanto .. faca, como vocês podem notar, foi declarado a variável num para servir como condição para execução do ciclo, e ao mesmo tempo, imprimimos o valor da mesma no ecrã através do comando escreva. 9. Essa estrutura vai imprimir o seguinte resultado no ecrã do utilizador: 1 2 3 4 5 6 7 8 9 Agora, a mesma estrutura, agora utilizando o para .. ate…faca. 1 2 3 4 5 algoritmo "repetição 2" var num: inteiro
  • 33. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 6 7 8 9 10 11 12 inicio para num de 1 ate 10 faca escreva(num) fimpara fimalgoritmo Este algoritmo, tem a mesma função do algoritmo acima, porém dessa vez utilizando a estrutura para .. faca. Vamos entender o algoritmo… 10. Declaração de variáveis, nós já aprendemos, então vamos direto ao ciclo de repetição: 11. para num de 1 ate 10 faca 12. Neste comando, estamos dizendo ao interpretador VisualG que a variável num receberá o valor 1 e a cada iteração, ou seja, toda vez que os comandos dentro do para .. faca forem executados, a variável num receberá +1 no valor por padrão, e assim sucessivamente, até que o valor de num seja 10. 13. escreva(num) // já abordado anteriormente. 14. e o fimpara, que serve para indicar o fim do ciclo. Comando passo N: Imprimir no ecrã todos os números pares de 2 até 200
  • 34. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA 1 2 3 4 5 6 7 8 9 10 11 12 algoritmo "numeros pares" var num: inteiro inicio para num de 2 ate 200 passo 2 faca escreva(num) fimpara fimalgoritmo Passo 2… 15. Vocês devem estar se perguntando de onde surgiu esse passo 2 agora… 16. Lembram que na sintaxe do para .. faca expliquei que ele não é obrigatório, mas poderia surgir? 17. então! por padrão no portugol, ele sempre acrescentará +1 a variável que a gente está utilizando no ciclo, mas nesse exemplo, eu preciso pegar apenas os números pares, ou seja, de 2 em 2. 18. Bingo! 19. Está explicado então, o porquê do passo 2, assim em cada iteração, ele acrescentará +2 na variável num, esta que sempre será um valor par, que é o que queremos nesse exemplo.
  • 35. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Como fazer o inverso de 100 até 1? Para isso, mais uma vez utilizaremos o passo N. 1 2 3 para num de 100 ate 1 passo -1 faca escreva(num) fimpara 20. Sim, também podemos utilizar passo -N, ou seja, um passo negativo. 21. Porque? 22. Porque se o padrão do para .. faca é acrescentar mais 1 na variável, o objetivo do passo N é justamente te dar o poder de escolher qual o valor que você quer acrescentar ou reduzir no ciclo. Revisões estruturas de decisão condicionais Se….então…senão Escolha….caso…outrocaso
  • 36. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA - Faça um algoritmo que calcule o valor da conta de luz de uma pessoa. Sabe-se que o cálculo da conta de luz segue a tabela abaixo: Tipo de Cliente Valor do KW/h 1 (Residência) 0,60 2 (Comércio) 0,48 3 (Indústria) 1,29 Revisões estruturas de decisão cíclicas Repita…ate Enquanto…..faca Para…ate…faca -Escreva um algoritmo para calcular a soma de qualquer numero fornecido pelo utilizador até ser inserido um zero. -Escreva um algoritmo para calcular a soma de dez números quaisquer fornecidos pelo utilizador. - Alterar o algoritmo da venda de carros adicionando o calculo total do valor da venda de cada marca de carros
  • 37. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA VECTORES Até então, aprendemos o que é uma variável e como declarar variáveis em portugol, e fizemos isso inúmeras vezes. O nosso problema começa, quando temos que declarar inúmeras variáveis para atender a um fim. Imagine que você tem que receber o nome e a nota de 50 alunos de uma escola, e depois listar o nome de cada um e a média final de cada aluno e a média da turma. Agora imagine você na declaração de variáveis, declarando uma a uma, as 50 variáveis para o nome, depois as 50 variáveis para as notas… 1 2 3 var aluno1, aluno2, aluno3, ........., aluno50: caractere nota1, nota2, nota3, ............, nota50: real Cansativo não? Acho que se fosse realmente assim, não haveria tantos programadores quanto há hoje em dia… É em casos como esse que entram os Vetores. Vamos imaginar um vetor como sendo uma “caixa” com vários lugares separados para guardar seus documentos, ou seja, uma variável onde se pode armazenar mais de um dado. Vetor de 8 posições
  • 38. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA No exemplo abaixo, temos um vetor com dados armazenados nas 5 primeiras posições. Para poder acessar o conteúdo desse vetor usa-se índices. O índice define a posição da variável dentro do vetor., vamos utilizar a sintaxe: nome[posição]. Ex: meuvetor[2] - O retorno será a letra B. Como posso então utilizar vectores nos algoritmos? Para usar os vectores, primeiro temos que declará-lo na seção de variáveis. Sim, vetor também é uma variável! A sintaxe para declaração do vetor é a seguinte: var nome-do-vetor: vetor[<posições>] de <tipo> Exemplo: Var MeuVetor: vetor[1..5] de inteiro Em todos os vetores tem o primeiro elemento na posição 0(zero). Assim, se tomarmos "K" como sendo o tamanho do vetor a última posição é a de índice "K-1" MeuVetor [0] <- 4; // Coloca 4 na primeira posição de " MeuVetor " MeuVetor [4] <- 8; // Coloca 8 na última posição de " MeuVetor "
  • 39. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Preenchimento de um vetor com um dado Para i de 1 ate 10 faca Vetor[i] <- 30 Colocar os números de 1 a 10 em Vetor Para i de 1 ate 10 faca Vetor[i] <- i Colocar os números de 10 a 1 em Vetor Para i de 1 ate 10 faca Vetor[i] <- 10-i 1- Construa um algoritmo (pseudocódigo) para ler 10 números reais , armazena-los em um vetor e escreve-los de ordem inversa. var V : vetor[1..100] de real i, numero : inteiro Inicio Escreval ("Algoritmo Reverso") Escreva ("Nº de Elementos = ") Leia (numero) Para i de 1 ate numero faca Escreva ("Elemento[", i, "] =") Leia (V[i]) Fimpara Escreva ("Números na Ordem Inversa") Para i de 1 ate numero faca Escreva (V[numero - i +1]) Fimpara fimalgoritmo
  • 40. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Construa um algoritmo (pseudocódigo) para ler cinco números reais, armazena-los em um vetor e calcular a média entre eles. var numero : vetor[1..5] de real i: inteiro soma:real Inicio soma<-0.0 Para i de 1 ate 5 faca Escreva ("Digite um numero = ") Leia (numero[I]) SOMA <-SOMA + NUMERO[I] Fimpara Escreva ("media= ",SOMA/5) Fimalgoritmo Construa um algoritmo (pseudocódigo) para ler cinco números reais, armazena-los em um vetor e calcular qual é o maior deles e em que posição se encontra no vector. var x:inteiro i,n ,posicao,programa: inteiro maior: real A: vetor[0..100] de real sair: caractere inicio programa <- 1 enquanto programa = 1 faca limpatela Escreva("Numero de elementos?: ") Leia(n) Para i de 0 ate n-1 Faca // Ler elementos do vetor Escreva("A[",i,"]=") Leia(A[i]) FimPara maior <- A[0] // Assumir 1o elemento o maior posicao<-0 Para i de 1 ate n-1 Faca // Procurar maior do 2 elemento em diante Se (A[i] > maior) Entao maior <-A[i]
  • 41. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA posicao<-posicao+1 FimSe FimPara Escreval("Maior elemento = ",maior," na posição", posicao) escreva("Deseja finalizar? (S/N) ") leia(sair) se sair = "S" entao programa <- 0 fimse fimenquanto fimalgoritmo Construa um algoritmo (pseudocódigo) para somar dois vetores e armazena-los em um vetor : var i: inteiro A: Vetor[1..6] de real B: Vetor[1..6] de real R: Vetor[1..6] de real Inicio Para i de 1 ate 6 Faca Escreva("entre com o valor para a posição ", i ," novetor A: ") Leia(A[i]) Escreva ("entre com o valor para a posição ", i ,"no vetor B: ") Leia (B[i]) R[i]<- A[i] + B[i] Fimpara Para i de 1 ate 6 faca Escreval( i , " - " , R[ i ] ) Fimpara Construa um Algoritmo. Dada uma classe de N >= 1 alunos, este algoritmo lê suas notas, calcula a média da classe e imprime quais os alunos possuem nota acima da média var
  • 42. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA soma, media: real nota: vetor[1..100] de real i, N : inteiro Inicio Escreva("Numero de alunos? ") Leia(N) Para i de 1 ate N Faca // Ler notas dos alunos Escreva("Nota do aluno ",i,"? ") Leia(nota[i]) FimPara soma <- 0.0 // Calcular a média da classe Para i de 1 ate N Faca soma <- soma + nota[i] FimPara media <- soma / N Escreval("Media = ",media) Escreval("Alunos com nota acima da media") Para i de 1 ate N Faca // Alunos com nota > media Se (nota[i] > media) Entao Escreval("Aluno ",i," Nota = ",nota[i]) senao Escreval("não existem alunos com nota acima da média") FimSe FimPara matriz? Uma matriz, é nada mais, do que Vetores bi-dimensionais. Onde podemos aceder os dados ali contidos através de dois valores. As “linhas” e as “colunas”. Sintaxe… 1nome: vetor[<linhas>,<colunas>] de <tipo> Exemplo: 1minhavar: vetor[1..3,1..3] de caractere Onde o primeiro valor refere-se as linhas e o segundo as colunas. O exemplo acima, refere-se a criação de uma matriz com 3 linhas e 3 colunas, conforme imagem abaixo:
  • 43. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Como posso atribuir ou visualizar dados na minha matriz? Para atribuir dados a uma determinada posição em uma Matriz, manteremos o mesmo padrão para variáveis comuns ou vetores. * Para atribuir um determinado valor: melhorblog[1,2] <- "viseu online" Atribui a palavra viseu online na posição (1,2) da matriz melhorblog. * Para ler determinado valor: escreva("O melhor blog é: ",melhorblog[1,2]) Lê o valor que se encontra na posição (1,2) da matriz melhorblog. Construa um Algoritmo. Para preencher uma matriz 5x5 (25 elementos) com valores de 1 até 25 automaticamente e depois o mesmo algoritmo inseridos pelo utilizador var m: vetor[1..5,1..5] de inteiro i,j,contador : inteiro inicio contador<-1 Para i de 1 ate 5 Faca
  • 44. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA Para j de 1 ate 5 Faca m[i,j] <- contador contador <- contador + 1 FimPara FimPara Para i de 1 ate 5 Faca Para j de 1 ate 5 Faca Escreval(m[i,j]) FimPara FimPara fimalgoritmo E agora, um “pequeno” algoritmo, utilizando praticamente tudo o que vimos durante todas as sessões: Sistema de registo de alunos:  Fazer um programa de registo de alunos;  O programa deverá receber o nome, blog favorito e email de cada um dos alunos;  Após o cadastro, fornecer as seguintes opções: 1. Consultar alunos cadastrados 2. Consultar blogs favoritos por aluno 3. Lista de emails cadastrados 4. Lista completa, com todos os dados dos alunos cadastrados 5. Finalizar o programa 11,12,13 21 22 23 Observação: O Programa só poderá ser finalizado quando escolhida a opção nº 5 algoritmo " Matriz" var
  • 45. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA alunos: vetor[1..2,1..4] de caractere x, opcao, programa: inteiro inicio // Seção de Comandos para x de 1 ate 2 faca escreval("============================") escreval("==== Registo DE ALUNOS ====") escreval("============================") escreva("Digite um Nome: ") leia(alunos[x,1]) escreva("Digite o site favorito: ") leia(alunos[x,2]) // http://www.viseu.tv escreva("Digite o email: ") leia(alunos[x,3]) escreva("Digite o numero aluno: ") leia(alunos[x,4]) limpatela fimpara limpatela programa <- 1 enquanto programa = 1 faca escreval("============================") escreval("=========== MENU ===========") escreval("============================") escreval("Digite a opção desejada: ") escreval("1 - Consulta Alunos Registados") escreval("2 - Consulta Sites Favoritos por aluno") escreval("3 - Lista de emails registados") escreval("4 - Lista completa de alunos registados") escreval("5 - Sair do Programa") leia(opcao) limpatela escolha(opcao) caso 1 escreval("---- Alunos Registados: ") para x de 1 ate 2 faca escreval("---- ",alunos[x,1]) fimpara caso 2 escreval("---- Sites favoritos por aluno: ") para x de 1 ate 2 faca escreval("---- ",alunos[x,1]," ",alunos[x,2]) fimpara caso 3 escreval("---- Lista de emails Registados: ") para x de 1 ate 2 faca
  • 46. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA escreval("---- ",alunos[x,3]) fimpara caso 4 escreval("---- Lista completa de alunos registados: ") para x de 1 ate 2 faca escreval("---- ",alunos[x,1]," ", alunos[x,2]," ", alunos[x,3]," ", alunos[x,4]) fimpara caso 5 escreval("==== OBRIGADO POR UTILIZAR O PROGRAMA! ====") programa <- 0 outrocaso escreval("Opção Inválida...") fimescolha fimenquanto fimalgoritmo EXERCICIOS: 1.Crie um algoritimo que calcule quantos dias já viveu sabendo a sua idade o mês e o dia em que nasceu algoritmo "semnome" var ano , mes , dia , a , b , r: inteiro inicio escreva("vamos calcular quantos dias já viveu: ") escreva("______________________________") escreva("") escreva("QUANTOS ANOS VOCÊ TEM ?:") leia(ano) escreva("") escreva("EM QUE MÊS VOCÊ NASCEU ?:") leia(mes) escreva("") escreva("EM QUE DIA VOCÊ NASCEU ?:") leia(dia) escreva("") a:=(ano*365) b:=(mes*30) r:=(a+b+dia) escreva("VOCÊ JÁ VIVEU",r) escreva("DIAS") fimalgoritmo
  • 47. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA