algoritmia tutorial

47
Educação e Formação de Adultos Tipologias de nível secundário A A L L G G O O R R I I T T M M O O E E L L Ó Ó G G I I C C A A D D E E P P R R O O G G R R A A M M A A Ç Ç Ã Ã O O F F O O R R M M A A D D O O R R : : J J O O S S É É B B A A T T I I S S T T A A 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.

Upload: jose-de-almeida-batista

Post on 22-Apr-2015

1.386 views

Category:

Education


5 download

DESCRIPTION

Instalações Electricas

TRANSCRIPT

Page 1: Algoritmia Tutorial

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.

Page 2: Algoritmia Tutorial

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…

Page 3: Algoritmia Tutorial

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

Page 4: Algoritmia Tutorial

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.

Page 5: Algoritmia Tutorial

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.

Page 6: Algoritmia Tutorial

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.

Page 7: Algoritmia Tutorial

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);

Page 8: Algoritmia Tutorial

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.

Page 9: Algoritmia Tutorial

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

Page 10: Algoritmia Tutorial

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

Page 11: Algoritmia Tutorial

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.

Page 12: Algoritmia Tutorial

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…

Page 13: Algoritmia Tutorial

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:

Page 14: Algoritmia Tutorial

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

Page 15: Algoritmia Tutorial

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.

Page 16: Algoritmia Tutorial

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.

Page 17: Algoritmia Tutorial

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ção for 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:

Page 18: Algoritmia Tutorial

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…Para que serve o senao?

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.

Page 19: Algoritmia Tutorial

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

Page 20: Algoritmia Tutorial

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: ____

Page 21: Algoritmia Tutorial

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

XA + 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

Page 22: Algoritmia Tutorial

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.

Page 23: Algoritmia Tutorial

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

Page 24: Algoritmia Tutorial

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

Page 25: Algoritmia Tutorial

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)

Page 26: Algoritmia Tutorial

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.

Page 27: Algoritmia Tutorial

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

Page 28: Algoritmia Tutorial

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…

Page 29: Algoritmia Tutorial

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

Page 30: Algoritmia Tutorial

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")

Page 31: Algoritmia Tutorial

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…

Page 32: Algoritmia Tutorial

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

Page 33: Algoritmia Tutorial

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

Page 34: Algoritmia Tutorial

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.

Page 35: Algoritmia Tutorial

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

Page 36: Algoritmia Tutorial

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

Page 37: Algoritmia Tutorial

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

Page 38: Algoritmia Tutorial

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 "

Page 39: Algoritmia Tutorial

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

Page 40: Algoritmia Tutorial

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]

Page 41: Algoritmia Tutorial

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

Page 42: Algoritmia Tutorial

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…

1 nome: vetor[<linhas>,<colunas>] de <tipo>

Exemplo:

1 minhavar: 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:

Page 43: Algoritmia Tutorial

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

Page 44: Algoritmia Tutorial

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

Page 45: Algoritmia Tutorial

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

Page 46: Algoritmia Tutorial

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

Page 47: Algoritmia Tutorial

Educação e Formação de Adultos – Tipologias de nível secundário

AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA