apostilavisualgv25-111028103343-phpapp01

Embed Size (px)

Citation preview

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    1/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER

    Introduo aosIntroduo aosIntroduo aosIntroduo aosalgoritmosalgoritmosalgoritmosalgoritmos

    Bruno TonetCristian Koliver

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    2/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER

    SUMRIOINTRODUO AOS ALGORITMOS................................................11 - ALGORITMOS NO COMPUTACIONAIS ......................................32 - ALGORITMOS COMPUTACIONAIS ..........................................43 - LINEARIZAO DE EXPRESSES .........................................54 - FORMA GERAL DE UM ALGORITMO ........................................75 - VARIVEIS ..........................................................87 - LINHAS DE COMENTRIO ..............................................108 - COMANDOS DE E/S (ENTRADA/SADA) ...................................109 - CONSTRUINDO OS PRIMEIROS ALGORITMOS: ESTRUTURAS SEQENCIAIS ......1310 - ESTRUTURA CONDICIONAL ...........................................1511 - TESTANDO O ALGORITMO ............................................1912 - ESTRUTURA DE REPETIO ..........................................2013 - COMANDO REPITA...ATE ............................................2114 - COMANDO ENQUANTO..FACA ..........................................2415 - COMANDO PARA..FACA ..............................................2516 - VARIVEIS COMPOSTAS HOMOGNEAS ..................................2716.A VARIVEIS INDEXADAS UNIDIMENSIONAIS (VETORES) ............................27

    16.B VARIVEIS INDEXADAS BIDIMENSIONAIS (MATRIZES) ............................2817 - SUBALGORITMOS ...................................................3017.A FUNES...........................................................30Funes Predefinidas do Visualg .....................................30

    Criando Funes .....................................................32

    17.B PROCEDIMENTO (SUB_ROTINAS)...........................................3318 - FUNES DEFINIDAS RECURSIVAMENTE ................................3419 - REFERNCIAS .....................................................37CAPITULO 1 8 EXERCCIOS...............................................38CAPITULO 9 EXERCCIOS...................................................40CAPITULO 10 E 11 EXERCCIOS.............................................42CAPITULO 12 E 15 EXERCCIOS.............................................43CAPITULO 16 VETOR EXERCCIOS ............................................44

    CAPITULO 16 MATRIZ EXERCCIOS ...........................................45CAPITULO 17 SUBALGORITMO EXERCCIOS.....................................46CAPITULO 18 RECURSO EXERCCIOS.........................................48

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    3/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 3

    1 - Algoritmos No Computacionais

    Um algoritmo uma seqncia de instrues finita e ordenada de forma lgica para aresoluo de uma determinada tarefa ou problema. So exemplos de algoritmos instrues de

    montagem, receitas, manuais de uso, etc. Um algoritmo no a soluo do problema, pois, seassim fosse, cada problema teria um nico algoritmo; um algoritmo um caminho para asoluo de um problema. Em geral, existem muitos (seno infinitos) caminhos que levam auma soluo satisfatria.

    Um algoritmono computacional um algoritmo cuja seqncia de passos, a princpio,no pode ser executada por um computador. Abaixo apresentado um algoritmo nocomputacional cujo objetivo usar um telefone pblico. Provavelmente voc executou oalgoritmo deste exemplo diversas vezes. O termo algoritmo est muito ligado Cincia daComputao, mas, na realidade, ele pode ser aplicado a qualquer problema cuja soluo possaser decomposta em um grupo de instrues.

    Exemplo 1.1

    Um outro exemplo tpico de algoritmo uma receita culinria, como no exemplo abaixo.

    Exemplo 1.2Algoritmo para fritar um ovo

    1. Colocar um ovo na frigideira2. Esperar o ovo ficar frito3. Remover o ovo da frigideira

    O algoritmo acima, no entanto, poderia ser mais detalhado e completo. Uma versomais aceitvel seria:

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    4/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 4

    Exemplo 1.3

    Algoritmo para fritar um ovo

    1. Retirar um ovo da geladeira2. Colocar a frigideira no fogo3. Colocar leo4. Esperar at o leo ficar quente5. Quebrar o ovo separando a casca6. Colocar o contedo do ovo na frigideira7. Esperar um minuto8. Retirar o ovo da frigideira9. Apagar o fogo

    Essa segunda verso mais completa e detalhada que a anterior. Nela, vrias aesque estavam subentendidas foram explicitadas. No entanto, para que o algoritmo possa sertil, necessrio ainda que quem faz uso dele conhea os termos utilizados nas instrues. Oalgoritmo do exemplo s ser til para algum que seja fluente na lngua portuguesa econhea o significado dos verbos Retirar, Colocar, Esperar assim como dos substantivosutilizados no contexto de uma receita culinria. Em outras palavras, preciso que a linguagemutilizada no algoritmo seja conhecida tanto por quem o escreveu quanto por quem vaiexecut-lo.

    Para que o algoritmo possa ser executado por uma mquina importante que asinstrues sejam corretas e sem ambigidades. Portanto, a forma especial de linguagem queutilizaremos bem mais restrita que o Portugus e com significados bem definidos para todosos termos utilizados nas instrues. Essa linguagem conhecida como PortugusEstruturado (s vezes tambm chamada de Portugol). O portugus estruturado , na verdade,uma simplificao extrema do Portugus, limitada a umas poucas palavras e estruturas quetm um significado muito bem definido. Ao conjunto de palavras e regras que definem oformato das sentenas vlidas chamamos sintaxe da linguagem. Durante este texto, asintaxe do Portugus Estruturado ser apresentada progressivamente e a utilizaremos em

    muitos exerccios de resoluo de problemas.Aprender as palavras e regras que fazem parte dessa sintaxe fundamental; no

    entanto, no o maior objetivo deste curso. O que realmente exigir um grande esforo porparte do estudante aprender a resolver problemas utilizando a linguagem. Para isso, hsomente um caminho: resolver muitos problemas. O processo semelhante ao de tornar-secompetente em um jogo qualquer: aprender as regras do jogo (a sintaxe) s o primeiropasso, tornar-se um bom jogador (programador) exige tempo, muito exerccio e dedicao.

    Embora o Portugus Estruturado seja uma linguagem bastante simplificada, ela possuitodos os elementos bsicos e uma estrutura semelhante de uma linguagem tpica paraprogramao de computadores. Alm disso, resolver problemas com portugus estruturado,pode ser uma tarefa to complexa quanto a de escrever um programa em uma linguagem deprogramao qualquer. Portanto, neste curso, estaremos na verdade procurando desenvolver

    as habilidades bsicas que sero necessrias para adquirir-se competncia na programao decomputadores.Para praticar nossa sintaxe e testar nossos problemas, utilizaremos o software Visualg

    desenvolvida por Cludio Morgado de Souza. E-mail: [email protected].

    2 - Algoritmos Computacionais

    O computador, a princpio, no executa nada. Para que ele faa uma determinada tarefa -calcular uma folha de pagamento, por exemplo -, necessrio que ele execute um programa.Umprograma um conjunto de milhares de instrues que indicam ao computador, passo apasso, o que ele tem que fazer. Logo, um programa nada mais do que um algoritmocomputacional descrito em uma linguagem de programao. Uma linguagem de programaocontm os comandos que fazem o computador escrever algo na tela, realizar clculos

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    5/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 5

    aritmticos, receber uma entrada de dados via teclado, e milhares de outras coisas, mas estescomandos precisam estar em uma ordem lgica.

    O termo processamento de dados muitas vezes utilizado em conjunto comcomputadores, pois, em geral, isto o que eles fazem: processar dados. Da podem extrair osdois componentes bsicos de um algoritmo computacional (de agora em diante, esta palavra

    sempre utilizada no contexto de algoritmos computacionais):dados

    ecdigo

    . Dados so osvalores (nmeros, nomes, etc.) de que precisamos para resolver o problema, e cdigo so oscomandos ou instrues que usaremos para manipular e "processar" os dados.

    3 - Linearizao de Expresses

    Para a construo de algoritmos que realizam clculo matemticos, todas as expressesaritmticas devem ser linearizadas, ou seja, colocadas em linhas, devendo tambm ser feito omapeamento dos operadores da aritmtica tradicional para os do Portugus Estruturado.

    Exemplo 3.1

    ( )2 5 3 1 .53

    +

    ((2/3-(5-3))+1)*5

    Tradicional Computacional

    As tabelas seguintes mostram os operadores aritmticos disponveis no PortugusEstruturado.

    OPERADORES ARITMTICOS PORTUGUS ESTRUTURADO

    Adio +

    Subtrao -

    Multiplicao *

    Diviso /

    Diviso Inteira \

    Exponenciao ^ ou Exp(,)

    Mdulo (resto da diviso) %

    Os operadores relacionais realizam a comparao entre dois operandos ou duasexpresses e resultam em valores lgicos (VERDADEIROou FALSO).

    OPERADORES RELACIONAIS PORTUGUS ESTRUTURADO

    Maior >

    Menor =

    Menor ou igual

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    6/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 6

    Exemplo 3.22+5>4 resultaVERDADEIRO33 resulta FALSOOs operadores lgicos atuam sobre expresses e tambm resultam em valores lgicos

    VERDADEIROou FALSO.

    OPERADORESLGICOS

    PORTUGUSESTRUTURADO

    SIGNIFICADO

    Multiplicaolgica

    E ResultaVERDADEIROse ambas as partes forem verdadeiras.

    Adio lgica Ou ResultaVERDADEIROse uma das partes verdadeira.

    Negao NaoNega uma afirmao, invertendo o seu valor lgico: se forVERDADEIROtorna-se FALSO, se for FALSOtorna-seVERDADEIRO.

    A tabela abaixo chamada tabela-verdade mostra os resultados das aplicaes dosoperadores lgicos conforme os valores dos operadores envolvidos.

    A B A E B A OU B NO A NO B

    VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO

    VERDADEIRO FALSO FALSO VERDADEIRO FALSO VERDADEIRO

    FALSO VERDADEIRO FALSO VERDADEIRO VERDADEIRO FALSO

    FALSO FALSO FALSO FALSO VERDADEIRO VERDADEIRO

    De acordo com a necessidade, as expresses podem ser unidas pelos operadores

    lgicos.

    Exemplo 3.3(2+5>4) e (33) resulta FALSO, poisVERDADEIROe FALSOresulta FALSO.

    A modularizao a diviso de uma expresso em partes, proporcionando maiorcompreenso e definindo prioridades para a resoluo da mesma. Como pde ser observadono exemplo anterior, em expresses computacionais utilizamos somente parnteses "()" paramodularizao. Na sintaxe do Portugus Estruturado podemos ter parnteses dentro de

    parnteses, como seriam os colchetes e as chaves na matemtica.Os parnteses indicam quais sub-expresses, dentro de uma expresso, seroexecutados primeiro. A princpio, a execuo da esquerda para direita, mas alm dosparnteses, existem prioridades entre os operadores envolvidos na expresso. Tais prioridadesso mostradas nas tabelas seguintes.

    OPERADOR ARITMTICO PRIORIDADE

    Exponenciao 3 (maior)

    Multiplicao 2

    Diviso 2

    Adio 1Subtrao 1 (menor)

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    7/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 7

    Exemplo 3.4

    (2 + 2)/2resulta 2 e 2 + 2/2resulta 3

    OPERADOR LGICO PRIORIDADE

    e 3ou 2

    nao 1

    Exemplo 3.5(2>3) ou (3

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    8/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 8

    efetuar as operaes comparar, comprar, comer e servir; inicio indica o fim das declaraese o incio da seo de comandos; < lista de comandos > apenas uma indicao de queentre as palavras inicio e fimalgoritmo podemos escrever uma lista com uma ou maisinstrues ou comandos. importante salientar que, quando um algoritmo executado, asinstrues ou comandos de um algoritmo so sempre executados na ordem em que aparecem

    no mesmo.As palavras que fazem parte da sintaxe da linguagem so palavras reservadas, ouseja, no podem ser usadas para outro propsito em um algoritmo que no seja aqueleprevisto nas regras de sintaxe. A palavra algoritmo, por exemplo, uma palavra reservada.Neste texto, as palavras reservadas sempre aparecero em negrito.

    5 - Variveis

    Uma varivelpode ser vista como uma caixa com um rtuloou nomecolado a ela,que num dado instante guarda um determinado objeto. O contedodesta caixa no algofixo, permanente. Na verdade, essa caixa pode ter seu contedo alterado diversas vezes.Contudo, o contedo deve ser sempre do mesmo tipo.

    Na figura abaixo, a caixa (varivel) rotulada com FATOR contm o valor 5. Como seutipo numrico, em um determinado instante essa caixa poder conter qualquer valornumrico (inteiro ou fracionrio; positivo, negativo ou zero). Entretanto, em um determinadoinstante, ela conter um, e somente um, valor.

    Variveis so palavras que tem um significado bem especfico em um algoritmo. Paraque o computador possa executar comandos que envolvem variveis da maneira correta, eledeve conhecer os detalhes das variveis que pretendemos usar. Esses detalhes so: oidentificador desta varivel e o tipo de valores que essa varivel ir conter. Precisamos assim,de uma maneira de especificar esses detalhes e comunic-los ao computador. Para issodevemos declarar nossas variveis logo abaixo da expresso VARque tem a seguinte forma:

    VAR, , ..., :

    onde o nome (identificador) de uma varivel e determina que tipo de valor as variveis podero receber.

    Os identificadores das variveis so usados para referenci-las dentro do algoritmo.Tais identificadores devem ser claros e precisos, dando uma idia do papel da varivel noalgoritmo.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    9/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 9

    A identificao ou nomeao de variveis segue algumas regras:

    a. nomes de variveis no podem ser iguais a palavras reservadas;

    b. nomes de variveis devem possuir como primeiro caractere uma letra ousublinhado '_' (os outros caracteres podem ser letras, nmeros e sublinhado);

    c. nomes de variveis devem ter no mximo 127 caracteres;

    d. Nomes de variveis no podem conter espaos em branco;

    e. na sintaxe do Portugus Estruturado, no h diferena entre letras maisculas deminsculas (NOME o mesmo que noMe).

    Exemplo 5.1Identificadores vlidos: NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1,

    Est_CivilIdentificadores invlidos: 3Endereco, Estado Civil, PARA, algoritmo,

    numero/complemento

    Voc deve estar se perguntando por que a palavra PARA e algoritmo soidentificadores invlidos. Eles so invlidos, pois so palavras reservadas da linguagem, vejaoutras palavras que voc no deve utilizar como identificadores de variveis.

    PALAVRAS RESERVADAS

    aleatorio e grauprad passoabs eco inicio pausaalgoritmo enquanto int piarccos entao interrompa posarcsen escolha leia procedimentoarctan escreva literal quadarquivo exp log radpgrauasc faca logico raizqate falso logn randcaracter fimalgoritmo maiusc randicaso fimenquanto mensagem repitacompr fimescolha minusc secopia fimfuncao nao sencos fimpara numerico senaocotan fimprocedimento numpcarac timercronometro fimrepita ou tan

    debug fimse outrocaso verdadeirodeclare funo para xou

    Em Portugus Estruturado, s existem trs tipos de dados, conforme a tabela abaixo.

    TIPO DESCRIO

    INTEIRORepresenta valores inteiros.Exemplos: 10, 5, -5, -10

    REAL ouNUMERICO

    Representa valores reais (com ponto separador da parte decimal).Exemplos: 10, 15.5, -14.67

    LITERAL ouCARACTERE Representa texto (seqncia ou cadeia de caracteres) entre aspas duplas.Exemplo "Esta uma cadeia de caracteres", B, 1234

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    10/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 10

    LOGICO Representa valores lgicos (VERDADEIRO ou FALSO).

    6 - Operador de Atribuio

    Para colocar um valor em uma varivel dentro de um algoritmo, utilizamos ooperador de atribuio. O operador de atribuio representado por uma seta (

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    11/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 11

    algoritmos usamos o comando escreva para isto. A sintaxe desse comando tem a seguinteforma:

    Escreva (, , ..., )

    OBS.: No Visualg existem dois comandos escreva com finalidades diferentes quandousado consecutivamente.

    Escreval() //Mostra o primeiro resultado namesma linha depois em linhas diferentes.

    Escreva() //Mostra o resultado na mesmalinha, mas em colunas diferentes.

    Exemplo8.1X

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    12/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 12

    Exemplo8.3Escreva ("Digite seu nome: ")Leia (nome)Escreva ("Digite sua agencia: ")Leia (NumeroAgencia)Escreva ("Digite sua conta: ")Leia (NumeroConta)

    Deve estar claro que sempre direita do comando leia haver um identificador devarivel. Assim, so incorretosos seguintes comandos:

    Exemplo8.4 so incorretosleia (NumeroConta+60)leia (12345)leia (NomeCliente+Sobrenome)

    Exerccios na pgina 39

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    13/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 13

    9 - Construindo os Primeiros Algoritmos:Estruturas seqenciais

    De forma genrica, a construo de um algoritmo se resume s seguintes etapas:

    a) entendimento do problema;

    b) elaborao da soluo algortmica; e

    c) codificao da soluo no Portugus Estruturado;

    Geralmente a etapa 2 a mais complexa, pois depende da engenhosidade e experinciado construtor.

    Exemplo 9.1Enunciado: Faa um programa que leia dois valores numricos, e calcule e exiba a

    sua mdia aritmtica.Etapa 1

    Simples, hein? Dos tempos de escola lembramos que a mdia aritmtica de doisvalores calculada como (a+b)/2, e sendo assim a primeira etapa j est pronta.Etapa 2Os dados necessrios sero os dois valores, que colocaremos em duas variveis A e B,

    do tipo numrico, e uma terceira varivel, que chamaremos Mdia, que armazenar a mdiaaritmtica calculada.

    Etapa 3A obteno dos dados neste programa simples e direta. Basta pedir ao usurio que

    digite os valores.Etapa 4O processamento aqui o clculo da mdia, usando o mtodo citado acima, na etapa

    1. O resultado do clculo ser armazenado na varivel Mdia.

    Etapa 5Basta exibir o contedo da varivel Mdia.

    Soluo:

    1. Algoritmo "Clculo de Mdia Aritmtica"2. VAR3. A,B,Media : REAL4. Inicio5. Escreva ("Programa que calcula a mdia aritmtica de dois

    valores.")6. Escreva ("Digite um valor : ")7. Leia (A)8. Escreva ("Digite outro valor :")

    9. Leia (B)10. Media

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    14/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 14

    Exemplo 9.2

    Enunciado: Algoritmo que l o nome de um aluno, as notas de suas trs provas ecalcule e exibe a mdia harmnica das provas.

    Etapa 1: a mdia harmnica de trs provas a, be c dada pela frmula

    3

    1 1 1

    a b c+ +

    Etapa 2: os dados necessrios sero o nome do aluno e os valores das provas. Oalgoritmo limita-se basicamente prpria frmula.

    1. Algoritmo "MediaHarmonica"2. VAR3. a, b, c, MH:REAL4. NOME:CARACTER5. inicio1. escreva ("Entre com o nome do aluno: ")2. leia (nome)

    3. escreval ("Entre com as notas das trs provas")4. escreva ("Digite a primeira nota:")5. leia (a)6. escreva ("Digite a segunda nota:")7. leia (b)8. escreva ("Digite a terceira nota:")9. leia (c)10. MH

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    15/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 15

    10 - Estrutura Condicional

    Na vida real tomamos decises a todo o momento baseadas em uma situao existente.Em um algoritmo, chamamos esta situao de condio. Associada a uma condio, existiruma alternativa possvel de aes.

    Exemplo10.1"se tiver R$ 10,00 sobrando ento irei ao cinema hoje noite.

    A condio nesta frase "tiver R$ 10,00 sobrando". Ela uma expresso lgica, pois apergunta "Tenho R$ 10,00 sobrando?" Pode (tem que) ser respondida com "Sim" ou "No".Lembre-se, ento:em um algoritmo, toda condio tem que ser uma expresso lgica, algoque possa-se pensar como isto VERDADEIRO ou isto FALSO. Se a condio forverdadeira, a ao a ser executada "irei ao cinema", se a resposta pergunta "Tenho

    dinheiro suficiente?" for "Sim". Ento, em um algoritmo, as aes so um ou mais comandosque sero realizados apenas se a avaliao da condio resulta VERDADEIRO.Vamos colocar agora a frase do exemplo anterior em outra forma, mais parecida com

    nosso Portugus Estruturado:

    Exemplo10.2se"tiver R$ 10,00 sobrando" entao

    "irei ao cinema"fimse

    Veja que grifamos trs palavras: se,entao e fimse. Elas so muito importantes naestrutura dos comandos de deciso. Como prximo passo, vamos generalizar a estrutura que

    criamos acima:

    se entao

    fimse

    Para terminar a nossa comparao, devemos lembrar que os comandos de umalgoritmo so sempre indispensvel, e que o computador s lida com quantidades definidas(ou seja, ele no sabe o que "ter R$ 10,00 sobrando"). Para aproximar mais nossa frase de

    um algoritmo, poderemos ter a seguinte forma:

    Exemplo10.3seDinheiro >= 10 entao

    Ir_ao_Cinema

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    16/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 16

    Exemplo10.4seDinheiro >= 10 entao

    Ir_ao_Cinema

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    17/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 17

    > 0. Para expressar isso mais facilmente (e tambm por questes de eficincia), a maioria daslinguagens de programao permite associar um conjunto de instrues a ser executado se acondio do comando resultar em FALSO. Em Portugus Estruturado, a sintaxe para tal aseguinte:

    se entao

    senao

    fimse

    Utilizando o senao, o algoritmo para calcular a rea de um circulo, ficaria assim:

    Exemplo 10.8

    1. Algoritmo "Calcula Area do Circulo"2. VAR3. Area, Raio: Real4. inicio5. Escreval ("Entre com raio do crculo")6. Leia (Raio)7. Se Raio > 0entao8. Area = 10entao9. Escreval ("V ao cinema hoje noite.")10. Senao11. Escreval ("Fique em casa vendo TV.")12. Fimse13. Escreva ("Obrigado e volte sempre.")14. Fimalgoritmo

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    18/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 18

    Escolha...Caso

    Em algumas situaes necessrio termos vrias solues ligadas a respostasdiferentes, neste caso o comando de alternativa simples ou composta no uma soluoprtica, isto porque obrigar o programador a escrever muitas linhas de programa, alm de ter

    que criar vrios comandos de alternativas compostas e verificar a validade de suas condiespara que o comando execute o caminho correto para uma determinada condio. Temos entoo comando de alternativa de mltipla escolha.

    O funcionamento deste comando obedece a seguinte regra:escolha< expresso-de-seleo >

    caso< exp 1 > , < exp 2 >, ... , < exp n >

    < lista-de-comandos-1 >

    caso< exp 1 > , < exp 2 >, ... , < exp n >

    < lista-de-comandos-2 >

    outrocaso

    < lista-de-comandos-3 >

    fimescolha

    Exemplo 10.10Um determinado clube de futebol pretende classificar seus atletas em categorias e para

    isto ele contratou um programador para criar um programa que executasse esta tarefa. Paraisso o clube criou uma tabela que continha a faixa etria do atleta e sua categoria. A tabelaest demonstrada abaixo:

    IDADE CATEGORIADe 05 a 10 InfantilDe 11 a 15 JuvenilDe 16 a 20 JuniorDe 21 a 25 ProfissionalConstrua um programa que solicite o nome e a idade de um atleta e imprima a sua categoria.

    1. Algoritmo"CLASSIFICAO DE ATLETAS2. var3. nome, categoria : caractere4. idade : inteiro5. inicio6. Escreva("Nome do Atleta = ")7. Leia(nome)

    8. Escreva("Idade do Atleta = ")9. Leia(idade)10. Escolhaidade11. caso5,6,7,8,9,1012. categoria

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    19/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 19

    11 - Testando o Algoritmo

    Um algoritmo, depois de ser elaborado, pode (e deve) ser testado. Para tal, utilizamosum mtodo conhecido como teste de mesa. O teste de mesa como uma simulao de todosos passos, ou seja, entradas, comandos e instrues do algoritmo, a fim de saber se ele chegaao resultado a que se prope e se a lgica est correta. Para tal, preenche-se uma tabela comvalores para as variveis e segue-se o fluxo de execuo do algoritmo, simulando a execuode cada instruo, ou seja, refazendo o que o computador faria ao executar cada instruo. Acada comando simulado (executado), o valor das variveis na tabela deve ser atualizado. Se,para uma instruo executada, uma ou mais variveis no ficaram com os valores esperados,h um erro na lgica do algoritmo.

    Exemplo 11.1Para cada varivel voc deve fazer uma coluna e uma coluna para sada de dados.

    Algoritmo Teste de MesaAlgoritmo

    Var

    a,b,c: REAL a b c Sada

    Inicio ? ? ?

    a

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    20/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 20

    12 - Estrutura de Repetio

    Nos exemplos e exerccios que vimos at agora sempre foi possvel resolver osproblemas com uma seqncia de instrues onde todas eram necessariamente executadas

    uma nica vez. Os algoritmos que escrevemos seguiam, portanto, apenas uma seqncialinear de operaes. Veja, por exemplo, um algoritmo para ler os nomes e as notas dasprovas de trs alunos e calcular suas mdias harmnicas. Uma possvel soluo seria repetir otrecho de cdigo do algoritmo do Exemplo 9.2trs vezes.

    Exemplo 12.1Algoritmo que l os nomes dos alunos de uma turma de trs alunos e as notas de

    suas trs provas; o algoritmo calcula e exibe as mdias harmnicas das provas de cadaaluno.

    1. Algoritmo "MediaHarmonica"2. VAR3. a, b, c, MH: REAL4. NOME: caractere5. inicio6. escreva ("Entre com o nome do aluno: ")7. leia (nome)8. escreval ("Entre com as notas das trs provas")9. escreva ("Digite a primeira nota:")10. leia (a)11. escreva ("Digite a segunda nota:")12. leia (b)13. escreva ("Digite a terceira nota:")14. leia (c)15. MH

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    21/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 21

    comandos) seja repetido um determinado nmero de vezes, sem que o cdigo correspondentetenha que ser escrito mais de uma vez. Em Portugus Estruturado possui trs estruturas derepetio: repita...ate, enquanto...facae para...faca.

    13 - Comando repita...AteNessa estrutura, todos os comandos da lista so executados e uma expresso lgica

    avaliada. Isto se repete at que a avaliao da condio resulte em FALSO, quanto ento oprximo comando a ser executado o comando imediatamente aps o ate. Cada repetio dalista de comandos tambm chamada de iterao e essa estrutura tambm chamada de laode repetio. Sua forma geral :

    repita

    ate

    Exemplo 13.1

    Algoritmo que escreve os nmeros de 1 a 10.

    1. algoritmo "DemonstraRepeticao"2. VAR3. i: INTEIRO4. inicio5. i

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    22/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 22

    14. leia (b)15. escreva ("Digite a terceira nota: ")16. leia (c)17. MH

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    23/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 23

    Exemplo 13.5

    1. algoritmo laoInfinito2. VAR3. Soma:numerico4. inicio

    5. Soma

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    24/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 24

    Exemplo 13.7

    1. algoritmo "Menu"2. VAR3. opcao: inteiro

    4. inicio5. repita6. escreval ("Cadastro de clientes")7. escreval ("1-Incluir")8. escreval ("2-Alterar")9. escreval ("3-Consultar")10. escreval ("4-Excluir")11. escreval ("5-Sair")12. leia(opcao)13. ate opcao = 514. fimalgoritmo

    No exemplo acima, mostra como feito um menu de cadastro de clientes, onde mostro

    as opes primeiro e depois compar-las conforme o usurio digitar;

    14 - Comando Enquanto..faca

    Na estrutura enquanto..faca, a expresso lgica avaliada e, se ela for verdadeira, alista de comandos executada. Isso se repete at que a condio seja falsa. Veja a sua formageral:

    enquanto faca

    fimenquanto

    A estrutura enquanto...faca tambm uma estrutura de repetio, semelhante repita. A diferena bsica entre as duas estruturas a posio onde testada a expresso.Na estrutura repita, a condio avaliada aps a execuo dos comandos, o que garante queos comandos sero executados pelo menos uma vez. Na estrutura enquanto, a expresso avaliada no incio e se o resultado for FALSO no primeiro teste, a lista de comandos no executada nenhuma vez. Essa diferena faz com que em determinadas situaes o uso de umaestrutura seja mais vantajoso que o uso da outra. O exemplo a seguir, onde so mostradasduas solues para um mesmo problema, ilustra essa diferena:

    Exemplo14.1

    Algoritmo que l diversos nmeros positivos e escreve, para cada um, sua raizquadrada.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    25/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 25

    Exemplo14.1

    Algoritmo que l diversos nmeros positivos e escreve, para cada um, sua raizquadrada.

    1. algoritmocomEnquanto2. var

    3. i:numerico4. inicio5. leia(i)6. enquantoi >=0 faca7. escreva(i^0.5)8. leia(i)9. fimenquanto10. fimalgoritmo

    1. algoritmocomRepita2. var

    3. i:numerico4. inicio5. repita6. leia(i)7. sei >=0 entao8. escreva(i^0.5)9. fimse10. atei

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    26/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER 26

    Exemplo 15.2

    Algoritmo que l 5 nmeros e escreve todos os que forem positivos.1. Algoritmo "Positivos"2. var3. i, numero: inteiro4. inicio5. para i de 1 ate 5 passo 1 faca6. escreval ("Digete um numero")7. leia (numero)8. se numero>0 entao9. escreva (numero)10. fimse11. fimpara12. fimalgoritmo

    Neste algoritmo so utilizadas duas variveis, cada uma com uma funo bem definida.A varivel i usada para controlar o nmero de repeties e a varivel numero utilizada paraarmazenar cada um dos valores lidos. Ao escrever um algoritmo, importante ter bem clara a

    funo de cada varivel. Como sero lidos 5 nmeros diferentes, a leitura de numerodeve serfeita dentro do lao.

    Exemplo 15.3

    Algoritmo que l um nmeroN e escreve todos os nmeros de 1 aN.1. algoritmo "determina o tamanho do lao"2. var3. i, N: INTEIRO4. inicio5. leia (N)6. para i de 1 ate N faca

    7. escreva (i)8. fimpara9. fimalgoritmo

    Vale observar que, como nesse algoritmo lido apenas um nmero, sua leitura deveser feita fora da estrutura de repetio. Note que no possui a sintaxe passo, pois o passo +1 definido como padro.

    Lembrete:O valor I e N do exemplo acima tem que ser inteiro, pois se for declaradocomo um valor real ou numrico o algoritmo retornara com um erro de sitaxe.

    Exerccios na pgina 44

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    27/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET & CRISTIAN KOLIVER

    16 - Variveis Compostas Homogneas

    A declarao de variveis, uma a uma, suficiente para a codificao algortmica da

    soluo de uma ampla gama de problemas, mas insuficiente para resolver um grandenmero de problemas computacionais. Imagine, por exemplo, como faramos para construirum algoritmo, que lesse os nome de 500 pessoas e imprimisse um relatrio destes mesmosnomes, mas ordenados alfabeticamente. No seria uma tarefa simples, pois teramos quedefinir 500 variveis do tipo literal, como mostrado abaixo:

    Exemplo 16.11. algoritmo"Invivel"2. var3. nome1, nome2, nome3, nome4, nome5,..., nome499, nome500: literal4. inicio5. leia(nome1,nome2,...,nome500)

    6. ...7. Fimalgoritmo

    Considere o tamanho do algoritmo, e o trabalho braal necessrio para constru-lo. Pararesolver problemas como este, e outros, existem as variveis indexadas. A declarao deuma varivel indexada corresponde, na verdade, declarao de vrias variveis cujoidentificador difere apenas por um ndice. O ndice corresponde a um valor numricocomeando por 1. Cada varivel indexada pode receber valores no decorrer do algoritmocomo se fosse uma varivel comum.

    16.a Variveis Indexadas Unidimensionais (Vetores)

    Variveis indexadas com uma nica dimenso, tambm conhecidas como vetores, soreferenciadas por um nico ndice. A sintaxe para declarao :

    : vetor [] de < tipo >

    Tamanho [VI..VF]=> Vi= Valor inicial do ndice e VF valor Final do ndice.

    Exemplo 16.28. IDADE: VETOR [1..5] DE INTEIRO9. NOMES: VETOR [1..5] DE CARACTERE

    A declarao acima corresponde declarao de 10 variveis: nomes[1], nomes[2],nomes[3], nomes[4], nomes[5], idades[1], idades[2], idades[3], idades[4] e idades[5].

    Para se atribuir um valor a um elemento do vetor devemos utilizar o seguinte padro:

    < identificador>[]

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    28/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 28

    Exemplo 16.4

    Algoritmo que l um vetor NUMERO de 6 posies e o escreve. A seguir, ele contaquantos valores de NUMEROso negativos e escreva esta informao.

    1. Algoritmo "vetores"2. VAR3. NUMERO: VETOR [1..6] DE REAL4. I, conta_neg:INTEIRO5. inicio6. conta_neg Vi= Valor inicial do ndice e VF valor Final do ndice.

    Exemplo 16.5PESSOAS: VETOR [1..2,1..3] DE CARACTERE

    A declarao acima corresponde declarao de 6 variveis: PESSOAS[1,1], PESSOAS[1,2], PESSOAS[1,3], PESSOAS[2,1], PESSOAS[2,2], ePESSOAS [2,3].

    Para se atribuir um valor a um elemento do vetor devemos utilizar o seguinte padro:

    < identificador>[,]

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    29/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 29

    Exemplo 16.7

    Algoritmo que l uma matriz v Valores(3,3)e calcula as somas:a) da linha 3 de Valores;b) da coluna 2 de Valores;c) da diagonal principal;

    d) da diagonal secundria; ee) de todos os elementos da matriz.

    1. Algoritmo "Matriz"2. VAR3. VALORES : VETOR [1..3,1..3] DE REAL4. somaLinha3, somaColuna2, somaDiagPrinc, somaDiagsecu, somaTudo:REAL5. i, j:INTEIRO //os ndice sempre inteiro6. inicio7. somaLinha3

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    30/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 30

    17 - Subalgoritmos

    So trechos de algoritmos que efetuam um ou mais clculos determinados. Ao invs deescrever-se um algoritmo grande, escrevem-se vrios algoritmos menores, os quais, noisoladamente, mas em conjunto, resolvem o problema proposto. conveniente utiliz-los

    quando uma determinada tarefa efetuada em diversos lugares no mesmo algoritmo. Ao invsde escrever-se um trecho diversas vezes, escreve-se um sub-algoritmo e chama-se-o diversasvezes.

    - Eles reduzem o tamanho do algoritmo.- Facilitam a compreenso e visualizao do algoritmo.- So declarados no incio do algoritmo e podem ser chamados em qualquer ponto aps

    sua declarao.- Eles podem ser Funes que retorna algum valor ou Procedimento (Subrotina) que

    no retorna nada.

    17.AFunes

    Uma funo um instrumento (Esttico) que tem como objetivo retornar um valor ouuma informao. A chamada de uma funo feita atravs da citao do seu nome seguidoopcionalmente de seus argumentos iniciais entre parnteses. As funes podem serpredefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse.

    Funes Predefinidas do Visualg

    O visulag vem com bibliotecas de funes predefinidas que voc pode utilizar em seusprogramas.

    Veja a tabela abaixo:

    FUNO DESCRIO

    Abs(valor : real) : real Valor absolutoArccos(valor : real) : real Arco cosseno

    Arcsen(valor : real) : real Arco seno

    Arctan(valor : real) : real Arco tangente

    Asc(s : caracter) : inteiro Retorna o cdigoASCII

    Compr(c : caracter) : inteiro Retorna a dimensodo caractere

    Copia(c : caracter , posini, posfin : inteiro) : caracter Copia um determinado

    trecho do caractereCos(valor : real) : real Cosseno

    Cotan(valor : real) : real Co-tangente

    Exp(,) Potenciao

    Grauprad(valor : real) : real Converte grau pararadiano

    Int(valor : real) : inteiro Converte o valor eminteiro

    Log(valor : real) : real Logaritmo de base 10

    Logn(valor : real) : real Logaritmo natural (ln)

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    31/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 31

    Maiusc(c : caracter) : caracter Converte emMaiscula

    Minusc(c : caracter) : caracter Converte emMinscula

    Numpcarac(n : inteiro ou real) : caracter Converte um numerointeiro ou real paracaractere

    Pi: real Valor Pi

    Pos(subc, c : caracter) : inteiro Retorna a posio docaractere.

    Quad(valor : real) : real Elevado quadrado

    Radpgrau(valor : real) : real Converte Radiano paragrau.

    Raizq(valor : real) : real Raiz quadrada

    Rand: real Gerador de nmerosaleatrios entre 0 e 1

    Randi(limite : inteiro) : inteiro Gerador de nmerosinteiros aleatrios comum limite determinado

    Sen(valor : real) : real Seno

    Tan(valor : real) : real Tangente

    DICA:Pressionando (CTRL+J) o visualg mostra uma Lista de funes predefinidas, a sua

    utilizao muito simples basta selecionar a funo desejada e dar um Enter, depois spassar os parmetros desejados.

    Exemplo 17.11. Algoritmo"RETORNA O SOBRENOME"2. var3. nome, sobrenome : Caractere4. quant_caracteres, local_espcao : INTEIRO5. inicio6. nome

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    32/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 32

    Exemplo 17.21. Algoritmo"RETORNA UM VALOR INTEIRO"2. var3. valorReal : REAL4. valorInteiro : INTEITO5. inicio

    6. valorReal

    fimalgoritmo

    Sintaxe da Funo

    funcao ([var])

    var

    inicio

    retorne

    fimfuncao

    Identificador:Nome da funo.Passagem de parmetros por referncia: utiliza-se a construo VAR antes dos

    identificadores para indicar a passagem por referncia. Os identificadores so separados porvrgula.

    Parmetros:Entre um mesmo tipo de dados so separados por vrgula. Entre tipos dedados a separao feita com ponto-e-vrgulas ';'.

    Tipo de retorno da funo:Real, Inteiro, Lgico ou Caractere.Declarao de variveis locais: idntica a declarao de variveis globais. As

    variveis declaradas localmente tem validade dentro do escopo da funo.Retorne: local onde colocado a varivel de retorno.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    33/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 33

    CuidadosSempre declare as variveis globais antes da funo.A funo sempre fica dentro do escopo Algoritmo e Fim Algoritmo.Procure no Declarar variveis globais com o mesmo nome das variveis da funo.

    Exemplo 17.31. ALGORITMO"Funes Personalizadas"2. var3. Valor_1,Valor_2, soma: real4.5. FUNCAOFSoma(Recebe_valor1, Recebe_valor2: Real):Real6. var7. total : real8. Inicio9. total

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    34/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 34

    Exemplo 17.41. ALGORITMO"Procedimento"2.3. var4. A,B,C,D,CONT,AUX:Inteiro5.

    6. ProcedimentoTROCA(var x, y: inteiro)7. var8. Aux : inteiro9. INICIO10. Aux

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    35/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 35

    Para que esteja bem definida, uma funo recursiva deve possuir as seguintes propriedades:

    (1) Deve haver certos argumentos, chamando valores bsicos, para os quais afuno no se refere a ela mesma.

    (2) Sempre que a funo se refere a ela mesma o argumento deve estar relacionadoa um valor bsico e/ou a um valor anterior.

    Vejamos um exemplo clssico para esclarecermos o conceito: calculo do fatorial de umnmero. A definio de fatorial :

    F(n) = 1 se n = 0 ou n = 1;F(n) = n.F(n-1), se n>1.onde n um numero inteiro positivo. Uma propriedade (facilmente verificvel) dos

    fatoriais que:n! = n . (n-1)!

    Esta propriedade chamada de propriedade recursiva: o fatorial de um numero podeser calculado atravs do fatorial de seu antecessor. Ora, podemos utilizar esta propriedadepara escrevermos uma rotina recursiva para o calculo de fatorial. Veja:

    F(4) = 4.F(4-1)

    F(3) = 3.F(3-1)

    F(2) = 2.F(2-1)

    F(1) = 1.F(1-1)

    F(0) = 1 imagina a funo subindo, pois encontrou F(0) = 1

    F(1) = 1.1F(2) = 2.1

    F(3) = 3.2

    F(4) = 4.6

    resposta 24.

    Qual a lgica neste problema?

    4x3x2x1=24

    Se fosse n 6 qual seria a resposta?

    6x5x4x3x2x1=720

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    36/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 36

    Vamos passar isso para o Computador

    Os algoritmos recursivos tm em geral a forma seguinte:

    caso de base (base de recurso), onde o problema resolvido diretamente (semchamada recursiva)

    caso geral, onde o problema resolvido com uma chamada recursiva

    caso geral onde o tamanho do problema menor a cada chamada

    Esquematicamente, os algoritmos recursivos tm a seguinte forma:

    se"condicao para o caso de base" entaoresolucao direta para o caso de base

    senaouma ou mais chamadas recursivas

    fimse

    Um algoritmo recursivo pode ter um ou mais casos de base e um ou mais casos gerais. E para queo algoritmo termine, as chamadas recursivas devem convergir em direo ao caso de base, seno oalgoritmo no terminar jamais. Convergir significa ter uma parte menor do problema para ser resolvido.

    F(4) = 4.F(4-1)F(3) = 3.F(3-1)

    F(2) = 2.F(2-1)F(1) = 1.F(1-1)

    F(0) = 1 ------------ Caso BaseF(1) = 1.1

    F(2) = 2.1F(3) = 3.2

    F(4) = 4.6

    Exemplo 18.130. Algoritmo"Funo Recursiva"31. var32. A, Fatorial: Inteiro33.34. FuncaoFat (x:Inteiro):Inteiro35. inicio36. se x=0 entao

    37. retorne 138. senao39. retornex * Fat (x-1)40. Fimse41. FimFuncao42.43. inicio44. Leia(A)45. Fatorial

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    37/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 37

    Vantagens da RecursoSimplifica a soluo de alguns problemas;Geralmente, um cdigo com recurso mais conciso;Caso no seja usada, em alguns problemas, necessrio manter o controle das variveis

    manualmente.

    Desvantagens da Recurso

    Funes recursivas so mais lentas que funes iterativas, pois muitas chamadas consecutivas a funesso feitas;Erros de implementao podem levar a estouro de pilha. Isto , caso no seja indicada uma condio deparada, ou se esta condio nunca for satisfeita, entre outros.

    Exerccios na pgina 49

    19 - Referncias

    http://www.apoioinformatica.inf.br/http://www.consiste.dimap.ufrn.br/~david/http://www.inf.pucrs.br/%7Eegidio/algo1/http://dein.ucs.br/Disciplinas/sis218-algoritmos/2003-2/sis218d/cronog_algo.htmlhttp://www.inf.ufpr.br/info/http://www.angelfire.com/bc/fontini/algoritm.htmlapostila de lgica de programao criao de algoritmos e programas professor renato da costa

    Gostaria de agradecer pessoalmente o criador do Visualg Professor Cludio Morgado de Souza porder dado apoio a este Manual e tirado algumas dvidas do programa.

    Mande um e-mail: [email protected] para receber todas as solues dos exerccios

    Visite a pgina : http://dein.ucs.br/napro

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    38/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 38

    Capitulo 1 8 Exerccios

    1) Escreva as expresses abaixo na forma na sintaxe do Portugus Estruturado.

    A.

    B.

    C.

    D.

    2) Escreva as Expresses da forma convencional.

    A. a + b + ((34+e*9)/u-89 ^ (1/2)) =

    B. 12+1/((4*a)/45) (1/2) =

    C. ((a+x) (2+w)-3a)/2 =

    D. (12*x)/(36-9 ^ y) =

    4) Resolva as expresses lgicas, determinando se a expresso verdadeira ou falsa:A. 2>3=

    B. (67)=

    C. no (2=6 ou 69 e 5+u = 34) ou (5=15/3 e 8>12) = ((u = 29) e 8>12) {onde u = 29}

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    39/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 39

    5) Classifique os contedo das variveis abaixo de acordo com seu tipo, assinalando com Nos dados numricos, com L os lgicos, com C os literais.

    ( ) 0 ( ) "abc" ( ) "Joo"

    ( ) 5.7 ( ) 1012 ( ) FALSO

    ( ) -49 ( ) +342 ( ) 569

    ( ) "Lucas" ( ) "VERDADEIRO" ( ) 0.00001

    ( )VERDADEIRO ( ) -545 ( ) " 444 "

    6) Assinale com um X os nomes de variveis vlidos.

    ( ) abc ( ) 3abc ( ) a

    ( ) 123a ( ) a ( ) acd1

    ( ) -_ad ( ) A&a ( ) guarda-chuva

    ( ) A123 ( ) Aa ( ) guarda_chuva

    ( ) ABC DE ( ) etc. ( ) b316

    ( ) leia ( ) enquanto ( ) escreva

    7) Assinalar os comandos de atribuio considerados invlidos:

    varNOME, COR, TESTE, DIA: caracterSOMA, NUM: inteiroSalario: realX: lgico

    a. ( ) NOME

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    40/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 40

    9) Analise o seguinte algoritmo e descreva o que ele faz.

    1. AlgoritmoPrimeiroAlgoritmo2. var3. NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: real

    4. NOME: caracter5. inicio6. leia(NOME)7. leia(NOTA1)8. leia(NOTA2)9. leia(NOTA3)10. leia(NOTA4)11. MEDIA

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    41/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 41

    c) A rea da superfcie de um cubo que tem c por aresta

    readocubo aresta=6 2

    *

    Exerccio 2 Faa um algoritmo que determine o volume de uma caixa dgua cilndrica, sendo que o raio e a alturadevem ser fornecidos (lidos pelo teclado).

    V = PI * Raio^2 * Altura

    Exerccio 3 Escrever um algoritmo que l o nome de um funcionrio, o nmero de horas trabalhadas, o valor querecebe por hora e o nmero de filhos. Com estas informaes, calcular o salrio deste funcionrio, sabendo

    que para cada filho, o funcionrio recebe 3% a mais, calculado sobre o salrio bruto.

    Exerccio 4 Escrever um algoritmo que l o nome de um vendedor, o seu salrio fixo, o total de vendas por eleefetuadas e o percentual que ganha sobre o total de vendas. Calcular o salrio total do vendedor. Escrevero nmero do vendedor e seu salrio total.

    Exerccio 5Faa um algoritmo que leia o nome de um piloto, uma distncia percorrida em km e o tempo que opiloto levou para percorr-la (em horas). O programa deve calcular a velocidade mdia - Velocidade =Distncia / Tempo- em km/h, e exibir a seguinte frase:A velocidade mdia do foi km/h.

    DESAFIO 1

    Em uma pizzaria, cada tulipa de chopp custa R$ 0,80 e uma pizza mista grande custaR$10,00 mais R$1,50 por tipo de cobertura pedida (queijo, presunto, banana, etc.). Umaturma vai pizzaria e pede uma determinada quantidade de "chopps" e uma pizza grande comuma determinada quantidade de coberturas. faa um algoritmo que calcule e conta e, sabendoquantas pessoas esto mesa, quanto que cada um deve pagar (no esquea os 10% dogarom).

    DESAFIO 2Escreva um algoritmo que calcule o nmero de notas e de moedas que deve ser dado de troco paraum pagamento efetuado. O algoritmo deve ler o valor a ser pago e o valor efetivamente pago. Supor queo troco seja dado em notas de 50, 20, 10, 5, 2 e 1 real.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    42/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 42

    Capitulo 10 e 11 Exerccios

    Exerccio 1 Escreva um programa que leia um nmero inteiro. Se o nmero lido for positivo, escreva umamensagem indicando se ele par ou mpar. Se o nmero for negativo, escreva a seguinte mensagemEste nmero no positivo.

    Exerccio 2 Faa um algoritmo que receba o valor do salrio de uma pessoa e o valor de um financiamentopretendido. Caso o financiamento seja menor ou igual a 5 vezes o salrio da pessoa, o algoritmo deverescrever "Financiamento Concedido"; seno, ele dever escrever "Financiamento Negado".Independente de conceder ou no o financiamento, o algoritmo escrever depois a frase "Obrigado pornos consultar."

    Exerccio 3 Fazer um algoritmo que escreva o conceito de um aluno, dada a sua nota. Supor notas inteirassomente. O critrio para conceitos o seguinte:

    Nota Conceito

    nota inferiores a 3 conceito E

    nota de 3 a 5 conceito D

    notas 6 e 7 conceito C

    notas 8 e 9 conceito B

    nota 10 conceito A

    Exerccio 4 A empresa XYZ decidiu conceder um aumento de salrios a seus funcionrios de acordo com a tabelaabaixo:

    SALRIO ATUAL NDICE DE AUMENTO0 400 15%401 700 12%701 1000 10%1001 1800 7%1801 2500 4%ACIMA DE 2500 SEM AUMENTO

    Escrever um algoritmo que l, para cada funcionrio, o seu nome e o seu salrio atual. Apsreceber estes dados, o algoritmo calcula o novo salrio e escreve na tela as seguintes informaes:

    Desafio

    Faa um programa que l 4 valores I, A, Be CondeI um nmero inteiro e positivo e A, B, eCsoquaisquer valores reais. O programa deve escrever os valores lidos e:

    se I = 1, escrever os trs valores A,BeCem ordem crescente; se I = 2, escrever os trs valores A, Be Cem ordem decrescente;

    se I = 3, escrever os trs valores A, B, e Cde forma que o maior valor fique entre os outrosdois; se I no for um dos trs valores acima, dar uma mensagem indicando isto.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    43/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 43

    Capitulo 12 e 15 Exerccios

    Exerccio 1Escrever um algoritmo que l um nmero desconhecido de valores, um de cada vez, e conta quantosdeles esto em cada um dos intervalos [0,25], (25,50], (50,75], (75,100].

    Exerccio 2Escrever um algoritmo que leia informaes sobre um grupo de 250 pessoas e calcule alguns dadosestatsticos. Para cada pessoas do grupo deve ler o nome da pessoa, a altura, o peso e o sexo (F parafeminino e M para o masculino). Calular e escrever:A quantidade total de homens e mulheres e o percentual de cada.A mdia de peso das pessoas (somatrio dos pesos de todas as pessoas pela quantidade de pessoas)O nome da pessoa mais alta.

    Exerccio 3Escrever um algoritmo que gera e escreve os 4 primeiros nmeros perfeitos. Um nmero perfeito

    aquele que igual soma dos seus divisores. Ex: 6 = 1+2+3, 28 = 1+2+4+7+14.

    Exerccio 4 Escrever um algoritmo que l um nmero no determinado de valores para m, todos inteiros epositivos, um de cada vez. Se m for par, verificar quantos divisores possui e escrever esta informao.Se m for mpar e menor do que 12 calcular e escrever o fatorial de m. Se m for mpar e maior ou igual a12 calcular e escrever a soma dos inteiros de 1 at numero lido.

    Exerccio 5Faa um algoritmo que gere uma tabela com os nmeros de 1 a 10 e mostre o seu quadrado, cubo,fatorial, nmero de divisores e uma mensagem dizendo se o nmero primo ou no. A cada 20 linhas

    deve ser escrito o cabealho novamente:

    "Nmero Quadrado Cubo Fatorial Divisores Primo"1 1 1 1 1 Sim2 4 8 2 2 Sim

    Desafio

    Escrever um algoritmo que l um conjunto no determinado de pares de valores a, b, todos inteirose positivos, e para cada par lido, obtm o M.D.C. e o M.M.C. de a,b, escrevendo-os juntamente com osvalores lidos.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    44/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 44

    Capitulo 16 Vetor Exerccios

    Exerccio 1Escreva um algoritmo que l um vetor A(10) e escreva a posio de cada elemento igual a 10 deste

    vetor.Exerccio 2Escrever um algoritmo que l um vetor X(100) e o escreve. Substitua, a seguir, todos os valoresnulos de X por 1 e escreva novamente o vetor X.

    Exerccio 3Faa um algoritmo que leia 100 valores e os escreva na ordem contrria que foram digitados.

    Exerccio 4Escrever um algoritmo que l um vetor N(80) e o escreve. Encontre, a seguir, o menor elemento e asua posio no vetor N e escreva: "O menor elemento de N = .. . e a sua posio ... ".

    Exerccio 5Escrever um algoritmo que l um vetor N(20) e o escreve. Troque, a seguir, o 1* elemento com oltimo, o 2* com o penltimo, etc at o 10* com o 11* e escreva o vetor N assim modificado.

    Exerccio 6 Escreva um algoritmo que gera os 10 primeiros nmeros primos acima de 100 e os armazena em umvetor X(10)escrevendo, no final, o vetor X.

    Exerccio 7 Escrever um algoritmo que l um vetor G(13) que o gabarito de um teste de loteria esportiva,

    contendo os valores 1(coluna 1), 2(coluna 2) e 3(coluna do meio). Ler, a seguir, para cada apostador, onmero de seu carto e um vetor Resposta R(13). Verificar para cada apostador o nmero de acertos eescrever o nmero do apostador e seu nmero de acertos. Se tiver 13 acertos, acrescentar a mensagem:"GANHADOR, PARABENS".

    Exerccio 8Escrever um algoritmo que l um vetor A(15) e o escreve. Ordene a seguir os elementos de A emordem crescente e escreva novamente A.

    DESAFIOEscrever um algoritmo que l, para um vetor V(30), vinte valores que ocuparo as 20 primeiras posies

    do vetor V. Ordene, a seguir, os elementos de V em ordem crescente. Leia, a seguir 10 valores A, umpor vez, e insira-os nas posies adequadas do vetor V, de forma que o mesmo continue ordenado emordem crescente. Escreva o vetor V assim formado.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    45/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 45

    Capitulo 16 Matriz Exerccios

    Exerccio 1 Escrever um algoritmo para armazenar valores inteiros em uma matriz (5,6). A seguir, calcular amdia dos valores pares contidos na matriz e escrever seu contedo.

    Exerccio 2Escrever um algoritmo para ler uma matriz (7,4) contendo valores inteiros (supor que os valores sodistintos). Aps, encontrar o menor valor contido na matriz e sua posio.

    Exerccio 3Escreva um algoritmo que l uma matriz M(5,5) e calcula as somas:

    a) da linha 4 de M.b) da coluna 2 de M.c) da diagonal principal.d) da diagonal secundria.e) de todos os elementos da matriz.f) Escreva estas somas e a matriz.

    Exerccio 4 Escrever um algoritmo que l uma matriz M(5,5) e cria 2 vetores SL(5), SC(5) que contenhamrespectivamente as somas das linhas e das colunas de M. Escrever a matriz e os vetores criados.

    Exerccio 5Escrever um algoritmo que l duas matrizes N1(4,6)e N2(4,6)e cria:a) Uma matriz M1que seja a soma de N1e N2

    b) Uma matriz M2que seja a diferena de N1com N2Escrever as matrizes lidas e calculadas.

    Exerccio 6 Escrever um algoritmo que l uma matriz M(6,6) e calcula as somas das partes hachuradas. Escrevera matriz M e as somas calculadas.

    Exerccio 7 Na teoria de Sistemas define-se elemento mnimax de uma matriz, o menor elemento da linha em quese encontra o maior elemento da matriz. Escrever um algoritmo que l uma matriz A(10,10) e determinao elemento mnimax desta matriz, escrevendo a matriz A e a posio do elemento mnimax.

    Exerccio 8

    Escreva um algoritmo que ordene os elementos de cada linha de uma matriz M[10,10].

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    46/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 46

    DesafioEscrever um algoritmo que gere e escreva o quadrado mgico de ordem 7.

    Um quadrado mgico de ordem n (sendo n um nmero mpar) um arranjo de nmeros de 1 at n2em

    uma matriz quadrada de tal modo que a soma de cada linha, coluna ou diagonal a mesma.

    5 4 7

    6 4 3

    2 0 3

    1 9 2 0

    5 8 1

    A figura mostra um quadrado mgico de ordem 5. A regra de formao relativamente fcil de serverificada: Comece com o 1 no meio da primeira linha. partir da siga para cima e para esquerdadiagonalmente (quando sair do quadrado suponha que os lados superior e inferior esto unidos e os ladosesquerdo e direito da mesma forma). Em cada quadrado que passar coloque o valor do quadrado anterioracrescido de uma unidade. Quando atingir um quadrado j preenchido, desa um quadrado e o preenchae continue seguindo a diagonal at ter colocado o valor n2.

    Capitulo 17 Subalgoritmo Exerccios

    Exerccio 1Escrever um algoritmo para determinar se um determinado nmero inteiro par ou mpar. Utilizarum subalgoritmo de funo que retorna um valor lgico para indicar se o valor recebido par ou no.

    Exerccio 2Escreva um algoritmo que l um nmero no determinado de valores m, todos inteiros e positivos, umvalor de cada vez, e, se m

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    47/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 47

    Quando for escolhida a opo nmero 2, uma subrotina chamada removedeve eliminar um elemento deum vetor. A subrotina deve receber por parmetro a posio (ndice) do elemento a ser eliminado, otamanho do vetor e o nome do vetor.Quando for escolhida a opo nmero 3, uma subrotina chamada escreve deve escrever na tela oselementos do vetor.

    Exerccio 4Faa uma subrotina que receba uma matriz M(10,10), o nmero de uma linha L, o nmero de umacoluna Ce retorne a matriz N(9,9) resultante da remoo da linha Le da coluna C

    Exerccio 5Faa uma subrotina que receba dois vetores V1(100) e V2(100) em que cada posio contem um dgitoe retorne V3(101) com a soma dos nmeros nos vetores.

    Ex: V 1 = 0 0 0 3 2 1V 2 = 0 0 4 7 3 2

    -----------------------

    V 3 = 0 0 5 0 5 3

    Exerccio 6 A tabela abaixo expressa os valores de apartamentos de diferentes metragens em diferentesbairros da cidade de Porto Alegre. As colunas desta Matriz 5x5 mostram a metragem e as linhas onome do Bairro. Faa um algoritmo principal que chama os seguintes subalgoritmos:

    a) Subrotinade Leitura da matriz 5x5;b) Subrotinade Escrita da matriz 5x5;c) Funo/Subrotinaque calcula o apartamento mais caro de Porto Alegre;d) Funo/Subrotina que calcula o apartamento mais barato do bairro que tem o apartamento mais

    caro de Porto Alegre;e) Subrotina que confere um aumento de 5% a todos os apartamentos que custam menos de R$

    250.000,00.

    100 m 150 m 200 m 250m 300 mCentro 70 80 90 100 200Bela Vista 120 180 240 300 360Petrpolis 100 150 250 300 450Moinhos 180 250 360 410 540Bom Fim 90 130 170 210 350

    Valores expressos em mil ReaisO algoritmo principal deve, nesta ordem: ler a matriz; escrev-la; escrever o valor do apartamentomais caro de Porto Alegre; escrever o valor do apartamento mais barato do bairro que tem oapartamento mais caro de Porto Alegre; conferir o aumento a todos os apartamentos que custam menosde R$ 250.000,00 e escrever novamente a matriz com os valores modificados.

    DesafioEscreva uma funo que receba um vetor literal de 1000 posies e retorne o nmero de palavras dovetor. As palavras so separadas por espaos em branco.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    48/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 48

    Capitulo 18 Recurso Exerccios

    Exerccio 1

    Escrever um algoritmo, utilizando um subalgoritmo recursivo, para calcular a soma dos 'n' primeirosinteiros positivos, sendo 'n' um valor fornecido pelo usurio.

    Exerccio 2Escrever um algoritmo, utilizando um subalgoritmo recursivo, que eleve um nmero inteiro qualquer auma potncia. Devem ser fornecidos o nmero e a potncia.

    Exerccio 3 Faa uma funo recursiva que receba um vetor de 100 posies e retorne o somatrio doselementos pares (ou mpares) do vetor.

    Exerccio 4Escrever um algoritmo, utilizando um subalgoritmo recursivo, para calcular o N-esimo termo da sriede Fibonacci.

    DesafioEscrever um algoritmo, utilizando um subalgoritmo recursivo, que leia um valor inteiro qualquer e realizeuma pesquisa em um vetor de 100 posies. No algoritmo principal deve ser informado se o valor lidoest ou no contido no vetor. Caso ele esteja, tambm deve ser informada a sua posio.

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    49/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 49

    Resumo

    20 - FORMA GERAL DE UM ALGORITMO

    Algoritmo""

    var

    < declarao de variveis>

    inicio

    < lista de comandos>

    fimalgoritmo

    21 - DECLARAO DAS VARIVEIS

    VAR

    , , ..., :

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    50/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 50

    22 - OPERADOR DE ATRIBUIO

    Varivel

    Menor =

    Menor ou igual

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    51/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 51

    Leia ()

    25 - Estrutura Condicional

    se entao

    fimse

    se entao

    senao

    fimse

    escolha< expresso-de-seleo >

    caso< exp 1 > , < exp 2 >, ... , < exp n >

    < lista-de-comandos-1 >

    caso< exp 1 > , < exp 2 >, ... , < exp n >

    < lista-de-comandos-2 >

    outrocaso

    < lista-de-comandos-3 >

    fimescolha

    26 - Estrutura de Repetio

    repita

    ate

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    52/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 52

    para de ate [passo

    ] faca

    fimpara

    27 - Variveis Indexadas Unidimensionais (Vetores)

    : vetor [] de < tipo >

    Tamanho [VI..VF]=> Vi= Valor inicial do ndice e VF valor Final do ndice.

    < identificador>[]

    Tamanho [VI..VF]=> Vi= Valor inicial do ndice e VF valor Final do ndice.

    < identificador>[,]

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    53/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 53

    Int(valor : real) : inteiro Converte o valor eminteiro

    Log(valor : real) : real Logaritmo de base 10

    Logn(valor : real) : real Logaritmo natural (ln)

    Maiusc(c : caracter) : caracter Converte em

    MaisculaMinusc(c : caracter) : caracter Converte em

    Minscula

    Numpcarac(n : inteiro ou real) : caracter Converte um numerointeiro ou real paracaractere

    Pi: real Valor Pi

    Pos(subc, c : caracter) : inteiro Retorna a posio docaractere.

    Quad(valor : real) : real Elevado quadradoRadpgrau(valor : real) : real Converte Radiano para

    grau.

    Raizq(valor : real) : real Raiz quadrada

    Rand: real Gerador de nmerosaleatrios entre 0 e 1

    Randi(limite : inteiro) : inteiro Gerador de nmerosinteiros aleatrios comum limite determinado

    Sen(valor : real) : real Seno

    Tan(valor : real) : real Tangente

    Criando Funes

    Algoritmo""

    var

    inicio

    < lista de comandos>

    fimalgoritmo

    Sintaxe da Funo

    funcao ([var])

    var

    inicio

  • 5/20/2018 apostilavisualgv25-111028103343-phpapp01

    54/54

    .: NAPRO :. NCLEO DE APOIO APRENDIZAGEM DE PROGRAMAO

    ELABORADO POR BRUNO TONET 54

    retorne

    fimfuncao

    Identificador:Nome da funo.Passagem de parmetros por referncia: utiliza-se a construo VAR antes dos

    identificadores para indicar a passagem por referncia. Os identificadores so separados porvrgula.Parmetros:Entre um mesmo tipo de dados so separados por vrgula. Entre tipos de

    dados a separao feita com ponto-e-vrgulas ';'.Tipo de retorno da funo:Real, Inteiro, Lgico ou Caractere.Declarao de variveis locais: idntica a declarao de variveis globais. As

    variveis declaradas localmente tem validade dentro do escopo da funo.Retorne: local onde colocado a varivel de retorno.

    CuidadosSempre declare as variveis globais antes da funo.A funo sempre fica dentro do escopo Algoritmo e Fim Algoritmo.Procure no Declarar variveis globais com o mesmo nome das variveis da funo.

    Procedimento (Sub_rotinas)

    Sintaxe Procedimento:

    procedimento ([var])

    var

    inicio

    fimprocedimento

    Identificador:Nome do procedimento.Passagem de parmetros por referncia: utiliza-se a construo VAR antes dos

    identificadores para indicar a passagem por referncia. Os identificadores so separados porvrgula.

    Parmetros: Entre um mesmo tipo de dados so separados por vrgula. Entre tipos de

    dados a separao feita com ponto-e-vrgulas ';'.