Algoritmia Tutorial

1,690
-1

Published on

Instalações Electricas

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,690
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
82
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Algoritmia Tutorial

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 47. Educação e Formação de Adultos – Tipologias de nível secundário AALLGGOORRIITTMMOO EE LLÓÓGGIICCAA DDEE PPRROOGGRRAAMMAAÇÇÃÃOO FFOORRMMAADDOORR:: JJOOSSÉÉ BBAATTIISSTTAA

×