41
Unidade I - INTRODUÇÃO A ALGORITMOS E LINGUAGENS DE PROGRAMAÇÃO 1 ALGORITMOS I.1.1 DEFINIÇÃO A palavra algoritmo, à primeira vista, nos parece estranha. Embora possua designação desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho é um algoritmo. Outros algoritmos freqüentemente encontrados são:  Instruções para se utilizar um aparelho eletrodoméstico;  Uma receita para preparo de algum prato;  Guia de preenchimento para declaração do imposto de renda;  A regra para determinação de máximos e mínimos de funções por derivadas sucessivas;  A maneira como as contas de água, luz e telefone são calculados mensalmente. São vários os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui:  Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico.”  [KNUTH]  Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema.”  [TREMBLAY]  Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema.”  [AURÉLIO] Um conjunto de instruções organizadas numa sequência lógica, que conduzem o interpretador a solucionar um determinado problema.  ÂNGELO STROLIG O PECLY Resumindo, um algoritmo é uma interpretação, passo a passo, de um determinado problema do mundo real, estabelecendo todos os passos na busca de uma solução. Existem duas técnicas que se completam para melhor documentar o algoritmo:  Diagrama de Blocos: consiste em representar a seqüência de operações do algoritmo utilizando símbolos geométricos.  Português Estruturado: consiste em transformar o diagrama de blocos numa forma narrativa, denominada pseudocódigo, muito próximo de uma linguagem computacional.

Programção EstC_16.pdf

Embed Size (px)

Citation preview

  • 5/27/2018 Program o EstC_16.pdf

    1/41

    Unidade I - INTRODUO A ALGORITMOS E LINGUAGENS DE PROGRAMAO

    1 ALGORITMOS

    I.1.1 DEFINIO

    A palavra algoritmo, primeira vista, nos parece estranha. Embora possuadesignao desconhecida, fazemos uso constantemente de algoritmos em nossocotidiano: a maneira como uma pessoa toma banho um algoritmo. Outros algoritmosfreqentemente encontrados so:

    Instrues para se utilizar um aparelho eletrodomstico; Uma receita para preparo de algum prato; Guia de preenchimento para declarao do imposto de renda; A regra para determinao de mximos e mnimos de funes por

    derivadas sucessivas;

    A maneira como as contas de gua, luz e telefone so calculadosmensalmente.

    So vrios os conceitos para algoritmo. Escolhemos alguns para seremapresentados aqui:

    Um conjunto finito de regras que prov uma seqncia de operaes para resolver umtipo de problema especfico.

    [KNUTH]

    Seqncia ordenada, e no ambgua, de passos que levam soluo de um dadoproblema.

    [TREMBLAY]

    Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em quese estipulam, com generalidade e sem restries, as regras formais para a obteno doresultado ou da soluo do problema.

    [AURLIO]

    Um conjunto de instrues organizadas numa sequncia lgica, que conduzem ointerpretador a solucionar um determinado problema.

    NGELO STROLIGO PECLY

    Resumindo, um algoritmo uma interpretao, passo a passo, de umdeterminado problema do mundo real, estabelecendo todos os passos na busca de

    uma soluo.

    Existem duas tcnicas que se completam para melhor documentar o algoritmo:

    Diagrama de Blocos: consiste em representar a seqncia de operaes doalgoritmo utilizando smbolos geomtricos.

    Portugus Estruturado: consiste em transformar o diagrama de blocos numaforma narrativa, denominada pseudocdigo, muito prximo de uma linguagemcomputacional.

  • 5/27/2018 Program o EstC_16.pdf

    2/41

    I.1.2 CARACTERSTICAS

    Todo algoritmo deve apresentar algumas caractersticas bsicas:

    Ter fim; No dar margem dupla interpretao (no ambguo); Capacidade de receber dado(s) de entrada do mundo exterior; Poder gerar informaes de sada para o mundo externo ao do ambiente do

    microcomputador;

    Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcanveisem um tempo finito).

    I.1.3 SOLUO DE PROBLEMAS

    O aluno de algoritmos deve ter sempre em mente que a soluo de umproblema do mundo real no est relacionado informtica, a menos que se queirainformatizar tal soluo.

    Observe que, pela afirmao anterior a soluo j deve existir para que sepossa informatiz-la, ou seja, primeiro deve-se descobrir a soluo do problema,independentemente de qualquer ferramenta de informtica.

    A soluo de problemas envolve duas principais etapas:

    Deve-se conhecer/entender muito bem o problema que se deseja solucionar.Estude o problema. Leia sobre o problema. Converse com quem conhece oproblema. Enfim, procure dominar o problema;

    Busque uma soluo para problema. Muitas vezes, basta conhecer o problemapara solucion-lo, em outras, deve-se aplicar muito raciocnio lgico paraencontrar uma soluo.

    Como j foi dito, algoritmos so utilizados para expressar (escrever, tornarlegvel por outra pessoa) um raciocnio, logo, de posse da soluo, basta represent-laatravs de algoritmos, ou seja, traduzir a soluo encontrada para uma linguagem

    mais especfica e padronizada, para que outras pessoas possam ler o raciocnioutilizado para solucionar o problema.

    Compreender Solucionar Representaoa soluo

  • 5/27/2018 Program o EstC_16.pdf

    3/41

    I.1.4 EXEMPLOS

    Os algoritmos so comuns em nosso cotidiano como, por exemplo, uma receitade bolo.

    Em uma receita de bolo, est descrita uma srie de ingredientes necessrios euma seqncia de passos a serem cumpridos para atingir o objetivo que ter um bolo

    pronto.

    ALGORITMO 1: Receita de Bolo

    Providencie manteiga, ovos, 2 quilos de massa;Misture os ingredientes;Despeje a mistura na frma de bolo;Leve a frma ao forno;Espere 20 minutos;Retire a frma do forno;Deixe esfriar;Prove.

    Outra atividade algortmica comum em nosso dia a dia o ato de trocar umalmpada queimada. Apesar de aparentemente bastante bvio, muitas vezes fazemosesse tipo de atividade sem percebermos determinados detalhes. Podemos descrever demaneira simples:

    ALGORITMO 2: Troca de lmpadas

    Pegue uma escada;Posicione-a embaixo da lmpada queimada;Pegue uma lmpada nova;Suba na escada;Retire a lmpada velha;

    Coloque a lmpada nova, desa e guarde a escada.

    J se deparou com algum lhe abordando na rua e lhe perguntando sobre comochegar a algum lugar? Sua resposta dvida desta pessoa nada mais do que umalgoritmo.

  • 5/27/2018 Program o EstC_16.pdf

    4/41

    I.1.5 EXERCCIOS

    1 - Elabore um algoritmo que mova os trs discos da haste 1 para a haste 2 oupara a haste 3. S possvel movimentar um nico disco de cada vez para qualquerhaste, contanto que nunca seja colocado um disco maior sobre um disco menor. Oobjetivo transferir os trs discos para a haste destino, tal como se apresentam

    ordenados na haste 1, conforme a figura a seguir:

    2 - Trs jesutas e trs canibais precisam atravessar um rio. Para tal, dispem de umbarco com capacidade para duas pessoas. Por medidas de segurana no se permiteque em alguma margem a quantidade de jesutas seja inferior de canibais. Qual aseqncia de passos que permitiria a travessia com segurana?

    3 - Um homem precisa atravessar um rio com um barco que possui capacidade detransportar apenas ele mesmo e mais uma de suas trs cargas que so: um lobo, umbode e um mole de alfafa. O lobo e o bode no podem ficar sozinhos em uma margem,pois o lobo comer o bode. O bode e a alfafa tambm no podem ficar sozinhos emuma margem, pois o bode comer a alfafa. O que o homem deve fazer para conseguiratravessar o rio sem perder suas cargas?

    4 - Um algoritmo no pode conter um comando como Escreva todos os nmerosinteiros positivos. Por qu?

    5 Descreva um algoritmo para trocar o pneu de um carro.

    6 Voc dispe de nove bolas das quais oito possuem um mesmo peso e uma mais pesada que as demais e uma balana. Descreva um algoritmo para descobrirqual a bola mais pesada, utilizando-se apenas de duas pesagens na balana.

    7 Voc est em uma sala que contm trs interruptores. Cada interruptor est ligadoa uma lmpada presente em uma sala ao lado. As trs lmpadas esto inicialmenteapagadas. Descreva um algoritmo para descobrir qual interruptor est ligado a qual

    lmpada, sabendo que voc s pode ir uma nica vez sala ao lado.

    8 Como voc descreveria um algoritmo para resolver o problema proposto noExerccio 1, porm com quatro discos?

  • 5/27/2018 Program o EstC_16.pdf

    5/41

    I.2 ESTRUTURAS DE DADOS

    Representao dos dados que sero manipulados pelo algoritmo.

    Como representar dados?

    Depende da ferramenta usada na soluo; , geralmente, uma tarefa difcil; No existe uma nica soluo; No existe receita.

    Os dados utilizados por um algoritmo podem ser muito simples ou muitocomplexos. Veja os exemplos a seguir:

    Calcular quantos dias faltam para terminar o ano;Este algoritmo manipula dados inteiros, que nos so bastante familiares, ou

    seja, so dados simples.

    Controlar o cadastramento de uma nota fiscal, considerando todo seu cabealhoassim como todo seus itens.

    Este algoritmo j deve manipular um tipo de dado bem complexo,principalmente por ser composto de outros tipos de dados e ainda possuirum relacionamento entre o cabealho da nota com seus respectivos itens.

    Resumindo, deve-se exercitar-se bastante, ou seja, aprender com a prtica.

  • 5/27/2018 Program o EstC_16.pdf

    6/41

    I.3 PROGRAMAS

    Um programa nada mais que um algoritmo expresso numa linguagem formal,Linguagem de Programao.

    A Linguagem de Programao nos faz um grande servio, o de traduzir um

    programa escrito por ns, respeitando a sintaxe da linguagem escolhida, na linguagemreconhecida pelo computador, ou seja, a linguagem binria, que a nica executvelpelo computador.

    I.3.1 O processo de construo de programas:

    compreender o problema do mundo real; solucionar o problema; formular o algoritmo (representao do comportamento); definir as estruturas de dados a serem usadas (representao da informao); transcrever o algoritmo para a linguagem de programao desejada.

    Toda linguagem envolve dois aspectos:

    Sintaxe: forma, a correta escrita dos comandos; Semntica: contedo, sequncia lgica dos comandos;

  • 5/27/2018 Program o EstC_16.pdf

    7/41

    I.4 LINGUAGENS DE PROGRAMAO

    Ns podemos descrever algoritmos atravs da lngua portuguesa, j que oPortugus a linguagem que conhecemos e usamos em nossa comunicao. Noentanto, os computadores s compreendem uma linguagem composta de combinaesentre zero e um, conhecida como linguagem de mquina, que bastante complicada

    para ns, seres humanos. Por exemplo, suponhamos que as letras o e i sejamreconhecidas pela mquina pelos smbolos 10010110 e 01101001, respectivamente.Vamos supor tambm que um comando responsvel por escrever algo na tela docomputador seja 00001111. Pois bem, para escrever a palavra oi no monitor, serianecessrio enviar a seguinte mensagem para o computador:

    0000111110010110 01101001

    Complicado, no? D para se ter idia que, para descrever um algoritmo aocomputador, fazendo uso da linguagem de mquina, necessrio ter ao lado uma listade cdigos compreendidos pela mquina. Alm disso, para compreender um algoritmo

    j escrito em linguagem de mquina, tambm se torna primordial ter em mos amesma lista de cdigos.

    Para eliminar este inconveniente, foram criadas a linguagens de programao.Estas linguagens so formadas por comandos de alto nvel, representados por palavrasem ingls j que foram criadas por pessoas oriundas de pases de lngua inglesa. Aslinguagens de programao possuem um mdulo chamado compilador ouinterpretador, dependendo da linguagem que responsvel por traduzir programasde computadores em linguagem de mquina.

    Alguns exemplos de linguagens de programao so: Fortran, Basic, Cobol,Clipper, C e Pascal. Neste documento, abordaremos a linguagem C, por ser bastantepoderosa, acadmica e estruturada.

  • 5/27/2018 Program o EstC_16.pdf

    8/41

    I.5 PORTUGUS ESTRUTURADO

    A partir deste ponto, comearemos a estudar a representao de algoritmosatravs do Portugus Estruturado.

    I.5.1 TIPOS PRIMITIVOS DE DADOS

    VARIVEL

    Uma varivel funciona como um containerde algum dado, ou seja, um lugaronde podemos guardar um valor para ser utilizado ao longo do algoritmo. A primeiravista, pode soar estranho ter que guardar dados num lugar para poder utiliz-lomais adiante, isso devido ao fato de que em nosso cotidiano fazemos isso de maneiramuito automtica. Vejamos um exemplo de forma mais minuciosa:

    Considere o valor 5; Considere o valor 3; Considere a operao de adio; Qual o resultado da operao?

    Automaticamente dizemos oito, sem pestanejar. Mas o que realmente fizemos?Ao considerar o valor 5, nosso crebro armazenou este valor em algum lugar em nossamemria. Com o segundo valor aconteceu a mesma coisa, porm o valor 3 foiarmazenado num lugar diferente do primeiro valor. Os dois valores no poderiam serarmazenados no mesmo lugar pois o segundo valor sobrescreveria o primeiro. Aterceira informao, a operao desejada, tambm foi armazenada em nossamemria, num terceiro lugar. Ao considerar o comando para efetuar o clculo, nossocrebro, de posse de todos os argumentos necessrios, efetua o clculo e tambmarmazena o resultado numa posio de nossa memria.

    No ambiente computacional, j pensando em como representar o raciocnioacima atravs de um algoritmo, devemos considerar uma varivel como sendo umareferncia uma posio da memria principal do computador, como seestivssemos dando nomes s posies de nossa memria (crebro). Assim sendo,para resolvermos o clculo acima, precisaremos de trs variveis, as duas primeiraspara armazenar os dois primeiros valores e a terceira para armazenar o resultado. Ocomando de adio, no alto nvel de raciocnio em que escrito um algoritmo, noprecisar ser armazenado na memria. Dessa forma, podemos esboar um pequenoalgoritmo:

    A=5;B=3;

    C=A+B;

    Por todo raciocnio descrito acima, o resultado armazenado na varivel C onmero inteiro 8.

  • 5/27/2018 Program o EstC_16.pdf

    9/41

    TIPOS DE DADOS

    As variveis utilizadas anteriormente respeitam, perfeitamente, as regrasimpostas pelo Portugus Estruturado para se descrever algoritmos, porm, antes deutilizar uma varivel, devemos antes cri-las, ou seja, requisitar ao computador quereserve uma posio de memria para um determinado tipo de dado e que construa a

    referncia desta posio de memria ao nome dado pelo programador comoidentificador da varivel.

    Na afirmao acima podemos constatar algumas caractersticas fundamentaisde uma varivel:

    A posio de memria reservada;No estaremos preocupados com esta informao no contexto deste curso.

    O identificador da varivel; o nome que damos varivel para que possamos referenci-la durante o

    desenvolvimento do algoritmo.

    O tipo de dado a ser armazenado.Esta informao de suma importncia, pois cada tipo de dado ocupa um

    determinado espao na memria, por exemplo, um nmero inteiro ocupa menosespao que um nome de uma pessoa.

    O nome/identificador de uma varivel pode ser uma seqncia de um ou maiscaracteres alfabticos e numricos, iniciados por uma letra ou ainda pelo caracter _.Os nomes no podem conter outros smbolos grficos, operadores ou espaos embranco. importante ressaltar que as letras minsculas so consideradas diferentesdas letras maisculas, assim temos como exemplos vlidos:

    a total x2 min_sal

    _especial VALOR Maximo ExpData

    Seguindo as mesmas regras temos abaixo exemplos invlidos de nomes devariveis:

    1x Total geral numero-minimo

    A razo destes nomes serem invlidos simples: o primeiro comea com umalgarismo, o segundo possui um espao em branco e o terceiro contm o operador desubtrao.

    Alm das regras de formao de nome em si (identificadores), uma varivel nopode utilizar como identificador uma palavra reservada da linguagem.

    Desta forma para declararmos uma varivel devemos seguir a seguinte sintaxe:

    tipo nome1 [, nome2 [, nome3 [ , nomeN]]];

  • 5/27/2018 Program o EstC_16.pdf

    10/41

    Ou seja, primeiro indicamos um tipo, depois declaramos uma lista contendo um

    ou mais nomes (identificadores) de variveis desejadas deste tipo, onde nesta lista osnomes so separados por vrgulas e a declarao terminada por ; (ponto-e-vrgula).

    No Portugus Estruturado existem os seguintes tipos de dados:

    Tipo Tamanho/Formato DescrioNumricasInt 32-bit complemento a dois InteiroReal 32-bit IEEE 754 Ponto flutuanteOutros tiposLogico 8-bit Tipo booleano (true e false)char 8-bit Um nico caracterString 8-bit por caractere Conjunto de caracteres

    Vejamos alguns exemplos:

    int i;real total, preco;

    Tambm possvel definirmos um valor inicial para uma varivel diretamenteem sua declarao:

    int quantidade = 0;

    real angulo = 1.57;

    logico ok = false;

    char letra = c;

    string nome = Unesa;

    Algumas observaes importantes:

    Um nmero em ponto flutuante sempre representado com um . (ponto)para separar a parte inteira da fracionria;

    O dado do tipo char deve ser representado sempre entre aspas simples ; O dado do tipo string deve ser representado sempre entre aspas ; O dado do tipo booleano possui apenas os valores true e false, sempre SEM

    aspas;

    COMENTRIOS

    Comentrios so trechos de texto, usualmente explicativos, inseridos noprograma de forma que no sejam considerados como parte do cdigo, ou seja, soinformaes deixadas juntamente com o cdigo como informao para quemprograma.

    O Portugus Estruturado aceita dois tipos de comentrios:

  • 5/27/2018 Program o EstC_16.pdf

    11/41

    de uma linha de mltiplas linhas

    O primeiro, de uma linha, utiliza duas barras (//) para marcar seu incio:

    // comentrio de uma linha

    // tudo aps as duas barras considerado comentrio

    O segundo usa a combinao /* e */ para delimitar uma ou mais linhas decomentrios:

    /* comentrio

    de mltiplas linhas */

    OPERADORES

    Operadores aritmticos

    Operador Uso Descrio+ op1 + op2 Soma op1 com op2- op1 - op2 Subtrai op2 de op1* op1 * op2 Multiplica op1 por op2/ op1 / op2 Divide op1 por op2% op1 % op2 Calcula o resto da diviso inteira de op1 por op2div op1 div op2 Calcula o quociente da diviso inteira

    ** op1 ** op2 Calcula op1 elevado potncia op2Operadores relacionais

    Operador Uso Retorna verdadeiro se> op1 > op2 op1 maior que op2

    >= op1 >= op2 op1 maior ou igual que op2< op1 < op2 op1 menor que op2

  • 5/27/2018 Program o EstC_16.pdf

    12/41

    Operadores de atribuio

    Operador Uso Equivalente a= op1 = op2 op1 recebe o valor de op2

    += op1 += op2 op1 = op1 + op2

    -= op1 -= op2 op1 = op1 op2*= op1 *= op2 op1 = op1 * op2/= op1 /= op2 op1 = op1 / op2%= op1 %= op2 op1 = op1 % op2

    EXERCCIOS

    1 Defina varivel.

    2 Qual a finalidade de declararmos uma varivel?

    3 Escreva o tipo de dado ideal para se representar as seguintes informaes:a) O nmero da conta bancria;

    b) A altura de uma pessoa em metros;c) A placa de um veculo;d) O nmero de filhos de uma pessoa;e) A populao de um pas;f) A cor de um objeto.

    4 Quais os tipos de dados nativos do Portugus Estruturado?

    5 Quais os valores possveis para um dado do tipo Logico?

    6 O que uma string?

    7 Identifique os tipos dos seguintes dados:a) "Processamento de Dados"b) 0.4c) "4.5E10"d) truee) '?'f) ' 'g) -5.3E-02h) ".05"i) "false"

    j) 0

    8 O que so identificadores?

    9 Quais as regras bsicas para a formao de identificadores?

    10 Assinale os identificadores invlidos, justificando.a) A1BCb) XA,1dc) NomeDoAlunod) 198abertoe) prog

  • 5/27/2018 Program o EstC_16.pdf

    13/41

    11 - Escreva os comandos necessrios para declarar: uma varivel que recebauma frase, trs variveis que recebam as trs notas de um aluno e uma varivel quereceba a idade de uma pessoa.

    12 Qual a finalidade de um comentrio dentro de um programa? Como deveser escrito em Portugus Estruturado?

    ESTRUTURA DE UM ALGORITMO ESCRITO EM PORTUGUS ESTRUTURADO

    Algoritmo, assim como muitas linguagens de programao, uma linguagemaltamente estruturada que possui uma rigidez definida, embora sua estrutura deprograma seja flexvel. Cada seo ou parte de um programa deve aparecer numaseqncia apropriada e ser sistematicamente correta, seno ocorrer um erro.

    Por outro lado, no h regras especficas para o uso de espao e linhasquebradas, dando ao programador liberdade para escrever programas mais adequadosao seu estilo.

    Um algoritmo escrito em Portugus Estruturado tem o seguinte formato:

    PROG

    tipo identificador1 [,identificador2 [,identificador3 [,identificador N]]];

    [;]

    [...;]

    [;]

    FIMPROG

    COMANDOS DE ENTRADA E SADA DE DADOS

    SADA

    Normalmente, em programao, quando nos referimos sada de dadosestamos particularmente interessados em exibir mensagens no monitor docomputador. O comando utilizado para isso oimprima, veja a sintaxe acompanhadade alguns exemplos:

    imprima expresso ou varivel ;

    Algoritmo 01progimp1

    imprimaAprendendo algoritmo!!!;fimprog

    Este algoritmo faz com que seja exibida, na tela do computador, a mensagem:Aprendendo Algoritmo!!!

    Algoritmo 02progimp2

    int x;x=10;imprimaValor de x = , x;

  • 5/27/2018 Program o EstC_16.pdf

    14/41

    fimprog

    Este algoritmo faz com que seja exibida, na tela do computador, a mensagem eo contedo da varivel x: Valor de x = 10

    Algoritmo 03progimp3

    int x;x=10;imprimaResultado = , x+1;

    fimprog

    Este algoritmo faz com que seja exibida, na tela do computador, a mensagem eo contedo da varivel x acrescido em uma unidade, sem alterar o valor de x:

    Resultado = 11.

    ENTRADA

    O comando de entrada faz com que uma informao digitada no teclado, pelousurio, entre no computador e fique armazenada numa varivel previamentedeclarada, ou seja, o dado digitado parte do teclado e vai direto para uma posio dememria RAM, veja a sintaxe acompanhada de alguns exemplos:

    leia nome da varivel ;

    Algoritmo 04progleia1

    intx;leiax;imprimaNmero lido = , x;

    fimprog

    Este algoritmo exibir, na tela do computador, a mensagem e o nmerodigitado pelo usurio.

    EXPRESSES

    O conceito de expresso em termos computacionais est intimamente ligado aoconceito de expresso matemtica onde um conjunto de variveis e constantesnumricas relacionam-se por meio de operadores compondo uma frmula que, ao seravaliada, resulta num valor. As expresses se dividem em:

    AritmticasNas expresses aritmticas fazemos o uso dos operadores aritmticos que so

    smbolos utilizados para efetuarmos clculos matemticos. Os operadores aritmticosso utilizados somente com dados do tipo inte do tipo real.

    Expresso Resultado3 + 2 58 5 3

    3 * 3.5 10.55 / 2 2.5

  • 5/27/2018 Program o EstC_16.pdf

    15/41

    A=5;A div 2;

    2

    A=5;B=2;

    C = A % B;C vale 1

    Prioridades

    As prioridades seguem o mesmo contexto das regras de precedncia nasexpresses matemticas. Segue abaixo uma tabela contendo as prioridades e suasexcees.

    Prioridade Operadores1 * / div %2 + -

    Observaes:

    1 Quando houver expresses com operadores de mesma prioridade,

    executa-se da esquerda para direita.2 A utilizao de parnteses indica que as expresses contidas nos

    mesmos tem prioridade mxima. E se houver parntese aninhados osparnteses mais internos tem prioridade.

    Relacionais e Lgicas

    As expresses lgicas sempre retornaram true (Verdadeiro) e false (Falso).Para se montar expresses lgicas utilizamos de operadores relacionais e operadoreslgicos. Veremos como funciona cada um destes operadores e exemplificaremos cadaum deles. A utilizao das expresses lgicas somente sero aplicadas em termos com

    o mesmo tipo de dados.

    Expresso Resultado1 == 2 false

    A == a False5 > 2 True

    3 JOSE False(2 + 3) != 5 False

    comp != COMP True11 > 4 True

    EXERCICIOS RESOLVIDOS

    1- Considerando que X = 1, Y = 2 e Z = 5, desenvolva.

    a) Z % Y div Yb) X + Y + Z / 3

  • 5/27/2018 Program o EstC_16.pdf

    16/41

    2- Dadas as comparaes abaixo, escreva os resultados.

    a) 3 == 3.0b) a 200

    3- Sendo A = true e B = false. Qual o resultado das expresses abaixo

    a) !A && B || A && !Bb) !(!(A || B) && (A || B))c) A || B && !A || !Bd) (A || B) && (!A || B)

    GABARITO1- a) Resp.: 5 mod 2 div 2 -> 1 div 2 -> 0

    b) Resp.: 1 + 2 + 5 / 3 -> 3 + 1.667 -> 4.667

    2- a) Resp.: falseb) Resp.: falsec) Resp.: trued) Resp.: truee) Resp.: truef) Resp.: trueg) Resp.: true

    3- a) Resp.: true

    b) Resp.: truec) Resp.: trued) Resp.: false

    EXERCCIOS

    Algoritmo 05Construa um algoritmo que obtenha do usurio, via teclado, o seu nome e exiba

    a mensagem: Ol !

    Algoritmo 06Construa um algoritmo que imprima o produto entre 28 e 43.

    Algoritmo 07Construa um algoritmo que imprima a mdia aritimtica entre os nmeros 8, 9

    e 7.

    Algoritmo 08Construa um algoritmo que leia um nmero inteiro e imprima seu antecessor e

    seu sucessor.

  • 5/27/2018 Program o EstC_16.pdf

    17/41

    Algoritmo 09Construa um algoritmo que leia um nome, um endereo e um telefone e

    imprima-os na tela do micro.

    Algoritmo 10Construa um algoritmo que leia dois nmeros inteiros e imprima a soma. Antesdo resultado, dever aparecer a mensagem: Soma.

    Algoritmo 11Construa um algoritmo que leia dois nmeros inteiros e imprima o produto.

    Algoritmo 12Construa um algoritmo que leia um nmero real e imprima a tera parte deste

    nmero.

    Algoritmo 13

    Construa um algoritmo que obtenha do usurio, via teclado, dois nmerosinteiros e mostre a mdia destes nmeros.

    Algoritmo 14Construa um algoritmo que obtenha do usurio/aluno o seu nome e suas duas

    melhores notas em Avs. Como resultado o algoritmo deve exibir o nome do alunoseguido de sua mdia.

    Algoritmo 15Construa um algoritmo que obtenha o nome e o sobrenome de uma pessoa e,

    como resultado, escreva-os na seguinte forma: sobrenome seguido por uma vrgula epelo nome.

    Exemplo: entrada: ngelo, Peclysada: Pecly, ngelo

    Algoritmo 16Construa um algoritmo que leia um nmero inteiro positivo e exiba o dobro do

    mesmo.

    Algoritmo 17Construa um algoritmo que leia dois nmeros inteiros e imprima a seguinte

    sada:Dividendo:

    Divisor:Quociente:Resto:

    Algoritmo 18Construa um algoritmo que leia um nmero inteiro de trs casas e imprima o

    algarismo da casa das dezenas.

  • 5/27/2018 Program o EstC_16.pdf

    18/41

    Algoritmo 19Construa um algoritmo que leia uma data no formato ddmmaae imprima: dia,

    ms e ano separados.

    Algoritmo 20

    Construa um algoritmo que leia uma data no formato ddmmaa e imprimanoformato mmddaa.

    Algoritmo 21Construa um algoritmo que leia quatro nmeros inteiros e imprima a mdia

    ponderada, sabendo-se que os pesos so respectivamente 1, 2, 3 e 4.

    Algoritmo 22Construa um algoritmo que leia um saldo de uma aplicao bancria e imprima

    este saldo reajustado em 2%.

    Algoritmo 23

    Construa um algoritmo para calcular a rea de um tringulo, sendo dados a suabase e a sua altura.

    Algoritmo 24Construa um algoritmo para calcular e exibir o comprimento de uma

    circunferncia, sendo dado o valor de seu raio.

    C= 2R

    Defina como sendo uma constante de valor igual a 3.1415.

    Algoritmo 25Construa um algoritmo para ler uma temperatura dada na escala Fahrenheite

    exibir o equivalente em Celsius.

    Algoritmo 26Construa um algoritmo que leia duas variveis inteiras e troque o contedo de

    uma com a outra.

    Algoritmo 27 Desafio 01Construa um algoritmo que leia um nmero inteiro e informe se ele maior

    que zero.

  • 5/27/2018 Program o EstC_16.pdf

    19/41

    ESTRUTURAS DE SELEO

    Um programa de computador uma seqncia de instrues organizadas deforma tal a produzir a soluo de um determinado problema. Naturalmente taisinstrues so executadas em seqncia, o que denomina-se fluxo seqencial deexecuo. Em inmeras circunstncias necessrio executar as instrues de um

    programa numa ordem diferente da estritamente seqencial. Tais situaes socaracterizadas pela necessidade de repetio de instrues individuais ou grupos deinstrues e tambm pelo desvio do fluxo de execuo.

    As linguagens de programao tipicamente possuem alguns comandosestruturados destinados ao controle do fluxo de execuo, isto , estruturas quepermitem a repetio e o desvio do fluxo de execuo.

    Para que fique mais claro, vamos, mais uma vez, considerar um exemplo donosso cotidiano. Imagine que voc esteja planejando passar o fim de semana numapraia, mas esteja preocupado com as condies do clima, dessa forma voc teria,naturalmente, o seguinte raciocnio: ...amanh, SE fizer um dia ensolarado, viajareipara praia, MAS SEestiver chovendo, passarei pela locadora de vdeo.

    Por este exemplo, fica evidente que alguns comandos no sero executados,ou seja, se voc for praia, no ir locadora. Voc far uma coisa ou outra. Nestetipo de situao, os comandos excludos pela condio nunca sero executados.

    COMANDO SE

    No Portugus Estruturado, para que se implemente um desvio simples no fluxode execuo do programa, deve-se utilizar o comando se. Este comando deverespeitar a seguinte sintaxe:

    se ( expresso lgica ) {

    comando1_1;[ coamndo1_2;comando1_N;]

    }[ senao {comando2_1;comando2_2;comando2_N;

    }]

    Alguns aspectos importantes da sintaxe acima:

    O comando se, em si, no possui ;,apenas os comandos embutidos nele; Este comando pode ter um ou mais comandos dentro dele, mas pelo menos um

    deve existir; Os comandos dentro do comando seou da clusula senao, so delimitados por

    {e };

    A clusula senao, tambm opcional; Caso exista a clusula senao, dentro dela tambm pode existir um ou mais

    comandos, mas pelo menos um deve existir.

  • 5/27/2018 Program o EstC_16.pdf

    20/41

    O comando sefunciona da seguinte forma: caso a expresso lgica (condio)tenha como resultado um valor true, o(s) comando(s), logo abaixo, (sero)executado(s). No caso de existir a clusula senao, o(s) comando(s) embutido(s) nela,s ser (sero) executado(s) caso a expresso lgica (condio) retorne false. Desta,forma, pode-se perceber que os comandos do primeiro grupo so excludentes emrelao ao segundo, ou seja, no h uma circunstncia possvel em que os dois grupos

    sejam executados.

    Uma observao importante neste ponto, que os comandos embutidos nocomando se, podem ser quaisquer comandos da linguagem, inclusive outro comandose. Caso isto ocorra, diz-se que estes comandos se so aninhados. Ao se aninharcomandos se, deve-se redobrar a ateno em relao s clusulas senaono que dizrespeito a identificar a qual comando sepertence um determinado senao. Veja comoficaria a sintaxe:

    se ( expresso lgica ) {comando1_1;[ coamndo1_2;

    comando1_N;]se ( expresso lgica ) {comando1_1_1;[ coamndo1_1_2;

    comando1_1_N;]}

    }[ senao {comando2_1;comando2_2;comando2_N;

    }]

    Observe que o comando semais interno no possui a clusula senao.

    comum encontrar na literatura a denominao estrutura de deciso simplespara um comando sesem a clusula senaoe, estrutura de deciso composta, para ocomando seseguido da clusula senao.

    Veja o algoritmo do fim de semana:

    ...se (clima == sol) {

    viajar;} senao {

    ir locadora;}

    ...

    Algoritmo 28Construa um algoritmo que leia um nmero e se ele for maior do que 20,

    imprima a metade do nmero.

    progmetaderealnumero, metade;imprimaDigite um numero: ;leianumero;

  • 5/27/2018 Program o EstC_16.pdf

    21/41

    se (numero > 20 ) {metade = numero / 2;imprima Metade: , metade;

    }fimprog

    Algoritmo 29Construa um algoritmo que leia um nmero e, se for positivo, mostre seuinverso; caso contrrio, imprima o valor absoluto do nmero.

    proginversoabsolutorealnumero, inverso, absoluto;imprimaDigite um nmero;leianumero;se (numero > 0.0 ) {

    inverso = 1 / numero;imprimaInverso: ,inverso;

    } senao {

    absoluto = numero * -1;

    imprimaAbsoluto: ,absoluto;}fimprog

    Algoritmo 30Construa um algoritmo que leia um nmero inteiro e diga (mostre a mensagem)

    se ele divisvel por 3.

    progdiv3intn, resto;imprimaDigite um numero inteiro: ;leian;resto = n % 3;

    se (resto == 0 ) {imprimaO numero e mltiplo de 3!!!;

    } senao {imprimaO numero NO e mltiplo de 3!!!;

    }fimprog

    Algoritmo 31Construa um algoritmo que leia um nmero inteiro e diga se ele PAR ou

    MPAR.

    Algoritmo 32

    Construa um algoritmo que leia um nmero e diga se ele positivo, negativo ounulo.

    Algoritmo 33Construa um algoritmo que leia dois nmeros e mostre o maior deles.

  • 5/27/2018 Program o EstC_16.pdf

    22/41

    COMANDO ESCOLHA

    O comando escolha um comando de desvio mltiplo de fluxo, isto , baseadona avaliao de uma expresso ordinal escolhido um caminho de execuo dentrevrios possveis. Um resultado ordinal aquele que pertence a um conjunto onde seconhece precisamente o elemento anterior e posterior, ou seja, um valor dentro de um

    conjunto, cujos valores podem ser claramente ordenados (A,B,C, . . . ).

    O escolha equivale, logicamente, a um conjunto de comandos seaninhados,embora seja usualmente mais eficiente durante a execuo.

    A sintaxe a seguinte:

    escolha(expresso ordinal) {caso ordinal1: comando1_1;

    [comando1_2;comando1_N;]interrompe;

    caso ordinal2: comando2_1;[comando2_2;comando2_N;]interrompe;

    [padrao: comando_padrao1;[comando_padrao2;comando_padraoN;]]

    }

    A expresso utilizada pelo escolha deve, necessariamente, retornar umresultado ordinal. Conforme o resultado selecionado em cada um dos casos indicadospela construo caso. Os comandos encontrados a partir do caso escolhido so

    executados at o final do comando escolha ou at encontrar um comandointerrompe. Se o valor resultante no possuir um caso especfico, sero executados oscomandos colocados na clusula padrao, que opcional neste comando.

    Exerccios

    1 - Qual a utilidade da estrutura de deciso?

    2 Qual a diferena entre a estrutura de deciso simples e a composta?

    3 Quais so os comandos de deciso existentes no Portugus Estruturado?

    4 Em que situaes mais indicado o uso do comando escolha?

    Algoritmo 34Construa um algoritmo que leia dois nmeros e mostre o maior deles.

    Algoritmo 35Construa um algoritmo que leia dois nmeros e os mostre em ordem crescente

    e decrescente.

  • 5/27/2018 Program o EstC_16.pdf

    23/41

    Algoritmo 36Deseja-se calcular a conta de consumo de energia eltrica de um consumidor.

    Para isto, escreva um algoritmo que leia o cdigo do consumidor, o preo do Kw e aquantidade de Kw consumido, e exiba o cdigo do consumidor e o total a pagar.

    - total a pagar = preo x quantidade- total a pagar mnimo = R$ 11,20

    Algoritmo 37Construa um algoritmo que, dado as trs notas de um aluno, determine e exiba

    a sua mdia final e o seu conceito, sabendo-se que:-a mdia final calculada pela mdia aritmtica das trs notas;-o conceito determinado de com base na tabela abaixo:

    Mdia Final Conceito>=8.0 A

    >=5.0 e

  • 5/27/2018 Program o EstC_16.pdf

    24/41

    C 75.00D 50.00

    c) o valor total das dirias o nmero de dias hospedados multiplicado pelovalor da diria;

    d) o subtotal calculado pela soma do valor total das dirias e o valor do

    consumo interno;e) o valor da taxa de servio equivale a 10% do subtotal;f) o total geral resulta da soma do subtotal com a taxa de servio.

    Escreva a conta final contendo: o nome do hspede, o tipo do apartamento, onmero de dirias utilizadas, o valor unitrio da diria, o valor total das dirias, o valordo consumo interno, o subtotal, o valor da taxa de servio e o total geral.

    Algoritmo 41Deseja-se calcular o imposto de renda de um contribuinte. Para isto, escreva

    um algoritmo que:a) leia os seguintes dados do contribuinte: CPF, nome, rendimento anual,

    imposto retido na fonte, contribuio previdenciria, despesas mdicas, nmero dedependentes;

    b) seja deduzido o valor de R$ 1080.00 por cada dependente;c) calcule o valor total das dedues: contribuio previdenciria + despesas

    mdicas + deduo dos dependentes;d) calcule a base de clculo: rendimento anual total das dedues;e) calcule o imposto devido: (base de clculo * alquota) - parcela a deduzir,

    com base na tabela abaixo:

    Base de Clculo Alquota Parcela a Deduzirat 10800.00 Isento -

    De 10800.01 at 21600.00 15% 1620.00acima de 21600.00 25% 3780.00

    Haver imposto a pagar se a diferena entre o imposto devido e o impostoretido na fonte for positiva; caso contrrio, haver imposto a restituir;

    Algoritmo 42Construa um algoritmo que leia um nmero e informe se ele divisvel por 3 e

    por 7.

    Algoritmo 43Construa um algoritmo que leia um nmero inteiro de 3 casas e informe se o

    algarismo da casa das centenas par ou mpar.

    Algoritmo 44Construa um algoritmo que leia o ano de nascimento de uma pessoa e o ano

    atual e informe a idade da pessoa. No se esquea de verificar se o ano de nascimento um ano vlido.

    Obs.: No se preocupe com o ms e o dia do nascimento da pessoa.

    Algoritmo 45

  • 5/27/2018 Program o EstC_16.pdf

    25/41

    Construa um algoritmo que implemente uma calculadora bsica. Para isto oalgoritmo dever obter dois nmeros do teclado e um operador (caractere querepresentar a operao matemtica desejada [+, -, * e /]). De posse dos dadosde entrada, o algoritmo deve efetuar o calculo desejado e exibir o resultado.

    Algoritmo 46

    Construa um algoritmo que leia a sigla do estado de uma pessoa e informe seela carioca, paulista, mineiro ou outros.

    Algoritmo 47Construa um algoritmo que leia dois nomes e os mostre em ordem alfabtica.

    Algoritmo 48Construa um algoritmo que leia trs nmeros e mostre o maior deles.

    Algoritmo 49Construa um algoritmo que leia trs nmeros e os mostre em ordem crescente

    e decrescente.

    Algoritmo 50Construa um algoritmo que leia cinco nmeros e mostre o maior e o menor

    deles.

    Algoritmo 51Construa um algoritmo que leia as trs notas de um aluno. Das trs, o

    algoritmo deve calcular e mostrar, a mdia aritmtica das duas maiores notas.

    Algoritmo 52Construa um algoritmo que leia uma quantia em reais e transforme para dlar.

    Algoritmo 53Segundo uma tabela mdica, o peso ideal de uma pessoa est relacionado com

    a altura e o sexo. Construa um algoritmo que leia a altura e o sexo da pessoa e calculee mostre o seu peso ideal, utilizando as seguintes frmulas:

    para homens: (72.7 * H) 58 para mulheres: (62.1 * H) 44.7

    Algoritmo 54Construa um algoritmo que leia um nmero inteiro entre 1 e 7 e mostre o dia

    da semana correspondente.

    Exemplos: Entrada: 1 Sada: DomingoEntrada: 4 Sada: Quarta

    Algoritmo 55Construa um algoritmo que leia um nmero inteiro entre 1 e 12 e mostre o ms

    correspondente.

    Algoritmo 56

  • 5/27/2018 Program o EstC_16.pdf

    26/41

    Construa um algoritmo que leia o tipo de carro e a distncia, em Km, que sedeseja percorrer. O programa dever, baseado na tabela a seguir, calcular o consumode combustvel para o percurso.

    Tipo de carro ConsumoA 13.5 Km/l

    B 12.0 Km/lC 10.5 Km/lD 9.0 Km/lE 7.5 Km/l

    Algoritmo 57Construa um algoritmo que leia uma data no formato ddmmaaaae informe se a

    data vlida ou no.

    Algoritmo 58Construa um algoritmo que leia uma letra do teclado e informe: se uma vogal

    maiscula; se uma vogal minscula; ou se uma consoante.

    Algoritmo 59Construa um algoritmo que leia o ano de nascimento de um nadador e o

    classifique de acordo com a tabela a seguir:

    Faixa de Idade Categoria0 4 anos No aceito5 7 anos Infantil A8 10 anos Infantil B11 13 anos Juvenil A14 17 anos Juvenil B

    Maiores de 17 anos Snior

    Algoritmo 60 Desafio 02Construa um algoritmo que calcule a mdia de idade dos moradores de uma

    cidade, ou seja, leia a idade de cada pessoa da cidade e calcule a mdia. O algoritmodeve obter do usurio, via teclado (comando leia), o nmero de habitantes da cidade.

    ESTRUTURAS DE REPETIO

    No ambiente computacional, consideramos repetio um comando ou um trecho

    de cdigo que deve se repetido por algumas vezes. A repetio uma das tarefas maiscomuns da programao utilizada para efetuarmos contagens, para obteno de dadosa serem manipulados pelo programa. Em Portugus Estruturado dispomos do comandopara, cuja sintaxe dada a seguir:

    para(inicializao; condio de execuo; incr/decremento) {Lista de comandos

    }

  • 5/27/2018 Program o EstC_16.pdf

    27/41

    O comando para possui trs campos ou sees, todas opcionais, delimitadospor um par de parnteses que controlam a repetio de um comando individual ou deum bloco de comandos. Cada campo separado um do outro por um ponto e vrgula.O primeiro campo usado para dar valor inicial a uma varivel de controle (umcontador). O segundo campo uma expresso lgica que determina a execuo ouno do(s) comando(s) associado(s) ao para. O terceiro campo realiza uma operao

    sobre a varivel de controle, geralmente incrementando ou decrementando talvarivel.

    Algoritmo 61Construa um algoritmo que conte de 1 5.

    progcontador01imprima1;imprima2;imprima3;imprima4;imprima5;

    fimprog

    Algoritmo 62Construa um algoritmo que conte de 1 5000.

    progcontador01imprima1;

    .

    .

    .imprima5000;

    fimprog

    Para que oAlgoritmo 62funcione, o computador deveria entender o significadoda reticncia, mas como isso no ocorre, devemos repetir a digitao do comandoimprima por 5000 vezes. Felizmente temos uma alternativa a este exaustivo trabalho,o comando paraapresentado anteriormente se adapta perfeitamente a esta situao.Veja como ficaria a soluo doAlgoritmo 62:

    Algoritmo 63progcontador02

    inti;para(i=1; i

  • 5/27/2018 Program o EstC_16.pdf

    28/41

    O comando enquanto, assim como no comando para, avalia o resultado daexpresso lgica antes de executar o(s) comando(s) associado(s), assim, caso acondio seja inicialmente falsa, tal(tais) comando(s) no ser(sero) executado(s).Um problema tpico relacionado aos comandos de repetio o seguinte: se acondio nunca se tornar falsa o lao ser repetido ininterruptamente. Esta situaopode ocorrer tanto no comando para como no comando enquanto, porm, muito

    mais comum no comando enquanto devido sua estrutura menos rgida. No para astrs sees em que se divide o controle do loop, impem uma maior formalidade construo do comando, o que inconscientemente, nos induz a sermos maiscautelosos. Veja o exemplo:

    Algoritmo 64progcontador03

    inti;i=1;enquanto(i

  • 5/27/2018 Program o EstC_16.pdf

    29/41

    Algoritmo 72Construa um algoritmo que imprima os nmeros pares no intervalo entre 400 e

    600.

    Algoritmo 73Construa um algoritmo que imprima a soma dos inteiros entre 1 e 100 .

    Algoritmo 74Construa um algoritmo que obtenha o nome, a idade e o sexo de 29 pessoas e

    imprima o nome se a pessoa for do sexo masculino e tiver mais de 21 anos.

    Algoritmo 75Construa um algoritmo que leia um nmero N, some todos os nmeros inteiros

    de 1 a N, e mostre o resultado obtido.

    Algoritmo 76

    Construa um algoritmo que leia N e uma lista de N nmeros e mostre a somade todos os nmeros lidos.

    Algoritmo 77Construa um algoritmo que leia um conjunto de 100 nmeros inteiros

    positivose determine o maior deles.

    Algoritmo 78Construa um algoritmo que leia um conjunto de 100 nmeros inteiros

    (positivos ou negativos)e determine o maior deles.

    Algoritmo 79Construa um algoritmo que leia um conjunto de nmeros inteiros (positivosou negativos)e determine o maior e o menor deles. A leitura do valor 0 (zero) indicao fim da entrada dos dados.

    Algoritmo 80Construa um algoritmo que leia um conjunto de nmeros inteiros positivos

    terminado pelo nmero 0 (zero). Ao final, o programa dever mostrar a mdiaaritmtica de todos os nmeros lidos.

    Algoritmo 81Construa um algoritmo que leia dois nmeros inteiros e mostre o produto entre

    eles. Calcule o produto atravs de somas sucessivas.

    Algoritmo 82Construa um algoritmo que calcule o fatorial de um nmero inteiro lido,

    sabendo-se que: N! = 1 x 2 x 3 x . . . x N-1 x N; 0! = 1.

    Algoritmo 83

  • 5/27/2018 Program o EstC_16.pdf

    30/41

    Um nmero , por definio, primo se ele no tem divisores, exceto 1 e eleprprio. Escreva um algoritmo que leia um nmero inteiro e determine se ele ou noprimo.

    Algoritmo 84Construa um algoritmo que leia dois nmeros inteiros (X e Y) e mostre todos os

    primos entre X e Y.

    Algoritmo 85Construa um algoritmo que leia um nmero N, calcule e mostre os N primeiros

    termos da sequncia de Fibonacci. A sequncia de Fibonacci formada inicialmentepelos valores 0 e 1 e, a partir de ento, cada novo elemento desta sequncia obtidopela soma dos dois elementos imediatamente anteriores.

    Exemplo: (0,1,1,2,3,5,8,13,...)

    Algoritmo 86A srie de RICCI difere da srie de Fibonacci pelo fato de que os dois primeiros

    termos so fornecidos pelo usurio. Os demais termos so gerados da mesma formaque na srie de Fibonacci. Construa um algoritmo que leia um nmero inteiro N,calcule e mostre os N primeiros termos da srie de RICCI.

    Algoritmo 87Construa um algoritmo que leia o nmero de alunos de uma turma. Baseado

    neste nmero, obtenha a nota na AV1 de cada aluno e mostre, ao final, a mdia daturma.

    Algoritmo 88Construa um algoritmo que leia 200 nmeros inteiros e imprima quantos so

    pares e quantos so mpares.

    Algoritmo 89Construa um algoritmo que leia 200 nmeros inteiros e imprima quantos so

    pares e quantos so mpares.

    Algoritmo 90 Desafio 03Construa um algoritmo que leia 100 nmeros inteiros e, aps a leitura do ltimo

    nmero, os mostre na ordem inversa da que foram lidos, ou seja, do ltimo at oprimeiro.

    VETOR

    Em muitas aplicaes os tipos bsicos de dados no so suficientes para supriras necessidades da estrutura de dados do problema. J vimos em algoritmos passadosa necessidade de lermos diversos valores, para isso usamos uma nica varivel, o queatendeu perfeitamente a demanda oriunda do problema. Porm, caso seja necessriorecuperar um valor lido anteriormente, no ser possvel, pois a cada nova leitura ocontedo da varivel sobrescrito.

    A nica maneira de guardarmos todos os valores lidos (individualmente) declarando uma varivel para cada valor. J pensou, declarar 100, 200 ou at mil

  • 5/27/2018 Program o EstC_16.pdf

    31/41

    variveis? Pois existe uma maneira muito simples de se fazer isso, basta criarmos umtipo de dado chamado VETOR.

    O vetor uma estrutura de dados homognea indexada, ou seja, devemosentender um vetor como sendo um conjunto de variveis do mesmo tipo, onde cadauma dessas variveis acessada atravs de um ndice. importante ressaltar que os

    ndices de um vetor sempre variam de 0 (zero) N-1, onde N o tamanho do vetor. Adeclarao de um vetor deve respeitar a a seguinte sintaxe:

    tipo_dos_dados nome_do_vetor[Quantidade_de_elementos];

    Algoritmo 91progvetor01

    inti, vet[5];vet[0]=3;vet[1]=5;vet[2]=2;vet[3]=6;vet[4]=8;

    imprimaA terceira posio do vetor guarda o n , vet[2];fimprog

    Assim sendo, o Algoritmo 91 exibir como resultado a seguinte mensagem:

    A terceira posio do vetor guarda o n 2

    Algoritmo 92progvetor02

    inti, vet[5];para(i=0;i

  • 5/27/2018 Program o EstC_16.pdf

    32/41

    Algoritmo 94Construa um algoritmo que declare trs vetores, A, B e C, de inteiros com 10

    elementos cada um. O algoritmo dever preencher os dois primeiros vetores comdados lidos partir do teclado. O terceiro vetor dever ser preenchido partir dasoma, dos elementos posicionalmente correspondentes, dos dois primeiros vetores.

    Algoritmo 95Construa um algoritmo que armazene 15 nmeros inteiros num vetor e imprima

    uma listagem numerada contendo o nmero e uma mensagem informando se ele parou mpar.

    Algoritmo 96Construa um algoritmo que armazene o nome e o salrio de 20 pessoas,

    aplique um reajuste de 20% para todas as pessoas e gere uma listagem contendo osnomes e os novos salrios.

    Algoritmo 97Construa um algoritmo que armazene o preo de compra e o preo de venda de100 mercadorias e imprima quantas mercadorias proporcionam: lucro < 10% lucro entre 10% e 20% lucro > 20%

    Algoritmo 98Um professor tem uma turma de 80 alunos e deseja calcular e imprimir a nota

    de cada aluno seguida da mdia da turma.

    Algoritmo 99Construa um algoritmo que armazene cdigo, nome, quantidade, valor decompra e valor de venda de 100 produtos e gere uma listagem de todos os produtosou somente de um, quando se digitar o cdigo.

    Algoritmo 100Construa um algoritmo que armazene dois conjuntos de nmeros inteiros,

    tendo um 10 e o outro 20 elementos e apresente os elementos comuns aos doisconjuntos.

    Algoritmo 101Construa um algoritmo que armazene dois conjuntos de nmeros inteiros,

    tendo um 10 e o outro 20 elementos e apresente os elementos comuns aos doisconjuntos. Podem existir nmeros repetidos nos conjuntos de dados, porm, a sadano dever mostrar repeties.

    Algoritmo 102Construa um algoritmo que armazene um vetor vet01de 10 nmeros inteiros e

    positivos e gere um vetor vet02contendo os quadrados dos respectivos componentesde vet01.

  • 5/27/2018 Program o EstC_16.pdf

    33/41

    Algoritmo 103Construa um algoritmo que armazene 100 nmeros inteiros e positivos, que

    imprima o maior e menor dos nmeros e imprima o percentual de nmeros pares empares.

    Algoritmo 104Num torneio de futsal inscreveram-se 12 times. Construa um algoritmo quearmazene os nomes dos times e imprima a tabela de jogos.

    Algoritmo 105Construa um algoritmo que armazene dois conjuntos de 25 nmeros inteiros,

    preencha um terceiro vetor intercalando os elementos dos dois primeiros e mostre oterceiro vetor.

    Algoritmo 106Construa um algoritmo que armazene nmeros inteiros e positivos. A entrada

    de dados deve parar ao ser digitado o nmero 0 (zero) ou ser atingido o limite do

    vetor, que de 100 posies. O algoritmo dever imprimir a quantidade de nmerosiguais ao ltimo nmero lido.

    Algoritmo 107Construa um algoritmo que armazene um conjunto de 100 nmeros reais e

    imprima a quantidade de nmeros maiores que a mdia do vetor.

    Algoritmo 108No vestibular de uma universidade, no curso de informtica, inscreveram-se

    1200 pessoas. Construa um algoritmo que armazene o gabarito da prova que tinha100 questes, sendo que cada questo valia 1 ponto. O algoritmo dever ainda obter onmero de inscrio, o nome e as respostas de cada candidato. Ao final, deve-se

    imprimir o nmero de inscrio, o nome e a nota de cada candidato.

    Algoritmo 109Construa um algoritmo que armazene nome, endereo e telefone de 50 pessoas

    e mostre, a partir de um nome digitado, as informaes referentes ao nome.

    Algoritmo 110 Desafio 04No vestibular de uma universidade, no curso de informtica, inscreveram-se

    1200 pessoas. Construa um algoritmo que armazene o gabarito da prova que tinha100 questes, sendo que cada questo valia 1 ponto. O algoritmo dever ainda obter onmero de inscrio, o nome e as respostas de cada candidato. Ao final, deve-seimprimir o nmero de inscrio, o nome, as respostase a nota de cada candidato.

    MATRIZ

    Os vetores so arranjos homogneos unidimensionais, no entanto, podemosencontrar diversos problemas que envolvem na sua soluo arranjos homogneosmulti-dimensionais, particularmente de duas ou trs dimenses.

    tipo_dos_dados nome_da_matriz[Qtd,...,Qtd];

  • 5/27/2018 Program o EstC_16.pdf

    34/41

    Exemplo:

    int m[5,10];

    Este exemplo cria uma matriz, ou vetor multi-dimensional, com cinco linhas edez colunas. Na memria esta matriz ter a seguinte configurao.

    0 1 2 3 4 5 6 7 8 9

    0

    1

    2

    3

    4

    Para que se possa acessar um elemento da matriz, ser necessrio um nmero

    de ndices igual dimenso da matriz, ou seja, numa matriz bi-dimensional seronecessrios 2 ndices, um para referenciar as linhas e outro para as colunas.

    Na matriz dada como exemplo, para referenciarmos o elemento em destaque,teremos que utilizar as coordenadas linha 2 e coluna 3, dessa forma, caso queiramosler um determinado nmero do teclado e guard-lo nesta posio da matriz,deveremos utilizar o comando a seguir:

    leia m[2,3];

    Algoritmo 111Construa um algoritmo que crie e preencha, com nmeros inteiros lidos do

    teclado, uma matriz 7x6.

    progmatriz01inti,j, m[7,6];

    para(i=0;i

  • 5/27/2018 Program o EstC_16.pdf

    35/41

    a) o maior elemento da matriz;b) a soma dos elementos da matriz; ec) a mdia dos elementos da matriz.

    Algoritmo 114Construa um algoritmo que leia uma matriz quadrada de ordem 5 de inteiros e

    exiba os elementos da diagonal principal.

    Algoritmo 115

    Tente resolver o Algoritmo 110 Desafio 04, utilizando o conceito dematrizes.

    Algoritmo 116A tabela abaixo demonstra a quantidade de vendas dos fabricantes de veculos

    durante o perodo de 1993 a 1998, em mil unidades.

    Construa um algoritmo que:a) leia os dados da tabela;b) determine e exiba o fabricante que mais vendeu em 1996;c) determine e exiba o ano de maior volume geral de vendas;d) determine e exiba a mdia anual de vendas de cada fabricante no perodo.

    Algoritmo 117Construa um algoritmo que leia uma matriz quadrada de ordem 10 e, a ps a

    leitura dos dados, mostre os nmeros mpares constantes na matriz.

    Algoritmo 118Construa um algoritmo que leia uma matriz 8x10 e a preencha com nmeros

    reais. Aps o preenchimento da matriz o algoritmo dever somar os elementos de cadalinha armazenando tais resultados num vetor. Ao final, deve-se mostrar o vetorresultante.

    Algoritmo 119Construa um algoritmo que leia uma matriz 5x3 e gere a transposta desta

    matriz. Obs.: Uma matriz transposta gerada trocando-se as linhas pelas colunas.

    Algoritmo 120Construa um algoritmo que leia uma matriz de ordem 10 e a imprima. A seguir,

    troque:a) a segunda linha pela oitava linha;b) a quarta coluna pela dcima coluna; e

  • 5/27/2018 Program o EstC_16.pdf

    36/41

    c) a diagonal principal pela diagonal secundria.

    Imprima a matriz resultante.

    Algoritmo 121Construa um algoritmo que armazene as alturas dos atletas de cinco delegaes

    que participaro dos jogos de vero. Cada delegao tem 10 atletas. O algoritmodever imprimir a maior altura de cada delegao e a maior entre todos os atletas.

    Algoritmo 122A viao XPTO tem na rodoviria Novo Rio uma tabela contendo os horrios de

    partidas dos nibus para Nova Friburgo nos sete dias da semana.Construa um algoritmo que possa armazenar estes horrios e que d duas

    opes de consulta ao usurio: por dia da semana o usurio dever digitar o dia da semana [1..7] e o

    algoritmo dever mostrar todos os horrios daquele dia; por dia da semana entre os horrios x e y o usurio dever entrar com os trs

    argumentos e o algoritmo dever exibir os horrios que se encaixem nascondies.

    Algoritmo 123Construa um algoritmo que leia uma matriz 5x5 de inteiros e apresente uma

    determinada linha da matriz, solicitada via teclado.

    Algoritmo 124Construa um algoritmo que leia uma matriz 12x4 com os valores das vendas de

    uma loja. Cada linha representar um ms do ano e cada coluna representar umasemana no ms. O algoritmo dever calcular e exibir os seguintes dados:

    a) total vendido em cada ms;

    b) total vendido em cada semana durante todo o ano;c) total vendido em cada semana de um determinado ms digitado pelousurios;

    d) total vendido no ano;

    MIGRAO PARA LINGUAGEM C

    **********[ Reescrever os Algoritmos em Linguagem C ]**********

    FUNES

    Uma Funo um trecho de programa independente com um objetivo

    determinado, simplificando o entendimento do programa e proporcionando-o menoreschances de erro e de complexidade.

    A Funo, na programao imperativa, a melhor ferramenta paraparticionamento do programa. Mas qual a finalidade de se particionar um programa?Um programa ao ser particionado passa a ser visto, obrigatoriamente, naturalmente eintuitivamente, como um conjunto de partes, onde cada uma delas pode ser pensada eimplementada separadamente.

  • 5/27/2018 Program o EstC_16.pdf

    37/41

    Serve para se reduzir a complexidade do programa?Sim, pois quando se esta pensando numa parte, o programador abstrai a

    existncia das outras. claro que a abstrao no total, pois as partes devero sercapazes de interagir.

    Podemos dizer que um programa desenvolvido de forma particionada trs

    benefcios quanto confiabilidade de sua correta execuo?Sim, uma vez concluda, testada e aprovada, uma parte poder serusada futuramente de maneira confivel e sem a necessidade de ser reescrita.

    Ganha-se alguma performance no desenvolvimento do programa?Em programas menores, os ganhos so menores, porm, em sistemas

    maiores a reusabilidade das Funes de fundamental importncia para o sucesso doproduto final.

    Podemos resumir as vantagens do emprego de Funes em:

    1- Dividir e estruturar um programa em partes logicamente coerentes;2- Facilidade em testar trechos em separados;3- Melhor legibilidade do programa;4- Evitar redundncia de programao;5- Possibilidade de criar bibliotecas de Funes.

    Quando uma Funo chamada, o fluxo de controle de execuo desviadopara a Funo. Ao terminar a execuo dos comandos da Funo, o fluxo retorna aocomando seguinte quele onde ela foi ativada.

    A seguir, a estrutura de uma Funo:

    nome_da_funo(parmetros) {

    Declarao das variveis

    Comandos que formam o corpo da Funo

    Retorno de valores}

    Algoritmo 125Construa um programa em C que receba trs nmeros inteiros e mostre o

    dobro de cada um deles. Use uma Funo para o clculo.

    #include

    int dobro(int num) {int r;r=num*2;return r;

    }

    void main(void) {int i, n, resultado;for(i=0;i

  • 5/27/2018 Program o EstC_16.pdf

    38/41

    scanf("%d",&n);resultado=dobro(n);printf("O dobro de %d eh %d.\n\n",n,resultado);

    }getch();

    }

    Algoritmo 126Construa um programa em C que receba trs notas de um aluno e calcule a sua

    mdia. Use uma Funo para o clculo.

    Algoritmo 127Construa um programa em C que receba trs nmeros inteiros e mostre o

    maior deles. Utilize um Funo para encontrar o maior dos nmeros.

    Algoritmo 128Construa um programa em C que receba um nmero inteiro e mostre o seu

    fatorial. Utilize uma Funo para realizar o clculo.

    Algoritmo 129Construa um programa em C que receba um caracter via teclado e informe se

    ele uma consoante ou uma vogal. Utilize uma Funo para descobrir se o caracter consoante ou vogal. A Funo no dever emitir mensagens ao monitor.

    Algoritmo 130Construa um programa em C que receba um nmero inteiro na base 10 e o

    represente na base 2 e na base 8. Utilize uma Funo para cada base.

    Algoritmo 131

    Construa um programa em C que implemente uma Funo que receba um vetorde inteiros e seu tamanho e retorne o menor dos elementos do vetor.

    Algoritmo 132Construa um programa em C que implemente uma Funo que receba um vetor

    de 10 posies e um nmero e verifique se tal nmero existe no vetor.

    Algoritmo 133Construa um programa em C que implemente uma Funo que receba um vetor

    de 20 caracteres e um caracter e retorne a quantidade de vezes que o caracteraparece no vetor.

    Algoritmo 134Construa um programa em C que implemente uma Funo que receba um vetor

    com 10 inteiros e informe o vetor esta em ordem crescente.

    Algoritmo 135Construa um programa em C que implemente uma Funo que receba um

    nmero inteiro e mostre a tabuada deste nmero.

  • 5/27/2018 Program o EstC_16.pdf

    39/41

    ESCOPO DAS VARIVEIS

    Entende-se por escopo de variveis a visibilidade/acessibilidade quedeterminada varivel ter dependendo de onde ela for declarada. Existem trspossibilidades:

    Variveis Locais;Variveis Globais; eVariveis Formais.

    LOCAIS

    As variveis locais possuem visibilidade apenas dentro do bloco onde foramdeclaradas, ou seja, so de uso exclusivo do bloco em questo. Por exemplo, umavarivel declarada dentro da funo main(), no acessvel dentro de outras funes.

    Algoritmo 136//**************[ Exemplo Correto ]**************

    int dobro(int x) {return x*2;}

    void main(void) {int i;printf(Entre comum inteiro: );scanf(%d,&i);printf(O dobro de %d eh %d\n,i,dobro(i));getch();

    }

    Algoritmo 137

    //**************[ Exemplo Errado ]**************int dobro(void) {return i*2; // Erro de acesso varivel i

    } // i reconhecida apenas na funo main()

    void main(void) {int i;printf(Entre com um inteiro: );scanf(%d,&i);printf(O dobro de %d eh %d\n,i,dobro());getch();

    }

    FORMAIS

    As variveis formais so os parmetros declarados nas funes. Alguns autorese a prpria linguagem C, tratam estas variveis como locais, isto porque a nicadiferena entre estas e as locais, o local onde elas so declaradas...na linha em quese cria uma funo, quanto ao funcionamento e a acessibilidade, as locais e formaisfuncionam da mesma forma.

  • 5/27/2018 Program o EstC_16.pdf

    40/41

    int dobro(int x) { // x uma varivel formal.return x*2;

    }

    GLOBAIS

    As variveis globais so declaradas fora de qualquer bloco/funo. Elas soacessveis, tanto para leitura ou manipulao, por qualquer bloco ou funo doprograma.

    Algoritmo 138//**************[ Exemplo Correto ]**************int i;

    int dobro(void) {return i*2;

    }

    void main(void) {

    printf(Entre com um inteiro: );scanf(%d,&i);printf(O dobro de %d eh %d\n,i,dobro());getch();

    }

    Observe que a varivel ifoi declarada antes de qualquer funo e isso a tornaglobal e consequentemente acessvel em qualquer lugar. Note que tanto a funodobro()quanto a funo main()acessam normalmente a varivel i.

    Num primeiro instante esta versatilidade pode parecer atrativa e simplificadora.Porm, algumas confuses podem ocorrer. Veja que a funo dobro()s capaz deefetuar o clculo sobre esta varivel, caso se necessrio dobrar o valor de outravarivel, a funo dobro()no poder ser utilizada. Outra confuso pode ser gerada,normalmente em programas maiores, quanto a duplicidade de nomes de variveis. Umterceiro problema ocorre em contraste principal vantagem das variveislocais/formais que a liberao do espao de memria ocupado por uma varivellocal quando o bloco em que ela foi definida no esta em execuo. As variveisglobais existem durante todo o tempo de execuo do programa, mesmo que nosejam utilizadas.

    Algoritmo 139Construa um programa em C que armazene um vetor de caracter de vinte

    posies. Implemente uma funo que receba um caracter e que percorra o vetortrocando a ocorrncia deste caracter por um *. A funo dever retornar a quantidade

    de substituies efetuadas.

    Algoritmo 140Construa um programa em C que armazene um vetor de caracter de vinte

    posies. Implemente uma funo que receba dois caracteres e que percorra o vetortrocando a ocorrncia do primeiro caracter pelo segundo.

  • 5/27/2018 Program o EstC_16.pdf

    41/41

    Algoritmo 140 Desafio 05Construa um programa em C que armazene um vetor de 20 inteiros. Aps o

    preenchimento do vetor, deve-se chamar a funo Ordena(), que dever colocar vetorem ordem crescente.