Você está na página 1de 25

Mdulo 2: Algoritmos

Na bibliografia, encontramos diferentes definies para algoritmo, algumas tratam uma simples receita de bolo como um algoritmo, outros autores consideram esses exemplos simplificaes demasiadas do conceito e preferem associar o conceito de algoritmo a solues computacionais. Neste aspecto, podemos expressar a soluo de qualquer problema na forma de algoritmo, desde o mais simples ao mais complexo e independente se solucionveis no universo real, ou no universo computacional. No dia-a-dia nos deparamos com diversos problemas que podem ser expressos na forma de algoritmos, alguns simples rotinas como escovar os dentes, ir a faculdade, preparar um suco de frutas, uma receita para fazer salada de batatas, as regras para calcular uma equao de primeiro grau e muitos outros. Em todos os algoritmos so identificadas caractersticas comuns, que so sries finitas e bem definidas de passos ou regras que, quando realizadas, produzem um determinado resultado. Neste trabalho preferimos a definio de algoritmo como sendo:

Um conjunto de aes com propriedades especiais e especificas e com algumas estruturas padres para controlar a ordem na qual as aes so realizadas.

So propriedades de algoritmos: aes simples e bem definidas (no ambguas); seqncia ordenada de aes; seqncia finita de passos.

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Exemplo de construo de algoritmo:

Neste tpico, introduzimos o conceito de algoritmo, atravs de um problema do dia a dia. Apesar de parecer simples, o exemplo permite expor de forma progressiva, detalhada e completa, todas as propriedades e conceitos envolvidos na construo de algoritmos computacionais por mais complexo que seja o problema a ser resolvido. importante que esse exemplo no seja simplesmente lido, mas entendido. A perfeita compreenso dos conceitos aqui introduzidos, ser fundamental para o aprendizado da arte de elaborar algoritmos e vai acompanh-lo por toda sua vida como programador de computador, medite sobre eles.

Vamos ao exemplo: Imagine que uma dona de casa deseja fazer um jantar para alguns convidados. Como o prato a ser preparado inclui batatas, ela necessita de batatas descascadas. Para resolver esse problema, a dona de casa elaborou e entregou a sua secretria uma folha de papel com o seguinte contedo:
// instrues para descascar batatas para o jantar

Incio pegue a cesta de batatas no armrio; pegue uma bacia para colocar as batatas descascadas; pegue uma faca na gaveta; descasque uma batata; coloque a batata descascada na bacia; descasque uma batata; coloque a batata descascada na bacia; descasque uma batata; coloque a batata descascada na bacia; descasque uma batata; coloque a batata descascada na bacia; Fim

A secretria percebeu imediatamente que as instrues tem incio e fim. Chegou tambm a concluso que deveria comear pelo incio e que a primeira ao a ser realizada deveria ser; pegue a cesta de batatas no armrio. Aps realizar esta
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

primeira ao, percebeu que deveria seguir executando as aes encontradas linha aps linha. Parece lgico e natural, mas ao chegar na quarta linha, a secretria percebe que existem duas aes na mesma linha: 1. descasque uma batata; 2. coloque a batata descascada na bacia; Qual delas realizar primeiro? Lendo as duas aes, a secretria conclui que no poderia colocar a batata descascada na bacia antes de descasca-l e desta forma deveria fazer primeiro a ao descasque uma batata. Todavia, a secretria se d conta de que, ler um conjunto de aes para saber a ordem de execuo das mesmas, alm de no ser prtico, pode no ser determinante, ou seja, no definir claramente qual a ordem de execuo. Observado mais atentamente, a secretria percebe que duas aes so sempre separadas pelo sinal de ; (ponto e virgula). Tambm notou que, a ao que vinha aps o ;, deveria sempre ser executada depois da ao que aparecia antes do ponto e virgula.

A partir destas constataes, a secretria adotou ento uma regra para seguir: sempre observar o ponto e virgula e somente realizar a ao que vem depois, aps realizar a ao que vem antes

Adotando essa regra e seguindo as instrues da folha de papel deixada pela dona de casa, a secretria obteve ao chegar a instruo de fim quatro batatas descascadas na bacia, exatamente como solicitou a dona de casa, concluido ento que:

O ponto e virgula define a ordem na qual as aes devem ser executadas .

momento meditao

medite sobre o ponto e virgula

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Agora imagine que, em um outro dia, a dona de casa resolva novamente fazer um jantar para um nmero de convidados maior e necessita 20 batatas descascadas. notrio que o algoritmo anterior no pode ser utilizado, pois somente produzir 4 batatas descascadas. Deste modo, a dona de casa precisou elaborar um novo algoritmo. Para no escrever 20 vezes o par de aes: descasque uma batata; coloque a batata descascada na bacia; a dona de casa elaborou o seguinte algoritmo: Inicio // Algoritmo para descascar 20 batatas pegue a cesta de batatas no armrio; pegue uma bacia para colocar as batatas descascadas; pegue uma faca na gaveta; repita descasque uma batata; coloque a batata descascada na bacia; enquanto < nmero de batatas descascadas for menor que Fim

20 >;

A secretria executando o novo algoritmo, percebeu que a dona de casa introduziu uma nova estrutura. Observando com ateno, e executando esta nova estrutura, a secretria percebe trata-se de uma forma simplificada de representar um conjunto de aes, que devem ser repetidas enquanto uma condio satisfeita. Desta observao a secretria concluiu que a especificao formal da estrutura de repetio deveria ser algo do tipo:
repita < ao 1 >; < ao 2 >; .... enquanto < condio >

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Entretanto, a dona casa percebe que agora ela tem dois algoritmos, um para descascar 4 batatas e outro para descascar 20 batatas. Desta forma, se em outro jantar ela necessitar um nmero de batatas diferente de 4 ou 20, ter que elaborar um terceiro algoritmo. Para resolver esse problema, a dona de casa elaborou um algoritmo para ser utilizado em qualquer ocasio e entregou a secretria:

Inicio // Algoritmo para descascar N batatas pergunte a dona de casa quantas batatas so necessrias; pegue a cesta de batatas no armrio; pegue uma bacia para colocar as batatas descascadas; pegue uma faca na gaveta; repita descasque uma batata; coloque a batata descascada na bacia; enquanto < nmero de batatas descascadas for insuficiente >; Fim

O Algoritmo parecia perfeito para a dona de casa e no jantar seguinte deixou um bilhete para a secretria comunicando que precisava batatas para o jantar e saiu de casa confiante que ao voltar encontraria as batatas descascadas, visto que a secretria tinha o algoritmo para solucionar este problema. Entretanto ao voltar, ao invs de batatas descascadas, encontrou em cima da mesa a folha de papel com o algoritmo para descascar batatas. Indignada, no restou a dona de casa outra alternativa a no ser ela mesma descascar as batatas para o jantar. No dia seguinte, ao indagar a secretria porque ela no havia descascado as batatas, recebeu a seguinte resposta: - Mas patroa, a primeira ao manda lhe perguntar quantas batatas so necessrias, como a senhora no estava eu no consegui executar a ao, em consequncia no poderia executar as outras aes, porque o ; (ponto e virgula) estabelece que a ao seguinte somente pode ser executada, aps a ao que vem antes do ; ser executada. Surpresa a dona de casa chega a concluso que a secretria est com a razo e resolve elaborar um novo algoritmo.
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Inicio // Algoritmo para descascar N batatas Se < a patroa no estiver em casa > ento ligue para o nmero: 048 8448 4884; fimse; pergunte a patroa quantas batatas so necessrias; pegue a cesta de batatas no armrio; pegue uma bacia para colocar as batatas descascadas; pegue uma faca na gaveta; repita descasque uma batata; coloque a batata descascada na bacia; enquanto < nmero de batatas descascadas for insuficiente >; Fim

No jantar seguinte, ao executar o novo algoritmo a secretria percebe uma nova construo que a ajuda a encontrar a dona de casa e pedir a ela quantas batatas so necessrias. Analisando com detalhe ela percebe que a nova construo nada mais do que uma estrutura de tomada de deciso, na qual um determinado conjunto de aes somente deve ser realizado, caso uma determinada condio seja avaliada como verdadeira.

Se < condio > ento


< ao 1 >; < ao 2 >; . . . . .

fimse;

Desta vez, a secretria conseguiu executar o algoritmo at o final com sucesso e deixar as batatas descascadas para a dona de casa realizar seu jantar. Diante deste resultado satisfatrio, a dona de casa entendeu que seu algoritmo era perfeito e resolveu consider-lo definitivo. Todavia a secretria percebeu que para ela responder a pergunta o nmero de batatas descascadas suficiente, tinha que contar o nmero de batatas na bacia a cada batata descascada. Para solucionar esse problema a secretria resolve modificar o algoritmo da dona de casa:
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

// Algoritmo para descascar N batatas Inicio pegue duas folhas de papel em branco; folha_1 conter o nmero de batatas descascadas, escreva zero; Se < a patroa no estiver em casa > ento ligue para o nmero: 048 8448 4884; fimse; pergunte a patroa quantas batatas so necessrias, escreva esse nmero na folha_2; pegue a cesta de batatas no armrio; pegue uma bacia para colocar as batatas descascadas; pegue uma faca na gaveta; repita descasque uma batata; coloque a batata descascada na bacia; pegue a folha_1; some 1 ao nmero que est escrito na folha; escreva o resultado na folha substituindo o valor anterior; enquanto < nmero nas dias folhas forem diferentes >; Fim

Com o novo algoritmo produzido pela secretria, finalmente a dona de casa e sua secretria chegaram ao entendimento e passaram a adotar esse algoritmo como uma soluo definitiva para o problema de descascar batatas. Neste algoritmo podemos identificar duas caractersticas importantes: 1. A sequncia de aes a serem executadas, que se constituem no algoritmo.

Observe ainda que, entre as aes do algoritmo, encontramos aes com propriedades especiais, que so consideradas estruturas de controle, so elas:
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

a. Sequncia:

; (ponto e virgura) que estabelece a ordem na qual as aes devem ser executadas, determinando que a ao que vem aps o ponto e virgula, somente pode ser executada depois que a ao que vem antes do ponto e virgula ter sido executada com sucesso.

b. Alternativa:

se <condio> ento <conjunto de aes> fimse trata-se de uma estrutura de tomada de deciso, na qual um conjunto de aes executado, caso uma determinada condio seja avaliada como verdadeira.

c. Repetio:

repita <conjunto de aes> Enquanto <condio> tratando-se de uma forma simplificada de representar um conjunto de aes, que devem ser repetidas enquanto uma condio for satisfeita.

Importante perceber, e entender, que essas trs estruturas de controles, ainda que paream simples, representam os conceitos bsicos da elaborao de algoritmos, ou seja; todo e qualquer algoritmo, por mais complexo que seja, ser elaborado utilizando essas trs estruturas de controle, ou variantes delas.

2. A segunda caracterstica importante a existncia de uma memria.

a. Folha 1 :: b. Folha 2 ::

representa o nmero de batatas descascadas representa o nmero de batatas necessrias


Pgina
8

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Observe que a memria, no caso as folha de papel, representa na verdade a informao (tambm chamado de dado) relevante que existe no problema, e muitas vezes necessria para viabilizar a contruo do algoritmo e controlar sua execuo.

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Exerccios Resolvidos

1. Exerccios com uso apenas de sequncial simples


Observe, nos exerccios resolvidos abaixo, nossa recomendao de metodologia para soluo de problemas. Ainda que a soluo de alguns exerccios possa parecer simples, importante entender a metodologia de soluo para utilizao da mesma em problemas complexos mais adiante.

Exerccio resolvido 1.01 Dado um nmero inteiro positivo, deseja-se conhecer o inteiro positivo que represente o quadrado do nmero. Faa um algoritmo para expressar a soluo.

Passo 1: Analisando e Entendendo o problema conclui-se que: desejado N2 , ou seja a operao matemtica N elevado ao expoente 2 Passo 2: Encontrar e definir uma soluo: O quadrado de um nmero pode ser obtido pela multiplicao do nmero por ele mesmo, ou seja; Quadrado de N igual N x N. Passo 3: Expressar a soluo na forma de algoritmo: inicio pegar 2 folhas de papel em branco; conhea o nmero desejado e escreva na folha 1; pegue o valor da folha 1; multiplique o valor por ele mesmo; escreva o resultado na folha 2; fim

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

10

Exerccio resolvido 1.02

Faa um algoritmo para calcular o IMC de uma pessoa.

Passo 1: Analisando e Entendendo o problema conclui-se que: desejado o indce de massa corporal de uma pessoa.

Passo 2: Encontrar e definir uma soluo: O IMC obtido, dividindo-se o peso da pessoa, por sua altura elevada ao quadrado.

Passo 3: Expressar a soluo na forma de algoritmo: Inicio pegar 4 folhas de papel em branco; conhea o peso da pessoa e escreva na folha 1; conhea a altura da pessoa e escreva na folha 2; pegue o valor da folha 2; multiplique o valor por ele mesmo, escreva o resultado na folha 3; divida o valor da folha 1 pelo valor da folha 3; escreva o resultado na folha 4; fim

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

11

Exerccio resolvido 1.03 Seu amigo vai viajar para o exterior e necessita aprender a converter moeda extrangeira para REAIS. Faa um algoritmo para ajudar seu amigo.

Passo 1: Analisando e Entendendo o problema conclui-se que: Meu amigo vai desejar converter uma quantia de dinheiro de uma determinada moeda estrangeira para o REAL, moeda brasileira.

Passo 2: Encontrar e definir uma soluo: Valor em R$, igual, ao valor em ME * ndice de converso Em outras palavras, a converso de moeda obtida multiplicando-se o valor do montante em Moeda Estrangeira, pelo equivalente unitrio desta moeda para com o REAL, ou seja, pelo ndice de converso da moeda para o REAL, que equivalente a saber quantos REAIS so necessrios para comprar uma unidade da moeda estrangeira.

Passo 3: Expressar a soluo na forma de algoritmo: inicio pegar 3 folhas de papel em branco; conhea o montante do valor em moeda estrangeira que deseja converter e escreva na folha 1; conhea o ndice de converso da moeda estrangeira para o REAL, escreva na folha 2; pegue o valor da folha 1 e multiplique pelo valor da folha 2, escreva o resultado na folha 3; fim

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

12

2. Exerccios com uso de sequncia simples e alternativa

Exerccio resolvido 2.01 Dado um nmero, inteiro positivo maior que zero, Faa um algoritmo capaz de deterninar se o nmero PAR ou IMPAR.

Passo 1: Analisando e Entendendo o problema conclui-se que: desejado verificar se um determinado N PAR ou IMPAR Passo 2: Encontrar e definir uma soluo: Um nmero PAR se for divisvel por 2. Desta forma a diviso do nmero N por 2, deve ter como resto ZERO.

Passo 3: Expressar a soluo na forma de algoritmo: Inicio pegar 2 folhas de papel em branco; conhea o nmero a ser verificado e escrever na folha 1; pegue o valor da folha 1 e calcule o resto da diviso por 2; escreva o resto da diviso na folha 2; se ( o valor da folha 2 for igual a zero ) entao o nmero PAR seno o nmero IMPAR ; fimse fim

Exerccio resolvido 2.02


INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

13

Para ser aprovado na disciplina, o aluno necessita nota 6,0 como nota mnina na mdia das provas. Sabendo que so realizadas 2 provas, faa um algoritmo para mostrar se o aluno esta APROVADO ou REPROVADO.

Passo 1: Analisando e Entendendo o problema conclui-se que: desejado calcular a mdia das aprova e ao final, mostrar se o aluno foi aprovado na disciplina Passo 2: Encontrar e definir uma soluo: So informadas as notas das provas, prova 1 e 2. Deve calcular a mdia final, sendo a mdia calculada como a soma da nota na prova_1 + nota na prova_2 e o resultado dividido por 2. Caso a mdia seja igual ou superior a 6,0 o aluno est aprovado.

Passo 3: Expressar a soluo na forma de algoritmo: Inicio pegar 3 folhas de papel em branco; conhea a nota da prova 1 e escreve na folha 1; conhea a nota da prova 2 e escreva na folha 2; ao valor folha_1, some o valor folha_2 e divida a soma por 2; escreva o resultado na folha 3; se ( o valor da folha 3 for menor que 6,0 ) entao o aluno esta REPROVADO ; seno o aluno esta APROVADO ; fimse fim

Exerccio resolvido 2.03


INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

14

Dados dois lados de um tringulo Pitagrico, e a informao de qual a classe de lado cada um representa, isto ; se cateto ou hipotenusa. Faa um algoritmo para determinar o valor do terceiro lado.

Passo 1: Analisando e Entendendo o problema conclui-se que: desejado calcular o terceiro lado de um tringulo de Pitagoras, sendo dado dois lados. Sabe-se ainda, para cada lado informado, se o lado cateto ou hipotenusa. Passo 2: Encontrar e definir uma soluo: Conhecidos dois lados, e sendo identificados se cateto ou hipotenusa, aplica-se a frmula matemtica do tringulo Pitagrico, h2 = a2 + b2. Passo 3: Expressar a soluo na forma de algoritmo: Inicio Pegue 6 folhas de papel; conhea tipo e valor do lado a, escreva nas folha_1 e folha_2; conhea tipo e valor do lado b, escreva nas folha_3 e folha_4; escreva cateto na folha_5; se ( folha_1 hipotenusa ) entao folha_6 = folha_2 * folha_2 - folha_4 * folha_4; fimse se ( folha_3 hipotenusa ) entao folha_6 = folha_4 * folha_4 - folha_2 * folha_2; fimse se ( folha_1 cateto e folha_3 cateto ) entao folha_6 = folha_2 * folha_2 + folha_4 * folha_4; escreva hipotenusa na folha_5; fimse; extraia raiz quadrada do valor escrito na folha_6; escreva resultado na folha_6; fim

3. Exerccios com uso de sequncia simples e repetio


INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

15

Exerccio resolvido 3.01 Deseja-se conhecer a sequncia de nmeros inteiros positivos de 1 (um) a N Passo 1: Analisando e Entendendo o problema conclui-se que: A sequncia desejada : 1, 2, 3, 4, ..., N Passo 2: Encontrar e definir uma soluo: Definir o primeiro nmero da sequncia 1; Somar 1 ao primeiro nmero, obtendo o segundo 2; Somar 1 ao segundo nmero, obtendo o terceiro 3; Assim sucessivamente, at N, obtendo-se toda a sequncia;

Passo 3: Expressar a soluo na forma de algoritmo:

inicio pegar 3 folhas de papel em branco; na Folha 1 escreva 1, primeiro nmero da sequncia; descubra N, escreva na Folha 2; repita escreva na Folha 3 o contedo da Folha 1; some 1 ao nmero da Folha 1; escreva o resultado na Folha 1, substituindo o valor; enquanto <valor da Folha 1 for <= ao valor da Folha 2> fim

Exerccio resolvido 3.02 Deseja-se conhecer o somatrio dos nmero de 1 (um) a N

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

16

Passo 1: Analisando e Entendendo o problema conclui-se que: O resultado desejado : 1 + 2 + 3 + 4 + ... + N

Passo 2: Encontrar e definir uma soluo: Somar 1 + 2; Ao resultado de 1 + 2, somar 3; Ao resultado de 1 + 2 + 3, somar 4 Ao resultado de 1 + 2 + 3 + 4, somar 5; assim sucessivamente, at somar o valor N, obtendo o somatrio;

Passo 3: Expressar a soluo na forma de algoritmo:

inicio pegar 3 folhas de papel em branco; descubra N, escreva na Folha 1; na Folha 2 escreva 1, primeiro nmero a ser somado ; na Folha 3 escreva zero, conter o resultado do somatrio; repita pegue o valor da Folha 3 e some ao valor da Folha 2; escreva o resultado na folha 3, substituindo valor; ao contedo da folha 2, some 1 e escreva o resltado na folha 2, substituindo o valor; enquanto < valor da Folha 2 for menor ou igual a Folha 1 > fim

Exerccio resolvido 3.03

Deseja-se conhecer o fatorial de um nmero de N qualquer


INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

17

Passo 1: Analisando e Entendendo o problema conclui-se que: O resultado desejado : N * (N-1) * (N-2) * ... * 3 * 2 * 1

Passo 2: Encontrar e definir uma soluo: Define-se N como sendo o resultado fatorial desejado; Ao N, diminuimos 1, obtendo N-1 e multiplicamos ao fatorial; Ao N-1, diminuimos 1, obtendo N-2 e multiplicamos ao fatorial; Assim sucessivamente, enquanto N-k seja maior que 0 (zero);

Passo 3: Expressar a soluo na forma de algoritmo:

inicio pegar 2 folhas de papel em branco; descubra N, escreva na Folha 1; Na folha 2 escreva 1, conter o fatorial; repita pegue o valor da Folha 2, multiplique pelo valor da Folha 1; escreva o resultado na folha 2, substituindo o valor; peqgue o conteudo da folha 1, diminua 1; escreva o resultado na folha 1, substituindo o valor; enquanto < valor da Folha 1 for maior que 0 (zero) > fim

4. Exerccios com uso de sequncia simples, alternativa e repetio

Exerccio resolvido 4.01


INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

18

Deseja-se saber se um determinado nmero primo Passo 1: Analisando e Entendendo o problema conclui-se que: Um nmero primo se for divisivel somente por 1 e por ele mesmo Passo 2: Encontrar e definir uma soluo: Dividir N (nmero a ser analisado) por todos os nmeros entre 2 e N-1; Caso N seja divisvel por algum destes nmeros, conclue-se que o nmero no primo. Passo 3: Expressar a soluo na forma de algoritmo:

Inicio pegar 4 folhas de papel em branco; descubra N, escreva na Folha 1; na Folha 2 escreva 2, primeiro nmero a dividir N; na Folha 3 escreva PRIMO, assume-se que o N primo; repita pegue o valor da folha 1, divida pelo valor da folha 2, encontrando o resto da diviso e escreva na folha 4; se ( o valor da folha 4 for igual a zero ) entao escreva NO PRIMO na folha 3; fimse; some 1 ao contedo da folha 2, substitua na folha 2; enquanto < folha 3 for = PRIMO e folha 2 for menor que N >; fim

Exerccio resolvido 4.02

Em um jogo de bola ao cesto, ganha o jogador que alcanar 11 pontos primeiro. Entretanto se a vantagem de pontos for menor que 2 pontos, o jogo deve continuar at INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

19

que um dos jogadores tenha 2 pontos a mais o outro. Escreva o algoritmo para ser entregue ao juiz responsvel pela contagem de pontos da partida.

Passo 1: Analisando e Entendendo o problema conclui-se que: - Jogador ganha 1 ponto a cada bola que acerta o cesto, - A partida termina quando um dos jogadores fizer 11 pontos e desde que tenha 2 pontos de vantagem sobre o jogador adversrio, - Caso a diferena seja menor que 2 pontos, a partida deve continuar enquanto um jogador no tiver 2 pontos a mais que o outro.

Passo 2: Encontrar e definir uma soluo: A cada ponto marcado; - verificar qual jogador fez ponto, - anotar 1 ponto a mais para o jogador que marcou ponto, - verificar se o jogador alcanou 11 pontos ou mais, sendo afirmativo, verificar se o jogador tem 2 pontos a mais que o adversrio, - caso ambas as condies aconteam a partida termina,

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

20

Passo 3: Expressar a soluo na forma de algoritmo: Inicio


pegar 3 folhas de papel em branco; na folha1 escreva 0, nmero de pontos do jogador 1; na folha2 escreva 0, nmero de pontos do jogador 2; repita se ( ponto foi do jogador 1 ) entao some 1 ao numero da folha1, escreva o resultado na folha1, substituindo o valor; fimse se ( ponto foi do jogador 2 ) entao some 1 ao numero da folha2, escreva o resultado na folha2, substituindo o valor; fimse diminua do valor da folha2 o valor da folha1, escreva na folha3; se ( valor folha3 for negativo ) entao escreva na folha3, valor da folha1 valor da folha2; fimse enquanto ( ( folha1 < 11 ) e ( folha2 < 11 ) ou ( folha3 < 2 ) );

fim

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

21

Exerccios Propostos

1. 2. 3. 4. 5. 6. 7. 8.

Dados X e Y, dizer se X divisvel por Y Converso de grandezas e unidades de medidas, ex: metros para polegadas. Calcular as raizes da equao: aX2 + bX + c = 0, dados a, b e c Dados dois nmero X e Y, implementar uma calculadora com as 4 operaes Decompor um nmero em unidades, dezenas, centenas e milhares Faa um programa para encontrar os divisores de um nmero. Verificar quantos nmeros inteiros existem entre 13 e 247, multiplos de 3 Para as series abaixo, elabore algoritmos e implemente programas gerar as sries. 01: 02: 03: 04: 1, 4, 7, 10, 13, 16, 19, ... 20, 12, 4, -4, -12, -20, -28, ... 1, 2, 3, 5, 8, 13, 21, ... invente series

9.

Determine o i-simo elemento das sries acima Obs: No pode ser utilizadas frmulas para clculo do i-simo elemento

10.

Sua turma resolveu organizar uma festa para arrecadar fundos. Voc foi escolhido(a) para organizar e treinar os colegas que iro trabalhar na festa. Para tanto voc deve elaborar algoritmos, para entregar a esses colegas em cada tarefa. Tarefa 1. Superviso de venda de ingressos. No caixa, iro trabalhar dois colegas, um para entregar e cobrar ingressos e outro para supervisionar. Os Ingressos so simples papeis em branco onde o colega que entrega os ingressos coloca uma das letras F ou M, para indicar o tipo de ingresso, cobrando R$ 5,00 e R$ 10,00 respectivamente. O colega que supervisiona, deve observar as vendas e anotar de modo a ter sempre o controle do nmero de ingressos vendidos e o valor arrecadado, por tipo de ingresso. Elabore o algoritmo para ser entregue ao colega supervisor.

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

22

Tarefa 2. Superviso da entrada na festa. Na portaria, iro trabalhar dois colegas, um para receber os ingressos e conferir se a pessoa que est ingressando, est entregando o ingresso correto e outro para supervisionar. Os Ingressos so simples papeis em branco contendo uma das letras G ou B, para indicar o tipo de ingresso, valendo R$ 6,00 e R$ 8,00 respectivamente. O colega que supervisiona, deve observar os ingressos recebidos e anotar de modo a ter sempre o controle do nmero de pessoas que ingressaram na festa e o valor arrecadado, por tipo de ingresso. Elabore o algoritmo para ser entregue ao colega supervisor. Tarefa 3. Postos de entrega de bebidas. Na festa haver vrios postos espalhados para entrega de bebidas, onde iro trabalhar dois colegas, um para entregar bebida e outro para supervisionar. O colega que entrega bebidas, trocar um copo de gua por uma ficha Verde e uma lata de cerveja por uma ficha Vermelha. O colega que supervisiona, deve observar as fichas recebidas e anotar de modo a ter sempre o controle do nmero e tipo de bebidas entregues. Elabore os algoritmos para serem entregues aos dois colegas. 11. Em um jogo de ping pong, ganha o jogador que alcanar 21 pontos primeiro. Entretanto se a vantagem de pontos for menor que 2 pontos, o jogo deve continuar at que um dos jogadores tenha 2 pontos a mais o outro. Escreva o algoritmo para ser entregue ao juiz responsvel pela contagem de pontos da partida.

12.

Em uma pesquisa realizada sobre alunos egressos na universidade, desejava-se saber a mdia de idade dos alunos oriundos do segundo grau em escola pblica e dos alunos oriundos da escola privada. A ficha dos alunos continha, entre outras informaes, data de nascimento e escola de origem, se pblica ou privada. Elabore o algoritmo para ser entregue as pessoas que fazem o levantamento, supordo que cada pessoa recebe uma quantidade limitada de ficha para analisar. Dado N elabore um algoritmo para calcular Z, sabendo-se que: Z = 1 / 1! + 1 / 2! + 1 / 3! + 1 / 4! + . . . + 1 / N!

13.

14.

Um equipamento misturador utilizado para gerar novas cores de tinta a partir de uma cor base e da adio de pigmentos. Neste equipamento somente pode ser adicionado uma poro unitria de um pigmento por vez e de uma cor aleatria. Um observador deve acompanhar, anotando o tipo de pigmento adicionado de modo a suspender a adio dos mesmo quando satisfatria. Faca o algoritmo para o observador, sabendo que sao necessrias trs tipos de pigmentos; 55% do pigmento A, 30% do B e 15% do C.

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

23

15.

Uma sequncia de inteiros positivos k-alternante se for composta alternadamente por segmentos de nmeros pares de tamanho k e segmentos de nmeros mpares de tamanho k.

1. Analisar e entender o problema no universo REAL, 2. Encontrar e definir uma soluo,


Para o problema acima, apresente soluo para os itens 1 e 2. Exemplos: A sequncia A sequncia A sequncia A sequncia 1 2 1 4 3 1 3 2 6 4 5 3 8 7 4 1 9 8 6 6 11 2 4 1 7 6 8 9 12 8 4 2 9 3 2-alternante. 1-alternante. 3-alternante. no alternante.

Dado n > 1 e uma sequncia com n inteiros, faa um algoritmo para verificar se existe um inteiro k > 1 tal que a sequncia k-alternante. Caso a sequncia seja alternante, diga o valor de k.

16.

Em um Restaurante Universitrio, com auto atendimento, deseja-se conhecer o perfil do consumidor quanto a preferncia pelo tipo e quantidade de comida servida. Para tanto foram colocados observadores, onde cada observador deveria responder uma caracterstica do consumidor. Elabore algoritmos para os seguintes observadores.
a. Observador do consumo de carne.

Deseja-se saber qual o percentual de consumidores que no consome carne e, entre estes, qual o sexo predominante.
b. Observador do consumo de verduras.

Deseja-se saber qual o percentual de consumidores de verduras e, entre estes, que percentual consome somente um tipo de verdura.

17.

Em uma determinada rua da cidade, deseja-se saber o maior intervalo existente entre os nmeros de duas residncias vizinhas no lado mpar. Faa um algoritmo para fazer este levantamento.

18.

Em uma pea de teatro, desejava-se saber caractersticas da plateia. Para tanto foi colocado um assistente na entrada do teatro, observando o sexo da pessoa que passava na catraca de acesso. Faa um algoritmo para esse observador, de modo que ao final do espetculo, possa ser conhecido o percentual de expectadores homens. Pgina
24

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

19.

Dada uma sequncia aleatria com N nmeros de inteiros positivos, faa um algoritmo para verificar quantas vezes um nmero impar sucedeu um nmero par. Dada uma sequncia aleatria com N nmeros de inteiros positivos, faa um algoritmo para verificar quantas vezes ouve alternncia entre pares e impares dentro da sequncia. Dada uma sequncia crescente com N nmeros de inteiros positivos, faa um algoritmo para verificar a maior diferena entre dois nmeros adjacentes na sequncia.

20.

21.

22.

Dois nmeros A e B so amigos se a soma dos divisores de A, excluindo A, igual a B e a soma dos divisores de B, excluindo B, igual a A. Faa um algoritmo para verificar se dois nmeros dados so amigos. Exemplo: 220 e 284 so amigos, pois 220: 1+2+4+5+10+11+20+22+44+55+110 = 284 284: 1+2+4+71+142 = 220

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

25