Você está na página 1de 43

300 IDIAS PARA PROGRAMAR COMPUTADORES

Na minha vivncia profissional, como programador, analista de sistemas e professor, tenho visto programadores de vrios tipos. Alguns so mais criativos, outros menos, e tambm h os que parecem eternos iniciantes. Alguns tm slida forma o em algoritmos e tcnicas de programa o! outros no a tem mas se viram quando precisam. " programadores que praticamente se #viciam# em comandar computadores, e e$traem grande pra%er dessa atividade, e h outros que o fa%em por fa%er, simplesmente, talve% pelo salrio. &s programadores realmente bons, que unem forma o tcnica, criatividade, curiosidade e pra%er parecem ser relativamente poucos. Naqueles que conheci pude perceber padr'es( eles tm acesso a um computador, em casa ou em outro lugar! tm uma grande disposi o de buscar solu 'es por si mesmos e, acima de tudo, eles programam muito. No dependem de algum mand)los programar, tendo ou no suas prprias idias. *ara resumir, eles simplesmente praticam muito, e este o fator maior que, na minha opinio, os torna melhores que os outros. *or isto foi elaborado este material, cu+o conte,do consiste essencialmente de especifica 'es de programas, no voltadas para nenhuma linguagem de programa o em particular. Sua maior finalidade fornecer idias para que programadores vidos possam programar, programar e programar, e assim se tornar cada ve% melhores. -ma restri o que a implementa o de algumas das especifica 'es ser mais apropriada estando a tela em modo te$to, o que no impede que muitas delas possam fornecer inspira o para programas em interface grfica. A maioria das especifica 'es propostas so voltadas para iniciantes em uma linguagem de programa o, e estruturadas na forma que considero mais didtica( no in.cio apenas comandos de sa.da e instru 'es matemticas simples, de forma a no sobrecarregar o estudante que, nesse momento, ainda est normalmente assimilando uma srie de novas informa 'es sobre processadores, instru 'es, seq/ncia, controle e o prprio compilador. &s cap.tulos seguintes gradativamente incorporam 0s especifica 'es novos tpicos( variveis, tipos de dado e entrada, deciso, repeti o e outras. &s primeiros cinco cap.tulos esto organi%ados em tpicos, e estes focali%ados em estruturas de programa o. &s e$erc.cios, embora variados, no so todos diferentes( alguns combinam dois ou mais e$erc.cios de cap.tulos anteriores, resultando em um mais comple$o e no qual o estudante pode aplicar a e$perincia adquirida. & ,ltimo cap.tulo sugere idias para programas, e$istentes ou no, que podem ser implementadas por programadores que + tenham amadurecido os recursos bsicos de uma linguagem de programa o, podendo tambm ser usadas para trabalhos prticos de iniciativa pessoal ou determinados pelo professor. 1m alguns casos, dado algum direcionamento inicial para a implementa o! em outros, o desafio todo do programador2 1ste um material para ser usado como um complemento, no servindo por si s para suportar um curso. 3ependendo da proposta didtica do professor que o adote, ser necessrio adequar a seq/ncia em que as especifica 'es sero propostas aos estudantes. &bviamente no h qualquer limite para a evolu o deste trabalho! por isto, cr.ticas, sugest'es e eventuais corre 'es sero sempre muito bem vindas. 4irg.lio 4asconcelos 4ilela virgilio5tba.com.br 6ras.lia, 7evereiro89:::.

SUMRIO
.1 BSICOS................................................................................................................................................1
.9.9. SA;3A S<=*>1S................................................................................................................................................9 .9.?. =A@1=A@<BA..................................................................................................................................................C .9.D. B&N@E&>1 31 @1>A......................................................................................................................................F .9.C. S&NS...................................................................................................................................................................G

.2 VARIVEIS E ENTRADA DE DADOS..............................................................................................


.?.9. SA;3A S<=*>1S................................................................................................................................................H .?.?. =A@1=A@<BA..................................................................................................................................................H .?.D. BAEAB@1E1S 1 BA31<AS...........................................................................................................................9I .?.C. B&N@E&>1 31 @1>A....................................................................................................................................9I .?.F. S&NS.................................................................................................................................................................99

.3 A!TERNATIVAS E DECIS"O..........................................................................................................13
.D.9. SA;3A S<=*>1S..............................................................................................................................................9D .D.?. =A@1=A@<BA................................................................................................................................................9D .D.D. BAEAB@1E1S 1 BA31<AS...........................................................................................................................9F .D.C. B&N@E&>1 31 @1>A....................................................................................................................................9F .D.F. S&NS.................................................................................................................................................................9F .D.G. 4AE<A3&S.......................................................................................................................................................9F

.# R$p$ti%&'...............................................................................................................................................1(
.C.9. SA;3A S<=*>1S..............................................................................................................................................9: .C.?. =A@1=A@<BA................................................................................................................................................?I .C.D. BAEAB@1E1S 1 BA31<AS...........................................................................................................................?? .C.C. B&N@E&>1 31 @1>A....................................................................................................................................?D .C.F. S&NS.................................................................................................................................................................?C .C.G. E1J<S@E&S 1 41@&E1S...............................................................................................................................?C .C.H. AEK-<4&S.......................................................................................................................................................?G .C.L. 4AE<A3&S.......................................................................................................................................................?G

CRIA)"O DE i*+tr,%-$+........................................................................................................................2(
.C.:. =A@1=A@<BA................................................................................................................................................?: .C.9I. BAEAB@1E1S 1 BA31<AS.........................................................................................................................DI .C.99. B&N@E&>1 31 @1>A..................................................................................................................................D? .C.9?. S&NS...............................................................................................................................................................D? .C.9D. E1J<S@E&S 1 41@&E1S.............................................................................................................................D? .C.9C. AEK-<4&S.....................................................................................................................................................DD .C.9F. 4AE<A3&S.....................................................................................................................................................DC

.. I/0ia+ $ mai+ i/0ia+................................................................................................................................3


.F.9. 1N@E1@1N<=1N@&.......................................................................................................................................DH .F.?. 3&=MS@<B&S..................................................................................................................................................DL .F.D. 13-BA@<4&S..................................................................................................................................................D: .F.C. 4AE<A3&S.......................................................................................................................................................D: .F.F. 31SA7<&S........................................................................................................................................................CI

.1 BSICOS

Kuando come amos, h muita informa o nova a ser assimilada. *or isso, convm iniciar pelo mais simples. *ara implementar os programas especificados neste cap.tulo, basta conhecer a estrutura de um programa e algumas poucas instru 'es Nve+a o apndice AO. No so necessrias ainda instru 'es para tomar decis'es ou controlar repeti 'es. <sto lhe d tempo para assimilar as NpossivelmenteO novas ferramentas, como editor, compilador e outras.

.1.1. SA1DA SIMP!ES


.1.1.1 .1.1.2 .1.1.3
2ra+$ *a t$3a ) <mplemente um programa que escreve na tela a frase #& primeiro programa a gente nunca esquece2#. Eti4,$ta ) 1labore um programa que, aps limpar a tela, escreve seu nome completo na primeira linha, seu endere o na segunda, e o B1* e telefone na terceira. 2ra+$+ a++a++i*a+ 5 7a a um programa que mostre na tela algumas frases assassinas, que so aquelas que fa%em com muitas idias se+am perdidas antes que amadure am ou se+a aprofundadas. 1is alguns e$emplos Nbole tambm os seusO( #<sto no vai dar certo# #4oc nunca vai conseguir# #4oc vai se estrepar# #No vai dar em nada# #1st tudo errado2#

.1.1.# .1.1.. .1.1.7

M$*+a6$m ) 1screva uma mensagem para uma pessoa de que goste. <mplemente um programa que imprima essa mensagem, e envie)a. A' m$+tr$ ) 1screva um bilhete ao seu professor, informando seus ob+etivos nesta disciplina e o que espera dela e do professor. <mplemente um programa que mostra seu bilhete na tela. 8,a/ra/' ) 1screver um programa que mostre a seguinte figura no alto da tela( XXXXX X X X X X X XXXXX

2 .1.1.
Ta9$3a /$ *'ta+ ) 1screva um programa que produ%a a seguinte sa.da na tela(

ALUNO(A) ======== ALINE MRIO SRGIO SHIRLEY

NOTA ===== 9.0 DEZ 4.5 7.0

.1.1.:

Apr$+$*ta%&' ) -m estudante ia participar de uma feira de cincias e seu pro+eto tinha o tema #fotoss.ntese#. 1le conseguiu um notebooP emprestado, e queria um programa que lhe permitisse apresentar um te$to dividido em partes, cada parte em uma tela, e o programa deveria mudar para a pr$ima tela ao toque de uma tecla. A tela inicial deve ser a palavra #7&@&SS;N@1S1# escrita com letras grandes. 7a a o programa para o estudante, usando o te$to abai$o, no qual cada pargrafo deve aparecer em uma tela diferente. Bomo o estudante no entende muito de opera o de computadores, voc tem que tambm gerar um arquivo e$ecutvel, copi)lo para o outro computador e incluir um .cone para fcil e$ecu o sob QindoRs. @e$to( "A gua e os sais minerais absorvidos pelas razes sobem atravs dos vasos lenhosos do caule e chegam s folhas. Nas folhas, existe uma subst ncia verde, a clorofila, !ue absorve a energia luminosa do sol. Ao mesmo tempo, por meio dos est"matos presentes nas folhas, a planta absorve gs carb"nico do ar. #sando a energia solar, o gs carb"nico e o hidrog$nio contido na gua retirada do solo, ap%s complicadas rea&'es !umicas, a planta produz a&(cares )glicose*."

.1.1.(

!$tra 6ra*/$ ) 1labore um programa para produ%ir na tela a letra S usando a prpria. Se fosse T>U, seria assim( > > > >>>>

.1.1.10 Pa3a;ra 6ra*/$ ) 1screva um programa que produ%a a tela esquemati%ada abai$o(

BSICOS

******** * * ******** * * ********

******** * * * * * * * * * * ********

* * * * * * ********

.1.1.11 D$+$*<' /ati3'6r=>ic' ) " um artista que fa% desenhos somente com caracteres dispon.veis
em uma mquina de escrever. 6ole uma figura nesse estilo Nbem melhor que a abai$o, se poss.velO e fa a um programa que a mostre na tela. ____ " ! # !_ $ ! " !

.1.1.12 Em'tic'*+ ) +moticons so seq/ncias de caracteres que mostram rostos e e$press'es, vistos
de lado e usados freq/entemente em correios eletrVnicos e bate)papos na <nternet. 1$istem de%enas! ve+a alguns( ?5@ ?5A ?5p ?5' B?5@ ?5B ?5C sorriso tristeza mostrando a lngua espanto cabelo partido ao meio usa bigode bei,o

1labore um programa que mostre na tela os emoticons, um em cada linha, com a descri o de cada um.

.1.1.13 Pi*<$ir' 1 5 <mplemente um programa que desenhe um #pinheiro# na tela, similar ao abai$o.
1nrique a o desenho com outros caracteres, simulando enfeites. X XXX XXXXX XXXXXXX XXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXX XX XX XXXX

.1.1.1#

Pi*<$ir' 2 )1labore uma verso ? do programa do item anterior que desenhe o pinheiro com asteriscos NWO. -.ica/ use o recurso de localiza&0o1substitui&0o do editor para fazer a substitui&0o rapidamente2

300 IDIAS PARA PROGRAMAR COMPUTADORES

.1.1.1. M$*, 5 1labore um programa que mostre o seguinte menu na tela(


%&'&()*" '+ %,-+.)+( 0 2 5 6 4 / / / / / 0-1 I.3,4A,)+*& E73,4%".(4,)&

O89:"; _

.1.2. MATEMTICA
.1.2.1
EDpr$++-$+ aritm0tica+ 5 Balcule as e$press'es abai$o, observando a precedncia dos operadores. 1screva um programa que mostre na tela o resultado de cada e$presso e confira seus clculos. ?WG X 99WF Y ?I8N)?O8F Y ?I8?W? NDX:O8DWC Y NFWG8NDX?O ) 9FWCO8G)C CXD?W? )HW?8N:)?O Y

Y Y

.1.2.2

Di; $ m'/ 5 Balcule as e$press'es abai$o! o operador m'/ calcula o resto, e /i;, o quociente da diviso inteira. 3epois, escreva um programa que lhe permita verificar, quando e$ecutado, se voc calculou corretamente. DH mod 9D Y C9 div H Y 99 div D mod ? 99 mod D div ?

Y Y

.1.2.3

C'*ta t$3$>E*ica ) -ma conta telefVnica composta dos seguintes custos(

assinatura( EZ 9H,:I impulsos( EZ I,IC por impulso que e$ceder a :I interurbanos chamadas p8 celular( EZI,?I por impulso =onte a frmula para calcular o valor da conta para ?FC impulsos, EZDC,?: de interurbanos e ?D chamadas para celular. 1labore um programa que mostra os custos, calcula e mostra o valor total.

.1.2.#

T$mp' 3i;r$ 5 -m estudante muito metdico estava matriculado em G disciplinas, e dispunha de 9 hora e CI minutos para estudar. Sua inten o era dividir o tempo dispon.vel igualmente para as G disciplinas, e descansar livremente o tempo restante. 7a a um programa que calcule o tempo que ele deve dedicar para cada disciplina e o tempo livre. -.ica/ use os operadores div e mod2 OtimiFa%&' /$ c'rt$ ) -m marceneiro, para fa%er um trabalho, precisa cortar vrios peda os de madeira de CF cm cada um. 1le pode comprar tbuas de D, C ou F metros. -sando os operadores div e mod, fa a um programa que calcule a quantidade de peda os e a sobra para cada tipo de tbua, permitindo assim uma melhor escolha do marceneiro. M0/ia /$ *'ta+ 5 =onte uma e$presso matemtica que calcula a mdia de suas notas NtodasO de um per.odo anterior. 7a a o clculo atravs de um programa, mostrando na tela o resultado,

.1.2..

.1.2.7

BSICOS

formatado com duas casas decimais e dentro de uma moldura Num ret[ngulo feito com algum caractereO.

.1.2.

C'*;$r+&' /$ t$mp$rat,ra 5 7a a um programa que calcula e mostra uma tabela de graus Belsius87ahrenheit de 9 a 9I \frmula( B Y F8:N7)D?O]. *or enquanto Nsem comandos de repeti oO, voc dever escrever as instru 'es para calcular e mostrar cada resultado. Imp'+t' 5 -m imposto calculado com base na seguinte tabela(

.1.2.:

At 9.?II,II isento de 9.?I9,II a F.III,II 9I^ de F.II9,II a 9I.III,II 9F^ acima de 9I.III,II ?I^. <mplemente um programa que calcule os impostos a pagar para um valor em cada fai$a. *ara cada um, mostre uma mensagem que identifique na tela a que se refere cada valor.

.1.2.(

2,*%-$+ mat$m=tica+ 5 7ornecer o valor retornado pelas opera 'es matemticas abai$o. 3epois, chamando as fun 'es adequadas, escreva um programa que lhe permita verificar a corre o dos seus clculos( Eai% quadrada de 9G: 9H? BossenoNIO 9.GF arredondado para inteiro

.1.2.10 C'mprim$*t' /$ >i' 5 -m eletricista precisa comprar fio

9 9 ,F m

que ir passar, pelo telhado, por toda a diagonal de uma casa de G ,D m formato retangular. Bomo ele no tem condi 'es de medir a _ diagonal com preciso Nou talve% no queira...O, a solu o alternativa que ele encontrou foi medir os lados da casa, sabendo que a diagonal pode ser calculada com base nos lados pelo @eorema de *itgoras Na? Y b? X c?O. Bonsiderando que a casa mede 99,F $ G,D metros, fa a um programa que calcule a quantidade m.nima necessria de fio a ser comprada, com preciso at cent.metros.

.1.2.11 T$mp' /$/ica/' 5 -ma pessoa com pouco tempo dispon.vel l um livro por F minutos a cada
dia, G dias por semana. =onte a frmula e escreva um programa que calcula e mostra na tela quanto tempo, em horas, a pessoa ter dedicado ao livro ao final de um ano.

.1.2.12 C=3c,3' /$ *'ta+ ) -m professor atribui pesos de 9 a C para as notas de quatro avalia 'es. A
nota calculada por meio da mdia ponderada NN9 X N?W? X NDWD X NCWCO89I, onde N9 a nota da primeira avalia o, N? a da segunda, etc..-m aluno tirou as seguintes notas( L ) H,F ) 9I ) :. 7a a um programa que calcula e mostra as notas e a mdia deste aluno, sendo a mdia formatada com 9 casa decimal.

.1.2.13 2,*%-$+ a*i*<a/a+ 5 1screver um programa que calcula a rai% de D, arredonda o resultado e
calcula a e$ponencial do valor resultante.

.1.2.1# D$;a6ar +$ ;ai a' 3'*6$ 5 4ou e volto diariamente a p para o trabalho, que dista
apro$imadamente LII m de minha casa. Supondo que trabalho F dias por semana, CF semanas por ano, #bole# a opera o matemtica que deve ser efetuada para calcular quantos quilVmetros, apro$imadamente, terei andado ao final de um ano. 1labore um programa que fa a as contas e mostre o resultado na tela.

.1.3. CONTRO!E DE TE!A


.1.3.1
8,a/ra/' p'+ici'*a/' 5 Eefa a o programa que desenha o #quadrado# no alto da tela N.9.9.G O, desta ve% desenhando)o com o canto superior esquerdo na linha H, coluna ?I.

300 IDIAS PARA PROGRAMAR COMPUTADORES

.1.3.2

M$*, p'+ici'*a/' 5 1labore um programa que mostre o seguinte menu centrali%ado na tela, e espera uma tecla ser pressionada para terminar No tra o aps #&p o(# o cursorO. -se comandos de posicionamento do cursor para facilitar.

M+.4 R+,&)<*-"( 2 5 6 4 O89:"; _ / / / / ="* ."1+ ="* 3<'->" ="* '&)& 0-1

.1.3.3

Cr,F 5 1labore um programa que mostra uma linha vertical na coluna CI, formada pelo caractere #`#, e uma linha hori%ontal na posi o 9I formada por #Y#. 1ntre uma e outra e antes de terminar, o programa espera que uma tecla se+a pressionada. TriG*6,3' c'm i*iciai+ 5 1screver um programa que desenha um tri[ngulo, apro$imadamente centrali%ado, na tela Nque em modo te$to normal tem LI colunas por ?F linhasO, tendo dentro as iniciais do seu nome. 7a a o programa limpar a tela no in.cio e esperar uma tecla antes de terminar. Apr$+$*ta%&' $m c'r$+ 5 Altere o programa da fotoss.ntese N.9.9.L O de forma que cada pgina de te$to se+a mostrada com uma cor diferente. 3estaque palavras espec.ficas do restante do te$to com uma cor, como por e$emplo, #verde# na cor verde A*ima%&' <'riF'*ta3 5 7a a um programa que desenha um #&# na linha F, coluna 9 e depois fa% o seguinte, esperando uma tecla para cada a o Nsempre na linha FO( ) apaga o #&# da coluna 9 e o mostra na coluna ? ) apaga da coluna ? e mostra na D ) apaga da D e mostra na C 1 assim sucessivamente at a coluna 9F. 1$ecute o programa mantendo pressionada alguma tecla e ve+a o resultado.

.1.3.#

.1.3..

.1.3.7

.1.3.

A*ima%&' <'riF'*ta3 5 1labore um programa semelhante ao anterior, mas variando a linha.

.1.4. SONS
.1.#.1
A>i*a%&' ) Alberto toca violo e programador. *recisando afinar o violo e sem diapaso por perto, resolveu fa%er um programa para a+ud)lo. & que ele queria era a nota > soando sem parar at que ele conseguisse afinar a respectiva corda do violo! as demais cordas ele poderia afinar com base na primeira. 1screva um programa que fa% soar no alto)falante do computador a nota > NCCI "%O e s para quando for pressionada alguma tecla. Para90*+ 5 7a a um programa que emite as seis primeiras notas do #*arabns pr voc#. @ente as seguintes notas Nfreq/ncia em "%8dura o em milissegundosO( \CCI,?II], \CCI,?II], \FII,LII], \CCI,CII], \GII,CII], \FGI,LII],

.1.#.2

.2 VARIVEIS E ENTRADA DE DADOS

&s programas deste cap.tulo incorporam, em rela o ao anterior, especifica 'es que e$igem o uso da memria do computador, incluindo a entrada de dados pelo usurio do programa e o conseq/ente arma%enamento dos dados lidos.

.2.1. SA1DA SIMP!ES


.2.1.1 .2.1.2
M$*+a6$m $m'3/,ra/a ) <mplemente um programa que leia trs linhas de mensagens de at 9F caracteres cada uma e mostra)as na tela, emolduradas Nret[ngulo ao redorO por algum caractere. Eti4,$ta 5 1screva um programa que l do teclado seu nome completo, endere o, B1* e telefone, limpa a tela e mostra seu nome na primeira linha, seu endere o na segunda, e o B1* e telefone na terceira. !'+a*6'+ 1 5 <mplemente um programa que desenhe os losangos abai$o na tela, sendo que o topo do primeiro losango colocado em uma linha e uma coluna lidas do teclado, e o topo do segundo fica 9F colunas 0 direita do primeiro.
X XXX XXXXX XXXXXXX XXXXXXXXX XXXXXXX XXXXX XXX X X XXX XXXXX XXXXXXX XXXXXXXXX XXXXXXX XXXXX XXX X

.2.1.3

.2.1.# .2.1..

!'+a*6'+ 2 5 No programa do e$erc.cio anterior, losangos se+am feitos com asteriscos NWO.

troque o caractere de forma que os

TriG*6,3' c'm i*iciai+ ) 1screver um programa que l um caractere, as iniciais de um nome ND caracteresO, uma linha e uma coluna e depois desenha na tela um tri[ngulo equiltero formado com o caractere, tendo dentro as iniciais lidas. & caractere no pice do tri[ngulo deve estar na linha e coluna lidas, e a altura do tri[ngulo deve ser no m$imo F linhas.

.2.2. MATEMTICA
.2.2.1 .2.2.2 .2.2.3
M0/ia aritm0tica 5 1screver programa que l trs notas inteiras e calcula a sua mdia aritmtica. M0/ia 6$'m0trica 5 1labore um programa que l trs valores e calcula a mdia geomtrica dos n,meros lidos Ndiviso do produto pela quantidade de valoresO. M0/ia p'*/$ra/a 5 <mplemente um programa que l trs valores e calcule a mdia ponderada para pesos 9, ? e D, respectivamente Nmultiplique cada nota pelo seu peso, some os produtos e divida o resultado pela soma dos pesosO. Aritm0tica 9=+ica ) <mplemente um programa que l dois n,meros quaisquer e informa sua soma, diferen a, produto e quociente, formatados com ? casas decimais.

.2.2.#

: .2.2.. .2.2.7
2,*%-$+ mat$m=tica+ 5 1labore um programa que l um n,mero Nsuponha que ser positivoO e informa seu quadrado, rai%, logaritmo e e$ponencial, formatados com C casas decimais N'ta >i*a3 5 & critrio de notas de uma faculdade consiste de uma nota de I a 9I em cada bimestre, sendo a primeira nota peso ? e a segunda peso D. 1labore um programa que l as notas bimestrais e calcula a nota do semestre. S'ma /a+ i/a/$+ ) -ma crian a quer saber qual a soma de todas as idades que ela + teve. 1laborar programa que l uma idade qualquer e responde rapidamente a essa pergunta -f%rmula para calcular a soma dos N primeiros n(meros inteiros/ N )N34*152 . T$mp' 3i;r$ ) Eeescreva o programa .9.?.C No estudante metdicoO de forma que trate qualquer disciplina e qualquer quantidade de tempo livre. Assim, o estudante entra com esses valores e o programa efetua os clculos necessrios. C'mprim$*t' /$ >i' 5 Altere o programa do eletricista N.9.?.9I O para que as medidas se+am lidas do teclado. m$ima para 6ras.lia de LF graus 7ahreneit. 1screver um programa que lhe permita converter esta temperatura Ne qualquer outraO para graus Belsius, sabendo que a rela o entre elas B YF8: N7 )D?O.

.2.2.

.2.2.:

.2.2.(

.2.2.10 C'*;$r+&' /$ t$mp$rat,ra ) -m canal de not.cias internacionais, a cabo, previa temperatura

.2.2.11 8,a*ti/a/$ /$ >3$D-$+ 5 -m atleta fa% fle$'es em srie, com quantidades crescentes( 9 ve%,
depois ? ve%es, D, C e assim por diante. Ao final de uma sesso, ele quer saber rapidamente a quantidade total de fle$'es que fe%. *or e$emplo, se ele fe% F seq/ncias, fe% ao todo 9F fle$'es NFXCXDX?X9O. <mplemente um programa que leia o n,mero m$imo e informe o total.

.2.2.12 D$+p$+a+ /$ ca+a3 1 5 -m casal divide as despesas domsticas mensalmente. 3urante o ms


cada um anota seus gastos e as contas que paga! no final eles dividem meio a meio. & casal dese+a um programa que facilite o acerto( eles digitariam os gastos de cada um, e o programa mostraria quem deve a quem. Atualmente eles fa%em o acerto manualmente, na forma da seguinte tabela(
ITEM 31S*1SAS *AJAS ^ *AJ& 4A>&E 314<3& SA>3& MARIDO 9?HL,GI F:,DG 9.IHG,:F ?I9,GF ESPOSA LHF,DI CI,GC 9.IHG,:F )?I9,GF TOTA! ?.9FD,:I 9II ?.9FD,:I

*ortanto, os saldos devem ser iguais, e quem tiver o saldo negativo deve pagar o valor para o outro. 7a a um programa que leia os valores adequados e efetue os clculos. & total a soma das despesas individuais! um percentual o gasto individual dividido pelo total, multiplicado por 9II! o valor devido por cada um o mesmo e igual 0 metade do total! finalmente, cada saldo corresponde 0 metade da diferen a entre o valor pago pela pessoa e o valor total. -ma tela para o programa pode ser, com os mesmos dados da tabela acima(

VARIVEIS E ENTRADA

D->-)+ ?&,"* '&( '+(8+(&( '" 1&*-'"; 257@.A0 D->-)+ ?&,"* '&( '+(8+(&( '& +(8"(&; @75.60 ITEM =============== D+(8+(&( 8&>&( B 8&>" C&,"* '+?-'" S&,'" MARIDO ======= 257@.A0 59.6A 207A.95 502.A5 ES=OSA ======= @75.60 40.A4 207A.95 /502.A5 TOTAL ======= 5256.90 200 5256.90

.2.2.13 D$+p$+a+ /$ ca+a3 2 5 Altere o programa acima de forma que o marido arque com GI^ das
despesas e a esposa com o restante.

.2.2.1# D$+p$+a+ /$ ca+a3 3 5 *ara o mesmo programa de rateio acima, suponha que o casal, ao invs
de dividir meio a meio as despesas, vai dividi)las proporcionalmente 0 renda de cada um. Altere o programa de forma que este leia tambm a renda de cada um e use a propor o das rendas para a diviso.

.2.2.1. A/i;i*<a ) 1screver um programa que aadivinhab o n,mero pensado por uma pessoa N*ense
um n,mero NpausaO, multiplique por ? NpausaO, some G ao resultado NpausaO, divida o resultado por ?, quanto deu_ Ninforme o resultadoO, voc pensou o n,mero talO. \.ica/ problemas desse tipo d0o origem a uma express0o aritmtica, e voc$ pode alterar as opera&'es vontade, desde !ue a express0o resultante admita uma inversa. Normalmente estruturamos o problema de forma !ue a express0o permita uma simplifica&0o !ue facilite os clculos. 6ara a se!7$ncia proposta, a express0o )sendo n o n(mero pensado e 8 o resultado*/ )n953:*15 ; 8, donde n ; )895<:*15 ; 8 < =. >u se,a, basta subtrair = do resultado fornecido pela pessoa para "adivinhar" o n(mero ].

.2.2.17 C'*;$r+&' cmHp'3 1 5 7a a um programa que mostra 9I linhas de uma tabela de converso
cent.metro8polegada, a partir de um valor lido e variando de 9I em 9I cent.metros Numa polegada equivale a ?,FC cent.metrosO.

.2.2.1

C'*;$r+&' cmHp'3 2 5 Altere o programa do e$erc.cio anterior de forma que a varia o tambm se+a lida do teclado. tamanho de cada tbua e o comprimento de cada peda o, e calcule a quantidade de peda os e a sobra para cada tipo de tbua.

.2.2.1: OtimiFa%&' /$ c'rt$ 5 Eeescreva o programa .9.?.F Ncorte de tbuasO para que leia o

.2.2.1( N'ta+ /' pr'>$++'r 5 -m professor avalia seus alunos atravs dos seguintes critrios(
aO 3uas notas de e$erc.cios de I a 9I, sem casas decimais, peso 9 e peso ?, respectivamente, com peso de ?I^ na nota final. bO -ma nota de prova de I a 9I, com uma casa decimal e peso de LI^ na nota final. 1labore um programa que l as notas de um aluno, calcula e mostra na tela sua nota final, formatada com uma cada decimal e devidamente ponderada pelos pesos Numa mdia ponderada calculada somando)se os produtos de cada valor pelo seu peso e dividindo)se a soma resultante pela soma dos pesosO. 1$emplo( -m aluno tirou F e G de e$erc.cios e L,F na prova. Sua nota de e$erc.cios NFW9 X GW?O8D Y F,GGH. Sua nota final NF,GGHW? X L,FWLO89I Y H,:.

.2.2.20 C'*ta t$3$>E*ica 5 -ma conta telefVnica composta dos seguintes custos(
assinatura( EZ ?9,CI impulsos( EZ I,ID por impulso que e$ceder a :I interurbanos chamadas p8 celular( EZI,CI por impulso

10

300 IDIAS PARA PROGRAMAR COMPUTADORES

1labore um programa que l os impulsos e$cedentes, valor de interurbanos e quantidade de chamadas para celular e calcula o valor da conta. Ao definir a tela, imagine que est fa%endo um produto para ser avaliado por um cliente, +untamente com o de concorrentes, para uma eventual compra.

.2.3. CARACTERES E CADEIAS


.2.3.1 .2.3.2 .2.3.3 .2.3.# .2.3.. .2.3.7 .2.3.
C'*cat$*a%&' 5 1screva um programa que l duas cadeias de caracteres de tamanho 9I e mostra)as concatenadas na tela. S,9ca/$ia+ 5 1screva um programa que l uma cadeia de caracteres de tamanho ?I, separa)a em duas e mostra na tela as duas metades. CI/i6'+ ASCII 5 1screva um programa que l uma cadeia de caracteres qualquer, e mostra na tela o cdigo ASB<< do primeiro e segundo caracteres da cadeia. I*iciai+ ) 1screva um programa que l nome e sobrenome, e mostra na tela as iniciais.

2i*ai+ 5 Eeescreva o programa anterior para mostrar na tela as letras finais do nome e sobrenome. M$ta/$+ /$ ca/$ia ) <mplemente um programa que l uma cadeia de caracteres de tamanho at ?FF e mostra na tela as metades da cadeia. -.ica/ basear os clculos no tamanho da cadeia2 CI/i6'+ ASCII i*icia3 $ >i*a3 5 1labore um programa que l um nome de at 9F caracteres e mostra a inicial e seu cdigo ASB<<, e a ,ltima letra e seu cdigo. S'ma /$ cI/i6'+ ASCII 5 1screva um programa que l uma cadeia de tamanho D e mostra na tela a soma dos cdigos ASB<< dos caracteres da cadeia. C'mp'*$*t$+ /$ /ata 5 1screver um programa que l uma data no formato Tdd8mm8aaU e mostra dia, ms e ano separados. sorteio foi baseado nos dois primeiros prmios da loteria federal, sendo o n,mero sorteado formado pelos trs ,ltimos d.gitos do primeiro e do segundo prmio. *or e$emplo, se o primeiro prmio fosse DC..:2 e o segundo FC.0(:, o n,mero da >64 seria FL?.I:L. 1screva um programa que l os dois prmios e retorna o n,mero sorteado.

.2.3.: .2.3.(

.2.3.10 S'rt$i' /a !BV 5 A >64 fe% um sorteio cu+os bilhetes continham n,meros de G d.gitos. &

.2.4. CONTRO!E DE TE!A


.2.#.1
A*ima%&' <'riF'*ta3 5 7a a um programa que l valores de linha e coluna e desenha um #&# na posi o lida, e depois fa% o seguinte, esperando uma tecla para cada a o Nsempre na mesma linhaO( ) apaga o c&c da posi o atual ) incrementa a coluna ) mostra o c&c na nova posi o 1 assim sucessivamente por 9I colunas.

.2.#.2

8,a/ra/' $m p'+i%&' 5 1screver um programa que desenha um quadrado com o canto superior esquerdo em uma linha e coluna lidas. & caractere usado para formar o quadrado o c`c. 4e+a abai$o uma sugesto para a tela do programa.

VARIVEIS E ENTRADA

11

E()+ 8*">*&1& '+(+.D& 41 E4&'*&'" 3"1 " 3&*&3)+*+ F L-.D&; 20 %",4.&; 60

FFFFF F F F F F F FFFFF =*+((-".+ E4&,E4+* )+3,&

.2.#.3

TriG*6,3' c'm i*iciai+ 5 7a a um programa que l valores de linha e coluna, alm das iniciais de um nome Nat D caracteresO e desenha um tri[ngulo N#bole# o desenhoO com um vrtice na linha e coluna lidas e com as iniciais dentro. M$*, p'+ici'*a/' 5 <mplemente um programa que mostra o menu abai$o a partir de uma linha lida do teclado( M+.4 '+ %".(4,)&( 0 2 5 6 4 O89:"; _ / / / / / 0-1 %,-+.)+( =*"'4)"( 0&)4*&( E()"E4+

.2.#.#

.2.5. SONS
.2...1 .2...2
N'ta m,+ica3 5 1laborar um programa que l uma freq/ncia Nem "ert%O e uma dura o Nem milissegundosO e emite um som na freq/ncia com a dura o. MJ+ica 0 3i*$arK 5 A respeito do programa do parabns N.9.C.? O, dese+a)se saber se a melodia preservada somando)se um valor constante a cada freq/ncia. 7a a um programa que l essa constante Npor e$emplo, 9IIO e fa% soar as notas somando a constante a cada freq/ncia.

13

.3 ALTERNATIVAS E DECISO
& recurso principal incorporado nas especifica 'es deste cap.tulo a possibilidade de e$ecutar condicionalmente um con+unto de instru 'es. -ma ou mais condi 'es, na forma de e$press'es lgicas, so avaliadas, para determinar o que ser e$ecutado. Algumas especifica 'es so semelhantes 0s de cap.tulos anteriores, acrescidas de alternativas ou valida 'es.

.3.1. SA1DA SIMP!ES


.3.1.1
M$*, pri*cipa3 5 7a a um programa de menu que mostra na tela, sob o t.tulo de #=enu *rincipal#, trs op 'es( #9 ) 7im#, #? ) Badastro# e #D ) Bonsulta#, l do teclado a op o dese+ada pelo usurio e mostra uma mensagem confirmando a op o escolhida ou uma mensagem de erro, se a op o for invlida. MJ3tip3a $+c'3<a 1 5 1laborar uma questo de m,ltipla escolha, de uma disciplina que este+a cursando ou um tema de interesse, com um enunciado e cinco alternativas, sendo uma correta ou incorreta. 1screver um programa que mostra a questo na tela, pede a resposta correta e informa ao usurio se este acertou ou errou. MJ3tip3a $+c'3<a 2 5 1nrique a o programa acima da questo de m,ltipla escolha, incluindo uma outra questo de outro tema. No in.cio do programa, ofere a ao usurio a escolha de qual questo quer responder.

.3.1.2

.3.1.3

.3.2. MATEMTICA
.3.2.1 .3.2.2 .3.2.3 .3.2.#
Mai'r /$ 2 5 1laborar programa que l dois n,meros quaisquer e mostra na tela uma mensagem indicando qual o maior, ou se so iguais. Mai'r /$ 3 5 7a a um programa que l trs n,meros diferentes e mostra na tela uma mensagem indicando qual o maior. Di;i+&' 5 1screver um programa que l dois n,meros e efetua uma diviso, mas somente se o divisor for diferente de %ero! quando isto ocorrer, mostrada uma mensagem de erro apropriada. Apr';a%&' 1 5 1laborar programa que l uma disciplina e respectiva nota final, m,ltipla de I,F, e informa o que ocorreu. Se a nota for de F a 9I, aprovado! se C ou C,F, segunda poca e, caso contrrio, reprovado. Apr';a%&' 2 5 Altere o programa acima para que, se a nota estiver fora da fai$a vlida, se+a emitida uma mensagem de erro. Apr';a%&' 3 5 Altere o programa acima para que leia tambm a quantidade de aulas ministradas e a quantidade de faltas do aluno. Se o aluno no obteve HF^ de freq/ncia, ele est reprovado, independentemente da nota. E4,a%&' /' +$6,*/' 6ra, ) 1laborar programa que l os coeficientes a, b e c de uma equa o de segundo grau e, antes de calcular as ra.%es, calcula o delta. Se este for negativo, informa que a equa o no tem solu o real. Se for %ero, mostra a ,nica rai%. Se positivo, mostra as duas ra.%es. C'*ta t$3$>E*ica 5 -ma conta telefVnica composta dos seguintes custos(

.3.2.. .3.2.7

.3.2.

.3.2.:

1#
assinatura( EZ 9H,:I valor de impulsos( EZ I,IC por impulso que e$ceder a :I valor de interurbanos valor de chamadas p8 celular( EZI,I: por impulso 1labore um programa que l valor de interurbanos, quantidade total de impulsos normais e para celular, e calcula o valor da conta.

.3.2.(

Tip' /$ triG*6,3' 5 1m um tri[ngulo, cada lado menor do que a soma dos outros dois. 1screva um programa que l trs valores e informa se estes no podem constituir um tri[ngulo ou, caso contrrio, se o tri[ngulo formado equiltero Ntrs lados iguaisO, issceles Ndois lados iguaisO ou escaleno Nlados diferentesO.

.3.2.10 Sa3=ri' 5 -m salrio tem os seguintes componentes(


) valor nominal ) adicional devido a horas e$tras ) valor descontado para o <NSS N9I^ do valor a receber, limitado a 9FI reaisO. & valor adicional devido 0s horas e$tras calculado dividindo)se o valor nominal por 9HG N?? dias de L horasO, multiplicando)se pela quantidade de horas e ainda com um acrscimo de FI^. 1screver um programa que l os valores necessrios, calcula e mostra na tela os componentes do salrio e o salrio l.quido resultante para o empregado. No preciso prever arredondamentos, mas os valores devem ser mostrados na tela com duas casas decimais. 1$emplos( para um salrio de EZ 9.III,II, com DI horas e$tras, teremos EZ ?FF,GL de horas e$tras \N9.III89HGOWDIW9,F], EZ 9?F,FH de <NSS e um salrio l.quido de EZ 9.9DI,99. *ara um salrio de EZ ?.III,II e ?I horas e$tras, seriam EZ DCI,:9 de horas e$tras, EZ 9FI,II de <NSS Ne no os 9I^O, com um salrio l.quido de EZ ?.9:I,:9.

.3.2.11 N'ta+ /' pr'>$++'r 5 Eeescreva o programa .?.?.9: para que, caso uma das notas este+a fora
da fai$a vlida, o programa mostre uma mensagem de erro e no efetue o clculo.

.3.2.12 M$*%&' 5 -ma faculdade atribui men 'es aos alunos conforme a fai$a de notas que tenha
atingido( :,I a 9I( SS NsuperiorO H,I a L,:( =S Nmdio superiorO F, I a G,:( == NmdioO D,I a C,:( =< Nmdio inferiorO I,9 a ?,:( << NinferiorO I( SE Nsem rendimentoO. 7a a um programa que l a nota e informa a men o.

.3.2.13 N'ta+ >i*ai+ 5 As notas de uma faculdade so atribu.das por bimestre, tendo o primeiro
bimestre peso ? e o segundo peso D. A nota semestral deve ser arredondada para o m,ltiplo de I,F mais pr$imo. 1labore um programa que calcule a nota final.-.ica para o arredondamento/ obtenha as partes inteira e fracionria da nota? com base na fra&0o, decida se soma @, @,A ou 4 parte inteira2

.3.2.1# Imp'+t' 5 -m imposto calculado com base na seguinte tabela(


At 9.?II,II isento de 9.?I9,II a ?.FII,II 9I^ de ?.FI9,II a F.III,II 9F^ acima de F.III,II ?I^. <mplemente um programa que leia o valor base e calcule o imposto a pagar.

.3.2.1. A*' 9i++$Dt' 5 -m ano bisse$to se for divis.vel por C e$ceto os sculos, que so bisse$tos
se forem m,ltiplos de CII. 1screva um programa que determina se um ano bisse$to.

A!TERNATIVAS E DECIS"O

1.

.3.3. CARACTERES E CADEIAS


.3.3.1 .3.3.2
Tip' /$ p$++'a 5 1laborar programa que l do teclado uma letra que pode ser T7U ou TdU e mostra a mensagem apessoa f.sicab, apessoa +ur.dicab ou #tipo de pessoa invlido#, conforme o caso. Caract$r$+ ASCII 5 1screva um programa que l trs n,meros de D? a ?FC e mostra na tela uma cadeia formada pela concatena o dos caracteres ASB<< de cada n,mero. Baso algum dos n,meros este+a fora da fai$a vlida, o programa mostra uma mensagem de erro apropriada. Va3i/a%&' /$ +$*<a 5 1labore um programa que l uma senha de at L caracteres, verifica se a senha est correta ou no, comparando)a com uma senha predefinida, e informa #Acesso autori%ado# ou #Acesso negado#, conforme o caso. Va3i/a%&' /$ /ata 5 1screver um programa que l uma data no formato c338==8AAAAc e verifica se as barras esto nas posi 'es corretas, se o dia est entre 9 e D9 e se o ms est entre 9 e 9?, mostrando mensagens de erro apropriadas ou que a data est correta. CI/i6' ', caract$r$ ASCII 5 1screva um programa que l uma op o que pode ser 9 ou ?. Se o usurio escolher 9, o programa l um n,mero de 9 a ?FF e mostra o caractere ASB<< correspondente! se ?, lido um caractere e mostrado o respectivo cdigo ASB<<. Briticar as entradas numricas e mostrar mensagens apropriadas em caso de erro. Tip' /$ caract$r$ 5 1screver um programa que l um caractere e informa se letra, d.gito, operador aritmtico ou nenhum deles. S'rt$i' /a !BV 5 Eeescreva o programa .?.D.9I para que verifique se os n,meros lidos esto no formato esperado Npor e$emplo, ?9.DHFO. Baso algum este+a incorreto, o programa mostra uma mensagem de erro.

.3.3.3

.3.3.#

.3.3..

.3.3.7 .3.3.

.3.4. CONTRO!E DE TE!A


.3.#.1
8,a/ra/' p'+ici'*a/' 5 1labore um programa que mostre um #quadrado# de lado F na tela, a partir de uma linha e uma coluna lidas do teclado. Se algum dos valores estiver fora da fai$a vlida, mostrada uma mensagem de erro e o desenho no mostrado. 8,a/ra/' ', triG*6,3' 5 <mplemente um programa com D op 'es Nletra ou n,meroO( terminar, desenhar um quadrado ou um tri[ngulo na tela, em linha e coluna lidas pelo teclado. 1labore o quadrado e o tri[ngulo como achar melhor. 7a a o programa mostrar uma mensagem de erro se o usurio escolher uma op o invlida ou informar valor invlido para linha ou coluna.

.3.#.2

.3.5. SONS
.3...1
N'ta m,+ica3 5 1laborar um programa que l uma freq/ncia em "ert% e uma dura o em milissegundos e emite um som na freq/ncia com a dura o. >imite a freq/ncia at 9I.III "% e a dura o a ? segundos.

.3.6. VARIADOS
.3.7.1
Ca/$ia c$*tra3iFa/a 5 1labore um programa que l um n,mero de linha e uma cadeia qualquer, limpa a tela e mostra a cadeia centrali%ada na linha indicada. >inhas invlidas no so aceitas. -.ica/ calcule a coluna com base na !uantidade de colunas da tela e no comprimento da cadeia2 Dia /a +$ma*a 5 Bonstrua um programa que l um n,mero de 9 a H e informa o dia da semana correspondente, sendo domingo o dia de n,mero 9. Se o n,mero no corresponder a um dia da semana, mostrada uma mensagem de erro.

.3.7.2

17

300 IDIAS PARA PROGRAMAR COMPUTADORES

.3.7.3

PISHPASEP 5 & d.gito verificador do *<S8*AS1* calculado atravs da seguinte regra( o n,mero composto por de% d.gitos mais um d.gito verificador. =ultiplique os n,meros, da esquerda para a direita, respectivamente por D ? : L H G F C D ?. Some os resultados das multiplica 'es! calcule o resto da diviso da soma por 99 e subtraia o resultado de 99. Se o resultado for 9I o d.gito %ero, caso contrrio o d.gito o prprio resultado. *or e$emplo, para o n,mero 9HI9?I:IC9)9, o clculo seria( 9$D X H$? X I$: X 9$L X ?$H X I$G X :$F X I$C X C$D X 9$? Y :L. & resto da diviso de :L por 99 9I. Bomo 99 ) 9I Y 9, o d.gito 9. 1screva um programa que l um n,mero de *<S8*AS1* e mostra o d.gito verificador correspondente. *ara test)lo, voc pode usar tambm o n,mero 9I9ILG9?G:)9.

.3.7.#

Ca3c,3a/'ra 5 A calculadora de >uciana pifou, +usto quando ela precisa fa%er vrios clculos. 1la tem um computador, mas no sabe que um dos acessrios do QindoRs uma calculadora. Sendo estudante de programa o, >uciana resolveu fa%er um programa. A especifica o que bolou prev que programa l dois n,meros inteiros No que atende suas necessidadesO e em seguida um s.mbolo de opera o. Se este for cXc, o programa soma os n,meros, se c)c, subtrai, se cWc multiplica e se c8c divide. Se o s.mbolo for diferente desses, mostrada uma mensagem de erro. & programa, antes de dividir, critica se o divisor %ero e mostra uma mensagem, se for. <mplemente a especifica o de >uciana. L'6' /$ >ic<a+ 1 5 -m +ogo consiste em se retirar duas fichas de um saco contendo fichas brancas e pretas. 3ependendo da combina o de cores das fichas retiradas, o +ogador ser pago na seguinte propor o( Primeira Ficha 6ranca 6ranca *reta *reta Segunda Ficha 6ranca *reta 6ranca *reta Rateio I 98? 9 ?

.3.7..

&u se+a, com duas fichas brancas o +ogador perde tudo, com uma branca e uma preta recebe metade do que apostou, com um preta e uma branca recebe seu dinheiro de volta e com duas pretas recebe o dobro. 1laborar um programa que l as cores das duas fichas e calcula o rateio.

.3.7.7 .3.7.

L'6' /$ >ic<a+ 2 5 Altere o programa anterior para que leia tambm o valor apostado, limitado a Z9II, e informe o valor a ser recebido pelo apostador. L'6' /$ >ic<a+ 3 5 =odifique o programa do +ogo de retirada de fichas, acima, de forma que o +ogador retire trs fichas. Atribua valores de rateio para todas as combina 'es de cores . <mplemente um programa que l o valor apostado, sorteia as cores, calcula o rateio obtido pelo +ogador e o valor que ele receber. A/i;i*<$ 1 5 7a a um programa que sorteia um n,mero de 9 a F e pede ao usurio que o adivinhe, lendo do teclado o palpite. Baso o usurio acerte ou no, mostrada uma mensagem apropriada. A/i;i*<$ 2 5 =odifique o programa acima para que o usurio possa tentar novamente se errar na primeira ve%. conforme a fai$a de altura( menos que 9,GI de 9,GI a 9,LF mais que 9,LF abai$inhob aaltura normalb afa% frio a. em cima_b

.3.7.:

.3.7.(

.3.7.10 Cat$6'ria /$ a3t,ra 5 1laborar programa que l uma altura e mostra uma mensagem

.3.7.11 C'*c$it' 5 -ma universidade atribui conceitos aos alunos com base na nota obtida em cada
disciplina, segundo a tabela abai$o. 1screva um programa que l a nota e informa o conceito obtido.

A!TERNATIVAS E DECIS"O

N&@A )))))))) :I..9II HF..L: FI..HC CI..C: I..D:

B&NB1<@& ))))))))))))))) A 6 B 3 1

.3.7.12 M,3tip3ica%&' r=pi/a 5 -m algoritmo para multiplica o rpida por 99 de n,meros de ?


d.gitos funciona assim( para multiplicar L9 $ 99, some os d.gitos do n,mero NL X 9 Y :O e insira o resultado entre os d.gitos NL:9O. Se a soma der maior que :, incremente o d.gito da esquerda Nvai) umO( FG $ 99 Y G9G. 7a a um programa que efetue multiplica 'es por 99 usando este algoritmo.

1(

.4 REPETIO
M dif.cil imaginar um programa realmente ,til que no contenha comandos de repeti o. 7amiliari%e) se com todos os tipos de comandos de repeti o dispon.veis na linguagem, para que possa usar o melhor para cada situa o.

.4.1. SA1DA SIMP!ES


.#.1.1 .#.1.2 .#.1.3
E6'c$*tri+m' 5 <mplemente um programa que mostra seu nome na tela de% ve%es.

Mai+ pi*<$ir' 5 7a%er um programa que desenha o pinheiro N.9.9.9D O, usando comandos de repeti o. Caract$r$+ pr'6r$++i;'+ 1 5 1screver um programa que produ%a a sa.da abai$o na tela, para N linhas e usando um caractere lido do teclado Nno e$emplo, WO. Aps mostrar uma ve%, o programa repete o processo, s parando quando N for %ero. ** **** ****** ******** (...)

.#.1.#

Caract$r$+ pr'6r$++i;'+ 2 5 7a a o mesmo que acima para(

* ** *** **** ***** (...)

.#.1..

Caract$r$+ pr'6r$++i;'+ 3 5 <dem acima, para o formato abai$o.

** **** ****** ******** (...)

.#.1.7

Caract$r$+ pr'6r$++i;'+ # 5 <bidem(

(...) ***** *** *

.#.1.

T,/' M,*t' 5 7a a um programa que +unte os C e$erc.cios acima. 1le repetidamente oferece um menu com a op o I para terminar e outras C op 'es 9, ?, D,e C, cada uma correspondendo a um tipo de figura. Baso a op o indicada pelo usurio se+a invlida, mostrada uma mensagem apropriada. 1m todos os casos e$ceto I o menu oferecido novamente. @ente estruturar o programa

20
de forma que a leitura da quantidade de linhas se+a feita em apenas um ponto do programa, ao invs de ser lida a cada op o.

.4.2. MATEMTICA
.#.2.1
Apr';a%&' 5 1laborar programa que l uma disciplina e respectiva nota Nde I a 9I, com uma casa decimalO, e informa se o aluno passou na disciplina, repetindo o ciclo at que a nota lida se+a %ero. & aluno passa quando tira H ou mais. RaiF 4,a/ra/a 1 5 <mplemente um programa que repetidamente calcula e mostra a rai% quadrada de um n,mero qualquer. RaiF 4,a/ra/a 2 5 Altere o programa acima para que ele verifique se o usurio entrou um valor positivo ou %ero. Se sim, a rai% calculada, caso contrrio mostrada uma mensagem de erro.

.#.2.2 .#.2.3 .#.2.#

I/a/$ m0/ia 5 -m professor, aps obter informa 'es de uma turma, dese+a saber a mdia de idade. 1screver um programa que l as idades at que o idade lida se+a %ero, quando ento mostrada a mdia No %ero no considerado para a mdiaO.

.#.2..

E+tatN+tica /$ *'ta+ 5 7a a um programa que l uma quantidade qualquer de notas de I a 9I Nno permitir fora desta fai$aO e, ao final, mostra quantas notas foram digitadas, a mdia e tambm a quantidade com valor abai$o de F . Mai'r 5 1screver um programa que l n,meros inteiros at que o n,mero lido se+a %ero, quando ento mostrado o maior n,mero lido. Mai'r $ m$*'r 5 Alterar o programa anterior para que mostre tambm o menor n,mero lido.

.#.2.7 .#.2. .#.2.: .#.2.(

NJm$r'+ i*t$ir'+ 1 5 1screver um programa que l um n,mero inteiro e mostra na tela os n,meros inteiros de 9 at o n,mero lido. NJm$r'+ i*t$ir'+ 2 5 Alterar o programa acima de forma que se+a lido tambm o n,mero inicial. compreendidos entre dois n,meros lidos.

.#.2.10 S'ma /$ par$+ 5 <mplemente um programa que calcula a soma dos n,meros pares .#.2.11 1mpar$+ mJ3tip3'+ 1 5 1screva um programa que soma todos os n,meros .mpares m,ltiplos
de trs situados na fai$a de 9 a 9III.

.#.2.12 1mpar$+ mJ3tip3'+ 2 5 Altere o programa acima de forma que a fai$a se+a informada pelo
usurio, e os n,meros .mpares m,ltiplos de trs se+am mostrados em ordem decrescente.

.#.2.13 C'*;$r+&' /$ t$mp$rat,ra 1 5 1screver um programa que mostra uma tabela de graus
Belsius87ahrenheit de I a 9II, variando 9 grau de cada ve%, uma temperatura por linha. Ao encher uma tela, o programa espera que uma tecla se+a pressionada para continuar.

.#.2.1# C'*;$r+&' /$ t$mp$rat,ra 2 5 Alterar o programa acima de forma que se+am lidas do
teclado a temperatura inicial, a final e a varia o. A temperatura final criticada! se for menor do que a inicial, o programa repete a leitura, s prosseguindo quando for vlida.

.#.2.1. A/i;i*<$ 1 5 <mplemente um programa que sorteia um n,mero de 9 a 9I e d ao usurio D


tentativas de acert)lo. A cada tentativa errada, o programa informa se o n,mero a adivinhar est abai$o ou acima.

.#.2.17 A/i;i*<$ 2 5 Altere o programa acima para que ele permita ao usurio tentar at acertar.

REPETI)"O

21

.#.2.1

Ta9,a/a 5 1labore um programa que l um n,mero de 9 a : e mostra a tabuada de multiplica o do n,mero. *or e$emplo, para o F( F$9 YF F $ ? Y 9I ... F $ 9I Y FI Aps mostrar uma tabuada, o programa pergunta se o usurio dese+a ver outra. Se a resposta for positiva Npor e$emplo, cScO, ele fa% tudo de novo, caso contrrio termina.

.#.2.1: RaiF 4,a/ra/a 5 7a a um programa que repetidamente mostra na tela duas op 'es( #9 ) 7im#
e #? ) Balcular rai%# e l do teclado a op o dese+ada pelo usurio. Se a op o for 9, o programa termina. Se a op o for ?, o programa l um n,mero real e, se o n,mero for positivo ou %ero, calcula e mostra sua rai% quadrada com duas casas decimais, se negativo, mostra uma mensagem de erro. 1 se a op o for invlida Nnem 9 nem ?O, mostrada uma mensagem apropriada. Kuando a op o no a de terminar, o programa volta para mostrar novamente as op 'es e ler a op o do usurio.

.#.2.1( N,m$ra/'r 5 <mplemente um programa que mostre na tela os n,meros inteiros entre dois
n,meros lidos do teclado, organi%ados em 9I linhas e 9I colunas( ?9 D9 ?? D? ?D DD ?C ?F DC... ?G ?H ?L ?: DI

.#.2.20 C'*ta t$3$>E*ica 5 -ma conta telefVnica composta dos seguintes custos(
assinatura( EZ 9H,:I impulsos( EZ I,IC por impulso que e$ceder a :I interurbanos chamadas p8 celular( EZI,I: por impulso 1labore um programa que l n,mero de telefone, valor de interurbanos, quantidade de impulsos normais e para celular, e calcula o valor da conta. Aps calcular uma conta, o programa pergunta se o usurio dese+a calcular outra conta, reiniciando se a resposta for positiva.

.#.2.21 C'*ta+ t$3$>E*ica+ 5 7a a uma verso do programa acima que mostre a quantidade de contas,
o valor total e a mdia do valor das contas, quando o usurio terminar.

.#.2.22 E3$i%&' 5 *ara computar o vencedor de uma elei o deve ser feito um programa. " D
candidatos, e os votos dos eleitores foram codificados da seguinte forma( 9, ? ou D( votos para os respectivos candidatos I( voto em branco C( voto nulo 1screver o programa, que deve fornecer o n,mero do vencedor da elei o Nsuponha que no pode haver empatesO, as quantidades de votos brancos e nulos e o n,mero de eleitores que compareceram 0s urnas.

.#.2.23 S0ri$ 1 5 1screver programa para calcular, para N lido, o valor de S, dado por(
9 ? D N 9 N ... N N 9 N ? ? 9 Aps efetuar um clculo, o programa pede novo n,mero, parando quando N for %ero. B

.#.2.2# S0ri$ 2 5 Sendo C9 ...


para N lido.

9 ?

9 D

9 , elaborar um programa para calcular o valor de ", N

.#.2.2. S0ri$ c'*;$r6$*t$ 5 A srie B

9 9 9 converge para 9. 3emonstre isso atravs de ? C L um programa que calcula o valor de S para N termos. *ara facilitar, aps apresentar um resultado,

22

300 IDIAS PARA PROGRAMAR COMPUTADORES

fa a o programa voltar para ler outro valor de N, s parando quando o n,mero lido for %ero. 1$ecute vrias ve%es para valores sucessivamente maiores de N, e observe os resultados.

.#.2.27 CaiDa a,t'm=tic' 5 -m cai$a automtico precisa calcular quais e quantas notas devem ser
entregues ao cliente para efetuar a retirada dese+ada. 7a a um programa com op 'es para( aO >er o valor da retirada e mostrar a quantidade de notas de 9I e de FI a serem entregues. Se alguma das quantidades no for suficiente, o programa cancela a opera o, com uma mensagem apropriada. -.ica para calcular as !uantidades de notas/ use os operadores div e mod2 bO Eeceber notas de 9I e FI Na quantidade inicial %ero para ambasO cO Apresentar relatrio com as quantidades de notas e valor total dispon.vel, e valor total de retiradas efetuadas.

.4.3. CARACTERES E CADEIAS


.#.3.1
S'rt$i' /a !BV 5 =elhore o programa .D.D.H de forma que, quando houver um erro na digita o, ele permita ao usurio entrar novamente, s continuando quando os dois n,meros estiverem corretos. S'ma /$ cI/i6'+ ASCII 5 1screva um programa que l uma cadeia de caracteres quaisquer e mostra a soma dos cdigos ASB<< dos seus caracteres. <sto repetido at que a cadeia lida se+a nula. C'*cat$*a%&' /$ caract$r$+ 5 1labore um programa que l uma quantidade qualquer de n,meros de D? a ?FC e mostra na tela uma cadeia formada pela concatena o dos caracteres ASB<< de cada n,mero. Se um dos n,meros estiver fora de fai$a, mostrada uma mensagem de erro e o programa espera a corre o. & final da entrada de n,meros ocorre quando for lido %ero. I*+$r%&' /$ caract$r$ 1 5 <mplementar um programa que insere h.fens entre as letras de uma cadeia de caracteres, como em f)a)b)u)l)o)s)o. I*+$r%&' /$ caract$r$ 2 5 Altere o programa acima para que ele insira um caractere lido do teclado. 1le repete tudo enquanto o usurio digitar uma cadeia. Se nada for digitado, o programa termina. S,9+tit,i%&' /$ caract$r$ 5 1labore um programa que troca todos os espa os de uma cadeia lida por um caractere tambm lido. & programa repete isso at que se+a lida uma cadeia nula Nneste caso o caractere no lidoO. Cript'6ra>ia 1 5 <mplementar um programa com duas op 'es( na primeira, ler e codificar uma cadeia com cdigos ASB<< de D? Nespa oO a 9?? Nc%cO , da seguinte maneira( ao cdigo ASB<< de cada caractere somado 9! os n,meros resultantes so convertidos novamente em caracteres e concatenados, sendo a cadeia resultante mostrada na tela. A segunda op o decodifica uma cadeia codificada pela primeira programa. 1$emplo( a cadeia #fogo#, codificada, se torna #gphp# Nesse processo de codifica o chamado de #criptografia#O. Pr$*'m$ 5 1screver um programa que l um nome completo e mostra na tela o prenome, isto , o primeiro nome. Suponha que o nome nunca come a com um espa o. & programa repete esses passos at que o nome lido se+a uma cadeia nula No usurio no digitou nadaO. I*iciai+ 5 1screva um programa que l um nome de pessoa e identifica suas iniciais, segundo o seguinte critrio( uma inicial o primeiro caractere ou o caractere que segue um espa o. invertida na tela. Aps, o programa volta para ler outra, assim fa%endo at que a cadeia nula se+a nula, isto , sem nenhum caractere.

.#.3.2 .#.3.3

.#.3.# .#.3..

.#.3.7

.#.3.

.#.3.:

.#.3.(

.#.3.10 I*;$r+&' /$ ca/$ia 5 1laborar um programa que l uma cadeia de caracteres e mostra)a

.#.3.11 E3imi*a%&' /$ caract$r$ 5 7a%er um programa que l uma cadeia e um caractere e elimina
todas as ocorrncias do caractere na cadeia. Aps, o programa pede nova cadeia e s termina quando a cadeia lida for nula.

REPETI)"O

23

.#.3.12 8,a*ti/a/$ /$ caract$r$+ 5 1laborar um programa que l uma cadeia e um caractere e


informa a quantidade de ocorrncias do caractere na cadeia Nno diferenciar min,sculas8mai,sculas( cac Y cAcO. *or e$emplo, se a cadeia for #6ANANA nanica# e o caractere for #a#, o programa deve informar F.

.#.3.13 E+tatN+tica /$ >ra+$ 1 5 1labore um programa que l uma cadeia de at ?FF caracteres e
informa( ) quantidade de brancos ) quantidade de palavras ) quantidade de ocorrncias da letra cAc

.#.3.1# E+tatN+tica /$ >ra+$ 2 5 Altere o programa acima para que informe tambm a quantidade de
cada vogal.

.#.3.1. Va3i/a%&' /$ +$*<a 5 1screver um programa que l uma senha Nentre C e L caracteresO,
compara a senha linha com o valor correto e informa se o usurio est autori%ado ou se a senha est incorreta. A senha correta registrada dentro do programa como uma constante. & programa permite at D tentativas.

.4.4. CONTRO!E DE TE!A


.#.#.1
A*ima%&' <'riF'*ta3 1 5 <mplementar um programa que simula um caractere se movendo pela tela ao longo de uma linha cu+o valor lido do teclado, a partir e at colunas tambm lidas. & programa verifica se a coluna final informada maior do que o valor inicial. A*ima%&' <'riF'*ta3 2 5 Alterar o programa anterior para que o movimento se+a na vertical, isto , a coluna fica fi$a e a linha varia. Na;$ $+pacia3 1 5 6olar um desenho de uma #nave espacial# em modo te$to. 7a%er um programa que inicia com a #nave# no centro da tela e move)a para a esquerda ou direita se tecladas as setas, terminando se teclado 1SBA*1. A nave pra quando atinge os limites da tela. Na;$ $+pacia3 2 5 Alterar o programa acima para permitir o movimento tambm para cima e para bai$o. D$+$*<' 5 7a a um programa de desenho, cu+a tela tem um cursor que se movimenta com as setas, dei$ando um #rastro# Nalgum caractere! se quiser sofisticar, ponha um h.fen se o movimento for na hori%ontal e uma barra, se na vertical. Se quiser sofisticar mais ainda, use os caracteres de desenho de ret[ngulos da tabela ASB<<O. Apr$+$*ta%&' 1 5 Altere o programa da fotoss.ntese N.9.9.L O de forma que o estudante avance ou retroceda as pginas atravs de seta acima e seta abai$o. & programa termina quando avan ar alm da ,ltima pgina ou quando teclado 1SBA*1. -.ica/ use um comando de repeti&0o, combinado com dois comandos de decis0o. > primeiro, ap%s a leitura da tecla, a,usta a pgina a ser mostrada. > segundo mostra o texto da pgina2. Apr$+$*ta%&' 2 5 Altere o programa anterior de forma que, quando o usurio teclar o n,mero de uma pgina e$istente, o programa vai direto para a pgina correspondente. !'+a*6'+ 5 Eefa a o programa dos losangos N.?.9.D O, desta ve% usando comandos de repeti o. 8,a/ra/'+ cr$+c$*t$+ 5 1laborar um programa que mostra um #quadrado# no centro da tela, de lado ?. 1m seguida, mostra outro quadrado de lado C ao redor do primeiro e apaga este, depois um de lado G, etc., at #sair# da tela. & programa repete isso at que uma tecla se+a pressionada.

.#.#.2 .#.#.3

.#.#.# .#.#..

.#.#.7

.#.#.

.#.#.: .#.#.(

2#

300 IDIAS PARA PROGRAMAR COMPUTADORES

.4.5. SONS
.#...1
C<at$a%&' 5 <mplementar um programa que fica repetindo a melodia do parabns Nespecifica o .9.C.? O at que uma tecla se+a pressionada. 1$ecute)o sempre que quiser amolar algum2 S'm cr$+c$*t$ 1 5 1laborar um programa que emite sons de freq/ncia crescente, iniciando em 9II "% at cerca de LIII "%, com varia o de 9I em 9I ^ e tendo cada som a dura o de DI milissegundos. S'm cr$+c$*t$ 2 5 Alterar o programa acima para que leia via teclado todos os valores( freq/ncias inicial e final, dura o do som e varia o. 4erificar se a freq/ncia final maior do que a inicial e se a varia o maior do que 9 e menor do que ?. S'm /$cr$+c$*t$ 5 Eeescrever o programa acima para que a emisso de sons se+a com freq/ncia decrescente. 8,$/a 5 <mplementar um programa que emite sons de HII a GII "ert%, variando a frequncia de 9 em 9, tendo cada som a dura o de 9I milissegundos.

.#...2

.#...3

.#...# .#....

.4.6. REGISTROS E VETORES


.#.7.1 .#.7.2 .#.7.3
M0/ia 5 1screver um programa que leia at ?I n,meros inteiros para um vetor e calcule a mdia dos valores. Mai'r $ m$*'r 5 1screver um programa que preencha um vetor de 9II elementos com valores inteiros aleatrios, e identifique o maior e o menor n,mero gerados, e respectivas posi 'es. M0/ia p'*/$ra/a 5 1screver um programa que calcula mdias ponderadas para uma quantidade de fatores de at 9F. & programa l vrios pares \n,mero, peso] at que se+a lido um n,mero negativo. M calculada ento a mdia, somando)se os produtos de cada n,mero por seu peso e dividindo)se o resultado pela soma dos pesos. S'ma $m ;$t'r 1 5 1screver um programa que, aps preencher dois vetores com n,meros inteiros aleatrios, soma os valores dos elementos correspondentes de dois vetores, arma%enando o resultado num terceiro vetor. S'ma $m ;$t'r 2 5 1labore um programa semelhante ao anterior, e$ceto que, em apenas um vetor, soma os valores de dois campos e arma%ena o resultado em um terceiro campo de um registro. Ta9$3a /$ t$mp$rat,ra 5 <mplementar um programa que monta uma tabela de graus Belsius87ahrenheit desde o ponto de fuso at o ponto de ebuli o da gua, em incrementos unitrios. Aps so oferecidas op 'es para o usurio ver na tela ou imprimir. P$+4,i+a *'ta+ ) 1laborar programa com op 'es para( ler 9I notas de I a 9I, pesquisar se uma nota e$iste no vetor e mostrar o conte,do do vetor. Na leitura, re+eitar notas fora da fai$a vlida. N'm$ /' /ia 5 Bonstrua um programa que l um n,mero de 9 a H e informa o dia da semana correspondente, sendo domingo o dia de n,mero 9. Se o n,mero estiver fora da fai$a vlida, mostrada uma mensagem de erro. Va3i/a%&' /$ +$*<a 5 <mplementar um programa que l um nome e uma senha Nentre C e L caracteresO e verifica e o usurio est autori%ado ou no. *ara essa verifica o, o programa mantm uma lista de nomes e respectivas senhas. & programa mostra mensagens de erro se o nome ou a senha estiverem incorretos. So permitidas at D tentativas.

.#.7.#

.#.7.. .#.7.7

.#.7.

.#.7.:

.#.7.(

REPETI)"O

2.

.#.7.10 A3,*'+ $ *'ta+ 5 <mplemente um programa que l uma lista de pares nomes de aluno8notas.
3epois so mostrados na tela os nomes e as notas, +untamente com a quantidade de alunos e a mdia das notas.

.#.7.11 Tr'c' 5 <mplemente um programa que resolve o problema do troco( dado um valor de uma
venda, um valor pago e um estoque de notas e moedas Ntodos os poss.veisO, calcular o troco e as notas ou moedas e respectivas quantidades que devem ser entregues ao cliente. *rocure estruturas de dados que permitam solu 'es mais simples, como por e$emplo um vetor com o valor de cada nota ou moeda, em ordem decrescente de valor.

.#.7.12 2ra+$+ $+p$3<a/a+ 5 7a a um programa que leia cadeias Nqualquer quantidade, limitada a ?IO
de at D: caracteres e mostre)as espelhadas no centro da tela, como no e$emplo( =*-1+-*& &*-+1-*= S+>4.'& &'.4>+S T+*3+-*& &*-+3*+T ...

.#.7.13 Pa3a;ra+ 6ra*/$+ 5 7a a um programa que l uma cadeia de at 9I caracteres e a mostra na


tela com letras grandes. Bada letra formada por uma matri% L$L, com algum caractere nas posi 'es adequadas de forma a compor o desenho de cada letra Ncada caractere como se fosse um pi$el ) ve+a sugesto abai$oO. *ara separar uma letra da outra, quando mostradas na tela, voc pode dei$ar em branco uma linha e uma coluna de cada letra, na prpria matri%. W W W W W

W W

W W W W W W W

W W

.#.7.1# Ri>a 5 -ma rifa sorteada com base nos n,meros da >oteria 7ederal da seguinte maneira( o
primeiro prmio formado obtendo)se o primeiro d.gito de cada prmio. & segundo obtido atravs dos segundos d.gitos, e assim por diante. *or e$emplo, suponha que os n,meros da >oteria 7ederal so( 9 ) #F.G:L ? ) 7F.HLL D ) 09.?9C C ) 3H.LCI F ) H.CDI &s prmios da rifa sero CG.IDH, FF.9HH, etc. 1screva um programa que l os n,meros da >oteria 7ederal e calcula os n,meros da rifa \ .ica/ armazene os n(meros como cadeias em um vetor]

.#.7.1. S$*a 5 7a a um programa que l apostas da sena, os n,meros sorteados e apresente os


resultados obtidos pelo apostador( senas, quinas e quadras.

.#.7.17 C'/i>ica%&' /$ pr$%' 5 Bertas lo+as usam Nou pelo menos usavamO um sistema de codifica o
de pre os associando os de% d.gitos 0 palavra *1ENA=6-B&. <mplemente um programa que l um pre o e mostra)o codificado, ou l um cdigo e mostra o pre o.

.#.7.1

EDt$*+' 5 1laborar um programa que l um valor monetrio e mostra na tela o valor por e$tenso.

27

300 IDIAS PARA PROGRAMAR COMPUTADORES

.4.7. AR8UIVOS
.#. .1
CIpia 9acO,p 5 1screver um programa que l um nome de arquivo te$to e$istente e copia)o para um outro com e$tenso #.baP#. Baso o arquivo no se+a encontrado, mostrada uma mensagem de erro. C'*ta6$m /$ caract$r$+ 5 <mplementar um programa que conta a quantidade de caracteres de um arquivo te$to. TPPE 1 5 1laborar um programa que l um arquivo te$to qualquer e o mostra na tela. <nclua op 'es para converter as letras para mai,sculas e para filtrar Nno mostrarO os caracteres ASB<< com cdigo abai$o de D? ou acima de 9?H.. TPPE 2 5 Altere o programa acima para que numere as linhas ao mostr)las.

.#. .2 .#. .3

.#. .# .#. .. .#. .7 .#. .

C'*ta6$m /$ pa3a;ra+ 5 <mplementar um programa que conte as palavras contidas em um arquivo te$to. C'mpara%&' /$ ar4,i;'+ 5 7a a um programa que compare dois arquivos te$to e informe se so iguais Nbete a beteO ou, se no, o n,mero do primeiro caractere em que diferem. Ca/a+tr' /$ *'ta+ 5 7a%er um programa que arma%ena arquivos contendo nome e notas bimestrais de alunos. & nome do arquivo identifica a disciplina. *ara que o programa identifique quais arquivos so dele, defina uma e$tenso padro para o nome, como por e$emplo, #.dat#. 3eclare op 'es para incluir, alterar e e$cluir aluno. *reve+a tambm um relatrio completo de uma disciplina, contendo, alm do nome e das notas parciais, a nota final. C'*ta6$m /$ 3i*<a+ /$ cI/i6' 1 5 1screver um programa que conta linhas de cdigo de um programa da linguagem em que estiver programando. =ostrar na tela a quantidade total de linhas, linhas em branco e o saldo. C'*ta6$m /$ 3i*<a+ /$ cI/i6' 2 5 Alterar o programa acima para que mostre e desconte a quantidade de linhas de comentrios No programa ter que identificar o in.cio e o fim de cada comentrioO.

.#. .:

.#. .(

.#. .10 E+tatN+tica /$ t$Dt' 5 7a a um programa que l um arquivo te$to qualquer e mostra(
Kuantidade de linhas Kuantidade de letras Kuantidade de palavras Kuantidade de cada letra.

.#. .11 Impr$++&' 5 7a a um programa que imprime um arquivo te$to. Antes de imprimir, pergunta
ao usurio a quantidade de linhas por pgina, se dese+a ou no numera o das pginas e ainda permite a digita o de um cabe alho que, se fornecido, ser impresso na mesma linha da numera o de pginas.

.4.8. VARIADOS
.#.:.1 .#.:.2 .#.:.3
Para90*+ 5 *ara o programa do *arabns Npg. 9DO, arma%enar as notas e dura 'es em um vetor e reprodu%ir a melodia a partir do vetor. M$3'/ia 5 1laborar um programa que l uma seq/ncia de vrias notas definidas por pares freq/ncia N"%O8dura o NmilissegundosO, arma%ena)os em um vetor e #toca# a melodia. L'6' /$ >ic<a+ 5 Altere o programa do sorteio de fichas N.D.G.G O para que permita ao +ogador +ogar quantas ve%es quiser. & programa mostra o valor acumulado pelo +ogador at um determinado momento.

REPETI)"O

.#.:.#

T$3a a3$atIria 5 1screva um programa que fica preenchendo a tela com caracteres ASB<< aleatrios, em uma posi o tambm aleatria. Kuando atingir 9III caracteres, a tela limpa e tudo recome a, s parando quando alguma tecla for pressionada. C<$4,$+ 5 7a a um programa para preencher cheques. A data de emisso lida na forma #338==8AA#. & programa separa dia, ms e ano e preenche o nome do ms. S'rt$i' /$ c'*+Irci' 5 -m consrcio sorteia seus carros com base na >oteria 7ederal da seguinte maneira( o premiado de um grupo o que tiver a pedra correspondente 0 de%ena final do primeiro prmio. Se ele + tiver sido contemplado, a pr$ima de%ena formada pelo d.gito do milhar e da de%ena. Se o consorciado desta pedra tambm + foi contemplado, a nova de%ena inclui o milhar e a centena, e assim por diante, pegando)se at D de%enas de cada n,mero. *or e$emplo, suponha que os n,meros da >oteria 7ederal so( 9 ) CF.G(: ? ) GF.HLL D ) I9.?9C C ) DH.LCI F ) HH.CDI As de%enas consideradas sero :L, G:, FG Nprimeiro prmioO, LL, HL, FH Nsegundo prmioO, e assim por diante. 7a a um programa que l os cinco prmios e mostra as de%enas sorteadas, na ordem correta.

.#.:.. .#.:.7

.#.:.

Impr$++&' /$ pr'6rama >'*t$ 5 7a a um programa que imprime um arquivo contendo um programa fonte da linguagem que usa. Na impresso so ressaltadas em negrito as palavras chave da linguagem, e os comentrios so impressos em itlico. Ao final o programa mostra a quantidade de linhas somente de comentrios, linhas em branco e total de linhas. !i*<a r$ta 5 <mplemente um programa que d uma inclina o e desenha na tela, ponto a ponto, uma linha reta com a inclina o lida. -ma reta definida pela equa o D ; ax 3 b, onde a a inclina o. CP2 5 &s dois d.gitos de verifica o do B*7 Nconstitu.do de : d.gitosO so calculados atravs de um complicado algoritmo( Etapa 1? clculo de 349 Soma 9( soma dos produtos de cada d.gito por um peso de ? a 9I, na ordem inversa Ndo nono para o primeiroO. =ultiplique a soma 9 por 9I e calcule o resto da diviso do resultado por 99. Se der 9I, 349 %ero, caso contrrio o 349 o prprio resto. Etapa 2? clculo de 34? Soma ?( soma dos produtos de cada d.gito por um peso de D a 99, tambm na ordem inversa. Adicione a Soma ? ao dobro do 349, multiplique por 9I e calcule o resto da diviso do resultado por 99. Se der 9I, 34? %ero, caso contrrio o 34? o prprio resto. Etapa 3? =ultiplique 349 por 9I, some com 34? e voc tem o n,mero de controle do B*7. ED$mp3'( para o B*7 D:L 9DG 9CG, temos( 1tapa 9( ?$G X D$C X C$9 X F$G X G$D X H$9 X L$L X :$: X 9I$D Y ?FL ?FLI mod 99 Y G, portanto, 349 Y G 1tapa ?( D$G X C$C X F$9 X G$G X H$D X L$9 X :$L X 9I$: X 99$D Y ?:: N?:: X G$?O$9I mod 99 Y D9FI mod 99 Y L, portanto 34? Y L 1tapa D( 349$9I X 34? Y G$9I X L Y GL, que o n,mero procurado. 1labore um programa que calcule o n,mero de controle do B*7.

.#.:.:

.#.:.(

.#.:.10 S$*<a i*;i+N;$3 5 =odifique o programa de valida o de senha NO para que ,quando a senha
for digitada, no se+a vis.vel, impedindo que algum a descubra.

2:

300 IDIAS PARA PROGRAMAR COMPUTADORES

.#.:.11 Apr$+$*ta%&' 5 =odifique a verso mais elaborada do programa da fotoss.ntese N.C.C.G O de


forma que as pginas se+a arma%enadas em vetor. 3escubra uma boa estrutura de dados para simplificar o problema.

.#.:.12 Cript'6ra>ia 2 5 <mplementar um programa que criptografa uma cadeia usando o seguinte
algoritmo( ela reescrita em blocos de F caracteres, sendo as novas palavras obtidas lendo)se cada coluna resultante, separadas por barras. *or e$emplo, se a cadeia for #mensagem secreta#( 1+.(& >+1 ( +3*+) & A cadeia criptografada torna)se #mgea8eec 8nmr8s e 8ast. *rever tambm no programa uma op o para decifrar uma cadeia.

2(

CRIAO DE INSTRUES

" dois tipos bsicos de instru 'es que podem ser declaradas pelo programador( procedimentos e fun 'es. A principal diferen a entre elas que a fun o retorna um valor. *oder declarar instru 'es, estendendo a linguagem, certamente o recurso mais valioso das linguagens de programa o, por proporcionar reusabilidade e portanto produtividade. M conveniente tambm saber como arma%en) las em bibliotecas, para que elas se+am facilmente reutili%veis. =as lembre)se( uma instru o s ser reutili%vel se puder ser usada sem qualquer outra declara o, isto , preciso saber apenas o seu nome e seus par[metros. @ambm no ser conveniente que a instru o mostre resultados na tela, a menos que isso fa a parte da sua finalidade. *or e$emplo, se a finalidade for #calcular a mdia#, a instru o retorna o valor calculado mas no mostra na tela. Se a finalidade for #=ostrar uma mensagem na tela#, ento ela deve fa%er isso e no efetuar clculos de valores que no este+am relacionados a isso. Baso a instru o especificada em algum e$erc.cio deste cap.tulo + e$ista na linguagem em que estiver programando, claro que voc tem pelo menos duas op 'es( usar a dispon.vel ou desenvolver a sua prpria, para treinar. Neste caso, voc pode comparar os resultados da sua com a da linguagem, para validar a instru o criada. Nas especifica 'es que se seguem, se for pedido #declare uma instru o# ou semelhante, voc dever fa%er um pequeno programa para test)la.

.4.9. MATEMTICA
.#.(.1
NJm$r' par 5 7a%er um procedimento que retorna 4erdadeiro ou 7also conforme um n,mero se+a par ou no. Se necessrio, convencione I e 9, #S# e #N# ou outra representa o de 7also e 4erdadeiro. N,m$ra%&' /$ 1 a 100 5 1laborar um procedimento que mostra os n,meros de 9 a 9II.

.#.(.2 .#.(.3 .#.(.#

N,m$ra%&'/$ N1 a N2 5 3eclarar um procedimento semelhante ao acima, mas que recebe como par[metros os valores inicial e final. NJm$r'+ par$+ 5 1screver um procedimento que recebe dois n,meros e mostra na tela os n,meros pares situados entre os dois, inclusive. @estar com um programa que l os n,meros inicial e final e, se este maior que o inicial, chama o procedimento. E4,a%&' /' +$6,*/' 6ra, 5 <mplementar uma instru o que recebe os coeficientes a, b e c de uma equa o do segundo grau e retorna suas ra.%es. Eesolva( como fa%er quando a equa o resultante no tiver ra.%es reais_ Apr';a%&' 5 1screver uma fun o que recebe uma nota de I a 9I e retorna verdadeiro ou falso Nou outros valores convencionados como talO se o aluno foi aprovado, isto , se tirou H ou mais. Mai'r $ m$*'r c'm m$*, 5 7a a duas fun 'es( uma que recebe dois n,meros e retorna o maior e outra que recebe o mesmo mas retorna o menor. <mplementar um programa com um menu de C op 'es( ler dois n,meros, testar uma e outra fun o e terminar. Mai'r /$ 2 5 1screver uma fun o que recebe dois n,meros quaisquer e retorna o maior. Mai'r /$ 3 5 1screver uma fun o que recebe D n,meros e retorna o maior

.#.(..

.#.(.7 .#.(.

.#.(.: .#.(.(

30 .#.(.10 E*tr$ 0 $ 100 5 <mplementar uma fun o que recebe um n,mero qualquer e retorna
4erdadeiro se o n,mero est entre I e 9II, caso contrrio retorna 7also.

.#.(.11 M0/ia /$ 3 5 3eclarar uma fun o que calcula a mdia aritmtica de D n,meros .#.(.12 EDp'*$*cia%&' i*t$ira 5 1screver uma fun o que calcula um inteiro elevado a outro inteiro,
usando multiplica o.

.#.(.13 EDp'*$*cia%&' r$a3 5 1screver uma fun o que calcula um n,mero real elevado a outro real,
usando multiplica o. Se houver tal fun o na linguagem em que estiver programando, compare seus resultados para vrios tipos de valores.

.#.(.1# L,r'+ c'mp'+t'+ 5 Sendo E o capital, n o pra%o e i a ta$a de +uros, o valor futuro FG de uma
aplica o financeira calculado por(
FG E 9 i
n

1labore um programa com duas op 'es( uma que, dados capital, pra%o e ta$a, calcule o valor futuro, e outra que, dados pra%o, ta$a e valor futuro, calcule o capital necessrio.

.#.(.1. S0ri$ 5 1laborar programa que calcule, usando fun o, o valor da srie abai$o para N termos,
sendo N lido(

B 9

9 9 9 9 ? ? ? ? D F H :

.#.(.17 Bi++$Dt' 5 -m ano bisse$to se for divis.vel por C e$ceto os sculos, que so bisse$tos se
forem m,ltiplos de CII. <mplementar uma fun o que recebe o n,mero de um ano e retorna 4erdadeiro se o ano for bisse$to ou 7also caso contrrio.

.#.(.1

2at'ria3 5 7a a uma fun o que recebe como par[metro um inteiro e retorna seu fatorial. & que voc acha que poderia fa%er para o caso em que o fatorial, se calculado, vai estourar a capacidade do tipo de dado adotado_ unidade. 7a a um programa que verifica, atravs de uma fun o, se um n,mero ou no primo. -.ica/ divida o n(mero N por todos os n(meros de 5 a N < 4. Be o resto da divis0o de N por algum dos n(meros der zero, ele n0o primo2

.#.(.1: NJm$r'+ prim'+ 5 -m n,mero dito ser primo quando divis.vel somente por si e pela

.#.(.1( Arc'5ta*6$*t$ 5 & valor do arco)tangente pode ser calculado atravs da frmula abai$o, vlida quando x ? 9 (
xD xF xH x: ... D F H : 1labore um programa que l o valor de $ e a quantidade de fatores, e compara o valor encontrado com o calculado pela respectiva instru o da linguagem. @este para quantidades variadas de fatores. x

.4.10. CARACTERES E CADEIAS


.#.10.1 M$*'r ca/$ia 5 1screver uma fun o que recebe duas cadeias de caracteres e retorna a menor
em ordem alfabtica.

.#.10.2 !$it,ra /$ ca/$ia 5 <mplementar um procedimento que recebe uma linha e uma coluna e l
uma varivel caractere na respectiva posi o da tela, retornando o valor lido atravs de um par[metro por referncia ou equivalente.

.#.10.3 Ca9$%a3<' 5 Briar procedimento que recebe e imprime uma linha de cabe alho com n,mero
de pgina, no formato. A data obtida do sistema e o n,mero de pgina um par[metro(

CRIA)"O DE INSTRU)QES

31

E1>A@fE<& 31 B><1N@1S 1=<SSg&( 338==8AAAA *AJ. ::: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

.#.10.# DiaR mS+ $ a*' 5 <mplemente fun 'es que recebem uma data no formato c338==8AAAAc e
retornam dia, ms e ano, respectivamente.

.#.10.. Va3i/a%&' /$ /ata 5 1screver uma fun o que verifica se uma data no formato
T338==8AAAAU vlida. Alm de verificar se o dia est entre 9 e D9 e o ms est entre 9 e 9?, se o dia for ?:8I? chamada a fun o especificada no item .C.:.9G para verificar se o ano bisse$to.

.#.10.7 2'rmata%&' /$ /ata 5 1laborar um procedimento que recebe como par[metros dia, ms, ano,
uma linha e uma coluna da tela e uma letra que corresponde ao formato de data a ser apresentado. Se o formato Y TAU, mostra 338==8AA! se T6U, mostra 33.==.AAAA. *ara test)lo, fa a um programa que busca a data do sistema, e$trai dia, ms e ano e chama o procedimento.

.#.10.

I*;$r+&' /$ ca/$ia 5 1screver uma fun o que recebe uma cadeia de caracteres e retorna)a invertida Nlida de trs para a frenteO. se lida normalmente ou de trs para a frente( #roma me tem amor#, #socorram me subi no onibus em marrocos#O. -se a fun o especificada acima e uma outra para retirar espa os de uma cadeia.

.#.10.: Pa3N*/r'm'+ 5 <mplementar um programa que verifica se uma frase pal.ndroma Na mesma

.#.10.( Oc'rrS*cia+ /$ +,9ca/$ia 5 1labore uma instru o que identifica quantas ve%es uma
subcadeia ocorre em uma cadeia de caracteres Npor e$emplo, #na# ocorre duas ve%es em #banana#O.

.#.10.10 MaiJ+c,3a+ 5 <mplementar uma fun o que converte uma cadeia de caracteres para
mai,sculas.

.#.10.11 Mi*J+c,3a+ 5 1laborar uma instru o que converte uma cadeia de caracteres para min,sculas.
-.ica/ subtraia =5 dos caracteres cu,os c%digos ABEHH est0o entre :A e I@, inclusive2 .

.#.10.12 I*+$r%&' /$ caract$r$ 5 1laborar uma fun o que insere um caractere recebido entre cada
letra de uma cadeia.

.#.10.13 Trim 5 <mplementar uma fun o que retira os brancos finais de uma cadeia de caracteres Nem
certas linguagens dispon.vel com o nome de #@rim#O

.#.10.1# AM,+t$ /$ tama*<' 5 <mplementar uma fun o que insere brancos no fim de uma cadeia at
atingir um tamanho especificado.

.#.10.1. CrNtica /$ /ata ) 1screver uma fun o que recebe uma data no formato c338==8AAAAc
Ndia8ms8anoO, verifica se as barras esto na posi o correta, se o dia est entre 9 e D9 NinclusiveO, se o ms est entre 9 e 9? e retorna um valor da seguinte forma( I( data correta 9( dia invlido ?( ms invlido D( dia e ms invlidos C( formato invlido

.#.10.17 2'rmata%&' /$ 3i*<a ) -m programador est escrevendo um editor de te$tos, e precisa de


uma fun o que recebe uma linha de te$to e uma largura de linha, e insere espa os de forma a alinhar o te$to 0 largura recebida, retornando a linha formatada. <mplemente essa fun o. -.ica/ primeiro calcule a !uantidade de espa&os necessria? descubra a !uantidade de intervalos entre palavras e calcule !uantos espa&os ter !ue inserir em cada intervalo? insira essa !uantidade em cada intervalo, sendo !ue o (ltimo intervalo receber os espa&os extras restantes. Hnvestigue outras possibilidades de distribui&0o2

32

300 IDIAS PARA PROGRAMAR COMPUTADORES

.4.11. CONTRO!E DE TE!A


.#.11.1 !i*<a ;$rtica3 1 ) 3esenvolva um procedimento que recebe um n,mero de coluna de tela e
preenche a coluna com caracteres T&U.

.#.11.2 !i*<a ;$rtica3 2 5 Alterar o procedimento acima para que receba tambm o caractere. .#.11.3 T$Dt' p'+ici'*a/' 1 ) 1screva um procedimento que recebe duas coordenadas da tela Nlinha e
colunaO e um te$to, e mostra o te$to na posi o indicada.

.#.11.# T$Dt' p'+ici'*a/' 2 ) Altere o procedimento acima para que preserve a posi o do cursor,
salvando a linha e a coluna no in.cio e restaurando)as no final.

.#.11.. M$*+a6$m 1 ) 1screver um procedimento que recebe valores de linha e coluna da tela e um
te$to, mostra o te$to nas coordenadas recebidas e espera F segundos. Aps, apaga a mensagem e termina.

.#.11.7 M$*+a6$m t$mp'riFa/a 5 Alterar o procedimento acima para receber tambm o tempo a
esperar e, se for pressionada uma tecla, terminar.

.#.11.

E*tra/a /$ ca/$ia+ ) 1labore uma instru o que efetua leituras de cadeias de caracteres. 1la recebe linha e coluna, o #prompt# Nte$to que aparece antes, como cNome( c ou cB*7( cO, o tamanho m$imo da cadeia e o valor inicial. A instru o controla o uso das setas 0 esquerda e 0 direita, permite 3elete e 6acPspace, "ome e 1nd. 1la termina com 1nter ou 1scape, neste segundo caso restaurando o valor inicial. uma op o de s aceitar d.gitos.

.#.11.: E*tra/a /$ *Jm$r'+ 5 3esenvolva uma verso da instru o especificada acima que permite

.4.12. SONS
.#.12.1 S'm cr$+c$*t$ ) 1laborar um programa que emite sons de freq/ncia crescente, de uma
freq/ncia inicial at uma final, com percentual de varia o e dura o de cada som lidos pelo teclado. *ara emitir o som use um procedimento que recebe esses dados como par[metros. Britique o percentual de varia o, impedindo valores Ncomo IO que atrapalhem a e$ecu o.

.#.12.2 2r$4TS*cia /$ *'ta+ m,+icai+ ) Se voc conhece a freq/ncia de uma nota musical, pode
conhecer a nota seguinte Num semitom acimaO multiplicando aquela por freq/ncia de uma das notas > CCI "%, fa a o seguinte(
9?

? . Sabendo que a

1screva uma fun o que recebe uma nota e retorna a pr$ima! 1screva um programa que calcula as freq/ncias de notas acima do > N>a`, Si, 3, 3`, E, E`, =i, 7, Sol, Sol`, >, > `, Si, 3. Anote as freq/ncias. 1m outro programa, declare constantes para as freq/ncias das notas Npor e$., 3&O e escreva instru 'es que toquem o *arabns pr voc. -.ica/ declare uma constante para a dura&0o e use m(ltiplos desta? as primeiras notas, com a respectiva dura&0o, do 6arabns ficariam assim/ ).>, .ur*, ).>, .ur*, )8+, J9.ur*, ).>, 59.ur*. Kente .ur ; 4@@ e 5@@.2

.4.13. REGISTROS E VETORES


.#.13.1 N'm$ /' mS+ 5 1screver uma fun o que recebe n,mero do ms e retorna seu nome por
e$tenso.

.#.13.2 N'm$ /' /ia 5 <dem acima, para o dia da semana.

CRIA)"O DE INSTRU)QES

33

.#.13.3 Mai'r $ m$*'r 5 1screver um programa com quatro op 'es Nimplementadas atravs de
instru 'es declaradasO( preencher um vetor de 9I elementos com valores inteiros aleatrios, mostrar o conte,do do vetor, identificar o maior e o menor n,mero gerados, e respectivas posi 'es.

.#.13.# CrNtica /$ /ia /' mS+ ) Alterar a fun o acima para que verifique se o dia est compat.vel
com o ms. *or e$emplo, novembro no possui dia D9. *ara isso use tambm uma fun o.

.#.13.. E+tatN+tica /$ *'ta+ ) 1screver um programa para fa%er estat.sticas de notas de um aluno. &
programa oferece op 'es de( entrar com nomes de disciplinas e respectivas notas, achar a maior nota, achar a menor nota e calcular a mdia das notas. Kuando mostra algum resultado, o programa espera ser teclado algo para oferecer novamente o menu. Sugest'es para modulari%a o( ) =ostrar o menu, ler e retornar a op o Nfun oO ) >er os valores das notas, disciplinas e retornar a quantidade NprocedimentoO ) <dentificar a posi o do menor Nfun oO ) <dentificar a posi o do maior Nfun oO ) Balcular a mdia Nfun oO

.#.13.7 E+tatN+tica /$ *'ta+ 2 ) Alterar o programa acima para impedir qualquer clculo se os
vetores estiverem va%ios.

.#.13.

E+tatN+tica /$ *'ta+ 3 ) No mesmo programa acima, incluir op 'es para

aO =ostrar o conte,do atual dos vetores de notas e disciplinas bO 3ada uma disciplina, pesquisar a nota correspondente cO 3ada uma nota, pesquisar se ela e$iste no vetor de notas e mostrar a respectiva disciplina

.#.13.: 8,a/ra/' m=6ic' ) -m !uadrado mgico aquele dividido em linhas e colunas, com um
n,mero em cada posi o e no qual a soma das linhas, colunas e diagonais a mesma. *or e$emplo, ve+a um quadrado mgico de lado D, com n,meros de 9 a :( L 9 G D F H C : ?

1labore um programa que identifica e mostra na tela todos os quadrados mgicos com as caracter.sticas acima. Analise os quadrados identificados e verifique se h alguma diferen a bsica entre eles ou se podem ser considerados os mesmo sob algum aspecto. -.ica/ produza todas as combina&'es possveis e verifi!ue a soma !uando completar cada !uadrado. #sar um vetor de 4 a I )a estrutura !ue usei* parece ser mais simples !ue usar uma matriz =x=2

.4.14. AR8UIVOS
.#.1#.1 Sa3;am$*t' /$ parGm$tr'+ ) <mplementar um mdulo de grava o de par[metros com duas
possibilidades( salvar ou recuperar o valor de um par[metro. -m par[metro identificado atravs de um nome de at L caracteres. & valor pode ser uma cadeia de at ?FF caracteres.

.#.1#.2 Va3i/a%&' /$ +$*<a 5 <mplementar um programa com op 'es de cadastrar ou autenticar


usurio, alm de uma op o para terminar. Na op o de cadastro, o programa l um nome e uma senha Nambos entre C e L caracteresO, sendo esta lida duas ve%es, e grava os dados em um arquivo. As duas senhas digitadas devem iguais. Na op o de autentica o, o programa l nome e senha e verifica se o usurio est cadastrado e se sua senha est correta. & programa mostra mensagens de erro se o nome ou a senha estiverem incorretos, sendo permitidas at D tentativas.

.#.1#.3 Va3i/a%&' /$ +$*<a cript'6ra>a/a 5 Altere o programa acima de forma que a senha se+a
gravada criptografada, por e$emplo, somando)se 9I ao cdigo ASB<< de cada caractere

.#.1#.# C'*>i6,ra%&' /$ impr$++&' 5 1laborar uma instru o que grava em disco um registro com
informa 'es sobre configura o de impresso( nome da impressora, largura e altura do papel,

3#

300 IDIAS PARA PROGRAMAR COMPUTADORES

margens Nsuperior, inferior, direita, esquerdaO. 1screver outra instru o que recupera os dados gravados.

.#.1#.. Ba*c' /$ pa3a;ra+ 5 =ontar um mdulo com instru 'es para manter um banco de palavras.
3eve haver instru 'es para incluir, alterar e e$cluir uma palavra do banco, alm de pesquisar se uma dada palavra est no banco. & banco arma%enado em um arquivo em disco. @odas as instru 'es devem ser reutili%veis. *ara testar, fa a um programa simples com uma op o para cada opera o que pode ser feita no banco.

.#.1#.7 C'*ta/'r ) 3eclarar instru 'es para manter contadores, cu+os valores atuais so
arma%enados em disco. <sto serve, por e$emplo, para designar cdigos de clientes ou produtos no caso de numera o sequencial. *rever instru 'es para criar um contador N%eradoO e recuperar o pr$imo n,mero Nque tambm atuali%a o valor atualO. *ara identificar cada contador use o nome do arquivo.

.#.1#.

Cript'6ra>ia /$ ar4,i;'+ ) 1laborar um programa que criptografa um arquivo qualquer, incrementando o cdigo ASB<< de cada bete em uma unidade. conta do outro banco, carto de crdito, provedor <nternet, da rede local do trabalho e por a. vai. 7a a uma programa que permita gravar vrias senhas, com uma descri o de cada uma. <nclua a possibilidade de mostrar na tela a lista das senhas.

.#.1#.: Ar4,i;' /$ +$*<a+ 5 -ma pessoa pode ter in,meras senhas( da conta corrente, poupan a, da

.4.15. VARIADOS
.#.1..1 Mai'r 4,a34,$r ) <mplementar uma fun o que recebe dois valores de qualquer tipo de dado
Ncadeia, n,mero inteiro ou real, caractereO e retorna o maior. -Gerifi!ue se a linguagem permite par metros sem tipo2

.#.1..2 Dia /a +$ma*a ) 3escubra como, a partir de uma data vlida, voc pode identificar o dia da
semana correspondente Ndomingo, segunda, etc.O. 1screva uma fun o que retorna esse dia.

.#.1..3 CrNtica c'mp3$ta /$ /ata ) Bombinar as especifica 'es .C.9I.9F e .C.9D.C para formar uma
cr.tica de data mais completa.

.#.1..# C,+t' /$ $D$c,%&' /$ pr'c$/im$*t' ) 1screver um programa que serve para se medir o
custo, em tempo, de e$ecu o de um procedimento. 1le troca, alguns milhares de ve%es, os valores de duas variveis, de duas formas( na primeira usado para trocar as variveis um procedimento, na segunda sem este. Bomputar o tempo gasto para cada forma e mostr)los na tela.

.#.1... S'rt$i' /$ /a/'+ ) 1screva uma instru o que recebe um n,mero de 9 a G, correspondente ao
sorteio de um dado, e desenha o dado na tela Nem qualquer posi oO, mostrando o lado sorteado. 3epois, fa a um programa que sorteia F dados e os mostra na tela, alinhados.

.#.1..7 PISHPASEP ) 1screver uma fun o que recebe um n,mero de *<S8*AS1* e retorna o d.gito
verificador Nve+a a regra na especifica o .D.G.D O.

.#.1..

CP2 ) 1screver fun o para calcular os d.gitos de controle do B*7 Nregra na especifica o . C.L.L O. *ara simplificar, + que so duas somatrias, escreva tambm uma fun o au$iliar que recebe o B*7 e o peso inicial e retorna a soma. linha e coluna da tela. &utra instru o recebe um te$to de at 9I caracteres e chama a primeira para mostrar o te$to na tela em letras grandes.

.#.1..: Pa3a;ra 6ra*/$ ) 1labore uma instru o que desenha #grande# uma letra do alfabeto, em

.#.1..( R$pr'/,%&' /$ m$3'/ia ) 3eclarar uma instru o que recebe um vetor de pares
freq/ncia8dura o, e reprodu% os sons na seq/ncia do vetor. 4alor %ero para a freq/ncia representa uma pausa.

CRIA)"O DE INSTRU)QES

3.

.#.1..10 M$3'/ia+ $m ar4,i;'+ ) 1laborar um programa que toca m,sicas, com op 'es para( editar
uma melodia Nnova ou e$istenteO e salv)la em disco, reprodu%ir ou eliminar uma melodia gravada. Bada melodia arma%enada em um vetor com freq/ncia e dura o de cada nota ou pausa Nfreq/ncia IO.

.#.1..11 <mplementar uma instru o que recebe uma cadeia e retorna)a embaralhada. -sar n,meros
aleatrios.

.#.1..12 La*$3a /$ c'*>irma%&' ) <mplementar uma instru o que mostra uma +anela de confirma o
na tela com as op 'es #S<=#, #Ng&# e #BANB1>AE#, aguarda a op o do usurio e retorna a op o selecionada. & usurio seleciona a op o com as setas ou a primeira letra e depois teclando 1nter.

.#.1..13 R$3atIri' /$ *'ta+ ) <mplementar um programa com op 'es para cadastrar Nincluir ou
acrescentarO um arquivo contendo nomes e notas de alunos e para imprimir um relatrio dos dados gravados. & relatrio deve ter um cabe alho contendo data e hora de emisso, nome do relatrio, numera o de pginas e quebra Nmudan aO a cada GG linhas. Ao final mostrada a quantidade e a mdia das notas.

.5 ID IAS E !AIS ID IAS

Neste cap.tulo voc ter vrias idias para trabalhos prticos. Bonstituem especifica 'es mais comple$as que as do restante do te$to, e que certamente o desafiaro. A maioria delas e$igir algum detalhamento e$tra, isto , a especifica o no completa e voc dever suprir detalhes. *articularmente procure aplicar conceitos de reutili%a o e modulari%a o. Alerta( as especifica 'es da se o 3esafios no so para iniciantes2

.5.1. ENTRETENIMENTO
...1.1
2'rca 5 <mplementar um programa que +ogue o +ogo da forca. Na tela mostrado o alfabeto, destacando as letras + tentadas. -m banco de palavras pode ser implementado em vetor ou em arquivos, permitindo ao programa sortear uma palavra. 1$tens'es( arma%enar histrico do +ogador( nome, +ogadas ganhas e perdidas, etc. Pa3a;ra $m9ara3<a/a 5 <mplementar um programa que, a partir de um banco de palavras, seleciona aleatoriamente uma palavra, embaralha as letras e d um tempo para o usurio adivinhar a palavra.

...1.2

...1.3 ...1.#

L'6'5/a5;$3<a 5 1laborar um programa que +ogue o +ogo)da)velha, com op 'es de controlar dois +ogadores ou +ogar o computador contra um +ogador. C'm9i*a%-$+ /$ 3$tra+ 5 <mplementar um programa que l uma palavra de C letras e gera todas as combina 'es poss.veis das quatro letras, sem repeti o. & programa deve fornecer um menu para o usurio, permitindo( ) entrar nova palavra ) gerar combina 'es ) mostrar na tela Nformatadas em colunasO ) imprimir Ntambm em colunasO ) elimina o de palavras indese+adas Npor e$emplo, que no e$istamO. 1$tens'es( gravar em arquivo as palavras encontradas Num arquivo para cada palavra)chaveO, e permitir ao usurio recuper)las. *ermitir qualquer quantidade de letras na palavra. 3escobrir como estruturado o arquivo de palavras de algum dicionrio ou processador de te$tos, e us)lo para filtrar palavras e$istentes.

...1..

Bi*6' 5 1labore um programa que fa% sorteios de bingo. & programa dever oferecer op 'es de iniciar um sorteio, sortear um n,mero e apresentar os n,meros sorteados at um determinado momento. Note que o programa no poder repetir um n,mero + sorteado. Ar4,i;' /$ +$*<a+ 5 -ma pessoa pode ter in,meras senhas( da conta corrente, poupan a, da conta do outro banco, carto de crdito, provedor <nternet, da rede local do trabalho e por a. vai. 7a a uma programa que permita gravar vrias senhas, com uma descri o de cada uma. <nclua op 'es para mostrar na tela ou imprimir a lista das senhas e para pesquisar por uma palavra chave da descri o. D$+$*<' /ati3'6r=>ic' 5 <mplementar um programa que permite o uso de toda a tela para desenhos utili%ando caracteres dispon.veis no teclado. <nclua op 'es para salvar uma tela, carregar um desenho salvo e a+uda para os comandos.

...1.7

...1.

3: ...1.:
Pi*65P'*6 5 @alve% voc no conhe a, mas um dos primeiros videogames era um *hilco monocromtico, e um dos +ogos, chamado de *ing)*ong, tinha duas #raquetes# que se moviam na vertical das laterais da tela e uma #bolinha#, cu+a velocidade aumentava depois de algumas #raquetadas# dos +ogadores. -m +ogador fa%ia um ponto quando o adversrio dei$ava a bolinha passar! quem fi%esse 9F pontos primeiro ganhava. <mplemente esse +ogo. M$t$'r'+? ' M'6' 5 -ma nave espacial, embai$o na tela, deve ultrapassar um campo de meteoros Npor e$emplo, se em modo te$to, asteriscosO, desviando)se 0 esquerda ou direita. Se tocar em algum, ela e$plode. Bada #linha# de meteoros ultrapassada conta um ponto, e a velocidade dos meteoros vai aumentando, digamos, a cada FII pontos. <mplementar o +ogo. 1ntre outras coisas, o programa dever preencher a pr$ima linha de meteoros, no alto da tela, e mover esta uma linha para bai$o Nsupondo ainda que a tela estar em modo te$toO, alm de verificar se houve coliso. as regras e implementar um programa que controle o +ogo para duas ou mais pessoas. & programa dever sortear os dados, mostrar a tabela e criticar as escolhas de um +ogador( se ele fe% quadra, por e$emplo, s pode inserir os pontos em um dos locais apropriados da tabela.

...1.(

...1.10 M'*it'r PAM 5 @alve% o +ogo iA= ainda este+a dispon.vel comercialmente, para voc obter

.5.2. DOMSTICOS
...2.1 ...2.2
A6$*/a t$3$>E*ica 5 <mplemente um programa que controla uma lista de nomes e telefones, com op 'es para incluir, alterar, e$cluir e pesquisar por nome ou por telefone. C'*tr'3$ /$ >i3m$+ 5 7a a um programa que mantm dados a respeito dos filmes assistidos por uma pessoa( nome, diretor, roteiristaNsO, atores, data, comentrios. <nclua consultas que +ulgar ,teis. !i+ta /$ c'mpra+ 5 1labore um programa que mantm uma lista de produtos e imprime uma rela o para controle da pessoa no supermercado, por e$emplo. <nclua uma op o para eliminar itens da lista a ser impressa. *ara montar a lista inicial, voc pode pesquisar na <nternet por um servi o de deliverD. D$+p$*+a 5 <mplemente um controle simples de mercadorias em uma despensa domstica. Sobre cada produto podem ser arma%enados um cdigo numrico, descri o e quantidade atual. & programa deve ter op 'es para entrada e retirada de produtos, bem como um relatrio geral e um de produtos no dispon.veis. C'*tr'3$ /$ $mpr0+tim'+ 5 Se voc + emprestou um livro ou alguma outra coisa e no se lembra mais para quem Ne esse #quem# tambm parece no se lembrar de devolverO, sabe que pode ser ,til um programa que registre tipo e nome do ob+eto, nome da pessoa e as datas de emprstimo, ,ltima cobran a e devolu o. <nclua um relatrio dos ob+etos emprestados h mais de uma quantidade indicada de dias. Or%am$*t' /'m0+tic' 5 Bontrole suas entradas e sa.das de dinheiro atravs de um programa que registra despesas e receitas passadas e previstas, fornecendo informa 'es sobre o saldo dispon.vel e previs'es de necessidades, ms a ms. Se quiser sofisticar, monte uma tabela de tipos de receitas e despesas Nautomvel, la%er, educa o, etc.O. Eti4,$ta+ para c<$4,$+ 5 7a a um programa que preenche mini)etiquetas para afi$ar em folhas de cheque, contendo nome, endere o, telefone e EJ. *rovavelmente voc ter que pesquisar os comandos de movimenta o do carro da impressora, para obter a+uste fino e assim manter o posicionamento correto. Ui+tIric' /' a,t'mI;$3 5 Eegistre tudo que ocorrer com o carro( manuten 'es, combust.vel, lavagens, etc., tudo com o valor gasto e a quilometragem. Alm de um relatrio geral, inclua uma consulta sobre custo por quilVmetro e consumo mdio.

...2.3

...2.#

...2..

...2.7

...2.

...2.:

A*jN3<B1 A

D:

...2.(

Ma*,t$*%-$+ /'m0+tica+ 5 Se voc cuida de uma casa ou apartamento, sabe que ve% por outra so necessrios alguns servi os de manuten o( pia que va%a, cadeira que quebra, cortinas que cedem, armrios que desa+ustam etc., etc. 7a a um programa que registre o tipo de servi o, data e nome de quem fe%, pra%o de garantia e observa 'es, como por e$emplo sobre as chamadas para consertar o conserto2

.5.3. EDUCATIVOS
...3.1
Ta9,a/a 5 <mplementar um programa para crian as que apoia o aprendi%ado de tabuada. 1ntre outras coisas, o programa pode propor 0 crian a seq/ncias de um mesmo n,mero ou aleatrias. *ode tambm mostrar n,meros em tamanho maior. Se quiser sofisticar mesmo, arma%ene estat.sticas de erros e acertos, e fa a o programa refor ar os pontos fracos. CI/i6' M'r+$ 5 <mplemente um tradutor de cdigo =orse. *ode ter op 'es para som, imagens ou listagens. 3i%em que s a =arinha ainda usa esse cdigo, mas pode ser um bom e$erc.cio...

...3.2

.5.4. VARIADOS
...#.1
C'pa /' M,*/' 5 7a%er um programa para controle do placar de uma Bopa do =undo de futebol Nescolha umaO. & programa deve ler e arma%enar os resultados, alm de montar os +ogos a partir das oitavas)de)final !i+ta /$ +$3$%&' 5 Briar uma instru o reutili%vel que recebe como par[metro uma lista de strings, abre uma moldura centrali%ada na tela, mostra as strings e permite sele o de uma Nou 1SBA*1O. Kuando selecionada alguma, a instru o retorna o n,mero dela na lista ou %ero, se nenhuma selecionada. *ara test)la, implemente um programa simples, por e$emplo, um que leia os valores a selecionar do teclado.

...#.2

...#.3

Pr';a+ V ', 2 5 1labore um programa que corri+a provas contendo somente quest'es com respostas 4erdadeiro ou 7also. & programa deve arma%enar as respostas corretas para cada questo e at FI provas com at ?I quest'es. Kuando solicitado, o programa calcula e mostra as notas para cada aluno. &pcionalmente, o usurio pode definir um fator de corre o, de forma que para cada ? ou D quest'es erradas, uma certa se+a anulada. Ui+tIric' $+c'3ar 5 7a a um programa que registra o histrico escolar de um ou mais estudantes. Juarde informa 'es sobre per.odo ou srie, disciplinas e notas, e calcule mdia em per.odo e geral. Se a sua escola no trabalha com notas e sim com men 'es ou algo parecido, calcule as quantidades de cada men o. C'*tr'3$ /$ 9acO,p 5 <mplemente um programa que controla o cadastro de disquetes( incluso, altera o, e$cluso, consultas. *ara cada disquete, so arma%enados( n,mero Nque deve corresponder a um n,mero no disqueteO, data da compra, descri o do conte,do. 4oc pode incluir tambm a data do ,ltimo #refresh# Nvamos chamar assim a regrava o do disquete para garantir que o bacPup continua .ntegroO, com uma consulta para mostrar os disquetes vencidos. Bomo os disquetes tem normalmente garantia #eterna#, ser interessante arma%enar o n,mero da nota fiscal da compra, para o caso de troca se o dito cu+o se tornar defeituoso No que voc + deve ter observado que acontece com ra%ovel freq/nciaO. A;a3ia/'r /$ $Dpr$++-$+ aritm0tica+ ) 7a a um programa que calcula qualquer e$presso aritmtica contendo as opera 'es bsicas NX, ), 8, WO, constantes numricas reais e parnteses. -sar recursividade vai tornar as solu 'es bastante elegantes. Pr'93$ma+ $ +'3,%-$+ 5 No caminho do aprendi%ado temos que resolver ou descobrir solu o para vrios tipos de problemas, relacionados ao computador, sistema operacional, impressora, etc. 7a a um programa para registrar essa e$perincia. 1le arma%ena te$tos descritivos a respeito do problema e respectiva solu o, permitindo pesquisa por palavra chave.

...#.#

...#..

...#.7

...#.

#0

300 IDIAS PARA PROGRAMAR COMPUTADORES

.5.5. DESA2IOS
.....1 .....2
PAM i*t$3i6$*t$ 5 & monitor deste +ogo N.F.9.9I O era mais fcil. Agora o desafio implementar a possibilidade de um +ogador +ogar contra o computador. Gra/$ <'r=ria ) 7a a um programa que monte grades horrias a partir de horrios, disciplinas, professores e restri 'es, solicita 'es e outras variveis. " coordenadores que aguardam ansiosamente tal programa... Ac<a5. 5 3ois +ogadores, cada um pensa uma palavra de F letras diferentes, sem acentos. -m tenta adivinhar primeiro a palavra que o outro escolheu. Alternadamente, cada um submete ao outro uma palavra tambm de F letras, sem regras. & outro vai informar quantas letras daquela palavra esto presentes na sua palavra secreta. Bom base nessa informa o e, atravs de lgica, as letras vo sendo eliminadas ou descobertas. *or e$emplo, suponha que a palavra secreta do +ogador 9 #%inco#. Se o +ogador ? disser #arara#, o +ogador 9 informa #%ero#, + que nem o #a# nem o #r# ocorrem em #%inco#. & +ogador ? ento elimina as duas letras. Se a palavra dita for #ossos#, o +ogador 9 informa #uma#, que pode ser #o# ou #s#. Neste ponto Ne na sua pr$ima +ogadaO, o +ogador ? pode di%er #esses# e, ao ser informado que h %ero ocorrncias, elimina o #e# e o #s# e descobre em #ossos# que a letra #o# pertence 0 palavra secreta do +ogador 9. <mplemente esse +ogo, com um banco de palavras de F letras para que o computador sorteie a sua palavra secreta.

.....3

#1

APVNDICE A? DESCRI)"O DAS INSTRU)QES


A tabela abai$o constitui um sumrio das instru 'es necessrias 0 implementa o dos programas especificados no te$to. 1sto divididas na mesma estrutura do te$to. -ma das colunas indica o nome da instru o no @urbo *ascal H.I! a coluna em branco pode ser usada para registrar)se o nome da instru o de outra linguagem, com a mesma finalidade. Note que este no um guia de sinta$e, apenas uma referncia para relacionar uma finalidade a uma instru o. >bs/ Hnstru&'es assinaladas com )f* s0o fun&'es )retornam um resultado*. As demais s0o procedimentos.

SE)"O GERA! SA1DA SIMP!ES CONTRO!E DE TEC!ADO E TE!A Am'/' t$Dt'@

INSTRU)QES Bomo digitar, salvar, compilar e e$ecutar o programa fonte Bomo e$ecutar passo)a)passo o programa e observar variveis =ostrar na tela =ostrar na impressora >impar a tela *osicionar cursor &bter coluna do cursor &bter linha do cursor Alterar cor de fundo Alterar cor do te$to 4erificar se uma tecla foi pressionada &bter o caractere correspondente 0 tecla pressionada 3efinir uma +anela de te$to na tela 1mitir som *ausa <nterromper som

TURBO PASCA! .0 Ambiente <ntegrado de 3esenvolvimento Qrite, Qriteln QriteN>S@,...O BlrScr JotoSi, Bursor@o QhereS NfO Qherei NfO @e$t6acPJround @e$tBolor kee*ressed NfO Eeadkee QindoRs Sound 3elae NoSound

SONS

#2

300 IDIAS PARA PROGRAMAR COMPUTADORES INSTRU)QES declarar variveis declarar constantes como atribuir valores a variveis como recuperar valores de variveis como ler valores do teclado e arma%en)los em variveis Aritmtica bsica Eesto, quociente inteiro fun 'es matemticas Nseno, cosseno, e$ponencial, rai% quadrada, elevar ao quadrado, truncar, arredondar, valor absoluto, parte fracionria, parte inteira, logaritmo neperianoO <ncrementar, decrementar uma varivel Boncatena o de cadeias &bter um caractere de uma cadeia &bter o tamanho atual de uma cadeia Bdigo ASB<< de um caractere Baractere referente a um cdigo ASB<< *esquisar uma cadeia em outra Bonverter cadeia com d.gitos em n,mero Bonverter n,mero em cadeia de caracteres Bonverter letra para mai,scula <nserir uma cadeia em outra 1$trair uma subcadeia de uma cadeia 1$cluir uma subcadeia de uma cadeia *reencher uma cadeia com uma quantidade de caracteres 1$ecutar condicionalmente trechos de instru 'es TURBO PASCA! .0 4AE B&NS@ Nome3a4arivel (Y e$presso Nome da varivel Eeadln X, ), W, 8 3<4, =&3 Sin, Bos, 1$p, SqEt, Sqr, @runc, Eound, Abs, 7rac, <nt, >n <nc, 3ec X, Boncat Nome3a4arivel\*osi o] >ength NfO &rd NfO Bhr NfO, ` *os NfO 4al Str -pBase NfO <nsert Bope NfO 3elete 7illBhar <7..@"1N..1>S1 BAS1..3&

SE)"O MEMWRIA E VARIVEIS

MATEMTICA

CARACTERES E CADEIAS

A!TERNATIVAS E DECIS"O

APVNDICE A

#3

SE)"O REPETI)"O

INSTRU)QES *elo menos uma ve%, quantidade indefinida de repeti 'es Kuantidade conhecida de repeti 'es Kualquer situa o declarar vetores ou matri%es referenciar elemento de vetor declarar variveis de arquivos associar nomes de variveis a nomes de arquivos em disco criar arquivos abrir arquivos para leitura e8ou escrita gravar dados em arquivos >er dados de arquivos 7echar um arquivo &bter status da ,ltima opera o com arquivo 1liminar um arquivo *osicionar o apontador de registros &bter a posico atual do apontador de registros &bter a quantidade de registros de um arquivo 4erificar se o apontador de registros atingiu o fim do arquivo Eenomear um arquivo &bter o diretrio corrente Alterar o diretrio corrente Briar um subdiretrio 1liminar um subdiretrio @runcar um arquivo

TURBO PASCA! .0 E1*1A@..-N@<> 7&E..@&..3& 7&E..3&QN@&..3& Q"<>1..3& AEEAi Nome4ar\*os9, *os?...] tipos de dado 7ile, @e$t Assign EeRrite Eese Qrite, 6locPQrite Eead, 6locPEead Blose <&Eesult 1rase SeeP 7ile*os NfO 7ileSi%e NfO 1&7 NfO Eename Jet3ir Bh3ir =P3ir Em3ir @runcate

VETORES E MATRIXES AR8UIVOS

##

300 IDIAS PARA PROGRAMAR COMPUTADORES INSTRU)QES criar NdeclararO procedimentos criar NdeclararO fun 'es chamar instru 'es declaradas como declarar par[metros de entrada em instru 'es declaradas como declarar par[metros de entrada e sa.da em instru 'es declaradas chamar Ne$ecutarO uma instru o declarada, passando par[metros para as instru 'es que criou e recebendo valores de retorno. Suspender o flu$o de e$ecu o por um tempo determinado <nterromper o programa Jerar um n,mero aleatrio &bter data e hora TURBO PASCA! .0 *E&B13-E1 7-NB@<&N nome da instru o no cabe alho, nome e tipo de dado antepor a palavra var nome da instru o, com par[metros entre parnteses 3elae "alt Eandomi%e, Eandom NfO Jet3ate, Jet@ime

SE)"O DEC!ARA)"O DE INSTRU)QES

OUTRAS

Você também pode gostar