Upload
weyck-santos
View
239
Download
0
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.