Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


300 ideias para Programar Computadores, Notas de estudo de Informática

Ideias para poder usar em qualquer linguagem de programação

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 17/09/2009

celio-alves-11
celio-alves-11 🇧🇷

4.9

(6)

1 documento

1 / 62

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
300
Na minha vivência profissional, como programador, analista de sistemas e professor, tenho visto
programadores de vários tipos. Alguns são mais criativos, outros menos, e também há os que parecem eternos
iniciantes. Alguns têm sólida formação em algoritmos e técnicas de programação; outros não a tem mas se viram
quando precisam. Há programadores que praticamente se "viciam" em comandar computadores, e extraem grande
prazer dessa atividade, e há outros que o fazem por fazer, simplesmente, talvez pelo salário.
Os programadores realmente bons, que unem formação técnica, criatividade, curiosidade e prazer
parecem ser relativamente poucos. Naqueles que conheci pude perceber padrões: eles têm acesso a um
computador, em casa ou em outro lugar; têm uma grande disposição de buscar soluções por si mesmos e, acima de
tudo, eles programam muito. Não dependem de alguém mandá-los programar, tendo ou não suas próprias idéias.
Para resumir, eles simplesmente praticam muito, e este é o fator maior que, na minha opinião, os torna melhores
que os outros.
Por isto foi elaborado este material, cujo conteúdo consiste essencialmente de especificações de
programas, não voltadas para nenhuma linguagem de programação em particular. Sua maior finalidade é fornecer
idéias para que programadores ávidos possam programar, programar e programar, e assim se tornar cada vez
melhores. Uma restrição é que a implementação de algumas das especificações será mais apropriada estando a tela
em modo texto, o que não impede que muitas delas possam fornecer inspiração para programas em interface
gráfica.
A maioria das especificações propostas são voltadas para iniciantes em uma linguagem de programação,
e estruturadas na forma que considero mais didática: no início apenas comandos de saída e instruções matemáticas
simples, de forma a não sobrecarregar o estudante que, nesse momento, ainda está normalmente assimilando uma
série de novas informações sobre processadores, instruções, seqüência, controle e o próprio compilador. Os
capítulos seguintes gradativamente incorporam às especificações novos tópicos: variáveis, tipos de dado e entrada,
decisão, repetição e outras.
Os primeiros cinco capítulos estão organizados em tópicos, e estes focalizados em estruturas de
programação. Os exercícios, embora variados, não são todos diferentes: alguns combinam dois ou mais exercícios
de capítulos anteriores, resultando em um mais complexo e no qual o estudante pode aplicar a experiência
adquirida.
O último capítulo sugere idéias para programas, existentes ou não, que podem ser implementadas por
programadores que tenham amadurecido os recursos básicos de uma linguagem de programação, podendo
também ser usadas para trabalhos práticos de iniciativa pessoal ou determinados pelo professor. Em alguns casos,
é dado algum direcionamento inicial para a implementação; em outros, o desafio é todo do programador!
Este é um material para ser usado como um complemento, não servindo por si só para suportar um curso.
Dependendo da proposta didática do professor que o adote, será necessário adequar a seqüência em que as
especificações serão propostas aos estudantes.
Obviamente não há qualquer limite para a evolução deste trabalho; por isto, críticas, sugestões e eventuais
correções serão sempre muito bem vindas.
Virgílio Vasconcelos Vilela
Brasília, Fevereiro/1999.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e

Pré-visualização parcial do texto

Baixe 300 ideias para Programar Computadores e outras Notas de estudo em PDF para Informática, somente na Docsity!

Na minha vivência profissional, como programador, analista de sistemas e professor, tenho visto programadores de vários tipos. Alguns são mais criativos, outros menos, e também há os que parecem eternos iniciantes. Alguns têm sólida formação em algoritmos e técnicas de programação; outros não a tem mas se viram quando precisam. Há programadores que praticamente se "viciam" em comandar computadores, e extraem grande prazer dessa atividade, e há outros que o fazem por fazer, simplesmente, talvez pelo salário.

Os programadores realmente bons, que unem formação técnica, criatividade, curiosidade e prazer parecem ser relativamente poucos. Naqueles que conheci pude perceber padrões: eles têm acesso a um computador, em casa ou em outro lugar; têm uma grande disposição de buscar soluções por si mesmos e, acima de tudo, eles programam muito. Não dependem de alguém mandá-los programar, tendo ou não suas próprias idéias. Para resumir, eles simplesmente praticam muito, e este é o fator maior que, na minha opinião, os torna melhores que os outros.

Por isto foi elaborado este material, cujo conteúdo consiste essencialmente de especificações de programas, não voltadas para nenhuma linguagem de programação em particular. Sua maior finalidade é fornecer idéias para que programadores ávidos possam programar, programar e programar, e assim se tornar cada vez melhores. Uma restrição é que a implementação de algumas das especificações será mais apropriada estando a tela em modo texto, o que não impede que muitas delas possam fornecer inspiração para programas em interface gráfica.

A maioria das especificações propostas são voltadas para iniciantes em uma linguagem de programação, e estruturadas na forma que considero mais didática: no início apenas comandos de saída e instruções matemáticas simples, de forma a não sobrecarregar o estudante que, nesse momento, ainda está normalmente assimilando uma série de novas informações sobre processadores, instruções, seqüência, controle e o próprio compilador. Os capítulos seguintes gradativamente incorporam às especificações novos tópicos: variáveis, tipos de dado e entrada, decisão, repetição e outras.

Os primeiros cinco capítulos estão organizados em tópicos, e estes focalizados em estruturas de programação. Os exercícios, embora variados, não são todos diferentes: alguns combinam dois ou mais exercícios de capítulos anteriores, resultando em um mais complexo e no qual o estudante pode aplicar a experiência adquirida.

O último capítulo sugere idéias para programas, existentes ou não, que podem ser implementadas por programadores que já tenham amadurecido os recursos básicos de uma linguagem de programação, podendo também ser usadas para trabalhos práticos de iniciativa pessoal ou determinados pelo professor. Em alguns casos, é dado algum direcionamento inicial para a implementação; em outros, o desafio é todo do programador!

Este é um material para ser usado como um complemento, não servindo por si só para suportar um curso. Dependendo da proposta didática do professor que o adote, será necessário adequar a seqüência em que as especificações serão propostas aos estudantes.

Obviamente não há qualquer limite para a evolução deste trabalho; por isto, críticas, sugestões e eventuais correções serão sempre muito bem vindas.

Virgílio Vasconcelos Vilela

[email protected]

Brasília, Fevereiro/1999.

SUMÁRIO

1 BÁSICOS.................................................................................................................................... 2

1.1 SAÍDA SIMPLES....................................................................................................................... 2

1.1.1 Frase na tela - Implemente um programa que escreve na tela a frase "O primeiro programa a gente nunca esquece!"....................................................................................................................................... 2

1.1.2 Etiqueta - Elabore um programa que, após limpar a tela, escreve seu nome completo na primeira linha, seu endereço na segunda, e o CEP e telefone na terceira............................................................... 2

1.1.3 Frases assassinas - Faça um programa que mostre na tela algumas frases assassinas, que são aquelas que fazem com muitas idéias sejam perdidas antes que amadureçam ou seja aprofundadas. Eis alguns exemplos (bole também os seus):............................................................................................................ 2

1.1.4 Mensagem - Escreva uma mensagem para uma pessoa de que goste. Implemente um programa que imprima essa mensagem, e envie-a. ........................................................................................................ 2

1.1.5 Ao mestre - Escreva um bilhete ao seu professor, informando seus objetivos nesta disciplina e o que espera dela e do professor. Implemente um programa que mostra seu bilhete na tela............................ 2

1.1.6 Quadrado - Escrever um programa que mostre a seguinte figura no alto da tela:...................... 2

1.1.7 Tabela de notas - Escreva um programa que produza a seguinte saída na tela:.......................... 2

1.1.8 Apresentação - Um estudante ia participar de uma feira de ciências e seu projeto tinha o tema "fotossíntese". Ele conseguiu um notebook emprestado, e queria um programa que lhe permitisse apresentar um texto dividido em partes, cada parte em uma tela, e o programa deveria mudar para a próxima tela ao toque de uma tecla. A tela inicial deve ser a palavra "FOTOSSÍNTESE" escrita com letras grandes. Faça o programa para o estudante, usando o texto abaixo, no qual cada parágrafo deve aparecer em uma tela diferente. Como o estudante não entende muito de operação de computadores, você tem que também gerar um arquivo executável, copiá-lo para o outro computador e incluir um ícone para fácil execução sob Windows. ................................................................................................................................................ 3

1.1.9 Letra grande - Elabore um programa para produzir na tela a letra X usando a própria. Se fosse ‘L’, seria assim:............................................................................................................................................... 3

1.1.10 Palavra grande - Escreva um programa que produza a tela esquematizada abaixo:................... 3

1.1.11 Desenho datilográfico - Há um artista que faz desenhos somente com caracteres disponíveis em uma máquina de escrever. Bole uma figura nesse estilo (bem melhor que a abaixo, se possível) e faça um programa que a mostre na tela................................................................................................................. 3

1.1.12 Emoticons - Emoticons são seqüências de caracteres que mostram rostos e expressões, vistos de lado e usados freqüentemente em correios eletrônicos e bate-papos na Internet. Existem dezenas; veja alguns:..... 4

1.1.13 Pinheiro 1 - Implemente um programa que desenhe um "pinheiro" na tela, similar ao abaixo. Enriqueça o desenho com outros caracteres, simulando enfeites............................................................ 4

1.1.14 Pinheiro 2 -Elabore uma versão 2 do programa do item anterior que desenhe o pinheiro com asteriscos (*). [Dica: use o recurso de localização/substituição do editor para fazer a substituição rapidamente]............................................................................................................................................. 4

1.1.15 Menu - Elabore um programa que mostre o seguinte menu na tela:.......................................... 4

1.2 MATEMÁTICA.......................................................................................................................... 5

1.2.1 Expressões aritméticas - Calcule as expressões abaixo, observando a precedência dos operadores. Escreva um programa que mostre na tela o resultado de cada expressão e confira seus cálculos........... 5

1.2.2 Div e mod - Calcule as expressões abaixo; o operador mod calcula o resto, e div, o quociente da divisão inteira. Depois, escreva um programa que lhe permita verificar, quando executado, se você calculou corretamente............................................................................................................................................. 5

1.2.3 Conta telefônica - Uma conta telefônica é composta dos seguintes custos:............................... 5

1.2.4 Tempo livre - Um estudante muito metódico estava matriculado em 6 disciplinas, e dispunha de 1 hora e 40 minutos para estudar. Sua intenção era dividir o tempo disponível igualmente para as 6 disciplinas, e descansar livremente o tempo restante. Faça um programa que calcule o tempo que ele deve dedicar para cada disciplina e o tempo livre. [Dica: use os operadores div e mod]..................................................... 5

Escreva um programa que faz soar no alto-falante do computador a nota Lá (440 Hz) e só para quando for pressionada alguma tecla......................................................................................................................... 7

1.4.2 Parabéns - Faça um programa que emite as seis primeiras notas do "Parabéns prá você". Tente as seguintes notas (freqüência em Hz/duração em milissegundos): [440,200], [440,200], [500,800], [440,400], [600,400], [560,800],............................................................................................................................... 7

2 VARIÁVEIS E ENTRADA DE DADOS................................................................................... 9

2.1 SAÍDA SIMPLES....................................................................................................................... 9

2.1.1 Mensagem emoldurada - Implemente um programa que leia três linhas de mensagens de até 15 caracteres cada uma e mostra-as na tela, emolduradas (retângulo ao redor) por algum caractere.......... 9

2.1.2 Etiqueta - Escreva um programa que lê do teclado seu nome completo, endereço, CEP e telefone, limpa a tela e mostra seu nome na primeira linha, seu endereço na segunda, e o CEP e telefone na terceira. ........ 9

2.1.3 Losangos 1 - Implemente um programa que desenhe os losangos abaixo 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 15 colunas à direita do primeiro.................................................................................................................... 9

2.1.4 Losangos 2 - No programa do exercício anterior, troque o caractere de forma que os losangos sejam feitos com asteriscos (*). ......................................................................................................................... 9

2.1.5 Triângulo com iniciais - Escrever um programa que lê um caractere, as iniciais de um nome ( caracteres), uma linha e uma coluna e depois desenha na tela um triângulo equilátero formado com o caractere, tendo dentro as iniciais lidas. O caractere no ápice do triângulo deve estar na linha e coluna lidas, e a altura do triângulo deve ser no máximo 5 linhas................................................................................ 9

2.2 MATEMÁTICA.......................................................................................................................... 9

2.2.1 Média aritmética - Escrever programa que lê três notas inteiras e calcula a sua média aritmética..... 9

2.2.2 Média geométrica - Elabore um programa que lê três valores e calcula a média geométrica dos números lidos (divisão do produto pela quantidade de valores).............................................................. 9

2.2.3 Média ponderada - Implemente um programa que lê três valores e calcule a média ponderada para pesos 1, 2 e 3, respectivamente (multiplique cada nota pelo seu peso, some os produtos e divida o resultado pela soma dos pesos)................................................................................................................................ 9

2.2.4 Aritmética básica - Implemente um programa que lê dois números quaisquer e informa sua soma, diferença, produto e quociente, formatados com 2 casas decimais......................................................... 9

2.2.5 Funções matemáticas - Elabore um programa que lê um número (suponha que será positivo) e informa seu quadrado, raiz, logaritmo e exponencial, formatados com 4 casas decimais...................... 9

2.2.6 Nota final - O critério de notas de uma faculdade consiste de uma nota de 0 a 10 em cada bimestre, sendo a primeira nota peso 2 e a segunda peso 3. Elabore um programa que lê as notas bimestrais e calcula a nota do semestre....................................................................................................................................... 10

2.2.7 Soma das idades - Uma criança quer saber qual é a soma de todas as idades que ela já teve. Elaborar 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 (N+1)/2]........................................................................................ 10

2.2.8 Tempo livre - Reescreva o programa (o estudante metódico) de forma que trate qualquer disciplina e qualquer quantidade de tempo livre. Assim, o estudante entra com esses valores e o programa efetua os cálculos necessários................................................................................................................................. 10

2.2.9 Comprimento de fio - Altere o programa do eletricista () para que as medidas sejam lidas do teclado............ 10

2.2.10 Conversão de temperatura - Um canal de notícias internacionais, a cabo, previa temperatura máxima para Brasília de 85 graus Fahreneit. Escrever um programa que lhe permita converter esta temperatura (e qualquer outra) para graus Celsius, sabendo que a relação entre elas é C =5/9 (F -32).......................... 10

2.2.11 Quantidade de flexões - Um atleta faz flexões em série, com quantidades crescentes: 1 vez, depois 2 vezes, 3, 4 e assim por diante. Ao final de uma sessão, ele quer saber rapidamente a quantidade total de flexões que fez. Por exemplo, se ele fez 5 seqüências, fez ao todo 15 flexões (5+4+3+2+1). Implemente um programa que leia o número máximo e informe o total........................................................................... 10

2.2.12 Despesas de casal 1 - Um casal divide as despesas domésticas mensalmente. Durante o mês cada um anota seus gastos e as contas que paga; no final eles dividem meio a meio. O casal deseja um programa que facilite o acerto: eles digitariam os gastos de cada um, e o programa mostraria quem deve a quem. Atualmente eles fazem o acerto manualmente, na forma da seguinte tabela:......................................... 10

2.2.13 Despesas de casal 2 - Altere o programa acima de forma que o marido arque com 60% das despesas e a esposa com o restante......................................................................................................................... 11

2.2.14 Despesas de casal 3 - Para o mesmo programa de rateio acima, suponha que o casal, ao invés de dividir meio a meio as despesas, vai dividi-las proporcionalmente à renda de cada um. Altere o programa de forma que este leia também a renda de cada um e use a proporção das rendas para a divisão............... 11

2.2.15 Adivinha - Escrever um programa que “adivinha” o número pensado por uma pessoa (Pense um número (pausa), multiplique por 2 (pausa), some 6 ao resultado (pausa), divida o resultado por 2, quanto deu? (informe o resultado), você pensou o número tal). [Dica: problemas desse tipo dão origem a uma expressão aritmética, e você pode alterar as operações à vontade, desde que a expressão resultante admita uma inversa. Normalmente estruturamos o problema de forma que a expressão permita uma simplificação que facilite os cálculos. Para a seqüência proposta, a expressão é (sendo n o número pensado e R o resultado): (n2+6)/2 = R, donde n = (R2-6)/2 = R - 3. Ou seja, basta subtrair 3 do resultado fornecido pela pessoa para "adivinhar" o número].......................................................................................................... 11

2.2.16 Conversão cm/pol 1 - Faça um programa que mostra 10 linhas de uma tabela de conversão centímetro/polegada, a partir de um valor lido e variando de 10 em 10 centímetros (uma polegada equivale a 2,54 centímetros). .................................................................................................................................... 11

2.2.17 Conversão cm/pol 2 - Altere o programa do exercício anterior de forma que a variação também seja lida do teclado.......................................................................................................................................... 11

2.2.18 Otimização de corte - Reescreva o programa (corte de tábuas) para que leia o tamanho de cada tábua e o comprimento de cada pedaço, e calcule a quantidade de pedaços e a sobra para cada tipo de tábua.. 11

2.2.19 Notas do professor - Um professor avalia seus alunos através dos seguintes critérios:............. 11

2.2.20 Conta telefônica - Uma conta telefônica é composta dos seguintes custos:............................... 11

2.3 CARACTERES E CADEIAS..................................................................................................... 11

2.3.1 Concatenação - Escreva um programa que lê duas cadeias de caracteres de tamanho 10 e mostra-as concatenadas na tela................................................................................................................................. 11

2.3.2 Subcadeias - Escreva um programa que lê uma cadeia de caracteres de tamanho 20, separa-a em duas e mostra na tela as duas metades..................................................................................................... 12

2.3.3 Códigos ASCII - Escreva um programa que lê uma cadeia de caracteres qualquer, e mostra na tela o código ASCII do primeiro e segundo caracteres da cadeia...................................................................... 12

2.3.4 Iniciais - Escreva um programa que lê nome e sobrenome, e mostra na tela as iniciais............ 12

2.3.5 Finais - Reescreva o programa anterior para mostrar na tela as letras finais do nome e sobrenome........ 12

2.3.6 Metades de cadeia - Implemente um programa que lê uma cadeia de caracteres de tamanho até 255 e mostra na tela as metades da cadeia. [Dica: basear os cálculos no tamanho da cadeia].......................... 12

2.3.7 Códigos ASCII inicial e final - Elabore um programa que lê um nome de até 15 caracteres e mostra a inicial e seu código ASCII, e a última letra e seu código...................................................................... 12

2.3.8 Soma de códigos ASCII - Escreva um programa que lê uma cadeia de tamanho 3 e mostra na tela a soma dos códigos ASCII dos caracteres da cadeia.................................................................................. 12

2.3.9 Componentes de data - Escrever um programa que lê uma data no formato ‘dd/mm/aa’ e mostra dia, mês e ano separados................................................................................................................................. 12

2.3.10 Sorteio da LBV - A LBV fez um sorteio cujos bilhetes continham números de 6 dígitos. O sorteio foi baseado nos dois primeiros prêmios da loteria federal, sendo o número sorteado formado pelos três últimos dígitos do primeiro e do segundo prêmio. Por exemplo, se o primeiro prêmio fosse 34.582 e o segundo 54.098, o número da LBV seria 582.098. Escreva um programa que lê os dois prêmios e retorna o número sorteado.................................................................................................................................................... 12

2.4 CONTROLE DE TELA.............................................................................................................. 12

2.4.1 Animação horizontal - Faça um programa que lê valores de linha e coluna e desenha um "O" na posição lida, e depois faz o seguinte, esperando uma tecla para cada ação (sempre na mesma linha):.. 12

2.4.2 Quadrado em posição - Escrever um programa que desenha um quadrado com o canto superior esquerdo em uma linha e coluna lidas. O caractere usado para formar o quadrado é o '#'. Veja abaixo uma sugestão para a tela do programa............................................................................................................. 12

2.4.3 Triângulo com iniciais - Faça um programa que lê valores de linha e coluna, além das iniciais de um nome (até 3 caracteres) e desenha um triângulo ("bole" o desenho) com um vértice na linha e coluna lidas e com as iniciais dentro............................................................................................................................... 13

2.4.4 Menu posicionado - Implemente um programa que mostra o menu abaixo a partir de uma linha lida do teclado:................................................................................................................................................ 13

2.5 SONS.......................................................................................................................................... 13

3.3.2 Caracteres ASCII - Escreva um programa que lê três números de 32 a 254 e mostra na tela uma cadeia formada pela concatenação dos caracteres ASCII de cada número. Caso algum dos números esteja fora da faixa válida, o programa mostra uma mensagem de erro apropriada.......................................... 17

3.3.3 Validação de senha - Elabore um programa que lê uma senha de até 8 caracteres, verifica se a senha está correta ou não, comparando-a com uma senha predefinida, e informa "Acesso autorizado" ou "Acesso negado", conforme o caso........................................................................................................................ 17

3.3.4 Validação de data - Escrever um programa que lê uma data no formato 'DD/MM/AAAA' e verifica se as barras estão nas posições corretas, se o dia está entre 1 e 31 e se o mês está entre 1 e 12, mostrando mensagens de erro apropriadas ou que a data está correta....................................................................... 17

3.3.5 Código ou caractere ASCII - Escreva um programa que lê uma opção que pode ser 1 ou 2. Se o usuário escolher 1, o programa lê um número de 1 a 255 e mostra o caractere ASCII correspondente; se 2, é lido um caractere e mostrado o respectivo código ASCII. Criticar as entradas numéricas e mostrar mensagens apropriadas em caso de erro..................................................................................................................... 17

3.3.6 Tipo de caractere - Escrever um programa que lê um caractere e informa se é letra, dígito, operador aritmético ou nenhum deles..................................................................................................................... 17

3.3.7 Sorteio da LBV - Reescreva o programa para que verifique se os números lidos estão no formato esperado (por exemplo, 21.375). Caso algum esteja incorreto, o programa mostra uma mensagem de erro....... 17

3.4 CONTROLE DE TELA.............................................................................................................. 17

3.4.1 Quadrado posicionado - Elabore um programa que mostre um "quadrado" de lado 5 na tela, a partir de uma linha e uma coluna lidas do teclado. Se algum dos valores estiver fora da faixa válida, é mostrada uma mensagem de erro e o desenho não é mostrado............................................................................... 17

3.4.2 Quadrado ou triângulo - Implemente um programa com 3 opções (letra ou número): terminar, desenhar um quadrado ou um triângulo na tela, em linha e coluna lidas pelo teclado. Elabore o quadrado e o triângulo como achar melhor. Faça o programa mostrar uma mensagem de erro se o usuário escolher uma opção inválida ou informar valor inválido para linha ou coluna............................................................. 17

3.5 SONS.......................................................................................................................................... 17

3.5.1 Nota musical - Elaborar um programa que lê uma freqüência em Hertz e uma duração em milissegundos e emite um som na freqüência com a duração. Limite a freqüência até 10.000 Hz e a duração a 2 segundos............................................................................................................................................. 17

3.6 VARIADOS................................................................................................................................ 17

3.6.1 Cadeia centralizada - Elabore um programa que lê um número de linha e uma cadeia qualquer, limpa a tela e mostra a cadeia centralizada na linha indicada. Linhas inválidas não são aceitas. [Dica: calcule a coluna com base na quantidade de colunas da tela e no comprimento da cadeia]................................... 17

3.6.2 Dia da semana - Construa um programa que lê um número de 1 a 7 e informa o dia da semana correspondente, sendo domingo o dia de número 1. Se o número não corresponder a um dia da semana, é mostrada uma mensagem de erro............................................................................................................. 17

3.6.3 PIS/PASEP - O dígito verificador do PIS/PASEP é calculado através da seguinte regra: o número é composto por dez dígitos mais um dígito verificador. Multiplique os números, da esquerda para a direita, respectivamente por 3 2 9 8 7 6 5 4 3 2. Some os resultados das multiplicações; calcule o resto da divisão da soma por 11 e subtraia o resultado de 11. Se o resultado for 10 o dígito é zero, caso contrário o dígito é o próprio resultado. .................................................................................................................... 17

3.6.4 Calculadora - A calculadora de Luciana pifou, justo quando ela precisa fazer vários cálculos. Ela tem um computador, mas não sabe que um dos acessórios do Windows é uma calculadora. Sendo estudante de programação, Luciana resolveu fazer um programa. A especificação que bolou prevê que programa lê dois números inteiros (o que atende suas necessidades) e em seguida um símbolo de operação. Se este for '+', o programa soma os números, se '-', subtrai, se '*' multiplica e se '/' divide. Se o símbolo for diferente desses, é mostrada uma mensagem de erro. O programa, antes de dividir, critica se o divisor é zero e mostra uma mensagem, se for. Implemente a especificação de Luciana..................................................................... 18

3.6.5 Jogo de fichas 1 - Um jogo consiste em se retirar duas fichas de um saco contendo fichas brancas e pretas. Dependendo da combinação de cores das fichas retiradas, o jogador será pago na seguinte proporção:........... 18

3.6.6 Jogo de fichas 2 - Altere o programa anterior para que leia também o valor apostado, limitado a $100, e informe o valor a ser recebido pelo apostador............................................................................. 18

3.6.7 Jogo de fichas 3 - Modifique o programa do jogo de retirada de fichas, acima, de forma que o jogador retire três fichas. Atribua valores de rateio para todas as combinações de cores. Implemente um programa que lê o valor apostado, sorteia as cores, calcula o rateio obtido pelo jogador e o valor que ele

receberá. .................................................................................................................................................. 18

3.6.8 Adivinhe 1 - Faça um programa que sorteia um número de 1 a 5 e pede ao usuário que o adivinhe, lendo do teclado o palpite. Caso o usuário acerte ou não, é mostrada uma mensagem apropriada......... 18

3.6.9 Adivinhe 2 - Modifique o programa acima para que o usuário possa tentar novamente se errar na primeira vez.............................................................................................................................................. 18

3.6.10 Categoria de altura - Elaborar programa que lê uma altura e mostra uma mensagem conforme a faixa de altura:................................................................................................................................................... 18

3.6.11 Conceito - Uma universidade atribui conceitos aos alunos com base na nota obtida em cada disciplina, segundo a tabela abaixo. Escreva um programa que lê a nota e informa o conceito obtido.. 18

3.6.12 Multiplicação rápida - Um algoritmo para multiplicação rápida por 11 de números de 2 dígitos funciona assim: para multiplicar 81 x 11, some os dígitos do número (8 + 1 = 9) e insira o resultado entre os dígitos (891). Se a soma der maior que 9, incremente o dígito da esquerda (vai-um): 56 x 11 = 616. Faça um programa que efetue multiplicações por 11 usando este algoritmo......................................................... 19

4 Repetição..................................................................................................................................... 21

4.1 SAÍDA SIMPLES....................................................................................................................... 21

4.1.1 Egocentrismo - Implemente um programa que mostra seu nome na tela dez vezes................... 21

4.1.2 Mais pinheiro - Fazer um programa que desenha o pinheiro (), usando comandos de repetição.. 21

4.1.3 Caracteres progressivos 1 - Escrever um programa que produza a saída abaixo na tela, para N linhas e usando um caractere lido do teclado (no exemplo, *). Após mostrar uma vez, o programa repete o processo, só parando quando N for zero.................................................................................................................. 21

4.1.4 Caracteres progressivos 2 - Faça o mesmo que acima para:....................................................... 21

4.1.5 Caracteres progressivos 3 - Idem acima, para o formato abaixo. .............................................. 21

4.1.6 Caracteres progressivos 4 - Ibidem:............................................................................................ 21

4.1.7 Tudo junto - Faça um programa que junte os 4 exercícios acima. Ele repetidamente oferece um menu com a opção 0 para terminar e outras 4 opções 1, 2, 3,e 4, cada uma correspondendo a um tipo de figura. Caso a opção indicada pelo usuário seja inválida, é mostrada uma mensagem apropriada. Em todos os casos exceto 0 o menu é oferecido novamente. Tente estruturar o programa de forma que a leitura da quantidade de linhas seja feita em apenas um ponto do programa, ao invés de ser lida a cada opção........................... 21

4.2 MATEMÁTICA.......................................................................................................................... 22

4.2.1 Aprovação - Elaborar programa que lê uma disciplina e respectiva nota (de 0 a 10, com uma casa decimal), e informa se o aluno passou na disciplina, repetindo o ciclo até que a nota lida seja zero. O aluno passa quando tira 7 ou mais..................................................................................................................... 22

4.2.2 Raiz quadrada 1 - Implemente um programa que repetidamente calcula e mostra a raiz quadrada de um número qualquer................................................................................................................................. 22

4.2.3 Raiz quadrada 2 - Altere o programa acima para que ele verifique se o usuário entrou um valor positivo ou zero. Se sim, a raiz é calculada, caso contrário é mostrada uma mensagem de erro............ 22

4.2.4 Idade média - Um professor, após obter informações de uma turma, deseja saber a média de idade. Escrever um programa que lê as idades até que o idade lida seja zero, quando então é mostrada a média (o zero não é considerado para a média)...................................................................................................... 22

4.2.5 Estatística de notas - Faça um programa que lê uma quantidade qualquer de notas de 0 a 10 (não permitir fora desta faixa) e, ao final, mostra quantas notas foram digitadas, a média e também a quantidade com valor abaixo de 5 ............................................................................................................................. 22

4.2.6 Maior - Escrever um programa que lê números inteiros até que o número lido seja zero, quando então é mostrado o maior número lido..................................................................................................... 22

4.2.7 Maior e menor - Alterar o programa anterior para que mostre também o menor número lido.. 22

4.2.8 Números inteiros 1 - Escrever um programa que lê um número inteiro e mostra na tela os números inteiros de 1 até o número lido................................................................................................................. 22

4.2.9 Números inteiros 2 - Alterar o programa acima de forma que seja lido também o número inicial. ..... 22

4.2.10 Soma de pares - Implemente um programa que calcula a soma dos números pares compreendidos entre dois números lidos.......................................................................................................................... 22

4.2.11 Ímpares múltiplos 1 - Escreva um programa que soma todos os números ímpares múltiplos de três situados na faixa de 1 a 1000................................................................................................................... 22

4.2.12 Ímpares múltiplos 2 - Altere o programa acima de forma que a faixa seja informada pelo usuário, e

"criptografia").......................................................................................................................................... 24

4.3.8 Prenome - Escrever 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. O programa repete esses passos até que o nome lido seja uma cadeia nula (o usuário não digitou nada).............................................................. 24

4.3.9 Iniciais - Escreva um programa que lê um nome de pessoa e identifica suas iniciais, segundo o seguinte critério: uma inicial é o primeiro caractere ou o caractere que segue um espaço..................... 24

4.3.10 Inversão de cadeia - Elaborar um programa que lê uma cadeia de caracteres e mostra-a invertida na tela. Após, o programa volta para ler outra, assim fazendo até que a cadeia nula seja nula, isto é, sem nenhum caractere................................................................................................................................................... 24

4.3.11 Eliminação de caractere - Fazer um programa que lê uma cadeia e um caractere e elimina todas as ocorrências do caractere na cadeia. Após, o programa pede nova cadeia e só termina quando a cadeia lida for nula...................................................................................................................................................... 24

4.3.12 Quantidade de caracteres - Elaborar um programa que lê uma cadeia e um caractere e informa a quantidade de ocorrências do caractere na cadeia (não diferenciar minúsculas/maiúsculas: 'a' = 'A'). Por exemplo, se a cadeia for "BANANA nanica" e o caractere for "a", o programa deve informar 5.......... 24

4.3.13 Estatística de frase 1 - Elabore um programa que lê uma cadeia de até 255 caracteres e informa:... 24

4.3.14 Estatística de frase 2 - Altere o programa acima para que informe também a quantidade de cada vogal...................................................................................................................................................... 24

4.3.15 Validação de senha - Escrever um programa que lê uma senha (entre 4 e 8 caracteres), compara a senha linha com o valor correto e informa se o usuário está autorizado ou se a senha está incorreta. A senha correta é registrada dentro do programa como uma constante. O programa permite até 3 tentativas..... 24

4.4 CONTROLE DE TELA.............................................................................................................. 25

4.4.1 Animação horizontal 1 - Implementar um programa que simula um caractere se movendo pela tela ao longo de uma linha cujo valor é lido do teclado, a partir e até colunas também lidas. O programa verifica se a coluna final informada é maior do que o valor inicial...................................................................... 25

4.4.2 Animação horizontal 2 - Alterar o programa anterior para que o movimento seja na vertical, isto é, a coluna fica fixa e a linha varia................................................................................................................. 25

4.4.3 Nave espacial 1 - Bolar um desenho de uma "nave espacial" em modo texto. Fazer 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 ESCAPE. A nave pára quando atinge os limites da tela.............................................................. 25

4.4.4 Nave espacial 2 - Alterar o programa acima para permitir o movimento também para cima e para baixo...................................................................................................................................................... 25

4.4.5 Desenho - Faça um programa de desenho, cuja tela tem um cursor que se movimenta com as setas, deixando um "rastro" (algum caractere; se quiser sofisticar, ponha um hífen se o movimento for na horizontal e uma barra, se na vertical. Se quiser sofisticar mais ainda, use os caracteres de desenho de retângulos da tabela ASCII)............................................................................................................................................ 25

4.4.6 Apresentação 1 - Altere o programa da fotossíntese () de forma que o estudante avance ou retroceda as páginas através de seta acima e seta abaixo. O programa termina quando avançar além da última página ou quando teclado ESCAPE. [Dica: use um comando de repetição, combinado com dois comandos de decisão. O primeiro, após a leitura da tecla, ajusta a página a ser mostrada. O segundo mostra o texto da página]...................................................................................................................................................... 25

4.4.7 Apresentação 2 - Altere o programa anterior de forma que, quando o usuário teclar o número de uma página existente, o programa vai direto para a página correspondente................................................... 25

4.4.8 Losangos - Refaça o programa dos losangos (), desta vez usando comandos de repetição....... 25

4.4.9 Quadrados crescentes - Elaborar um programa que mostra um "quadrado" no centro da tela, de lado

  1. Em seguida, mostra outro quadrado de lado 4 ao redor do primeiro e apaga este, depois um de lado 6, etc., até "sair" da tela. O programa repete isso até que uma tecla seja pressionada........................................ 25

4.5 SONS.......................................................................................................................................... 25

4.5.1 Chateação - Implementar um programa que fica repetindo a melodia do parabéns (especificação ) até que uma tecla seja pressionada. Execute-o sempre que quiser amolar alguém!...................................... 25

4.5.2 Som crescente 1 - Elaborar um programa que emite sons de freqüência crescente, iniciando em 100 Hz até cerca de 8000 Hz, com variação de 10 em 10 % e tendo cada som a duração de 30 milissegundos...... 25

4.5.3 Som crescente 2 - Alterar o programa acima para que leia via teclado todos os valores: freqüências inicial e final, duração do som e variação. Verificar se a freqüência final é maior do que a inicial e se a

variação é maior do que 1 e menor do que 2........................................................................................... 25

4.5.4 Som decrescente - Reescrever o programa acima para que a emissão de sons seja com freqüência decrescente............................................................................................................................................... 25

4.5.5 Queda - Implementar um programa que emite sons de 700 a 600 Hertz, variando a frequência de 1 em 1, tendo cada som a duração de 10 milissegundos............................................................................. 25

4.6 REGISTROS E VETORES......................................................................................................... 25

4.6.1 Média - Escrever um programa que leia até 20 números inteiros para um vetor e calcule a média dos valores. .................................................................................................................................................... 25

4.6.2 Maior e menor - Escrever um programa que preencha um vetor de 100 elementos com valores inteiros aleatórios, e identifique o maior e o menor número gerados, e respectivas posições................. 25

4.6.3 Média ponderada - Escrever um programa que calcula médias ponderadas para uma quantidade de fatores de até 15. O programa lê vários pares [número, peso] até que seja lido um número negativo. É calculada então a média, somando-se os produtos de cada número por seu peso e dividindo-se o resultado pela soma dos pesos................................................................................................................................. 25

4.6.4 Soma em vetor 1 - Escrever um programa que, após preencher dois vetores com números inteiros aleatórios, soma os valores dos elementos correspondentes de dois vetores, armazenando o resultado num terceiro vetor. .......................................................................................................................................... 26

4.6.5 Soma em vetor 2 - Elabore um programa semelhante ao anterior, exceto que, em apenas um vetor, soma os valores de dois campos e armazena o resultado em um terceiro campo de um registro............ 26

4.6.6 Tabela de temperatura - Implementar um programa que monta uma tabela de graus Celsius/ Fahrenheit desde o ponto de fusão até o ponto de ebulição da água, em incrementos unitários. Após são oferecidas opções para o usuário ver na tela ou imprimir........................................................................ 26

4.6.7 Pesquisa notas - Elaborar programa com opções para: ler 10 notas de 0 a 10, pesquisar se uma nota existe no vetor e mostrar o conteúdo do vetor. Na leitura, rejeitar notas fora da faixa válida................. 26

4.6.8 Nome do dia - Construa um programa que lê um número de 1 a 7 e informa o dia da semana correspondente, sendo domingo o dia de número 1. Se o número estiver fora da faixa válida, é mostrada uma mensagem de erro.................................................................................................................................... 26

4.6.9 Validação de senha - Implementar um programa que lê um nome e uma senha (entre 4 e 8 caracteres) e verifica e o usuário está autorizado ou não. Para essa verificação, o programa mantém uma lista de nomes e respectivas senhas. O programa mostra mensagens de erro se o nome ou a senha estiverem incorretos. São permitidas até 3 tentativas........................................................................................................................ 26

4.6.10 Alunos e notas - Implemente um programa que lê uma lista de pares nomes de aluno/notas. Depois são mostrados na tela os nomes e as notas, juntamente com a quantidade de alunos e a média das notas.... 26

4.6.11 Troco - Implemente um programa que resolve o problema do troco: dado um valor de uma venda, um valor pago e um estoque de notas e moedas (todos os possíveis), calcular o troco e as notas ou moedas e respectivas quantidades que devem ser entregues ao cliente. Procure estruturas de dados que permitam soluções mais simples, como por exemplo um vetor com o valor de cada nota ou moeda, em ordem decrescente de valor................................................................................................................................. 26

4.6.12 Frases espelhadas - Faça um programa que leia cadeias (qualquer quantidade, limitada a 20) de até 39 caracteres e mostre-as espelhadas no centro da tela, como no exemplo:............................................ 26

4.6.13 Palavras grandes - Faça um programa que lê uma cadeia de até 10 caracteres e a mostra na tela com letras grandes. Cada letra é formada por uma matriz 8x8, com algum caractere nas posições adequadas de forma a compor o desenho de cada letra (cada caractere é como se fosse um pixel - veja sugestão abaixo). Para separar uma letra da outra, quando mostradas na tela, você pode deixar em branco uma linha e uma coluna de cada letra, na própria matriz.................................................................................................... 26

4.6.14 Rifa - Uma rifa é sorteada com base nos números da Loteria Federal da seguinte maneira: o primeiro prêmio é formado obtendo-se o primeiro dígito de cada prêmio. O segundo é obtido através dos segundos dígitos, e assim por diante. Por exemplo, suponha que os números da Loteria Federal são: ................. 27

4.6.15 Sena - Faça um programa que lê apostas da sena, os números sorteados e apresente os resultados obtidos pelo apostador: senas, quinas e quadras...................................................................................... 27

4.6.16 Codificação de preço - Certas lojas usam (ou pelo menos usavam) um sistema de codificação de preços associando os dez dígitos à palavra PERNAMBUCO. Implemente um programa que lê um preço e mostra-o codificado, ou lê um código e mostra o preço.......................................................................... 27

4.6.17 Extenso - Elaborar um programa que lê um valor monetário e mostra na tela o valor por extenso...... 27

4.7 ARQUIVOS................................................................................................................................ 27

4.8.11 Apresentação - Modifique a versão mais elaborada do programa da fotossíntese () de forma que as páginas seja armazenadas em vetor. Descubra uma boa estrutura de dados para simplificar o problema... 29

4.8.12 Criptografia 2 - Implementar um programa que criptografa uma cadeia usando o seguinte algoritmo: ela é reescrita em blocos de 5 caracteres, sendo as novas palavras obtidas lendo-se cada coluna resultante, separadas por barras. Por exemplo, se a cadeia for "mensagem secreta":............................................... 29

5 CRIAÇÃO DE instruções........................................................................................................... 31

5.1 MATEMÁTICA.......................................................................................................................... 31

5.1.1 Número par - Fazer um procedimento que retorna Verdadeiro ou Falso conforme um número seja par ou não. Se necessário, convencione 0 e 1, "S" e "N" ou outra representação de Falso e Verdadeiro...... 31

5.1.2 Numeração de 1 a 100 - Elaborar um procedimento que mostra os números de 1 a 100.......... 31

5.1.3 Numeraçãode N1 a N2 - Declarar um procedimento semelhante ao acima, mas que recebe como parâmetros os valores inicial e final......................................................................................................... 31

5.1.4 Números pares - Escrever um procedimento que recebe dois números e mostra na tela os números pares situados entre os dois, inclusive. Testar com um programa que lê os números inicial e final e, se este maior que o inicial, chama o procedimento............................................................................................. 31

5.1.5 Equação do segundo grau - Implementar uma instrução que recebe os coeficientes a, b e c de uma equação do segundo grau e retorna suas raízes. Resolva: como fazer quando a equação resultante não tiver raízes reais?.............................................................................................................................................. 31

5.1.6 Aprovação - Escrever uma função que recebe uma nota de 0 a 10 e retorna verdadeiro ou falso (ou outros valores convencionados como tal) se o aluno foi aprovado, isto é, se tirou 7 ou mais................ 31

5.1.7 Maior e menor com menu - Faça duas funções: uma que recebe dois números e retorna o maior e outra que recebe o mesmo mas retorna o menor. Implementar um programa com um menu de 4 opções: ler dois números, testar uma e outra função e terminar................................................................................. 31

5.1.8 Maior de 2 - Escrever uma função que recebe dois números quaisquer e retorna o maior........ 31

5.1.9 Maior de 3 - Escrever uma função que recebe 3 números e retorna o maior............................. 31

5.1.10 Entre 0 e 100 - Implementar uma função que recebe um número qualquer e retorna Verdadeiro se o número está entre 0 e 100, caso contrário retorna Falso.......................................................................... 31

5.1.11 Média de 3 - Declarar uma função que calcula a média aritmética de 3 números..................... 31

5.1.12 Exponenciação inteira - Escrever uma função que calcula um inteiro elevado a outro inteiro, usando multiplicação............................................................................................................................................ 32

5.1.13 Exponenciação real - Escrever 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 vários tipos de valores...................................................................................................................... 32

5.1.14 Juros compostos - Sendo C o capital, n o prazo e i a taxa de juros, o valor futuro FV de uma aplicação financeira é calculado por:....................................................................................................... 32

5.1.15 Série - Elaborar programa que calcule, usando função, o valor da série abaixo para N termos, sendo N lido:..................................................................................................................................................... 32

5.1.16 Bissexto - Um ano é bissexto se for divisível por 4 exceto os séculos, que são bissextos se forem múltiplos de 400. Implementar uma função que recebe o número de um ano e retorna Verdadeiro se o ano for bissexto ou Falso caso contrário.............................................................................................................. 32

5.1.17 Fatorial - Faça uma função que recebe como parâmetro um inteiro e retorna seu fatorial. O que você acha que poderia fazer para o caso em que o fatorial, se calculado, vai estourar a capacidade do tipo de dado adotado?................................................................................................................................................... 32

5.1.18 Números primos - Um número é dito ser primo quando é divisível somente por si e pela unidade. Faça um programa que verifica, através de uma função, se um número é ou não primo. [Dica: divida o número N por todos os números de 2 a N - 1. Se o resto da divisão de N por algum dos números der zero, ele não é primo]........................................................................................................................................ 32

5.1.19 Arco-tangente - O valor do arco-tangente pode ser calculado através da fórmula abaixo, válida quando :.................................................................................................................................................... 32

5.2 CARACTERES E CADEIAS..................................................................................................... 32

5.2.1 Menor cadeia - Escrever uma função que recebe duas cadeias de caracteres e retorna a menor em ordem alfabética....................................................................................................................................... 32

5.2.2 Leitura de cadeia - Implementar um procedimento que recebe uma linha e uma coluna e lê uma

variável caractere na respectiva posição da tela, retornando o valor lido através de um parâmetro por referência ou equivalente......................................................................................................................... 32

5.2.3 Cabeçalho - Criar procedimento que recebe e imprime uma linha de cabeçalho com número de página, no formato. A data é obtida do sistema e o número de página é um parâmetro:......................... 32

5.2.4 Dia, mês e ano - Implemente funções que recebem uma data no formato 'DD/MM/AAAA' e retornam dia, mês e ano, respectivamente............................................................................................... 32

5.2.5 Validação de data - Escrever uma função que verifica se uma data no formato ‘DD/MM/AAAA’ é válida. Além de verificar se o dia está entre 1 e 31 e o mês está entre 1 e 12, se o dia for 29/02 é chamada a função especificada no item para verificar se o ano é bissexto.............................................................. 32

5.2.6 Formatação de data - Elaborar um procedimento que recebe como parâmetros dia, mês, ano, uma linha e uma coluna da tela e uma letra que corresponde ao formato de data a ser apresentado. Se o formato = ‘A’, mostra DD/MM/AA; se ‘B’, mostra DD.MM.AAAA. Para testá-lo, faça um programa que busca a data do sistema, extrai dia, mês e ano e chama o procedimento..................................................................... 32

5.2.7 Inversão de cadeia - Escrever uma função que recebe uma cadeia de caracteres e retorna-a invertida (lida de trás para a frente)........................................................................................................................ 33

5.2.8 Palíndromos - Implementar um programa que verifica se uma frase é palíndroma (a mesma se lida normalmente ou de trás para a frente: "roma me tem amor", "socorram me subi no onibus em marrocos"). Use a função especificada acima e uma outra para retirar espaços de uma cadeia................................. 33

5.2.9 Ocorrências de subcadeia - Elabore uma instrução que identifica quantas vezes uma subcadeia ocorre em uma cadeia de caracteres (por exemplo, "na" ocorre duas vezes em "banana")..................... 33

5.2.10 Maiúsculas - Implementar uma função que converte uma cadeia de caracteres para maiúsculas... 33

5.2.11 Minúsculas - Elaborar uma instrução que converte uma cadeia de caracteres para minúsculas. [Dica: subtraia 32 dos caracteres cujos códigos ASCII estão entre 65 e 90, inclusive]..................................... 33

5.2.12 Inserção de caractere - Elaborar uma função que insere um caractere recebido entre cada letra de uma cadeia................................................................................................................................................ 33

5.2.13 Trim - Implementar uma função que retira os brancos finais de uma cadeia de caracteres (em certas linguagens disponível com o nome de "Trim")........................................................................................ 33

5.2.14 Ajuste de tamanho - Implementar uma função que insere brancos no fim de uma cadeia até atingir um tamanho especificado......................................................................................................................... 33

5.2.15 Crítica de data - Escrever uma função que recebe uma data no formato 'DD/MM/AAAA' (dia/mês/ ano), verifica se as barras estão na posição correta, se o dia está entre 1 e 31 (inclusive), se o mês está entre 1 e 12 e retorna um valor da seguinte forma:........................................................................................... 33

5.2.16 Formatação de linha - Um programador está escrevendo um editor de textos, e precisa de uma função que recebe uma linha de texto e uma largura de linha, e insere espaços de forma a alinhar o texto à largura recebida, retornando a linha formatada. Implemente essa função. [Dica: primeiro calcule a quantidade de espaços necessária; descubra a quantidade de intervalos entre palavras e calcule quantos espaços terá que inserir em cada intervalo; insira essa quantidade em cada intervalo, sendo que o último intervalo receberá os espaços extras restantes. Investigue outras possibilidades de distribuição].......... 33

5.3 CONTROLE DE TELA.............................................................................................................. 33

5.3.1 Linha vertical 1 - Desenvolva um procedimento que recebe um número de coluna de tela e preenche a coluna com caracteres ‘O’..................................................................................................................... 33

5.3.2 Linha vertical 2 - Alterar o procedimento acima para que receba também o caractere. ............ 33

5.3.3 Texto posicionado 1 - Escreva um procedimento que recebe duas coordenadas da tela (linha e coluna) e um texto, e mostra o texto na posição indicada........................................................................ 33

5.3.4 Texto posicionado 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.............................................................................. 33

5.3.5 Mensagem 1 - Escrever um procedimento que recebe valores de linha e coluna da tela e um texto, mostra o texto nas coordenadas recebidas e espera 5 segundos. Após, apaga a mensagem e termina.... 33

5.3.6 Mensagem temporizada - Alterar o procedimento acima para receber também o tempo a esperar e, se for pressionada uma tecla, terminar......................................................................................................... 34

5.3.7 Entrada de cadeias - Elabore uma instrução que efetua leituras de cadeias de caracteres. Ela recebe linha e coluna, o "prompt" (texto que aparece antes, como 'Nome: ' ou 'CPF: '), o tamanho máximo da cadeia e o valor inicial. A instrução controla o uso das setas à esquerda e à direita, permite Delete e Backspace, Home e End. Ela termina com Enter ou Escape, neste segundo caso restaurando o valor inicial........... 34

que permita gravar várias senhas, com uma descrição de cada uma. Inclua a possibilidade de mostrar na tela a lista das senhas...................................................................................................................................... 35

5.7 VARIADOS................................................................................................................................ 35

5.7.1 Maior qualquer - Implementar uma função que recebe dois valores de qualquer tipo de dado (cadeia, número inteiro ou real, caractere) e retorna o maior. [Verifique se a linguagem permite parâmetros sem tipo].......... 35

5.7.2 Dia da semana - Descubra como, a partir de uma data válida, você pode identificar o dia da semana correspondente (domingo, segunda, etc.). Escreva uma função que retorna esse dia............................. 36

5.7.3 Crítica completa de data - Combinar as especificações e para formar uma crítica de data mais completa................................................................................................................................................... 36

5.7.4 Custo de execução de procedimento - Escrever um programa que serve para se medir o custo, em tempo, de execução de um procedimento. Ele troca, alguns milhares de vezes, os valores de duas variáveis, de duas formas: na primeira é usado para trocar as variáveis um procedimento, na segunda sem este. Computar o tempo gasto para cada forma e mostrá-los na tela............................................................... 36

5.7.5 Sorteio de dados - Escreva uma instrução que recebe um número de 1 a 6, correspondente ao sorteio de um dado, e desenha o dado na tela (em qualquer posição), mostrando o lado sorteado. Depois, faça um programa que sorteia 5 dados e os mostra na tela, alinhados.................................................................. 36

5.7.6 PIS/PASEP - Escrever uma função que recebe um número de PIS/PASEP e retorna o dígito verificador (veja a regra na especificação )............................................................................................. 36

5.7.7 CPF - Escrever função para calcular os dígitos de controle do CPF (regra na especificação ). Para simplificar, já que são duas somatórias, escreva também uma função auxiliar que recebe o CPF e o peso inicial e retorna a soma............................................................................................................................ 36

5.7.8 Palavra grande - Elabore uma instrução que desenha "grande" uma letra do alfabeto, em linha e coluna da tela. Outra instrução recebe um texto de até 10 caracteres e chama a primeira para mostrar o texto na tela em letras grandes.......................................................................................................................... 36

5.7.9 Reprodução de melodia - Declarar uma instrução que recebe um vetor de pares freqüência/duração, e reproduz os sons na seqüência do vetor. Valor zero para a freqüência representa uma pausa.............. 36

5.7.10 Melodias em arquivos - Elaborar um programa que toca músicas, com opções para: editar uma melodia (nova ou existente) e salvá-la em disco, reproduzir ou eliminar uma melodia gravada. Cada melodia é armazenada em um vetor com freqüência e duração de cada nota ou pausa (freqüência 0). ............... 36

5.7.11 Implementar uma instrução que recebe uma cadeia e retorna-a embaralhada. Usar números aleatórios.................................................................................................................................................. 36

5.7.12 Janela de confirmação - Implementar uma instrução que mostra uma janela de confirmação na tela com as opções "SIM", "NÃO" e "CANCELAR", aguarda a opção do usuário e retorna a opção selecionada. O usuário seleciona a opção com as setas ou a primeira letra e depois teclando Enter........................... 36

5.7.13 Relatório de notas - Implementar um programa com opções para cadastrar (incluir ou acrescentar) um arquivo contendo nomes e notas de alunos e para imprimir um relatório dos dados gravados. O relatório deve ter um cabeçalho contendo data e hora de emissão, nome do relatório, numeração de páginas e quebra (mudança) a cada 66 linhas. Ao final é mostrada a quantidade e a média das notas............................... 36

6 .....................................................................................................................................................

7 Idéias e mais idéias..................................................................................................................... 39

7.1 ENTRETENIMENTO................................................................................................................ 39

7.1.1 Forca - Implementar um programa que jogue o jogo da forca. Na tela é mostrado o alfabeto, destacando as letras já tentadas. Um banco de palavras pode ser implementado em vetor ou em arquivos, permitindo ao programa sortear uma palavra. Extensões: armazenar histórico do jogador: nome, jogadas ganhas e perdidas, etc. ............................................................................................................................. 39

7.1.2 Palavra embaralhada - Implementar um programa que, a partir de um banco de palavras, seleciona aleatoriamente uma palavra, embaralha as letras e dá um tempo para o usuário adivinhar a palavra..... 39

7.1.3 Jogo-da-velha - Elaborar um programa que jogue o jogo-da-velha, com opções de controlar dois jogadores ou jogar o computador contra um jogador............................................................................... 39

7.1.4 Combinações de letras - Implementar um programa que lê uma palavra de 4 letras e gera todas as combinações possíveis das quatro letras, sem repetição. O programa deve fornecer um menu para o usuário, permitindo:............................................................................................................................................... 39

7.1.5 Bingo - Elabore um programa que faz sorteios de bingo. O 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 não poderá repetir um número já sorteado..................................................................... 39

7.1.6 Arquivo de senhas - Uma pessoa pode ter inúmeras senhas: da conta corrente, poupança, da conta do outro banco, cartão de crédito, provedor Internet, da rede local do trabalho e por aí vai. Faça uma programa que permita gravar várias senhas, com uma descrição de cada uma. Inclua opções para mostrar na tela ou imprimir a lista das senhas e para pesquisar por uma palavra chave da descrição.................................. 39

7.1.7 Desenho datilográfico - Implementar um programa que permite o uso de toda a tela para desenhos utilizando caracteres disponíveis no teclado. Inclua opções para salvar uma tela, carregar um desenho salvo e ajuda para os comandos......................................................................................................................... 39

7.1.8 Ping-Pong - Talvez você não conheça, mas um dos primeiros videogames era um Philco monocromático, e um dos jogos, chamado de Ping-Pong, tinha duas "raquetes" que se moviam na vertical das laterais da tela e uma "bolinha", cuja velocidade aumentava depois de algumas "raquetadas" dos jogadores. Um jogador fazia um ponto quando o adversário deixava a bolinha passar; quem fizesse 15 pontos primeiro ganhava. Implemente esse jogo. ............................................................................................... 39

7.1.9 Meteoros: o jogo - Uma nave espacial, embaixo na tela, deve ultrapassar um campo de meteoros (por exemplo, se em modo texto, asteriscos), desviando-se à esquerda ou direita. Se tocar em algum, ela explode. Cada "linha" de meteoros ultrapassada conta um ponto, e a velocidade dos meteoros vai aumentando, digamos, a cada 500 pontos. Implementar o jogo. Entre outras coisas, o programa deverá preencher a próxima linha de meteoros, no alto da tela, e mover esta uma linha para baixo (supondo ainda que a tela estará em modo texto), além de verificar se houve colisão. ................................................................... 40

7.1.10 Monitor YAM - Talvez o jogo YAM ainda esteja disponível comercialmente, para você obter as regras e implementar um programa que controle o jogo para duas ou mais pessoas. O programa deverá sortear os dados, mostrar a tabela e criticar as escolhas de um jogador: se ele fez quadra, por exemplo, só pode inserir os pontos em um dos locais apropriados da tabela.............................................................. 40

7.2 DOMÉSTICOS........................................................................................................................... 40

7.2.1 Agenda telefônica - Implemente um programa que controla uma lista de nomes e telefones, com opções para incluir, alterar, excluir e pesquisar por nome ou por telefone.............................................. 40

7.2.2 Controle de filmes - Faça um programa que mantém dados a respeito dos filmes assistidos por uma pessoa: nome, diretor, roteirista(s), atores, data, comentários. Inclua consultas que julgar úteis............ 40

7.2.3 Lista de compras - Elabore um programa que mantém uma lista de produtos e imprime uma relação para controle da pessoa no supermercado, por exemplo. Inclua uma opção para eliminar itens da lista a ser impressa. Para montar a lista inicial, você pode pesquisar na Internet por um serviço de delivery........ 40

7.2.4 Despensa - Implemente um controle simples de mercadorias em uma despensa doméstica. Sobre cada produto podem ser armazenados um código numérico, descrição e quantidade atual. O programa deve ter opções para entrada e retirada de produtos, bem como um relatório geral e um de produtos não disponíveis............................................................................................................................................... 40

7.2.5 Controle de empréstimos - Se você já emprestou um livro ou alguma outra coisa e não se lembra mais para quem (e esse "quem" também parece não se lembrar de devolver), sabe que pode ser útil um programa que registre tipo e nome do objeto, nome da pessoa e as datas de empréstimo, última cobrança e devolução. Inclua um relatório dos objetos emprestados há mais de uma quantidade indicada de dias.. 40

7.2.6 Orçamento doméstico - Controle suas entradas e saídas de dinheiro através de um programa que registra despesas e receitas passadas e previstas, fornecendo informações sobre o saldo disponível e previsões de necessidades, mês a mês. Se quiser sofisticar, monte uma tabela de tipos de receitas e despesas (automóvel, lazer, educação, etc.)............................................................................................................ 40

7.2.7 Etiquetas para cheques - Faça um programa que preenche mini-etiquetas para afixar em folhas de cheque, contendo nome, endereço, telefone e RG. Provavelmente você terá que pesquisar os comandos de movimentação do carro da impressora, para obter ajuste fino e assim manter o posicionamento correto... 40

7.2.8 Histórico do automóvel - Registre tudo que ocorrer com o carro: manutenções, combustível, lavagens, etc., tudo com o valor gasto e a quilometragem. Além de um relatório geral, inclua uma consulta sobre custo por quilômetro e consumo médio......................................................................................... 40

7.2.9 Manutenções domésticas - Se você cuida de uma casa ou apartamento, sabe que vez por outra são necessários alguns serviços de manutenção: pia que vaza, cadeira que quebra, cortinas que cedem, armários que desajustam etc., etc. Faça um programa que registre o tipo de serviço, data e nome de quem fez, prazo de garantia e observações, como por exemplo sobre as chamadas para consertar o conserto! ................... 40

7.3 EDUCATIVOS........................................................................................................................... 40

7.3.1 Tabuada - Implementar um programa para crianças que apoia o aprendizado de tabuada. Entre outras coisas, o programa pode propor à criança seqüências de um mesmo número ou aleatórias. Pode também

1

.1 BÁSICOS

Quando começamos, há muita informação nova a ser assimilada. Por isso, convém iniciar pelo mais simples. Para implementar os programas especificados neste capítulo, basta conhecer a estrutura de um programa e algumas poucas instruções (veja o apêndice A). Não são necessárias ainda instruções para tomar decisões ou controlar repetições. Isto lhe dá tempo para assimilar as (possivelmente) novas ferramentas, como editor, compilador e outras.

.1...1 SAÍDA SIMPLES

Frase na tela - Implemente um programa que escreve na tela a frase "O primeiro programa a gente nunca esquece!".

Etiqueta - Elabore um programa que, após limpar a tela, escreve seu nome completo na primeira linha, seu endereço na segunda, e o CEP e telefone na terceira. Frases assassinas - Faça um programa que mostre na tela algumas frases assassinas, que são aquelas que fazem com muitas idéias sejam perdidas antes que amadureçam ou seja aprofundadas. Eis alguns exemplos (bole também os seus): "Isto não vai dar certo" "Você nunca vai conseguir" "Você vai se estrepar"

"Não vai dar em nada" "Está tudo errado!" Mensagem - Escreva uma mensagem para uma pessoa de que goste. Implemente um programa que imprima essa mensagem, e envie-a.

Ao mestre - Escreva um bilhete ao seu professor, informando seus objetivos nesta disciplina e o que espera dela e do professor. Implemente um programa que mostra seu bilhete na tela. Quadrado - Escrever um programa que mostre a seguinte figura no alto da tela: XXXXX

X X X X

X X

XXXXX

Tabela de notas - Escreva um programa que produza a seguinte saída na tela:

ALUNO(A) NOTA

ALINE 9.

MÁRIO DEZ

SÉRGIO 4.

SHIRLEY 7.

BÁSICOS 2