apostila_logica

60
Lógica de Programação 1 Lógica de Programação I Ana Carolina S. S. Jaskulski [email protected] Setembro/2006 Profª Ana Carolina [email protected]

description

apostila_logica.pd

Transcript of apostila_logica

  • Lgica de Programao 1

    Lgica de ProgramaoI

    Ana Carolina S. S. [email protected]

    Setembro/2006

    Prof Ana Carolina [email protected]

  • Lgica de Programao 2

    ndice1 Algoritmos...................................................................................................................5

    1.1 O que so Algoritmos?......................................................................................................................................................51.2 Representaes..................................................................................................................................................................51.3 Qual a dificuldade no aprendizado de algoritmos?.....................................................................................................51.4 Lngua x Linguagem...........................................................................................................................................................5

    1.4.1 Lngua ............................................................................................................................................................................................61.4.2 Linguagem......................................................................................................................................................................................6

    1.4.2.1 Linguagem Natural..............................................................................................................................................................61.4.2.2 Linguagem Artificial.............................................................................................................................................................6

    1.4.2.2.1 Linguagem algortmica...............................................................................................................................................61.4.2.2.2 Linguagem de programao.......................................................................................................................................6

    1.4.3 Diferena entre Linguagem natural e Linguagem artificial..............................................................................................................61.4.3.1 Ambigidade: ......................................................................................................................................................................61.4.3.2 Estrutura e complexidade: ..................................................................................................................................................61.4.3.3 Objetivo Geral x Objetivo Especfico: .................................................................................................................................61.4.3.4 Estrutura e significado:........................................................................................................................................................6

    1.5 Caractersticas dos algoritmos.........................................................................................................................................72 Conceitos Bsicos......................................................................................................8

    2.1 Constante.............................................................................................................................................................................82.2 Varivel ...............................................................................................................................................................................82.3 Operaes............................................................................................................................................................................82.4 Dados...................................................................................................................................................................................8

    2.4.1 Tipos de Dados...............................................................................................................................................................................82.4.1.1 Escalares (primitivos).........................................................................................................................................................82.4.1.2 Estruturados........................................................................................................................................................................9

    2.5 Operaes............................................................................................................................................................................92.5.1 Operaes aritmticas....................................................................................................................................................................92.5.2 Operaes relacionais e lgicas....................................................................................................................................................9

    2.5.2.1 Operaes Relacionais.......................................................................................................................................................92.5.2.2 Operaes Lgicas............................................................................................................................................................10

    2.5.3 Operaes Mondicas e Didicas................................................................................................................................................10

    2.6 Atribuio..........................................................................................................................................................................102.7 Expresses........................................................................................................................................................................10

    2.7.1 Expresses Aritmticas................................................................................................................................................................112.7.2 Expresses lgicas.......................................................................................................................................................................11

    3 Instrues e Operaes...........................................................................................123.1 Critrios de Algoritmos Eficientes..................................................................................................................................12

    3.1.1 Correo.......................................................................................................................................................................................123.1.2 Tempo de execuo.....................................................................................................................................................................123.1.3 Adaptabilidades............................................................................................................................................................................123.1.4 Simplicidade.................................................................................................................................................................................123.1.5 Elegncia......................................................................................................................................................................................123.1.6 Legibilidade...................................................................................................................................................................................12

    3.2 Como construir.................................................................................................................................................................12

    Prof Ana Carolina [email protected]

  • Lgica de Programao 3

    3.3 Componentes de um algoritmo.......................................................................................................................................123.3.1 Entradas.......................................................................................................................................................................................123.3.2 Sadas..........................................................................................................................................................................................133.3.3 Atribuio......................................................................................................................................................................................133.3.4 Tipos de Dados/Variveis/Constantes..........................................................................................................................................13

    4 Operadores................................................................................................................144.1 Operadores Aritmticos...................................................................................................................................................144.2 Operador de resto e quociente de diviso inteira.........................................................................................................14

    4.2.1 Prioridades de resoluo...................................................................................144.3 Operadores Relacionais...................................................................................................................................................144.4 Operadores Lgicos.........................................................................................................................................................15

    4.4.1 Tabelas-Verdade..........................................................................................................................................................................154.4.1.1 Operao de negao.......................................................................................................................................................154.4.1.2 Operao de conjuno.....................................................................................................................................................164.4.1.3 Operao de disjuno......................................................................................................................................................164.4.1.4 Prioridades.........................................................................................................................................................................16

    5 Algoritmos seqenciais...........................................................................................175.1 Atividades com solues.................................................................................................................................................18

    6 Comandos de Seleo..............................................................................................216.1 Comando de Seleo Simples........................................................................................................................................22

    6.1.1 Atividades.....................................................................................................................................................................................22

    6.2 Seleo Mltipla................................................................................................................................................................306.2.1 Atividades.....................................................................................................................................................................................32

    7 Comandos de Repetio..........................................................................................337.1 Acumulador.......................................................................................................................................................................337.2 Contador............................................................................................................................................................................33

    7.2.1 O operador ++......................................................................................................................................................................33

    7.3 Comandos de Repetio..................................................................................................................................................337.3.1 Para..............................................................................................................................................................................................347.3.2 Enquanto......................................................................................................................................................................................347.3.3 Faa...enquanto............................................................................................................................................................................34

    7.4 Atividades..........................................................................................................................................................................358 Matrizes......................................................................................................................39

    8.1 Matrizes Unidimensionais - Vetores...............................................................................................................................398.2 Matrizes Bidimensionais..................................................................................................................................................40

    8.2.1 Ordenao de matrizes mtodo da bolha..................................................................................................................................428.2.2 Ordenao de Matrizes - mtodo de troca do maior:....................................................................................................................44

    8.3 Atividades..........................................................................................................................................................................459 Estruturas ou Registros...........................................................................................48

    9.1 Criando...............................................................................................................................................................................489.2 Acrescentando mais detalhes.........................................................................................................................................499.3 Usando...............................................................................................................................................................................509.4 Exemplos...........................................................................................................................................................................50

    Prof Ana Carolina [email protected]

  • Lgica de Programao 4

    10 Subalgoritmos.........................................................................................................5410.1 Funes...........................................................................................................................................................................54

    10.1.1 Implementao...........................................................................................................................................................................5410.1.1.1 Nome da Funo.............................................................................................................................................................5410.1.1.2 Chamada.........................................................................................................................................................................5510.1.1.3 Variveis pblicas e locais...............................................................................................................................................55

    10.2 Procedimentos................................................................................................................................................................5610.2.1 Implementao...........................................................................................................................................................................5610.2.2 Chamada....................................................................................................................................................................................56

    11 Exerccios................................................................................................................5711.1 Seqenciais.....................................................................................................................................................................5711.2 Seleo.............................................................................................................................................................................5711.3 Repetio.........................................................................................................................................................................5811.4 Vetores e matrizes..........................................................................................................................................................58

    Bibliografia...................................................................................................................60

    Prof Ana Carolina [email protected]

  • Lgica de Programao 5

    1 Algoritmos

    Uma forma de indicar o caminho para a soluo dos mais variados problemas. So quase to antigos quanto a matemtica Deriva do nome de um matemtico Persa, sculo IX, ABU JAFAR MAOM IBN MS

    ALKHOWRIZM

    1.1 O que so Algoritmos?Algoritmo o caminho para a soluo de um problema, e os caminhos so muitos.Algoritmo no a soluo do problema, seno cada problema teria um nico algoritmo ou uma nica soluo.

    A soluo de um problema obtida por meio da execuo do algoritmo, realizado: Mentalmente Manualmente (lpis e papel) Computador

    1.2 Representaes Linguagens semelhantes a Linguagens de programao.

    software ILA, que interpreta algoritmos escritos de forma bem similar linguagem natural Representaes Grficas.

    Fluxogramas e diagramas de Chapin Linguagens Estruturadas ou Portugus Estruturado.

    1.3 Qual a dificuldade no aprendizado de algoritmos?Expressar idias da linguagem natural em forma de smbolos e cdigos (linguagem formal)

    LINGUAGEM NATURAL

    (expresso completamente livre)

    LINGUAGEM ALGORTMICA

    (expresso organizada, com sintaxe, mas com ateno lgica, e no tanto na sintaxe)

    LINGUAGEM FORMAL

    (com sintaxe - no familiar)

    A dificuldade est em organizar o raciocnio lgico, de forma estruturada, com um conjunto de etapas bem definidas, paraatingirmos um objetivo esperado (soluo do problema).

    1.4 Lngua x Linguagem

    Prof Ana Carolina [email protected]

  • Lgica de Programao 6

    1.4.1 LnguaIdioma de um povo, formado por seus costumes, hbitos e trejeitos.Ex.: Lngua portuguesa (dicionrio, hbitos culturais escritos ou falados)

    1.4.2 LinguagemAlguma coisa criada para uma situao especfica a fim de comunicao. Fornece um conjunto de termos (vocabulrio), regras

    (sintaxe) e significados (semntica) que permitem um entendimento.

    1.4.2.1 Linguagem NaturalUtilizada para comunicao entre pessoas.

    1.4.2.2 Linguagem ArtificialComunicao criada para fins especficos.Ex.: Linguagem de programao comunicao entre seres inteligentes (pessoas) e no inteligentes (mquinas)

    1.4.2.2.1 Lin g u a g e m a l go r tm i ca

    Utiliza alguns termos, regras, mas a principal nfase na l g i ca p a r a a s o l u o d o p ro b l e m a .

    1.4.2.2.2 L i ngua g em de p r ogra m a o Termos, regras e significados que so compreendidos pelo programador e que permitem a formulao de

    instrues que sero processadas e executadas pelo computador.Temos maior preocupao com detalhes de codificao/implementao.

    1.4.3 Diferena entre Linguagem natural e Linguagem artificial1.4.3.1 Ambigidade:

    certas frases e expresses apresentam mais de um sentido.

    O homem viu o menino com o telescpio. (quem est com o telescpio ?)

    Ele esteve em minha c o m p a n h i a . (pode significar ele esteve comigo ou ele esteve em minha empre s a ).

    1.4.3.2 Estrutura e complexidade: longas frases sem pontuao, como por exemplos os textos jurdicos.

    Quando ela saiu la da minha casa e da minha casa ela saiu de novo e dai entrou de novo e dai saiu de novoa gente foi procurar o caderno e dai o caderno caiu e dai quando o caderno caiu o caderno molhou e o cadernoficou molhado porque o caderno caiu.

    1.4.3.3 Objetivo Geral x Objetivo Especfico: entender de forma completa, e no isolada, e somente o que est realmente expresso - no subentender coisas (adivinhar).

    O v i n h o se d na p ac i n c i a d o s c a c h o s . (cacho tem pacincia??) (entender de forma completa, e noisolada)

    1.4.3.4 Estrutura e significado: A = ; Eu pegamos a casa. Eu d e z o mel a n c ia aqui. (os termos esto corretos se estiverem isolados, mas juntos no formam um

    bom contexto um contexto intendvel)

    Prof Ana Carolina [email protected]

  • Lgica de Programao 7

    1.5 Caractersticas dos algoritmosUm algoritmo deve ser definido como uma seqncia ordenada e sem ambigidade de passos que levam a soluo de um

    determinado problema.

    Um algoritmo tem cinco caractersticas importantes:

    Finitude: Um algoritmo deve sempre terminar aps um nmero finito de passos.

    Definio: Cada passo de um algoritmo deve ser precisamente definido (sem ambigidades)

    Entradas: Um algoritmo pode ter uma ou mais entradas, isto , dados que so lhe so fornecidos antes do algoritmo iniciar. Emraros casos o algoritmo ter zero entradas.

    Sadas: Um algoritmo deve ter pelo menos uma sada, isto , informar resultados que tm uma relao especfica com as entradas(resultados dos processamentos das entradas)

    Efetividade: Um algoritmo deve ser efetivo. Todas as operaes devem ser to simples e to suficientes para solucionar oproblema, de forma que uma pessoa pode execut-las facilmente usando lpis e papel, e que mesmo assim o problema seja solucionado.

    Prof Ana Carolina [email protected]

  • Lgica de Programao 8

    2 Conceitos Bsicos

    2.1 ConstanteSo valores invariantes em todas as expresses em que possa ser utilizado. Exemplo:

    pi = 3,14159265358979323846... acelerao da gravidade na Terra (g) = 9.8 m/s

    2.2 Varivel So objetos que representam valores em uma frmula para que ela possa ser generalizada. Representa, ento, uma

    classe de um problema e no um problema especfico.

    Ex: soma de dois nmeros: 2 + 4 = 6 ou x + y = z, onde x e y so nmeros variantes (variveis) e z tambm varivel, poisdepende do x e do y para assumir um determinado valor.

    2.3 OperaesSo aes executadas sobre operandos (valores constantes ou valores variveis) que foram previamente definidos.

    Representam a entrada, processamento e sada: ler, manipular, escrever.

    Certas operaes s ocorrem em determinados objetos. Fogo no carvo, salgar a carne. (porque no podemos colocar fogo na carne salgar o carvo) a , onde a deve ser um nmero real e positivo. (porque no se pode fazer uma raiz de um nmero

    negativo ou nmero irreal)

    Operaes seguem uma seqncia pr-determinada 2+5*3 , por definio, sempre a multiplicao feita antes de uma soma ou subtrao

    2.4 Dados Dados representam valores quaisquer, em qualquer intervalo ou domnio.

    100; verdadeiro; casa; 200; 12.50; Joo, e qualquer outro valor que possa ser representado. Representam somente o valor, no informando o contexto ou domnio em que se encontra.

    O nmero 100 um dado que pode representar: o saldo da conta bancria de um indivduo a idade da bisav dele um instante de tempo em segundos, minutos ou horas, e assim por diante.

    O nome Joo pode representar: um aluno da Universidade um paciente de um hospital, etc. Um funcionrio de uma empresa

    2.4.1 Tipos de DadosDados podem ser classificados em dois tipos:

    2.4.1.1 Escalares (primitivos)

    So dados de tipos padro como inteiros, reais, caracter e booleanos, que so bem definidos e geralmente bemconhecidos.

    Inteiros: representam somente nmeros pertencentes aos conjuntos I ou Z. Ex.: 100; -1; 100000;0; +345.

    Prof Ana Carolina [email protected]

  • Lgica de Programao 9

    Reais: representam nmeros pertencentes ao conjunto R, que possuem uma parte inteira e uma parte fracionada.Ex.: 100.34; -1.25; 1047.34

    Caracter: dado composto de um nico smbolo, representado por letra do alfabeto, smbolo especial ou por algarismo.Ex.: a, b, c, ..., x, y, z, 0, 1, *, ., etc

    Cadeia (string, literal): dado composto por um conjunto de caracteres. Deve ser definido (entre colchetes o tamanhomximo)

    Ex.: Maxwell, Joo, melancia

    Booleanos ou lgicos: representam elementos do conjunto {verdadeiro, falso} ou {0, 1}. Ex.: 0,1 : onde 0 falso e 1 verdadeiro

    V, F: onde V verdadeiro e F falso

    2.4.1.2 EstruturadosSo combinaes de tipos de dados escalares e incluem matrizes, vetores, registros, arquivos e conjuntos.

    Ex.: Matriz de inteiros, vetores de caracteres, registros, conjunto de nmeros reais...

    2.5 OperaesOperaes so aes que podem ser executadas sobre dados de um tipo especfico.

    Existe uma relao bastante importante entre os tipos de dados e as operaes, uma vez que algumas operaes spodem ser executadas sobre determinados tipos de objetos, por isso que imprescindvel definirmos o tipo de dado de uma varivel/valor.

    2.5.1 Operaes aritmticasPodem ser realizadas sobre nmeros inteiros e/ou reais e produzem um nmero de um tipo definido.

    Operador Nome da Operao Representao Resultado- subtrao 4-1 3+ adio 3+2 5* multiplicao 3*4 12/ diviso 8/4 2

    mod Resto da diviso mod(4,2) 0div Quociente (resultado

    inteiro da diviso)div(4,2) 2

    sqrt Radiciao sqrt(16,2)sqrt(16)

    sqrt(27,3)

    443

    pow Potenciao pow(2,3) 8

    2.5.2 Operaes relacionais e lgicasProduzem um valor lgico como resultado, isto , verdadeiro ou falso.

    2.5.2.1 Operaes Relacionais

    == (igual)> (maior que)< (menor que)!= (diferente de)

    Prof Ana Carolina [email protected]

  • Lgica de Programao 10

    >= (maior ou igual) yJoo == Jos( x + z ) == ( a - c )p >= q22)

    O pe ra es di d i c as : um operador atua sobre dois operandos. Ex.:

    1 + 2 a * b x > y (G1 >= 7 ) e (faltas < 15) (curso == engenharia) ou (curso ==administracao).

    2.6 AtribuioA atribuio de um valor a uma varivel definida como o ato de a r m a z e n a r o u g r a v a r um d a d o em uma v a r i v e l . Atravs de uma atribuio a varivel passa a representar um novo dado, sendo perdido seu contedo anterior.A atribuio representada pelo operador =

    Exemplo de um algoritmo:

    x = 5 (x passa a representar o valor 5)x = 3+3 (agora x passa a valer 3+3, ou seja, 6 e no vale mais 5)

    2.7 ExpressesSo representaes simblicas de seqncias de operaes a serem realizadas sobre determinados operandos, visando

    obteno de um resultado.

    Prof Ana Carolina [email protected]

  • Lgica de Programao 11

    Os operandos de uma expresso podem ser variveis ou constantes.O tipo da expresso determinado pelo conjunto de operandos e operaes que compem a expresso e pelo tipo de resultado a

    ser obtido.

    2.7.1 Expresses AritmticasSo uma combinao de variveis e/ou constantes relacionadas por meio de operaes e/ou funes aritmticas.

    Produzem nmeros como resultado.Exemplo: ( x + 200 ) / ( 350 - z ) , tem um nmero como resultado.

    A prioridade dos operadores aritmticos em uma expresso determinada da seguinte maneira:

    1. Potenciaes e (-) mondico2. Multiplicao e diviso3. Soma e subtrao4. Parnteses, colchetes ou chaves podem alterar esta ordem5. Segue-se da esquerda para a direita em caso de indeterminao (isto , mais de uma operao com a mesma

    prioridade).

    2.7.2 Expresses lgicasCombinam operadores relacionais ou lgicos com variveis e/ou constantes e produzem resultados com valor lgico, isto ,

    verdadeiro ou falso. (fazem perguntas)Exemplos:

    (X == maria) e (a >0)(a > 200) ou (y != 0)(z != x) ou (z < x)(2 >5)(2>5) ou (4

  • Lgica de Programao 12

    3 Instrues e Operaesx=2y=x+3escrever(y)

    O p r o c e d ime n t o acima possui um conjunto finito de passos. Quantos?E execuo em te m p o i n f i n i t o (ele comea e termina)

    escrever uma instruo, que informa para o usurio o contedo de y.= o operador de atribuio. Na primeira linha atribui para x o valor 2. Na segunda linha atribui para y o resultado da operao soma,representada pelo operador +.

    3.1 Critrios de Algoritmos Eficientes3.1.1 Correo

    Se o algoritmo resolve o problema e se o faz corretamente

    3.1.2 Tempo de execuoSe fazemos em 4 minutos o que pode ser feito em 30 segundos

    3.1.3 AdaptabilidadesAdaptabilidades do algoritmo para soluo de problemas similares. Algoritmo que podemos usar muitas vezes

    3.1.4 SimplicidadeEscrever de forma que podemos fazer com lpis e papel

    Algoritmo com instrues bem objetivas

    3.1.5 ElegnciaInstrues bem escritas e organizadas

    3.1.6 LegibilidadeAlgoritmo elegante e bem apresentado (organizado)

    Quanto maior o nmero de operaes para se executar uma tarefa, mais algoritmos teremos para execut-la, ou seja, mais formasde escrever essas instrues.

    3.2 Como construir1. ler atentamente o enunciado

    2. identificar as possveis entradas (dados variveis e constantes)

    3. identificar as sadas (resultados)

    4. determinar o que fazer para transformar as entradas nas sadas desejadas

    5. escrever o algoritmo (os procedimentos)

    6. execut-lo para verificar se est certo

    3.3 Componentes de um algoritmo3.3.1 Entradas

    Prof Ana Carolina [email protected]

  • Lgica de Programao 13

    o que o usurio vai informar

    ler ()

    Ex.:ler (a) //obtem um valor do usurio e o atribui para aler (a, b) //obtem dois valores do usurio e o atribui para a e bler (numero, nome, salario)

    3.3.2 Sadaso que vamos informar ao usurio (escrever na tela)

    escrever ()

    Ex.:

    escrever (5) //caracter 5escrever (x) //contedo da varivel xescrever (x, y, z) //contedo de x, de y e de zescrever (x+3) //resultado da soma de x com 3escrever (Matrcula = (m) Nota= (n))

    Tudo que estiver entre aspas ser escrito fielmente, tudo que estiver entre parnteses ser substitudo peloseu valor, pois so nomes de variveis e constantes.

    3.3.3 Atribuiodigo qual valor a varivel vai simbolizar

    variavel = expresso

    Ex.:x =15y = 4+2 -((d * 5 )/3)

    3.3.4 Tipos de Dados/Variveis/ConstantesValores armazenados em um endereo de memria.Possuem um tipo de dado e um nome sem acento, sem espao e sem caracteres estranhos, em letras minsculas.Antes do incio do algoritmo temos um bloco de declarao de variveis e constantes. Cada varivel recebe dados de um tipo determinado. Isso importante porque determinadas operaes s podem ser aplicadas

    sobre determinados tipos de dados.

    Ex.:

    caracter opcao // varivel que armazenar um nico simbolocadeia nome_paciente[58] // varivel que armazenar ate 58 caracteresinteiro idade // varivel que armazenar um inteiro de nome idadeinteiro x // varivel que armazenar um inteiroreal salario = 350,0 // constante que armazenar valor tipo real

    Prof Ana Carolina [email protected]

  • Lgica de Programao 14

    4 Operadores4.1 Operadores Aritmticos

    Operador Funo

    + Adio

    - Subtrao

    * Multiplicao

    / Diviso

    4.2 Operador de resto e quociente de diviso inteiraOperador Funo Exemplo

    mod Resto da diviso inteira mod ( 9,4) = 1

    mod (27,5) = 2

    div Quociente (resultado) da diviso inteira div (9,4) = 2

    div (27,5) = 5

    Exemplo:

    mod (9,4) div (9,4)

    4.2.1 Prioridades de resoluoAteno! Em todos os casos vale a regra: primeiro resolva o que estiver dentro dos parnteses mais

    internos e depois o que estiver nos mais externos!

    Quando se tem uma expresso contendo mais de uma operao, determinadas operaes devem ser resolvidas antes das outras.

    Quando se tem operaes iguais (como 2+3+5) ou de mesma prioridade (2+7-1), obedecemos a ordem em que elas esto escritas(por exemplo: em 2+3-1 primeiro fazemos 2+3 depois a subtrao).

    Geralmente, esta a lista de ordem de prioridades (o que deve ser resolvido antes do qu):

    1) potenciao ou radiciao (raiz quadrada, cbica....)2) * / 3) div mod4) + -

    4.3 Operadores RelacionaisFazem questionamentos comparativos sobre duas (ou mais) proposies.

    Prof Ana Carolina [email protected]

  • Lgica de Programao 15

    Operador Funo Exemplos

    = = Igual a 3 = = 3> Maior que 3 > 2< Menor que 2 < 3

    >= Maior ou igual a 3 >= 2 5 0 < 9 (2 > 5) ou (0 < 9) VERDADEIRO

    4.4.1.1 Operao de negao

    A No A

    F VV F

    Prof Ana Carolina [email protected]

    F V F ou V = V

  • Lgica de Programao 16

    4.4.1.2 Operao de conjuno

    A B A e B

    F F FF V FV F FV V V

    4.4.1.3 Operao de disjuno

    A B A ou B

    F F FF V VV F VV V V

    4.4.1.4 Prioridades

    As prioridades na resoluo das operaes lgicas :

    1. Negao2. Conjuno3. Disjuno

    Prof Ana Carolina [email protected]

  • Lgica de Programao 17

    5 Algoritmos seqenciaisQuando em um algoritmo executamos todos os passos (instrues) na seqncia em que eles aparecem, e sem omitir nem repetir

    nenhum, temos um algoritmo seqencial. Naturalmente, depois que um passo acaba o prximo passo comea a ser executado umanica vez!

    Um algoritmo os procedimentos que devemos fazer para resoluo de um problema. Tecnicamente falamos que o algoritmo soas instrues que executamos para processar as entradas em sadas. Essas instrues, posteriormente podem ser codificadas(implementadas) em qualquer (teoricamente) linguagem de programao, criando-se, assim, um software.

    Alguns exemplos de instrues usadas para fazermos algoritmos:

    INICIAR inicio o algoritmo ou um bloco de operaes PARAR termino um bloco de operaes ou um comando

    INICIO...FIM

    ESCREVER imprimo na tela mensagens ou resultados

    escrever (Sejas bem vindo)escrever(O resultado da soma (soma))

    LER - o que o usurio ir digitar, passa a ser colocado em uma varivel

    ler (nome)

    ATRIBUIR fao um espao de memria (uma varivel) receber alguma coisa. Por exemplo: o resultado de uma expresso(clculo matemtico ou clculo lgico: V ou F), uma palavra, um nmero, etc..

    resultado = 3 + 5nome = Mariasoma = 4 + numero

    CALCULAR uso operadores lgicos ou matemticos para processar os dados

    soma = 4+5

    (4 > 5)

    (4 > 5) ou (variavel1 = variavel2)

    Para a definio de um algoritmo, devemos identificar o que deve ser feito, como deve ser feito e usando o qu. Ou seja:

    1- identificar os operandos (os dados que o usurio vai informar de acordo com a necessidade dele)

    Prof Ana Carolina [email protected]

    Imprimir neste lugar o contedo da varivel soma.

    Eu sei isso porque a palavra

    est entre parnteses.

    O que o usurio digitar ir para a varivel que est entre parnteses.

    A palavra numero uma varivel que eu declarei anteriormente, juntamente com seu tipo.Se no for um valor digitado pelo usurio eu no

    necessito fazer declarao dela na incio do algoritmo, com exceo de constantes que para me facilitar eu nomeio para usar depois referenciando-me pelo seu nome e no pelo seu contedo.

    O operador + o operador de soma

    Operador relacional. Compara valores (maior que, menor que....)

    Operador Lgico. Faz uma pergunta, e o resultado dessa operao lgica sempre Verdadeiro ou Falso

  • Lgica de Programao 18

    2- identificar as possveis isntrues (o que devemos fazer com esses dados)3- operar os operandos usando os operadores, na ordem correta4- exibir o resultado

    Se quisermos um programa (um software) que some dois nmeros com o nmero 3 e com o nmero pi , devemos pensarque:

    o usurio deve informar dois nmeros devemos conhecer o valor do nmero pi (3.14 15 92 6535 898) devemos utilizar um operador para somar esses valores devemos atribuir esse resultado em algum lugar devemos mostrar para o usurio esse resultado (que est guardado em certo lugar da memria)

    Para resolvermos esse problema, podemos fazer esse algoritmo aqui:algoritmo somavariaveis e constantesreal soma, numero1, numero2real pi = 3,1415926535898

    inicioescrever (digite um nmero: )ler (numero1)escrever (digite o segundo nmero: )ler (numero2)soma= numero1 + numero2 + pi + 3escrever (o resultado (soma) )

    fim

    Vamos explicar melhor ele:

    algoritmo somavariaveisreal soma, numero1, numero2real pi = 3,1415926535898

    inicioescrever (digite um nmero: )ler (numero1)escrever (digite o segundo nmero: )ler (numero2)soma= numero1 + numero2 + pi + 3escrever (o resultado (soma))

    fim

    5.1 Atividades com solues1. Receba dois nmeros e faa sua mdia:

    algoritmo mediavariaveis

    real numero1, numero2, mediainicio

    Prof Ana Carolina [email protected]

    Tipo das variveis

    Nomes das variveis. por neio deles que nos referenciaremos a seus contedos

    Valores complicados de serem escritos ou de serem lembrados, devem ser declarados como constantes. Tambm recebero um nome, e sempre que citarmos quele nome estaremos nos referenciando ao valor declarado nesta parte do algoritmo.

    Tipo Nome

    Valor permanente dela

    O que o usurio digitar ir para esse espao de memria

    Aparecer na tela

    Os nomes das variveis e da constante somado, junto ao valor 3 e atribudo para a variavel soma

    O 3 no precisa ser declarado como constante porque ele no ser muito usado e no difcil lembrarmos dele, portanto no precisaremos alocar um espao de memria para armazen-lo (seria um desperdcio)

    Aparecer esta frase na tela, porm como soma est entre parntese quer dizer que estamos nos referenciando ao seu contedo (que o resultado da operao feita na linha anterior)

    Final dos procedimentos

  • Lgica de Programao 19

    escrever (digite um numero: )ler (numero1)escrever (digite outro numero: )ler (numero2)media = (numero1+numero2)/2escrever ( a media de (numero1) com (numero2) igual a (media) )

    fim

    2. Calcule a rea de um tringulo, onde leia a medida da base e a medida da altura. Escreva "o triangulo com base ... e altura ....tem rea igual a ...."

    algoritmo area_triangulovariaveis

    real area, base, alturainicio

    escrever (digite a medida da base do triangulo)ler (base)escrever (digite a medida da altura do triangulo)ler (altura)area = (base*altura)/2escrever ( a area do triangulo (area) )

    fim

    3. Sabendo que o valor do pi 3,141592653, calcular rea de um crculo cujo raio ser informado pelo usurio, e escrever "Umcrculo de raio ........ tem rea igual a ......"

    algoritmo circulovariaveis

    real area, raio, piinicio

    escrever (digite o raio do crculo para saber sua area)ler (raio)pi = 3,141592653area= pi * pow(raio,2) /* tambm pode-se multiplicar 2 vezes o raio raio*raio*/escrever (um circulo de raio (raio) tem area igual a (area))

    fim

    ou (usando pi como constante)

    algoritmo circulovariaveis

    real area, raio, pi = 3,141592653inicio

    escrever (digite o raio do crculo p saber sua area)ler (raio)area= pi * pow(raio,2) escrever (circulo de raio (raio)tem area = (area))

    fim

    4. Calcular a rea de um trapzio, onde o usurio informar as duas bases e a altura. Escrever a rea do trapzio.

    algoritmo trapeziovariaveis

    real area, base1, base2, alturainicio

    escrever (digite a base1, a base 2 e a altura)ler (base1, base2, altura) area= ((base1*base2)/2 )*alturaescrever (a area (area) )

    fim

    Prof Ana Carolina [email protected]

  • Lgica de Programao 20

    5. Leia o valor da pea tipo1, o valor da pea tipo2, o nmero de peas tipo1 compradas, o nmero de peas tipo2 compradas e ovalor do frete. Calcule e escreva o valor total a ser pago.

    /*devemos multiplicar o preo de cada produto pela quantidade comprada de cada um deles. Depois de feito isso deve-se acrescentar opreo do frete*/

    algoritmo comprasvariaveis

    real qtd_pecas1, qtd_pecas2, preco_1, preco_2, frete, totalinicio

    escrever ("informe a quantidade de peas do tipo 1")ler (qtd_pecas1)escrever ("informe o preo das peas do tipo 1")ler (preco_1)escrever ("informe a quantidade de peas do tipo 2")ler (qtd_pecas2)escrever ("informe o preo das peas do tipo 2")ler (preco_2)escrever ("informe o valor do frete")ler (frete)total = (qtd_pecas1*preco_1) + (qtd_pecas2*preco_2) + freteescrever ("o valor a ser pago (total) ")

    fim

    Prof Ana Carolina [email protected]

  • Lgica de Programao 21

    6 Comandos de Seleos vezes necessrio tomarmos decises dentro de um programa (ou algoritmo). Ou seja, desejamos que se faa uma coisa ou

    outra coisa. Vou dar um exemplo da vida real:

    me: Filho, se amanh estiver chovendo tu ficas em casafilho: E se no estiver chovendo?me: Da tu vais ao colgio e depois vens para casa

    Isso um algoritmo no computacional, mas que poderia ser escrito assim:

    se (chove) ficar em casa

    senoir ao colgiovoltar para casa

    fim_se

    Tambm poderamos elaborar mais esse algoritmo, assim:

    me: Filho, se amanh estiver chovendo tu ficas em casafilho: E se no estiver chovendo?Me: Se tiver nublado vais ao colgio e depois vens para casa, senao tiver nublado e no tiver chovendo tu vais no colgio e depois vaipara casa da tia

    Ficaria assim: (note que: ou est chovendo ou est nublado ou est ensolarado)

    se (chove) ficar em casa

    senose (nublado)

    ir ao colgiovoltar para casa

    senoir no colgioir para casa da tia

    fim_sefim_se

    Os algoritmos podem ser baseados em estruturas concatenadas (uma em baixo da outra) ou estruturas aninhadas - uma dentro daoutra (de acordo com a formulao de condies e repeties)

    Em um algoritmo com seleo, a execuo de uma ou mais instrues dependente da veracidade (verdadeiro ou falso) de umacondio - algumas instrues do algoritmo sero ou no executadas.

    Por exemplo:

    algoritmo numerovariaveisinteiro numero

    inicioescrever (digite um numero)ler (numero)se (numero !=2)

    escrever (voc no digitou o nmero certo! )seno

    escrever (voc acertou! )fim_se

    fim

    Prof Ana Carolina [email protected]

  • Lgica de Programao 22

    No exemplo acima, OU vai ser escrito Voc no digitou o nmero certo!, ou Voc acertou!, dependendoda veracidade da condio (nmero ser diferente de 2), portanto, nem todas as instrues desse algoritmo vo ser executadas(uma delas no vai!)

    6.1 Comando de Seleo SimplesO comando de seleo mais simples, o comando SE. (if, na maioria das linguagens de programao)

    se

    fim_se

    ou (com uso do seno)

    se

    seno

    fim_se

    Onde INSTRUO qualquer uma instruo logartmica (iniciar, ler, escrever, operar ou calcular, parar) ou ainda uma seqnciade instrues.

    CONDIO uma expresso lgica, isto , o resultado das operaes que esto representadas por ela ser VERDADEIRO ouFALSO.

    Assim, condio :

    ou uma comparao de expresses aritmticas (relaes) - por meio de operadores relacionais (=,,>=, 1500 ento Imposto de Renda = 15% do salrio bruto Se salrio_bruto > 500 e salrio_bruto < 1500 ento Imposto de Renda = 10% do salrio bruto Se salrio_bruto < 500 no tem desconto

    O funcionrio pode ganhar um adicional (bnus): Se idade > 40 ans ento adicional = 2% do salrio bruto Se o tempo de servio > 15 anos adicional=3,5% do salrio bruto Se o tempo de servio < 15 anos, porm maior que 5 anos e a idade do funcionrio > 30 anos, adicional=1,5% do salrio bruto

    Calcular o salrio lquido e escrever o nmero do funcionrio e seu salrio lquido.

    algoritmo funcionariovariaveisinteiro numfunc, numhoras, numfilhos, idadefunc,temposervico real valorhora, salfamilia, salbruto, salliquido, ir, adicional

    inicioescrever (informe o num do funcionario, valor hora e num de filhos)

    Prof Ana Carolina [email protected]

  • Lgica de Programao 23

    ler(numfunc, numhoras, valorhora, numfilhos)escrever (informe a idade, tempo de servico e valor do sal. familia)ler(idadefunc, temposervio, salfamilia)

    /*clculo do salrio bruto com o desconto do in=*/salbruto =(numhoras*valorhora) + (salfamilia*numfilhos)salbruto = salbruto - ((salbruto * 8,5)/100)

    /*clculo do imposto de renda conforme salrio bruto*/se (salbruto > 1500 )

    ir = (salbruto * 15)/100fim_sese ((salbruto > 500) e (salbruto 40)

    adicional = (salbruto * 2)/100fim_sese (temposervio > 15)

    adicional = (salbruto * 3,5)/100fim_sese ((temposervio < 15) e (temposervio > 5 e (idade > 30))

    adicional = (salbruto * 1,5)/100fim_sesalliquido = (salbruto ir) + adicional

    /*exibe nmero do funcionrio e o valor o salrio lquido armazenado na varivel salliquido: */escrever(o funcionario (numfunc), e o salario liquido (salliquido) )

    fim

    Leia o nmero de identificao de um aluno e as 3 notas obtivas por ele no semestre, assim como uma nota de exerccios. Calculara mdia final usando esta frmula (linearize ela coloque em uma mesma linha!!!)

    Mdia = Nota 1 + (Nota 2 * 2) + (Nota 3 * 3) + Mdia dos exerccios

    7algoritmo mediasvariaveis

    inteiro numaluno real nota1, nota2, nota3, mediaexercic, ma /* ma mdia de aproveitamento*/caractere conceito /* uma letra s*/

    inicioler(numaluno, nota1, nota2, nota3, mediaexercic)ma = nota1 + (nota2 * 2) + (nota3 * 3) + mediaexercic

    /*armazena na varivel conceito a, b, c, d ou e conforme o valor de ma*/se ( ma >= 9,0 )

    conceito = "a"fim_sese ((ma >= 7,5) e (ma < 9,0) )

    conceito = "b"fim_sese ((ma >= 6,0) e (ma < 7,5))

    conceito = "c"fim_sese ((ma >= 4,0) e (ma < 6,0))

    conceito = "d"fim_sese (ma < 4,0)

    conceito = "e"fim_se

    /*exibe o nmero do aluno, notas, a mdia dos exerccios, ma e o conceito*/escrever( numaluno, nota1, nota2, nota3, mediaexercic, ma )

    Prof Ana Carolina [email protected]

  • Lgica de Programao 24

    /*testa se o aluno foi aprovado ou no, e exibe a mensagem aprovado ou reprovado*/se ((conceito == "a")ou(conceito == "b")ou(conceito == "c") )

    escrever("aluno aprovado")seno

    escrever("aluno reprovado")fim_se

    fim

    Determinada empresa decidiu dar aumento de salrio aos funcionrios conforme tabela abaixoSalrio Atual umento

    0 - 400 15%401 - 700 12%701 - 1000 10%

    1001 - 1800 7%1801 - 2500 4%

    Acima de 2500 sem aumento

    algoritmo aumento_usando_concatenacao_de_condicionaisvariaveisinteiro numfunc real salatual, percentual, salcorrigido

    inicioler(numfunc, salatual)

    se (salatual 400) e (salatual 700) e (salatual 1000) e (salatual 1800) e (salatual 2500))

    percentual = 0fim_sesalcorrigido = salatual + percentualescrever( numfunc, salatual, percentual, salcorrigido )

    fim

    Mesmo algoritmo, mas a soluo usa os SE de forma ANINHADA (otimizao do algoritmo)

    algoritmo aumento_usando_concatenacao_de_condicionaisvariaveis

    inteiro numfuncreal salatual, percentual, salcorrigido

    inicioescrever (digite o nmero do funcionrio e seu salrio)ler(numfunc, salatual)se (salatual

  • Lgica de Programao 25

    se ((salatual > 400) e (salatual 700) e (salatual 1000) e (salatual 1800) e (salatual

  • Lgica de Programao 26

    Temos a nota 1 que somada com a nota 2, e depois esse somatrio dividido por 2. Se o aluno alcanou a mdia 6,0 (ou superior),ele est aprovado (e deve-se informar isso a ele). Caso no alcanou essa mdia, informe a ele que no est aprovado ainda, e pea anota da prova de recuperao. Essa nota de recuperao ser somada mdia inicial (da prova 1 com a prova 2) e dividida por 2. Se essanova mdia for maior ou igual a 6,0, informe ao aluno que ele est aprovado, seno, que ele est reprovado.

    algoritmo mediasvariaveis

    real nota1, nota2, media_notas, recuperacao, media_final inicio

    escrever (digite a nota 1)ler (nota1)escrever (digite a nota2)ler (nota2)media_notas = (nota1 + nota2)/2se (media_notas >= 6)

    escrever (aprovado)seno

    escrever (ainda no aprovado. digite nota de recuperao)ler (recuperacao)media_notas = (media_notas + recuperacao)/2se(media_notas >= 6)

    escrever (aprovado!!!!)seno

    escrever (reprovado)fim_se

    fim_sefim

    O usurio informar um valor horizontal ( a coordenada x) e o valor vertical (a coordenada y). Escreva em qual quadrante domonitor est esse ponto, ou se ele est exatamente na ordenada (eixo y) ou na abscissa (eixo x)

    algoritmo quadrantesvariaveisreal x, y

    inicioescrever (informe a coordenada x)ler (x)escrever (informe a coordenada y)ler (y)se (y==0)

    escrever (abscissa)seno

    se (x=0) escrever (ordenada)

    senose (x>0)

    se (y>0) escrever (quadrante 1)

    senoescrever (quadrante 4)

    fim_seseno

    Prof Ana Carolina [email protected]

    X

    Y

  • Lgica de Programao 27

    se (y= 8)

    conceito = aprovadoseno

    conceito = reprovadofim_seescrever (aluno: (nome_aluno) media: (media) conceito: (conceito))

    fim

    Faa um algoritmo que leia 3 nmeros inteiros e imprima o maior deles. (usando somente operadores lgicos)

    ALGORITMO maiorVARIAVEISreal a, b, c

    INICIOescrever (Informe o valor a)ler (a)

    Prof Ana Carolina [email protected]

    a igua a b?

  • Lembre-se! Quando querermos mostrar o contedo de uma varivel na tela devemos colocar ela entre parnteses no comando escrever

    Lgica de Programao 28

    escrever (Informe o valor b)ler (b)escrever (Informe o valor c)ler (c)se (a > b)

    se (a > c) escrever ( O maior (a))

    senoescrever ( O maior (c))

    fim_seseno

    se (b > c) escrever ( O maior (b))

    senoescrever ( O maior (c))

    fim_sefim_se

    FIM

    Dados trs valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se tringulo equiltero, issceles ou escaleno. Se no formarem tringulo, escrever uma mensagem .

    Lembre que: o comprimento de cada lado de um tringulo menor que a soma dos comprimentos dos outros dois lados. Equiltero tem 3 lados iguais. Issceles: 2 lados iguais e 1 diferentes. Escaleno: todos os lados so diferentes

    ALGORITMO trianguloVARIAVEISreal a, b, c

    INICIOescrever (Informe o lado a)ler (a)escrever (Informe o lado b)ler (b)escrever (Informe o lado c)ler (c)se ((a < (b+c)) e (b < (a+c)) e (c < (a+b)))

    se ((a==b) e (a==c)) escrever(Triangulo Equilatero.)

    seno se ((a==b) ou (a==c) ou (b==c))

    escrever(Triangulo Isoceles.)seno

    escrever(Triangulo Escaleno.)fim_se

    fim_seseno

    escrever(As medidas nao formam um triangulo.)fim_se

    FIM

    Leia trs valores numricos e escreva-os em ordem crescente.

    ALGORITMO 3_em_ordemVARIAVEISreal num1, num2, num3

    INICIOescrever (Informe o primeiro numero)ler (num1)escrever (Informe o segundo numero)ler (num2)escrever (Informe o terceiro numero)ler (num3)

    Prof Ana Carolina [email protected]

    Dica: Pode-se fazer assim (direto), ao invs de atribuirmos a soma de a com ca uma varivel para depois compararmos.

  • Lgica de Programao 29

    se (num1

  • Lgica de Programao 30

    se(num2 != 0) divisao = num1 / num2escrever("A divisao (divisao))

    senoescrever("Impossvel dividir! O segundo nmero zero.")

    fim_seFIM

    Leia sua data de nascimento, data de hoje, calcule sua idade e escreva na tela.

    ALGORITMO dados_pessoaisVARIAVEIScadeia nome[80], ender[90], fone[10]inteiro dia_nascimento, mes_nascimento, ano_nascimento,

    dia_atual, mes_atual, ano_atual, idade INICIOescrever("Dia do seu nascimento")ler(dia_nascimento)escrever("Mes do seu nascimento")ler(mes_nascimento)escrever("Ano do seu nascimento")ler(ano_nascimento)escrever("Informe o dia atual (hoje):")ler(dia_atual)escrever(Informe o mes)ler(mes_atual)escrever(Informe o ano)ler(ano_atual)idade = ano_atual - ano_nascimentose (mes_atual < mes_nascimento)

    idade = idade 1fim_sese (mes_atual == mes_nascimento)

    se (dia_atual < dia_nascimento) idade = idade 1

    fim_sefim_seescrever("Voce tem (idade) anos ")

    FIM

    6.2 Seleo Mltiplacaso { :

    : ... :

    }seno

    fim_caso

    Onde ,,.., so valores que podem ser assumidos pela . Para cada valor pode-seespecificar uma ao ou um conjunto de aes a serem executadas (as instrues).

    Por exemplo:

    Prof Ana Carolina [email protected]

    != quer dizer diferente

  • Lgica de Programao 31

    algoritmo media_alunovariveis

    real a, b, respostainteiro escolha

    inicioa=20b=5resposta=0escrever (o que vc quer ver:

    1 soma 2- multiplicao 3- diviso )

    ler (escolha)caso (escolha) { 1: resposta= a+b

    2: resposta= a*b3: resposta= a/b

    }seno

    escrever (voce no digitou uma opcao valida!)fim_casoescrever (resposta (resposta) )

    fimalgoritmo cache_bancariovariaveisinteiro opcao_menu

    inicioescrever(menu: )escrever(1 saldo da conta)escrever(2 saque)escrever(3 transferncia)escrever(digite uma opcao: )ler(opcao_menu)caso (opcao_menu) { 1: escrever(voce quis ver o saldo)

    2: escrever(voce quis fazer um saque)3: escrever(voce quis fazer uma transferncia)

    }seno

    escrever(opcao invalida!)fim-caso

    fim

    algoritmo soma_de_dois_numerosvariaveisinteiro x, y

    inicioescrever(digite um numero )ler (x)escrever(digite outro numero)ler(y)caso ( x+y ) { 0: escrever(a soma deu zero)

    1: escrever(a soma deu 1)}seno

    escrever(a soma deu um numero positivo maior que 1)fim-caso

    fim

    Prof Ana Carolina [email protected]

    Veja que aqui eu coloquei uma expresso aritmtica de soma para executar a comparao

  • Lgica de Programao 32

    Depois que executar a instruo selecionada (ou a 1, ou a 2, ou a 3), automaticamente termina o bloco caso (marcao fim_caso)e passa a ser executada a instruo que aparece logo abaixo do fim_caso, que : escrever (Resposta (resposta)).

    Essa mesma regra vale para o se (usado para seleo nica)

    6.2.1 Atividades1. Numa festa, foi feito um sorteio para distribuir um bolo de dinheiro. Dez pessoas foram sorteadas e deveriam pegar uma bola numerada

    de 0 a 9 e conforme o algarismo sorteado o prmio seria:

    Nmero da Bola Prmio (% do valor do caixa)0 051 252 103 074 085 056 157 128 039 10

    A pessoa deve informar a quantidade de dinheiro a ser dividida e o nmero da bola que tirou. Calcule o valor do prmio dela combase na tabela e escreva na tela.

    2. Sendo dados 3 nmeros positivos, verificar a natureza do tringulo formado, quanto aos seus ngulos, com estes nmeros comomedida dos lados (issceles, equiltero, escaleno ou se no forma tringulo).

    3. Ler quantos lados tem um polgono. Classifique os polgonos de 3 a 10 lados. Se for informado um nmero menor do que 3 diga queesse polgono no existe. Considere que o usurio nunca digite um nmero maior do que 10.

    4. Dada a hora (apenas a hora, sem minutos ou segundos), informar qual a direo do sol. (leste, centro,ou oeste)

    Prof Ana Carolina [email protected]

  • Em algum ponto do algoritmo ela acrescida de qualquer valor, mas no

    zerada

    Inicializa em 0 a varivel que vai ser

    o acumulador

    Lgica de Programao 33

    7 Comandos de RepetioEm um algoritmo de repetio, certas instrues so executadas mais de uma vez.

    7.1 AcumuladorUma varivel acumulador (ou somador) qualquer varivel que recebe um valor INICIO constante (geralmente 0) e incrementada por

    qualquer valor (pode no ser fixo) em algum ponto do algoritmo.

    Observe este pedao de um algoritmo qualquer:

    INICIOacumulador = 0

    .

    .

    .acumulador = acumulador + 1...acumulador = acumulador + media_do_aluno...

    FIM

    7.2 ContadorUma varivel contador uma varivel como outra qualquer, mas que recebe um valor INICIO (geralmente 0) e depois

    incrementada por um valor constante qualquer (geralmente 1 ou 2). Ou seja, recebe sempre o mesmo valor.Observe esse pedao de um algoritmo qualquer:

    INICIOcontador = 0...contador = contador + 1...

    FIM

    A linha contador = 0 armazena na varivel chamada contador o valor 0.Na linha contador = contador + 1 incrementamos em 1 o contedo atual da varivel contador .

    7.2.1 O operador ++O operador ++ usado sempre que se quiser acrescentar 1 (um) no valor atual de uma varivel.Esse operador reconhece o valor que tem na varivel, soma 1 naquele valor e atribui para ela - ele acrescenta 1A facilidade de us-lo se d na abreviao. Ou seja, ao invs de escrever: var=var+1 basta escrever: var++

    7.3 Comandos de Repetio

    Prof Ana Carolina [email protected]

    Inicializa em 0 a varivel que vai ser o contador.

    Em algum ponto do algoritmo incrementa em 1

  • Lgica de Programao 34

    7.3.1 ParaRepete certas instrues um nmero fixo (e j conhecido) de vezes.

    PARA ( = at ; )

    Observe esse algoritmo, ele vai imprimir a frase Eu sei repetir 20 vezes na tela.

    algoritmo uso_do_paravariaveisinteiro contador

    iniciopara (contador = 1 at 20; contador = contador+1)

    escrever (eu sei repetir)fim_para

    fim

    Nem sempre saberemos quantas vezes queremos que sejam repetidas as instrues, mas sim, sabemos que uma coisa deve serfeita at que tal coisa acontea (uma condio passe a ser verdadeira) ou enquanto tal coisa est acontecendo (que uma condio aindaseja verdadeira). Quando isso acontece, usamos os comandos: enquanto ou faa...at que...

    7.3.2 EnquantoExecuta certos comandos enquanto uma condio for verdadeira.

    enquanto ()

    fim_enquanto

    No algoritmo abaixo, escreve uma mensagem e l novamente um numero, enquanto o nmero no for 2.algoritmo uso_do_enquantovariaveisinteiro numero

    inicioenquanto (numero != 2)

    escrever (digite um numero: )ler (numero)

    fim_enquantofim

    7.3.3 Faa...enquanto...Repete certas instrues at que a condio seja verdadeira.

    faa

    enquanto ( )

    O algoritmo executado linha-a-linha e de cima para baixo, por isso como a condio est depois das instrues, as instruessero repetidas pelo menos 1 vez (mesmo que a condio seja falsa desde o INICIO).

    No algoritmo abaixo, escreve-se uma frase na tela e incrementa um contador (que conta quantas vezes a frase foi repetida, j queacrescenta mais 1 cada vez que ela escrita). Quanto o contador estiver em 5 o processo pra de ser repetido e o algoritmo acaba.

    algoritmo uso_do_enquantovariaveisinteiro contador

    iniciofaa

    Prof Ana Carolina [email protected]

  • Lgica de Programao 35

    escrever (eu nao canso de repetir)contador = contador + 1

    enquanto (contador 4) entao

    soma = soma + numeromaior4 = maior4 + 1

    fim_seconta = conta + 1

    fim_enquantomedia = soma / maior4escrever (media)

    fim

    Faa um algoritmo para ler base e altura de 50 tringulos e imprimir a sua rea.

    algoritmo triangulovariaveis inteiro contador real base, altura, areainicio contador = 1 enquanto (contador < 51)

    Prof Ana Carolina [email protected]

    Quando a varivel contador for maior que 5 ele pra de repetir.

    Podemos usar nmeros para dar nomes s variveis!!

  • Lgica de Programao 36

    ler (base) ler (altura)

    area = (base * altura)/2 escrever (area) contador = contador + 1 fim_enquantofim

    Dado um conjunto de 20 valores reais, faa um algoritmo que:a) Imprima os valores que no so negativos.b) Calcule e imprima a mdia dos valores < 0.

    algoritmo conjunto20variaveis real n, soma_menor, media_menor inteiro contador, contador inicio contador = 0 soma_menor = 0 enquanto (contador < 20) ler (n) se (n >= 0) escrever (n) senao soma_menor = soma_menor + n contador = contador + 1 fim_se contador= contador + 1 fim enquanto media_menor = soma_menor / contadorfim

    Voc digita um nmero e ele escreve todos os nmeros de 0 at ele.

    algoritmo escreve_numerosvariaveis inteiro numero, contador inicio // primeiro o programa solicita

    //um nmero ao usurio escrever("informe um nmero: ") ler (numero) // inicializa o contador contador = 0 //enquanto o contador for menor ou igual ao valor informado, faa enquanto (contador

  • Ao invs de atribuir isso para uma varivel e depois escrev-la, posso colocar direto. Primeiro ser feito o

    clculo e depois ser exibido automaticamente o resultado

    Lgica de Programao 37

    escrever (digite um nmero)ler (n)escrever ( n * 3)

    enquanto (n!=999)fim

    A srie Fibonacci tem como dados os 2 primeiros termos da srie que so respectivamente 0 e 1. A partir deles, os demais termosso construdos pela seguinte regra:

    atual = ultimo + penultimo

    Escrever um algoritmo que gera os 10 primeiros termos desta srie e calcula e escreve a sua soma.

    algoritmo fibonacci_usando_laco_paravariveisinteiro atual, ultimo, penltimo, contador, soma

    iniciosoma = 0penultimo = 0ultimo = 1escrever(penultimo) /*mostro os dois primeiros elementos da srie*/escrever(ultimo)para (cont = 1 at 8; contador++)/*aqui, mostro os 8 elementos restantes*/

    atual = ultimo + penltimoescrever(atual) /*a medida que encontro o elemento atual, vou exibindo*/soma = soma + atual /*somo todos os elementos gerados*/penultimo = ultimo /*troco o que era o ultimo elemento, transforma-se em*/ultimo = atual /*ltimo. e o que era atual, transforma-se em ultimo*/

    fim_paraescrever(soma)

    fim

    algoritmo fibonacci, mas usando instruo faa...at que

    algoritmo fibonacci_usando_facavariveisinteiro atual, ultimo, penltimo,contador, soma

    iniciosoma = 0penultimo = 0ultimo = 1escrever(penultimo) escrever(ultimo)contador = 0faa

    atual = ultimo + penltimoescrever(atual) soma = soma + atual penultimo = ultimo ultimo = atual contador = contador + 1

    enquanto (contador < 8)escrever(soma)

    fim

    Algoritmo Fibonacci com a instruo ENQUANTO

    algoritmo fibonacci_usando_enquantovariveisinteiro atual, ultimo, penultimo, contador, soma

    inicio

    Prof Ana Carolina [email protected]

    Porque eu s quero os 10 primeiros termos da srie. Os 2 primeiros so fixos

    (0 e 1) e os 8 eu fao usando o algoritmo com o lao de repetio

  • Lgica de Programao 38

    soma = 0penultimo = 0ultimo = 1escrever(penultimo)escrever(ultimo)contador = 0enquanto (contador < 8)

    atual = ultimo + penultimoescrever(atual) soma = soma + atual penultimo = ultimo ultimo = atualcontador++

    fim_enquantoescrever(soma)

    fim

    Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de uma certa regio, a qual coletou os seguintesdados referentes a cada habitante para serem analisados:

    - sexo (masculino e feminino) - cor dos olhos (azuis, verdes ou castanhos) - cor dos cabelos ( louros, castanhos, pretos) - idade

    Faa um algoritmo que determine e escreva: - a maior idade dos habitantes - a quantidade de indivduos do sexo feminino cuja idade est entre 18 e 35 anos inclusive e que tenham olhos verdes e cabeloslouros.

    O final do conjunto de habitantes reconhecido quando a idade informada for negativa (idade menor que 0).algoritmo pessoasvariveiscaracter sexocadeia corolhos[20], corcabelo[20]inteiro idade, contapess, maioridade

    iniciocontapess = 0maioridade = 0ler(idade)enquanto (idade >= 0)

    ler(sexo, corolhos, corcabelo)se (idade > maioridade)

    maioridade = idadefim_sese (sexo == f) e (idade >= 18) e (idade

  • Lgica de Programao 39

    8 MatrizesMatriz um conjunto de variveis, cada uma podendo representar um valor, como se fossem variveis simples, mas todas

    compartilham o mesmo nome

    Para individualizarmos cada um dos elementos do conjunto, associamos um ndice (um nmero) a cada um deles.Exemplo: um conjunto de nome mat possui 4 elementos:

    Como todos os elementos possuem o mesmo nome, a identificao de cada um deles passa a ser feita pelo nome (que o mesmonome do conjunto) seguido por um ndice (nmero).

    Muitos algoritmos, necessitam que muitas variveis sejam declaradas (e manipuladas) dentro dele.A escrita, leitura e manipulao (operao) de cada uma delas exigiria que nomessemos uma-a-uma.As matrizes solucionam esse problema, pois declaramos uma matriz e depois dizemos quantos elementos ela pode conter. Assim,

    se precisaramos nomear 15 variveis do tipo real no nosso algoritmo, basta declararmos uma varivel com 15 posies uma matriz! ecada vez que quisermos trabalhar com o primeiro, ou o segundo, ou o terceiro valor de dentro dela, acessamos ele com o nome da varivelmatriz seguido pelo seu ndice.

    Assim como na matemtica, as matrizes podem ter mais de uma dimenso. Para cada dimenso usaremos um ndice que vai de 1at a quantidade de posies em cada dimenso.

    Os tipos que mais usaremos a matriz unidimensional (s uma linha) e bidimensional (mais de uma linha). Algumas linguagens deprogramao nem permitem a declarao de mais dimenses.

    8.1 Matrizes Unidimensionais - VetoresObserve este exemplo:

    1. algoritmo matrizes2. variveis3. inteiro minha_matriz[5]4. inicio5. minha_matriz[1]=26. minha_matriz[2]=667. minha_matriz[3]=32

    Prof Ana Carolina [email protected]

    A matriz se chamar minha_matriz

    Ela vai ter 5 posies em 1 dimenso (1 linha)

    Tipo dos valores que cada posio poder conter.

    Todos os elementos tm que ser do mesmo tipo (inteiro, neste caso)

  • Lgica de Programao 40

    8. minha_matriz[4]=119. minha_matriz[5]=47210. fim

    Nesse algoritmo, declarei uma varivel matriz/vetor chamada minha_matriz, de uma dimenso (1 linha) que comporta at 5elementos.

    Nas linhas 5, 6, 7, 8 e 9, eu prencho o vetor com 5 elementos (um para cada posio).Ficar assim:

    2 66 32 11 4721 2 3 4 5

    Para ler (pedir ao usurio) o contedo de uma posio (por exemplo a posio 5), o procedimento pode ser:ler (minha_matriz[5])

    Para imprimir na tela o contedo de uma posio (por exemplo a posio 3), o procedimento pode ser:

    escrever (O contedo da posio 5 (minha_matriz[3]) )

    Percebe-se, que com 5 posies a escrita e a leitura j pode ser um processo trabalhoso se citarmos uma posio de cada vez nahora de atribuirmos um valor para cada.....(veja isso no exemplo do algoritmo anteriormente citado)

    Um recurso que a gente usa para facilitar essas operaes, repetir o comando quantas vezes for o tamanho da matriz e usar ocontador para ir passando ndice por ndice.

    Observe este exemplo - preencher o vetor com valores informados pelo usurio:

    algoritmo matrizesvariveisinteiro minha_matriz[5], contador

    iniciopara (contador=1 at 5; contador++)

    ler (minha_matriz[contador])fim_para

    fim

    Por que isso funciona? Porque estou dizendo que vou repetir o comando de leitura 5 vezes (que o tamanho do vetor), e cadavez que eu ler eu vou colocar o valor lido dentro da varivel minha_matriz (o vetor) na posio 1, 2, 3, 4 ou 5. Depende do nmero que avarivel contador ir representar cada vez.

    Sabemos que no lao de repetio PARA, sero repetidos determinados comandos um certo nmero de vezes, e possui umavarivel de controle do nmero de vezes que est sendo repetido o comando. Essa varivel contador alterada (somada 1) cada vez,portanto, na primeira vez ela vai ser 1, depois ela vai ser 2, depois 3, depois 4, depois 5.

    Como 1, 2, 3, 4 e 5 so os nmeros que a gente precisa (para serem os ndices das posies do vetor), a gente aproveita o valordo contador para indicar para qual posio do vetor eu estou lendo o valor do usurio.

    Ento vai ser:minha_matriz[1]minha_matriz[2]minha_matriz[3]minha_matriz[4]minha_matriz[5]

    um de cada vez. E os nmeros de ndice sero dados pelo contedo da varivel contador (iniciando em 1 e terminando em 5).

    8.2 Matrizes BidimensionaisQuando se tem um vetor, o procedimento o citado acima.

    Quando se tem uma matriz com mais de uma dimenso devemos ter dois contadores (uma para contar as linhas, e outro paracontar as colunas).

    Observe uma matriz bidimensional.

    Prof Ana Carolina [email protected]

    posies

  • percorre as linhaspercorre as

    colunas dentro da

    linha

    Lgica de Programao 41

    1,1 1,2 1,3 1,4 1,5 1,62,1 2,2 2,3 2,4 2,5 2,6

    Para preenchermos (ou escrevermos) um vetor, precisamos de somente 1 contador, pois no vetor s tempo o contador de posiesdentro de somente uma linha de dados.

    Em uma matriz, precisamos de um contador para cada dimenso, pois temos um ndice para cada dimenso da matriz (porexemplo, um contador para as linhas, e outro para as colunas)

    Assim, para nos referenciarmos posio linha 1 coluna 3, vamos precisar do ndice de linha e do ndice de coluna.

    Primeiro vem o ndice de linha, depois o de coluna!

    Fazendo isso sem usarmos os laos de repetio, seria assim:

    Exemplo 1:

    algoritmo matrizesvariveisinteiro minha_matriz[2] [6]

    iniciominha_matriz[1][1]=6minha_matriz[1][3]=56minha_matriz[2][3]=99minha_matriz[2][5]=132

    fim

    6 5699 132

    Para fazermos isso usando laos de repetio, basta colocar um PARA para cada ndice.... um dentro do outro.Isso se faz para que ele corra todas as colunas de uma linha, depois todas as colunas da outra linha.

    Exemplo 2:

    algoritmo matrizesvariveisinteiro linhas, colunas, minha_matriz[2][6]

    iniciopara (linhas = 1 at 2; linhas++)

    para (colunas= 1 at 6; colunas++)escrever ( minha_matriz[linhas][colunas] )

    fim_parafim_para

    fim

    Agora um exemplo que multiplica todos os dados de uma matriz por 2 e escreve eles:Exemplo 3:

    algoritmo matrizesvariveisinteiro linhas, colunas, minha_matriz[2][6]

    iniciopara (linhas = 1 at 2; linhas++)

    para (colunas= 1 at 6; colunas++)

    Prof Ana Carolina [email protected]

    ndice de linhas

    ndice de colunas

    A matriz se chamar minha_matriz

    Ela vai ter 2 linhas e 6 colunas

    Tipo dos valores que cada posio poder conter.

  • Lgica de Programao 42

    minha_matriz[linhas][colunas]=minha_matriz[linhas][colunas]*2escrever (contedo da linha (linhas) coluna (colunas)=

    (minha_matriz[linhas][colunas]) )fim_para

    fim_parafim

    Exemplo 4:

    Ler um vetor chamado meu_vetor, com 80 elementos, cada elemento anota de um aluno de certa turma. Calcular a mdia geralda turma e verificar quantos alunos ficaram acima da mdia ou iguais ela e quantos abaixo da mdia. Escrever a mdia, o nmero denotas acima da mdia ou iguais mdia e o nmero de notas abaixo da mdia.

    algoritmo estatistica_de_alunosinteiro meu_vetor[80], i, j, acima_media, abaixo_mediareal soma, media_geral

    iniciosoma =0 acima_media =0para (i=1 at 80; i++)

    ler (meu_vetor[i])soma = soma + meu_vetor[i]

    fim_paramedia_geral = soma / 80para (j = 1 at 80; j++)

    se (meu_vetor[j]< media_geral) acima_media ++

    fim_sefim_para

    abaixo_media = acima_media 80escrever (a mdia geral (media_geral) )escrever (alunos na mdia ou acima (acima_media) )escrever (alunos abaixo da mdia (abaixo_media) )

    fim.

    Observe que poderamos ter usado a mesma varivel ( i ou j) como ndice dos vetores, pois o i para de ser usado e poderia serreaproveitado, mas no algoritmo usa-se a varivel i para correr o vetor e preench-lo, e depois a varivel j para correr o vetor e compararseus elementos com a mdia.

    Exemplo 5:Ler um vetor chamado meu_vetor, de 6 elementos, e escrev-lo. Ordenar, em seguida, os elementos de V em ordem crescente e

    escreer o vetor V assim ordendado.Teremos aqui 2 exemplos, bastantes simples, portanto eficientes para manipulao de conjuntos pequenos (poucos elementos) e

    mais lentos (no muito bons) para a manipulao de grande quantidade de dados.

    8.2.1 Ordenao de matrizes mtodo da bolhaVamos comparar cada elemento do vetor com o elemento imediatamente seguinte ( meu_vetor[i] com meu_vetor[i+1] ).Se o elemento comparado for menor ou igual ao elemento seguinte, compara-se o segundo valor com o prximo, at terminar o

    vetor.Se o elemento comparado for maior do que o imediatamnte segunte, troca-se entre si os dois elementos comparados e continua-se

    comparando o segundo valor com o imediatamente seguinte enquanto houver elementos no vetor.

    para (i = 1 at 5; i++)se (meu_vetor[i] > meu_vetor[i+1])

    x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]

    Prof Ana Carolina [email protected]

    Preencho o vetor com as notas dos alunos

    Acumulo todas as notas

    Usados para controlar a posio do vetor que estou manipulando

    Porque 80 a quantidade de notas lidas

    Avalio quantos valores do vetor so maiores que a

    mdiaDiminuo de 80 os alunos que esto na mdia (ou acima) para

    descobrir quantos esto abaixo da mdia geral

  • Lgica de Programao 43

    meu_vetor[i+1] =xfim_se

    fim_para

    Supondo a leitura de um vetor meu_vetor[6] com os seguintes valores:

    15 7 1 4 17 10

    Executando o trecho acima sobre este vetor, resultaria o seguinte:

    7 1 4 15 10 17

    Como pode ser observado, o novo vetor ficou mais prximo de uma ordenao em ordem crescente, mas no est ordenadoconforme se deseja. Isso indica que o processo deve ser repetido vrias vezes at se conseguir o objetivo final.

    Uma segunda execuo nos levaria a:

    1 4 7 10 15 17

    Como se v, este vetor, com apenas 2 execues do trecho do algoritmo acima j ficou ordenado. Outros vetores, entretanto,podem exigir uma quantidade bem maior de repeties das execues do trecho acima at conseguirem deixar o vetor completamentordenado.

    O nmero mximo de execues necessrias para a completa ordenao de um vetor N 1 vezes, onde N o tamanho do vetor.Sabendo isso, podemos completar o trecho do algoritmo:

    para (n = 1 at 5; n ++)para (i=1 at 5; i++)

    se (meu_vetor[i] > meu_vetor[i+1]) x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]meu_vetor[i+1] =x

    fim_sefim_para

    fim_para

    Esse trecho certamente garante a ordenao do vetor conforme desejado, contudo, na prtica o nmero de vezes que se tem quepassar pelo vetor bem menor do que N -1, conforme pde ser visto no exemplo do vetor acima. Em lugar de 5 passagens oramnecessrias apenas 2. Desta forma, uma soluo melhor a seguinte:

    k=oenquanto (k==0)k=1para (i=1 at 5; i++)

    se (meu_vetor[i] > meu_vetor[i+1]) x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]meu_vetor[i+1] =xk=0

    fim_sefim_para

    fim_enquanto

    Com isto, a verso 1 da ordenao de um vetor de 6 elementos a seguinte:

    Algoritmo ordena_crescente_bolhaVariveisinteiro meu_vetor[6], i, k, x

    INICIOpara (i= 1 at 6; i++)

    ler (meu_vetor[i])escrever (meu_vetor[i])

    fim_para

    Prof Ana Carolina [email protected]

  • Lgica de Programao 44

    k=oenquanto (k==0)

    k=1para (i=1 at 5; i++)

    se (meu_vetor[i] > meu_vetor[i+1]) x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]meu_vetor[i+1] =xk=0

    fim_sefim_para

    fim_enquantopara (i= 1 at 6; i++)

    escrever (meu_vetor[i])fim_para

    FIM

    Assim, o algoritmo acima l um vetor de 6 elementos e o escreve talq ual foi lido. Em seguida, ordena o vetor em ordem crescenteusando um dos muitos modos de ordenao existentes (Bubble Sort). Uma vez ordenado, o algoritmo escreve o vetor ordenado emordem crescente.

    Outro processo de ordenao de um conjunto, consiste em achar o maior elemento do conjunto e troc-lo com a ltima posio.Em seguida, acha-s o maio do conjunto restante e troca-se com a penltima posio. Procede-se da mesma maneira at qiue o conjuntorestante contenha apenas um elemento quando se d por concludo o processo.

    Supondo que se tenha o mesmo vetor usado anteriormente:

    15 7 1 4 17* 10*15* 7 1 4 10* 1710* 7 1 4* 15 174 7* 1* 10 15 174* 1* 7 10 15 171 4 7 10 15 17

    Os asteriscos indicam que foram trocados de uma linha para a seguinte.A soluo dos problemas de ordenao por este processo leva ai seguinte algoritmo.

    8.2.2 Ordenao de Matrizes - mtodo de troca do maior:Algoritmo ordena_troca_do_maiorVariveisinteiro meu_vetor[6], i, n, m, p, aux, k

    INICIOpara (i= 1 at 6; i++)

    ler (meu_vetor[i])escrever (meu_vetor[i])

    fim_paran=6enquanto (n>1)

    m= meu_vetor[1]p=1para (i=2 at 6; i++)

    se (m < meu_vetor[i]) m= meu_vetor[i]p=i

    fim_sefim_paraaux = meu_vetor[n]meu_vetor[n]=meu_vetor[p]

    Prof Ana Carolina [email protected]

  • Lgica de Programao 45

    meu_vetor[p]=auxn=n-1

    fim_enquantopara (k= 1 at 6; k++)

    escrever (meu_vetor[k])fim_para

    FIM

    Quando se trata de matrizes de duas dimenses, tem-se dois ndices que devem ser controlados. Considere o seguinte problema:

    Ler uma tabela chamada minha_tabela[10][20].Em seguida ler 15 valores, um decada vez, e para cada valor lido, verificar se este valor est ou no na

    tabela minha_tabela, escrevendo-o com a mensagem adequada.

    Desta forma temos o algoritmo abaixo:

    Algoritmo pesquisa_em _tabelaVariveisinteiro minha_tabela[10][20], n, i, j, a

    INICIOpara (i= 1 at 10; i++)

    para (j= 1 at 20; j++)ler (minha_tabela[i][j])

    fim_parafim_parapara (n=1 at 15; n++)

    ler (a)para (i=1 at 10; i++)

    para (j= 1 at 20; j++)se (a == minha_tabela[i][j])

    i= 12j= 10

    fim_sefim_para

    fim_parase (i==11)

    escrever ( (a) no est na tabela)seno

    escrever ( (a) est na tabela)fim_se

    fim_paraFIM

    8.3 Atividades1) Conceitue MatrizMatriz um conjunto de variveis, cada uma podendo representar o valor de uma constante, como se fossem variveis simples,

    mas todas elas compartilham o mesmo nome e todas so do mesmo tipo.

    2) Como indicada a leitura de um vetor V(10)?

    algoritmo leitura_vetorvariveis

    tipo_qualquer v[10] inteiro coluna

    iniciopara (coluna=1 at 10; coluna++)

    ler( v[coluna] )fim_para

    fim

    3) Como indicada a escrita de uma matriz M(5,8)?

    Prof Ana Carolina [email protected]

  • Lgica de Programao 46

    algoritmo escreve_matrizvariveistipo_qualquer m[5][8]inteiro coluna, linha

    iniciopara (linha = 1 at 5; linha++)

    para (coluna=1 at 8; coluna++)escrever( m[linha][ coluna] )

    fim_parafim_para

    fim

    4) Escrever um algoritmo que l um vetor X(100) e o escreve. Substitua, a seguir, todos os valores negativos de X por 1 e escrevao vetor modificado

    algoritmo modifica_vetorvariveisinteiro x[100], coluna

    iniciopara (coluna=1 at 100; coluna++)

    ler (x[coluna])escrever(x[coluna])se (x[coluna] < 0 )

    x[coluna] = 1fim_se

    fim_parapara (coluna=1 at 100; coluna++)

    escrever(x[coluna])fim_para

    fim5) Escrever um algoritmo que l um vetor K(20) e o escreve. Troque, a seguir, os elementos de ordem mpar com os de ordem par

    imediatamente seguintes e escreva o vetor assim modificado.algoritmo troca_elementosvariveisinteiro k[20], aux, coluna

    iniciopara (coluna=1 at 20; coluna++)

    ler (k[coluna])escrever(k[coluna])

    fim_paracoluna =1faa

    aux = k[coluna]k[coluna]= k[coluna + 1]k[coluna + 1] = auxcoluna = coluna + 2

    at que ( coluna >= 20)para (coluna=1 at 20; coluna++)

    escrever(k[coluna])fim_para

    fim6) Armazene em uma Matriz de 3 linhas por 2 colunas nome de pessoas.Pesquise nessa matriz quantas pessoas chamadas "camila" esto cadastradas.

    ALGORI