You are on page 1of 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 possua designao desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho um algoritmo. Outros algoritmos freqentemente 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 calculados mensalmente.

So vrios os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui: Um conjunto finito de regras que prov uma seqncia de operaes para resolver um tipo de problema especfico.
[KNUTH]

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


[TREMBLAY]

Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, as regras formais para a obteno do resultado ou da soluo do problema.
[AURLIO]

Um conjunto de instrues organizadas numa sequncia lgica, que conduzem o interpretador a solucionar um determinado problema.
NGELO STROLIGO PECLY

Resumindo, um algoritmo uma interpretao, passo a passo, de um determinado 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 do algoritmo utilizando smbolos geomtricos. Portugus Estruturado: consiste em transformar o diagrama de blocos numa forma narrativa, denominada pseudocdigo, muito prximo de uma linguagem computacional.

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 alcanveis em um tempo finito).

I.1.3 SOLUO DE PROBLEMAS

Compreender

Solucionar

Representao a soluo

O aluno de algoritmos deve ter sempre em mente que a soluo de um problema do mundo real no est relacionado informtica, a menos que se queira informatizar tal soluo. Observe que, pela afirmao anterior a soluo j deve existir para que se possa 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 o problema. Enfim, procure dominar o problema; Busque uma soluo para problema. Muitas vezes, basta conhecer o problema para solucion-lo, em outras, deve-se aplicar muito raciocnio lgico para encontrar uma soluo.

Como j foi dito, algoritmos so utilizados para expressar (escrever, tornar legvel por outra pessoa) um raciocnio, logo, de posse da soluo, basta represent-la atravs de algoritmos, ou seja, traduzir a soluo encontrada para uma linguagem mais especfica e padronizada, para que outras pessoas possam ler o raciocnio utilizado para solucionar o problema.

I.1.4 EXEMPLOS Os algoritmos so comuns em nosso cotidiano como, por exemplo, uma receita de bolo. Em uma receita de bolo, est descrita uma srie de ingredientes necessrios e uma 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 uma lmpada queimada. Apesar de aparentemente bastante bvio, muitas vezes fazemos esse tipo de atividade sem percebermos determinados detalhes. Podemos descrever de maneira 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 como chegar a algum lugar? Sua resposta dvida desta pessoa nada mais do que um algoritmo.

I.1.5 EXERCCIOS 1 - Elabore um algoritmo que mova os trs discos da haste 1 para a haste 2 ou para a haste 3. S possvel movimentar um nico disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um disco menor. O objetivo 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 um barco com capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a seqncia de passos que permitiria a travessia com segurana? 3 - Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele mesmo e mais uma de suas trs cargas que so: um lobo, um bode 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 em uma margem, pois o bode comer a alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? 4 - Um algoritmo no pode conter um comando como Escreva todos os nmeros inteiros 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 descobrir qual 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 ligado a uma lmpada presente em uma sala ao lado. As trs lmpadas esto inicialmente apagadas. 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 no Exerccio 1, porm com quatro discos?

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 muito complexos. 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 cabealho assim 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 possuir um relacionamento entre o cabealho da nota com seus respectivos itens. Resumindo, deve-se exercitar-se bastante, ou seja, aprender com a prtica.

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 linguagem reconhecida pelo computador, ou seja, a linguagem binria, que a nica executvel pelo 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;

I.4 LINGUAGENS DE PROGRAMAO Ns podemos descrever algoritmos atravs da lngua portuguesa, j que o Portugus a linguagem que conhecemos e usamos em nossa comunicao. No entanto, os computadores s compreendem uma linguagem composta de combinaes entre zero e um, conhecida como linguagem de mquina, que bastante complicada para ns, seres humanos. Por exemplo, suponhamos que as letras o e i sejam reconhecidas pela mquina pelos smbolos 10010110 e 01101001, respectivamente. Vamos supor tambm que um comando responsvel por escrever algo na tela do computador seja 00001111. Pois bem, para escrever a palavra oi no monitor, seria necessrio enviar a seguinte mensagem para o computador: 0000111110010110 01101001 Complicado, no? D para se ter idia que, para descrever um algoritmo ao computador, fazendo uso da linguagem de mquina, necessrio ter ao lado uma lista de cdigos compreendidos pela mquina. Alm disso, para compreender um algoritmo j escrito em linguagem de mquina, tambm se torna primordial ter em mos a mesma lista de cdigos. Para eliminar este inconveniente, foram criadas a linguagens de programao. Estas linguagens so formadas por comandos de alto nvel, representados por palavras em ingls j que foram criadas por pessoas oriundas de pases de lngua inglesa. As linguagens de programao possuem um mdulo chamado compilador ou interpretador, dependendo da linguagem que responsvel por traduzir programas de 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 bastante poderosa, acadmica e estruturada.

I.5 PORTUGUS ESTRUTURADO A partir deste ponto, comearemos a estudar a representao de algoritmos atravs do Portugus Estruturado. I.5.1 TIPOS PRIMITIVOS DE DADOS VARIVEL Uma varivel funciona como um container de algum dado, ou seja, um lugar onde podemos guardar um valor para ser utilizado ao longo do algoritmo. A primeira vista, pode soar estranho ter que guardar dados num lugar para poder utiliz -lo mais adiante, isso devido ao fato de que em nosso cotidiano fazemos isso de maneira muito 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 nossa memria. Com o segundo valor aconteceu a mesma coisa, porm o valor 3 foi armazenado num lugar diferente do primeiro valor. Os dois valores no poderiam ser armazenados no mesmo lugar pois o segundo valor sobrescreveria o primeiro. A terceira informao, a operao desejada, tambm foi armazenada em nossa memria, num terceiro lugar. Ao considerar o comando para efetuar o clculo, nosso crebro, de posse de todos os argumentos necessrios, efetua o clculo e tambm armazena o resultado numa posio de nossa memria. No ambiente computacional, j pensando em como representar o raciocnio acima atravs de um algoritmo, devemos considerar uma varivel como sendo uma referncia uma posio da memria principal do computador, como se estivssemos dando nomes s posies de nossa memria (crebro). Assim sendo, para resolvermos o clculo acima, precisaremos de trs variveis, as duas primeiras para armazenar os dois primeiros valores e a terceira para armazenar o resultado. O comando de adio, no alto nvel de raciocnio em que escrito um algoritmo, no precisar ser armazenado na memria. Dessa forma, podemos esboar um pequeno algoritmo: A=5; B=3; C=A+B; Por todo raciocnio descrito acima, o resultado armazenado na varivel C o nmero inteiro 8.

TIPOS DE DADOS As variveis utilizadas anteriormente respeitam, perfeitamente, as regras impostas pelo Portugus Estruturado para se descrever algoritmos, porm, antes de utilizar uma varivel, devemos antes cri-las, ou seja, requisitar ao computador que reserve uma posio de memria para um determinado tipo de dado e que construa a referncia desta posio de memria ao nome dado pelo programador como identificador da varivel. Na afirmao acima podemos constatar algumas caractersticas fundamentais de 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 menos espao que um nome de uma pessoa. O nome/identificador de uma varivel pode ser uma seqncia de um ou mais caracteres alfabticos e numricos, iniciados por uma letra ou ainda pelo caracter _. Os nomes no podem conter outros smbolos grficos, operadores ou espaos em branco. importante ressaltar que as letras minsculas so consideradas diferentes das letras maisculas, assim temos como exemplos vlidos: a _especial total VALOR x2 Maximo min_sal ExpData

Seguindo as mesmas regras temos abaixo exemplos invlidos de nomes de variveis: 1x Total geral numero-minimo

A razo destes nomes serem invlidos simples: o primeiro comea com um algarismo, o segundo possui um espao em branco e o terceiro contm o operador de subtrao. Alm das regras de formao de nome em si (identificadores), uma varivel no pode utilizar como identificador uma palavra reservada da linguagem. Desta forma para declararmos uma varivel devemos seguir a seguinte sintaxe: tipo nome1 [, nome2 [, nome3 [ , nomeN]]];

Ou seja, primeiro indicamos um tipo, depois declaramos uma lista contendo um ou mais nomes (identificadores) de variveis desejadas deste tipo, onde nesta lista os nomes so separados por vrgulas e a declarao terminada por ; (pont o-e-vrgula). No Portugus Estruturado existem os seguintes tipos de dados: Tipo Tamanho/Formato Numricas Int 32-bit complemento a dois Real 32-bit IEEE 754 Outros tipos Logico 8-bit char 8-bit String 8-bit por caractere Vejamos alguns exemplos: int i; real total, preco; Tambm possvel definirmos um valor inicial para uma varivel diretamente em sua declarao: int quantidade = 0; real angulo = 1.57; logico ok = false; char letra = c; string nome = Unesa; Algumas observaes importantes:

Descrio Inteiro Ponto flutuante Tipo booleano (true e false) Um nico caracter Conjunto de caracteres

Um nmero em ponto flutuante sempre representado com um . (ponto) para separar a parte inteira da fracionria; O dado do tipo char deve ser rep resentado 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 no programa de forma que no sejam considerados como parte do cdigo, ou seja, so informaes deixadas juntamente com o cdigo como informao para quem programa. O Portugus Estruturado aceita dois tipos de comentrios:

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 de comentrios: /* comentrio de mltiplas linhas */ OPERADORES Operadores aritmticos Operador
+ * / % div **

Uso
op1 + op2 op1 - op2 op1 * op2 op1 / op2 op1 % op2 op1 div op2 op1 ** op2

Descrio
Soma op1 com op2 Subtrai op2 de op1 Multiplica op1 por op2 Divide op1 por op2 Calcula o resto da diviso inteira de op1 por op2 Calcula o quociente da diviso inteira Calcula op1 elevado potncia op2

Operadores relacionais Operador


> >= < <= == !=

Uso
op1 > op2 op1 >= op2 op1 < op2 op1 <= op2 op1 == op2 op1 != op2 op1 op1 op1 op1 op1 op1 e e

Retorna verdadeiro se
maior que op2 maior ou igual que op2 menor que op2 menor ou igual que op2 op2 so iguais op2 so diferentes

Operadores Lgicos Operador


&& || !

Uso
op1 && op2 op1 || op2 ! op

Retorna verdadeiro se
Ambos op1 e op2 so verdadeiros. Avalia a expresso op1 e condicionalmente avalia a expresso op2 Ou op1 ou op2 verdadeiro. Avalia a expresso op1 e condicionalmente avalia a expresso op2 Negao de op

Operadores de atribuio Operador


= += -= *= /= %=

Uso
op1 = op2 op1 += op2 op1 -= op2 op1 *= op2 op1 /= op2 op1 %= op2 op1 op1 op1 op1 op1 op1

Equivalente a
recebe o valor de op2 = op1 + op2 = op1 op2 = op1 * op2 = op1 / op2 = 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.4 c) "4.5E10" d) true e) '?' f) ' ' g) -5.3E-02 h) ".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) A1BC b) XA,1d c) NomeDoAluno d) 198aberto e) prog

11 - Escreva os comandos necessrios para declarar: uma varivel que receba uma frase, trs variveis que recebam as trs notas de um aluno e uma varivel que receba a idade de uma pessoa. 12 Qual a finalidade de um comentrio dentro de um programa? Como deve ser escrito em Portugus Estruturado? ESTRUTURA DE UM ALGORITMO ESCRITO EM PORTUGUS ESTRUTURADO Algoritmo, assim como muitas linguagens de programao, uma linguagem altamente estruturada que possui uma rigidez definida, embora sua estrutura de programa seja flexvel. Cada seo ou parte de um programa deve aparecer numa seqncia apropriada e ser sistematicamente correta, seno ocorrer um erro. Por outro lado, no h regras especficas para o uso de espao e linhas quebradas, dando ao programador liberdade para escrever programas mais adequados ao seu estilo. Um algoritmo escrito em Portugus Estruturado tem o seguinte formato:
PROG <identificador> tipo identificador1 [,identificador2 [,identificador3 [,identificador N]]]; [<comando1>;] [...;] [<comandoN>;] FIMPROG

COMANDOS DE ENTRADA E SADA DE DADOS SADA Normalmente, em programao, quando nos referimos sada de dados estamos particularmente interessados em exibir mensagens no monitor do computador. O comando utilizado para isso o imprima, veja a sintaxe acompanhada de alguns exemplos: imprima expresso ou varivel ;

Algoritmo 01
prog imp1 imprima Aprendendo algoritmo!!!; fimprog Este algoritmo faz com que seja exibida, na tela do computador, a mensagem: Aprendendo Algoritmo!!!

Algoritmo 02
prog imp2 int x; x=10; imprima Valor de x = , x;

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

Algoritmo 03
prog imp3 int x; x=10; imprima Resultado = , x+1; fimprog Este algoritmo faz com que seja exibida, na tela do computador, a mensagem e o 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, pelo usurio, entre no computador e fique armazenada numa varivel previamente declarada, ou seja, o dado digitado parte do teclado e vai direto para uma posio de memria RAM, veja a sintaxe acompanhada de alguns exemplos: leia nome da varivel ;

Algoritmo 04
prog leia1 int x; leia x; imprima Nmero lido = , x; fimprog Este algoritmo exibir, na tela do computador, a mensagem e o nmero digitado pelo usurio. EXPRESSES O conceito de expresso em termos computacionais est intimamente ligado ao conceito de expresso matemtica onde um conjunto de variveis e constantes numricas relacionam-se por meio de operadores compondo uma frmula que, ao ser avaliada, resulta num valor. As expresses se dividem em:

Aritmticas

Nas expresses aritmticas fazemos o uso dos operadores aritmticos que so smbolos utilizados para efetuarmos clculos matemticos. Os operadores aritmticos so utilizados somente com dados do tipo int e do tipo real. Expresso
3+2 85 3 * 3.5 5/2

Resultado
5 3 10.5 2.5

A=5; A div 2; A=5; B=2; C = A % B;

2 C vale 1

Prioridades As prioridades seguem o mesmo contexto das regras de precedncia nas expresses matemticas. Segue abaixo uma tabela contendo as prioridades e suas excees. Prioridade
1 2

Operadores
* / div % +-

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 os parnteses 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 operadores lgicos. Veremos como funciona cada um destes operadores e exemplificaremos cada um deles. A utilizao das expresses lgicas somente sero aplicadas em termos com o mesmo tipo de dados. Expresso
1 == 2 A == a 5>2 3 <= 3 true < false JOAO > JOSE (2 + 3) != 5 comp != COMP 11 > 4

Resultado
false False True True False False False True True

EXERCICIOS RESOLVIDOS 1- Considerando que X = 1, Y = 2 e Z = 5, desenvolva. a) Z % Y div Y b) X + Y + Z / 3

2- Dadas as comparaes abaixo, escreva os resultados. a) 3 == 3.0 b) a <= A c) == d) CASA != casa e) false == false f) JOAQUIM < JOSE g) 22 > 200 3- Sendo A = true e B = false. Qual o resultado das expresses abaixo a) !A && B || A && !B b) !(!(A || B) && (A || B)) c) A || B && !A || !B d) (A || B) && (!A || B) GABARITO 1a) Resp.: 5 mod 2 div 2 -> 1 div 2 -> 0 b) Resp.: 1 + 2 + 5 / 3 -> 3 + 1.667 -> 4.667 2a) Resp.: false b) Resp.: false c) Resp.: true d) Resp.: true e) Resp.: true f) Resp.: true g) Resp.: true a) Resp.: true b) Resp.: true c) Resp.: true d) Resp.: false

3-

EXERCCIOS

Algoritmo 05
Construa um algoritmo que obtenha do usurio, via teclado, o seu nome e exiba a mensagem: Ol <nome digitado>!

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

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

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

Algoritmo 09
Construa um algoritmo que leia um nome, um endereo e um telefone e imprima-os na tela do micro.

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

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

Algoritmo 12
Construa 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 nmeros inteiros e mostre a mdia destes nmeros.

Algoritmo 14
Construa 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 aluno seguido de sua mdia.

Algoritmo 15
Construa 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 e pelo nome. Exemplo: entrada: ngelo, Pecly sada: Pecly, ngelo

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

Algoritmo 17
Construa um algoritmo que leia dois nmeros inteiros e imprima a seguinte sada: Dividendo: Divisor: Quociente: Resto:

Algoritmo 18
Construa um algoritmo que leia um nmero inteiro de trs casas e imprima o algarismo da casa das dezenas.

Algoritmo 19
Construa um algoritmo que leia uma data no formato ddmmaa e imprima: dia, ms e ano separados.

Algoritmo 20
Construa um algoritmo que leia uma data no formato ddmmaa e imprimano formato mmddaa.

Algoritmo 21
Construa 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 22
Construa 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 sua base e a sua altura.

Algoritmo 24
Construa 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 25
Construa um algoritmo para ler uma temperatura dada na escala Fahrenheit e exibir o equivalente em Celsius.

Algoritmo 26
Construa um algoritmo que leia duas variveis inteiras e troque o contedo de uma com a outra.

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

ESTRUTURAS DE SELEO Um programa de computador uma seqncia de instrues organizadas de forma tal a produzir a soluo de um determinado problema. Naturalmente tais instrues so executadas em seqncia, o que denomina-se fluxo seqencial de execuo. Em inmeras circunstncias necessrio executar as instrues de um programa numa ordem diferente da estritamente seqencial. Tais situaes so caracterizadas pela necessidade de repetio de instrues individuais ou grupos de instrues e tambm pelo desvio do fluxo de execuo. As linguagens de programao tipicamente possuem alguns comandos estruturados destinados ao controle do fluxo de execuo, isto , estruturas que permitem a repetio e o desvio do fluxo de execuo. Para que fique mais claro, vamos, mais uma vez, considerar um exemplo do nosso cotidiano. Imagine que voc esteja planejando passar o fim de semana numa praia, mas esteja preocupado com as condies do clima, dessa forma voc teria, naturalmente, o seguinte raciocnio: ...amanh, SE fizer um dia ensolarado, viajarei para praia, MAS SE estiver 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. Neste tipo de situao, os comandos excludos pela condio nunca sero executados. COMANDO SE No Portugus Estruturado, para que se implemente um desvio simples no fluxo de execuo do programa, deve-se utilizar o comando se. Este comando deve respeitar 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 se ou 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.

O comando se funciona 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 em relao 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 no comando se, podem ser quaisquer comandos da linguagem, inclusive outro comando se. Caso isto ocorra, diz-se que estes comandos se so aninhados. Ao se aninhar comandos se, deve-se redobrar a ateno em relao s clusulas senao no que diz respeito a identificar a qual comando se pertence um determinado senao. Veja como ficaria 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 se mais interno no possui a clusula senao. comum encontrar na literatura a denominao estrutura de deciso simples para um comando se sem a clusula senao e, estrutura de deciso composta, para o comando se seguido da clusula senao. Veja o algoritmo do fim de semana: ... se (clima == sol) { viajar; } senao { ir locadora; } ...

Algoritmo 28
Construa um algoritmo que leia um nmero e se ele for maior do que 20, imprima a metade do nmero. prog metade real numero, metade; imprima Digite um numero: ; leia numero;

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

Algoritmo 29
Construa um algoritmo que leia um nmero e, se for positivo, mostre seu inverso; caso contrrio, imprima o valor absoluto do nmero. prog inversoabsoluto real numero, inverso, absoluto; imprima Digite um nmero; leia numero; se ( numero > 0.0 ) { inverso = 1 / numero; imprima Inverso: ,inverso; } senao { absoluto = numero * -1; imprima Absoluto: ,absoluto; } fimprog

Algoritmo 30
Construa um algoritmo que leia um nmero inteiro e diga (mostre a mensagem) se ele divisvel por 3. prog div3 int n, resto; imprima Digite um numero inteiro: ; leia n; resto = n % 3; se ( resto == 0 ) { imprima O numero e mltiplo de 3!!!; } senao { imprima O numero NO e mltiplo de 3!!!; } fimprog

Algoritmo 31
Construa 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 ou nulo.

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

COMANDO ESCOLHA O comando escolha um comando de desvio mltiplo de fluxo, isto , baseado na avaliao de uma expresso ordinal escolhido um caminho de execuo dentre vrios possveis. Um resultado ordinal aquele que pertence a um conjunto onde se conhece 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 se aninhados, 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; comando_padrao1; [comando_padrao2; comando_padraoN;]]

[padrao: }

A expresso utilizada pelo escolha deve, necessariamente, retornar um resultado ordinal. Conforme o resultado selecionado em cada um dos casos indicados pela construo caso. Os comandos encontrados a partir do caso escolhido so executados at o final do comando escolha ou at encontrar um comando interrompe. Se o valor resultante no possuir um caso especfico, sero executados os comandos 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 34
Construa um algoritmo que leia dois nmeros e mostre o maior deles.

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

Algoritmo 36
Deseja-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 a quantidade 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 37
Construa 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
>=8.0 >=5.0 e <8.0 <5.0

Conceito
A B C

Algoritmo 38
Construa um algoritmo que determine o grau de obesidade de uma pessoa, sendo fornecido o peso e a altura da pessoa. O grau de obesidade determinado pelo ndice da massa corprea (Massa = Peso / Altura2) atravs da tabela abaixo: Massa Corprea
<26 >= 26 e <30 >=30

Grau de Obsidade
Normal Obeso Obeso Mbido

Algoritmo 39
Uma empresa deseja aumentar o salrio de seus empregados. O reajuste dever obedecer a seguinte tabela: Salrio Atual (R$)
0.0 a 1000.00 1000.01 a 5000.00 Acima de 5000.00

Rejuste
20% 10% 0%

Construa um algoritmo que leia o nome e o salrio atual de um empregado, e exiba o nome, o salrio atual e o salrio reajustado.

Algoritmo 40
Construa um algoritmo que calcule a conta final de um hspede de um hotel, considerando que: a) sero lidos o nome do hspede, o tipo do apartamento utilizado (A, B, C ou D), o nmero de dirias utilizadas pelo hspede e o valor do consumo interno do hspede; b) o valor da diria determinado pela seguinte tabela: Apartamento
A B

Valor da Diria (R$)


150.00 100.00

C D

75.00 50.00

c) o valor total das dirias o nmero de dias hospedados multiplicado pelo valor 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, o nmero de dirias utilizadas, o valor unitrio da diria, o valor total das dirias, o valor do consumo interno, o subtotal, o valor da taxa de servio e o total geral.

Algoritmo 41
Deseja-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 de dependentes; 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
at 10800.00 De 10800.01 at 21600.00 acima de 21600.00

Alquota
Isento 15% 25%

Parcela a Deduzir
1620.00 3780.00

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

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

Algoritmo 43
Construa um algoritmo que leia um nmero inteiro de 3 casas e informe se o algarismo da casa das centenas par ou mpar.

Algoritmo 44
Construa 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

Construa um algoritmo que implemente uma calculadora bsica. Para isto o algoritmo dever obter dois nmeros do teclado e um operador (caractere que representar a operao matemtica desejada [+, -, * e /]). De posse dos dados de 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 se ela carioca, paulista, mineiro ou outros.

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

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

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

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

Algoritmo 51
Construa 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 52
Construa um algoritmo que leia uma quantia em reais e transforme para dlar.

Algoritmo 53
Segundo 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 calcule e mostre o seu peso ideal, utilizando as seguintes frmulas: para homens: (72.7 * H) 58 para mulheres: (62.1 * H) 44.7

Algoritmo 54
Construa um algoritmo que leia um nmero inteiro entre 1 e 7 e mostre o dia da semana correspondente. Exemplos: Entrada: 1 Sada: Domingo Entrada: 4 Sada: Quarta

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

Algoritmo 56

Construa um algoritmo que leia o tipo de carro e a distncia, em Km, que se deseja percorrer. O programa dever, baseado na tabela a seguir, calcular o consumo de combustvel para o percurso. Tipo de carro
A B C D E

Consumo
13.5 Km/l 12.0 Km/l 10.5 Km/l 9.0 Km/l 7.5 Km/l

Algoritmo 57
Construa um algoritmo que leia uma data no formato ddmmaaaa e informe se a data vlida ou no.

Algoritmo 58
Construa um algoritmo que leia uma letra do teclado e informe: se uma vogal maiscula; se uma vogal minscula; ou se uma consoante.

Algoritmo 59
Construa um algoritmo que leia o ano de nascimento de um nadador e o classifique de acordo com a tabela a seguir: Faixa de Idade
0 4 anos 5 7 anos 8 10 anos 11 13 anos 14 17 anos Maiores de 17 anos

Categoria
No aceito Infantil A Infantil B Juvenil A Juvenil B Snior

Algoritmo 60 Desafio 02
Construa 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 algoritmo deve 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 mais comuns da programao utilizada para efetuarmos contagens, para obteno de dados a serem manipulados pelo programa. Em Portugus Estruturado dispomos do comando para, cuja sintaxe dada a seguir: para(inicializao; condio de execuo; incr/decremento) { Lista de comandos }

O comando para possui trs campos ou sees, todas opcionais, delimitados por um par de parnteses que controlam a repetio de um comando individual ou de um 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 (um contador). O segundo campo uma expresso lgica que determina a execuo ou no do(s) comando(s) associado(s) ao para. O terceiro campo realiza uma operao sobre a varivel de controle, geralmente incrementando ou decrementando tal varivel.

Algoritmo 61
Construa um algoritmo que conte de 1 5. prog contador01 imprima 1; imprima 2; imprima 3; imprima 4; imprima 5; fimprog

Algoritmo 62
Construa um algoritmo que conte de 1 5000. prog contador01 imprima 1; . . . imprima 5000; fimprog Para que o Algoritmo 62 funcione, o computador deveria entender o significado da reticncia, mas como isso no ocorre, devemos repetir a digitao do comando imprima por 5000 vezes. Felizmente temos uma alternativa a este exaustivo trabalho, o comando para apresentado anteriormente se adapta perfeitamente a esta situao. Veja como ficaria a soluo do Algoritmo 62:

Algoritmo 63
prog contador02 int i; para (i=1; i<=5000; i=i+1) { imprima i; } fimprog Outro comando bastante utilizado para construir laos de repetio o comando enquanto, cuja sintaxe dada a seguir: enquanto (expresso lgica) { lista de comandos }

O comando enquanto, assim como no comando para, avalia o resultado da expresso lgica antes de executar o(s) comando(s) associado(s), assim, caso a condio seja inicialmente falsa, tal(tais) comando(s) no ser(sero) executado(s). Um problema tpico relacionado aos comandos de repetio o seguinte: se a condio nunca se tornar falsa o lao ser repetido ininterruptamente. Esta situao pode ocorrer tanto no comando para como no comando enquanto, porm, muito mais comum no comando enquanto devido sua estrutura menos rgida. No para as trs sees em que se divide o controle do loop, impem uma maior formalidade construo do comando, o que inconscientemente, nos induz a sermos mais cautelosos. Veja o exemplo:

Algoritmo 64
prog contador03 int i; i=1; enquanto (i<=5000) { imprima i; i=i+1; } fimprog Os algoritmos 63 e 64 executam exatamente a mesma tarefa, porm, observe que mais fcil o programador se distrair e esquecer-se do comando i=1; ou do comando i=i+1;. Isto exposto, fica a critrio de cada um a opo por adotar um comando ou o outro. Exerccios

Algoritmo 65
Tente resolver o de repetio.

Algoritmo 60 Desafio 02, utilizando algum dos comandos

Algoritmo 66
Construa um algoritmo que obtenha cinco nmeros e mostre o quadrado de cada um dos nmeros.

Algoritmo 67
Construa um algoritmo que imprima todos os nmeros inteiros entre 1 e 100.

Algoritmo 68
Construa um algoritmo que imprima todos os nmeros inteiros entre 100 e 1.

Algoritmo 69
Construa um algoritmo que imprima os 200 primeiros nmeros pares.

Algoritmo 70
Construa um algoritmo que mostre os mltiplos de 5 no intervalo entre 1 e 500.

Algoritmo 71
Construa um algoritmo que imprima os quadrados dos inteiros entre 1 e 50.

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

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

Algoritmo 74
Construa 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 75
Construa 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 soma de todos os nmeros lidos.

Algoritmo 77
Construa um algoritmo que leia um conjunto de 100 nmeros inteiros positivos e determine o maior deles.

Algoritmo 78
Construa um algoritmo que leia um conjunto de 100 nmeros inteiros (positivos ou negativos) e determine o maior deles.

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

Algoritmo 80
Construa um algoritmo que leia um conjunto de nmeros inteiros positivos terminado pelo nmero 0 (zero). Ao final, o programa dever mostrar a mdia aritmtica de todos os nmeros lidos.

Algoritmo 81
Construa um algoritmo que leia dois nmeros inteiros e mostre o produto entre eles. Calcule o produto atravs de somas sucessivas.

Algoritmo 82
Construa 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

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

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

Algoritmo 85
Construa um algoritmo que leia um nmero N, calcule e mostre os N primeiros termos da sequncia de Fibonacci. A sequncia de Fibonacci formada inicialmente pelos valores 0 e 1 e, a partir de ento, cada novo elemento desta sequncia obtido pela soma dos dois elementos imediatamente anteriores. Exemplo: (0,1,1,2,3,5,8,13,...)

Algoritmo 86
A 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 forma que 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 87
Construa 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 da turma.

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

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

Algoritmo 90 Desafio 03
Construa 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 o primeiro. VETOR Em muitas aplicaes os tipos bsicos de dados no so suficientes para suprir as necessidades da estrutura de dados do problema. J vimos em algoritmos passados a necessidade de lermos diversos valores, para isso usamos uma nica varivel, o que atendeu perfeitamente a demanda oriunda do problema. Porm, caso seja necessrio recuperar um valor lido anteriormente, no ser possvel, pois a cada nova leitura o contedo 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

variveis? Pois existe uma maneira muito simples de se fazer isso, basta criarmos um tipo de dado chamado VETOR. O vetor uma estrutura de dados homognea indexada, ou seja, devemos entender um vetor como sendo um conjunto de variveis do mesmo tipo, onde cada uma 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. A declarao de um vetor deve respeitar a a seguinte sintaxe: tipo_dos_dados nome_do_vetor[Quantidade_de_elementos];

Algoritmo 91
prog vetor01 int i, vet[5]; vet[0]=3; vet[1]=5; vet[2]=2; vet[3]=6; vet[4]=8; imprima A 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 92
prog vetor02 int i, vet[5]; para(i=0;i<5;i++) { imprima Digite um nmero inteiro: leia vet[i]; } imprima A terceira posio do vetor guarda o n , vet[2]; fimprog Para o Algoritmo 92, vamos imaginar que o usurio tenha digitado os nmeros 3, 5, 2, 6 e 8. Desta forma o vetor vet dever ter a seguinte configurao em memria: ndice Valor 0 3 1 5 2 2 3 6 4 8

Assim sendo, o Algoritmo 92 exibir como resultado a seguinte mensagem: A terceira posio do vetor guarda o n 2 Exerccios

Algoritmo 93
Tente resolver o armazenar os nmeros.

Algoritmo 90 Desafio 03,

utilizando um vetor para

Algoritmo 94
Construa 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 com dados lidos partir do teclado. O terceiro vetor dever ser preenchido partir da soma, dos elementos posicionalmente correspondentes, dos dois primeiros vetores.

Algoritmo 95
Construa um algoritmo que armazene 15 nmeros inteiros num vetor e imprima uma listagem numerada contendo o nmero e uma mensagem informando se ele par ou mpar.

Algoritmo 96
Construa 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 os nomes e os novos salrios.

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

Algoritmo 98
Um professor tem uma turma de 80 alunos e deseja calcular e imprimir a nota de cada aluno seguida da mdia da turma.

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

Algoritmo 100
Construa um algoritmo que armazene dois conjuntos de nmeros inteiros, tendo um 10 e o outro 20 elementos e apresente os elementos comuns aos dois conjuntos.

Algoritmo 101
Construa um algoritmo que armazene dois conjuntos de nmeros inteiros, tendo um 10 e o outro 20 elementos e apresente os elementos comuns aos dois conjuntos. Podem existir nmeros repetidos nos conjuntos de dados, porm, a sada no dever mostrar repeties.

Algoritmo 102
Construa um algoritmo que armazene um vetor vet01 de 10 nmeros inteiros e positivos e gere um vetor vet02 contendo os quadrados dos respectivos componentes de vet01.

Algoritmo 103
Construa um algoritmo que armazene 100 nmeros inteiros e positivos, que imprima o maior e menor dos nmeros e imprima o percentual de nmeros pares e mpares.

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

Algoritmo 105
Construa um algoritmo que armazene dois conjuntos de 25 nmeros inteiros, preencha um terceiro vetor intercalando os elementos dos dois primeiros e mostre o terceiro vetor.

Algoritmo 106
Construa 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 nmeros iguais ao ltimo nmero lido.

Algoritmo 107
Construa um algoritmo que armazene um conjunto de 100 nmeros reais e imprima a quantidade de nmeros maiores que a mdia do vetor.

Algoritmo 108
No vestibular de uma universidade, no curso de informtica, inscreveram-se 1200 pessoas. Construa um algoritmo que armazene o gabarito da prova que tinha 100 questes, sendo que cada questo valia 1 ponto. O algoritmo dever ainda obter o nmero 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 109
Construa 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 04


No vestibular de uma universidade, no curso de informtica, inscreveram-se 1200 pessoas. Construa um algoritmo que armazene o gabarito da prova que tinha 100 questes, sendo que cada questo valia 1 ponto. O algoritmo dever ainda obter o nmero de inscrio, o nome e as respostas de cada candidato. Ao final, deve-se imprimir o nmero de inscrio, o nome, as respostas e a nota de cada candidato. MATRIZ Os vetores so arranjos homogneos unidimensionais, no entanto, podemos encontrar diversos problemas que envolvem na sua soluo arranjos homogneos multi-dimensionais, particularmente de duas ou trs dimenses. tipo_dos_dados nome_da_matriz[Qtd,...,Qtd];

Exemplo: int m[5,10]; Este exemplo cria uma matriz, ou vetor multi-dimensional, com cinco linhas e dez colunas. Na memria esta matriz ter a seguinte configurao.
0 0 1 2 3 4 1 2 3 4 5 6 7 8 9

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 sero necessrios 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 queiramos ler um determinado nmero do teclado e guard-lo nesta posio da matriz, deveremos utilizar o comando a seguir: leia m[2,3];

Algoritmo 111
Construa um algoritmo que crie e preencha, com nmeros inteiros lidos do teclado, uma matriz 7x6. prog matriz01 int i,j, m[7,6]; para(i=0;i<7;i++) { para(j=0;j<6;j++) { imprima Digite um nmero inteiro: leia m[i,j]; } } fimprog Exerccios

Algoritmo 112
Construa um algoritmo que crie duas matrizes 2x3, A e B, de inteiros e as preencha com dados lidos do teclado. O algoritmo dever preencher e exibir a matriz C, tambm 2x3, com a soma da matriz A com a matriz B.

Algoritmo 113
Construa um algoritmo que leia uma matriz de ordem 3x5 de elementos inteiros, calcule e imprima:

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

Algoritmo 114
Construa um algoritmo que leia uma matriz quadrada de ordem 5 de inteiros e exiba os elementos da diagonal principal.

Algoritmo 115
Tente resolver o matrizes.

Algoritmo 110 Desafio 04,

utilizando o conceito de

Algoritmo 116
A 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 117
Construa 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 118
Construa 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 cada linha armazenando tais resultados num vetor. Ao final, deve-se mostrar o vetor resultante.

Algoritmo 119
Construa 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 120
Construa 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

c) a diagonal principal pela diagonal secundria. Imprima a matriz resultante.

Algoritmo 121
Construa um algoritmo que armazene as alturas dos atletas de cinco delegaes que participaro dos jogos de vero. Cada delegao tem 10 atletas. O algoritmo dever imprimir a maior altura de cada delegao e a maior entre todos os atletas.

Algoritmo 122
A 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 nas condies.

Algoritmo 123
Construa um algoritmo que leia uma matriz 5x5 de inteiros e apresente uma determinada linha da matriz, solicitada via teclado.

Algoritmo 124
Construa 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 uma semana 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 pelo usurios; 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 menores chances de erro e de complexidade. A Funo, na programao imperativa, a melhor ferramenta para particionamento do programa. Mas qual a finalidade de se particionar um programa? Um programa ao ser particionado passa a ser visto, obrigatoriamente, naturalmente e intuitivamente, como um conjunto de partes, onde cada uma delas pode ser pensada e implementada separadamente.

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 ser capazes 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 ser usada 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 do produto final. Podemos resumir as vantagens do emprego de Funes em: 12345Dividir e estruturar um programa em partes logicamente coerentes; Facilidade em testar trechos em separados; Melhor legibilidade do programa; Evitar redundncia de programao; Possibilidade de criar bibliotecas de Funes.

Quando uma Funo chamada, o fluxo de controle de execuo desviado para a Funo. Ao terminar a execuo dos comandos da Funo, o fluxo retorna ao comando seguinte quele onde ela foi ativada. A seguir, a estrutura de uma Funo: <tipo_de_retorno> nome_da_funo(parmetros) { Declarao das variveis Comandos que formam o corpo da Funo Retorno de valores }

Algoritmo 125
Construa um programa em C que receba trs nmeros inteiros e mostre o dobro de cada um deles. Use uma Funo para o clculo. #include <conio.h> int dobro(int num) { int r; r=num*2; return r; } void main(void) { int i, n, resultado; for(i=0;i<3;i++) { printf("Entre com um nmero inteiro: ");

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

Algoritmo 126
Construa um programa em C que receba trs notas de um aluno e calcule a sua mdia. Use uma Funo para o clculo.

Algoritmo 127
Construa um programa em C que receba trs nmeros inteiros e mostre o maior deles. Utilize um Funo para encontrar o maior dos nmeros.

Algoritmo 128
Construa um programa em C que receba um nmero inteiro e mostre o seu fatorial. Utilize uma Funo para realizar o clculo.

Algoritmo 129
Construa 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 130
Construa 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 vetor de inteiros e seu tamanho e retorne o menor dos elementos do vetor.

Algoritmo 132
Construa 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 133
Construa 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 caracter aparece no vetor.

Algoritmo 134
Construa um programa em C que implemente uma Funo que receba um vetor com 10 inteiros e informe o vetor esta em ordem crescente.

Algoritmo 135
Construa um programa em C que implemente uma Funo que receba um nmero inteiro e mostre a tabuada deste nmero.

ESCOPO DAS VARIVEIS Entende-se por escopo de variveis a visibilidade/acessibilidade que determinada varivel ter dependendo de onde ela for declarada. Existem trs possibilidades: Variveis Locais; Variveis Globais; e Variveis Formais. LOCAIS As variveis locais possuem visibilidade apenas dentro do bloco onde foram declaradas, ou seja, so de uso exclusivo do bloco em questo. Por exemplo, uma varivel 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 com um 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 autores e a prpria linguagem C, tratam estas variveis como locais, isto porque a nica diferena entre estas e as locais, o local onde elas so declaradas...na linha em que se cria uma funo, quanto ao funcionamento e a acessibilidade, as locais e formais funcionam da mesma forma.

int dobro(int x) { // x uma varivel formal. return x*2; } GLOBAIS As variveis globais so declaradas fora de qualquer bloco/funo. Elas so acessveis, tanto para leitura ou manipulao, por qualquer bloco ou funo do programa.

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 i foi declarada antes de qualquer funo e isso a torna global e consequentemente acessvel em qualquer lugar. Note que tanto a funo dobro() 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 de efetuar o clculo sobre esta varivel, caso se necessrio dobrar o valor de outra varivel, a funo dobro() no poder ser utilizada. Outra confuso pode ser gerada, normalmente em programas maiores, quanto a duplicidade de nomes de variveis. Um terceiro problema ocorre em contraste principal vantagem das variveis locais/formais que a liberao do espao de memria ocupado por uma varivel local quando o bloco em que ela foi definida no esta em execuo. As variveis globais existem durante todo o tempo de execuo do programa, mesmo que no sejam utilizadas.

Algoritmo 139
Construa um programa em C que armazene um vetor de caracter de vinte posies. Implemente uma funo que receba um caracter e que percorra o vetor trocando a ocorrncia deste caracter por um *. A funo dever retornar a quantidade de substituies efetuadas.

Algoritmo 140
Construa um programa em C que armazene um vetor de caracter de vinte posies. Implemente uma funo que receba dois caracteres e que percorra o vetor trocando a ocorrncia do primeiro caracter pelo segundo.

Algoritmo 140 Desafio 05


Construa 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 vetor em ordem crescente.

You might also like