Apostila Algoritmos

download Apostila Algoritmos

of 196

Transcript of Apostila Algoritmos

ALGORITMOSAutora: Lucy Mari Tabuti Cursos: ADS / BD / RC / SI Semestre: 1

Prezado aluno, Este material compreende apenas o contedo da disciplina. Assim, no deve ser a nica fonte de consultas em seus estudos. O contedo deve ser complementado com outras obras, indicadas por seu professor ou encontradas em suas pesquisas.

Revises: Fevereiro 2005 - por Lucy M. Tabuti

3 Edio 7 Impresso 2008 Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

ndice1. Conceitos Bsicos..................................................................................................................... 1 1.1. Lgica .................................................................................................................................. 1 1.2. Processamento de Dados ................................................................................................... 2 1.3. Algoritmo.............................................................................................................................. 2 1.4. Programa ............................................................................................................................. 6 1.5. Java - Linguagem de Programao..................................................................................... 6 1.6. Exemplo............................................................................................................................... 9 Exerccios de Lgica .................................................................................................................. 9 2. Como Construir um Algoritmo ............................................................................................... 11 2.1. Exemplo de como fazer um Caf ...................................................................................... 11 2.2. Outro Exemplo de Construo de Algoritmo Envolvendo Lgica ...................................... 13 Exerccios de Construo de Algoritmo Envolvendo Lgica .................................................... 14 3. Constantes, Variveis e Tipos de Dados............................................................................... 15 3.1. Tipos de Dados ................................................................................................................. 15 3.2. Constantes ........................................................................................................................ 16 3.3. Variveis ............................................................................................................................ 18 3.4. Identificadores ................................................................................................................... 19 3.5. Converses entre Tipos em Java ...................................................................................... 20 3.6. Exemplos com Constantes, Variveis e Identificadores em Pseudocdigo ...................... 21 3.7. Exemplos com Constantes, Variveis e Identificadores em Java ..................................... 22 Exerccios com Constantes, Variveis e Identificadores .......................................................... 22 4. Expresses Aritmticas e Lgicas ........................................................................................ 23 4.1. Operadores Aritmticos ..................................................................................................... 23 4.2. Operadores Relacionais .................................................................................................... 25 4.3. Operadores Lgicos .......................................................................................................... 26 4.4. Prioridades entre Operadores ........................................................................................... 27 4.5. Exemplo com Operadores ................................................................................................. 27 Exerccios com Operadores ..................................................................................................... 29 5. Estrutura Seqencial ............................................................................................................... 30 5.1. Operador de Atribuio () e Comandos de Atribuio ................................................... 30 5.2. Comandos de Entrada e Sada ......................................................................................... 31

1Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

5.3. Blocos ................................................................................................................................ 36 5.4. Estrutura Seqencial ......................................................................................................... 38 5.5. Funes de Tratamento de Caracteres em Java .............................................................. 40 5.6. Exemplos de Estrutura Seqencial em Pseudocdigo ...................................................... 41 5.7. Exemplos de Estrutura Seqencial em Java ..................................................................... 43 Exerccios de Algoritmos Seqenciais...................................................................................... 45 6. Estrutura de Deciso ............................................................................................................... 47 6.1. Estrutura de Deciso Simples (se/ento) .......................................................................... 47 6.2. Estrutura de Deciso Composta (se/ento/seno) ............................................................ 49 6.3. Estrutura de Deciso Encadeada (se/ento ... /seno ...) ................................................. 51 6.4. Exemplos de Estrutura de Deciso Simples, Composta e Encadeada em Pseudocdigo ...................................................................................................................55 6.5. Exemplos de Estrutura de Deciso Simples, Composta e Encadeada em Java .............. 60 Exerccios de Estrutura de Deciso Simples, Composta e Encadeada ................................... 65 7. Estrutura de Mltipla Escolha ................................................................................................ 68 7.1. Estrutura de Mltipla Escolha Simples .............................................................................. 68 7.2. Estrutura de Mltipla Escolha Encadeada ......................................................................... 75 7.3. Exemplos de Estrutura de Mltipla Escolha em Pseudocdigo ........................................ 81 7.4. Exemplos de Estrutura de Mltipla Escolha em Java........................................................ 84 Exerccios de Estrutura de Mltipla Escolha Simples e Encadeada ........................................ 88 8. Estrutura de Repetio ............................................................................................................96 8.1. Estrutura de Repetio Enquanto ..................................................................................... 96 8.2. Faa/Enquanto ................................................................................................................ 101 8.3. Para ................................................................................................................................ 105 8.4. Exemplo de estrutura de repetio enquanto, faa/enquanto e para em pseudocdigo 109 8.5. Exemplo de estrutura de repetio enquanto, faa/enquanto e para em java ................ 113 Exerccios de estrutura de repetio enquanto, faa/enquanto e para .................................. 118 9. Modularizao ........................................................................................................................121 9.1. Necessidade da Modularizao em Programas ..............................................................121 9.2. Construo de Mdulos ...................................................................................................121 9.3. Escopo de Variveis ........................................................................................................122 9.4. Mdulos Procedimento ....................................................................................................122 9.5. Mdulos Funo ..............................................................................................................124 9.6. Parametrizao de Mdulos ............................................................................................126 9.7. Chamada dos Mdulos ....................................................................................................1282Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

9.8. Exemplo de Modularizao em Pseudocdigo ................................................................130 9.9. Exemplo de Modularizao em Java ...............................................................................141 Exerccios de Modularizao ..................................................................................................151 10. Estrutura de Dados Homogneas - Vetores...................................................................... 157 10.1. Definio de Vetor ..........................................................................................................157 10.2. Declarao de Vetor .......................................................................................................158 10.3. Exemplo de Vetor ...........................................................................................................159 10.4. Atribuindo Valores ao Vetor............................................................................................160 10.5. Mostrando os Elementos de um Vetor ...........................................................................161 10.6. Exemplos de Vetores em Pseudocdigo ........................................................................162 10.7. Exemplos de Vetores em Java .......................................................................................164 Exerccios de Vetores..............................................................................................................167 11. Estrutura de Dados Homognea - Matrizes .......................................................................170 11.1. Definio de Matriz ........................................................................................................170 11.2. Declarao de Matriz......................................................................................................171 11.3. Exemplo de Matriz .........................................................................................................172 11.4. Atribuindo Valores Matriz ............................................................................................174 11.5. Mostrando os Elementos de uma Matriz ........................................................................176 11.6. Exemplos de Matrizes em Pseudocdigo ......................................................................177 11.7. Exemplos de Matrizes em Java .....................................................................................180 Exerccios de Matrizes ............................................................................................................182

1Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

2Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

1. Conceitos Bsicos1.1. LgicaDefinio de Lgica Segundo o dicionrio Aurlio 1, lgica : Filos. Na tradio clssica, aristotlico-tomista, conjunto de estudos que visam a determinar os processos intelectuais que so condio geral do conhecimento verdadeiro. Filos. Conjunto de estudos tendentes a expressar em linguagem matemtica as estruturas e operaes do pensamento, deduzindo-as de nmeros reduzidos de axiomas, com a inteno de criar uma linguagem rigorosa, adequada ao pensamento cientfico tal como o concebe a tradio emprico-positivista; lgica matemtica, lgica simblica. Inform. Forma pela qual as assertivas, pressupostos e instrues so organizados em um algoritmo para implementao de um programa de computador. Lgica do dia-a-dia Independentemente de qualquer definio terica, basta observarmos nosso dia-a-dia para verificarmos que a lgica est presente em quase tudo o que fazemos ou pensamos. Por exemplo, ao pegarmos uma chave que est dentro de uma gaveta fechada, precisamos antes abrir a gaveta para conseguir pegar a chave. Isso lgica! Se estamos conversando com algum, precisamos organizar as palavras numa certa ordem para dizer uma frase que faa sentido, seno a outra pessoa no entender nada do que voc est falando. Isso lgica! E se voc quer caminhar, voc sabe que precisa colocar um p na frente do outro numa seqncia, pois se no o fizer ficar parado no mesmo lugar. Isso lgica! Enfim, muito do que fazemos e/ou pensamos, na nossa vida, est relacionado lgica. Lgica de programao A lgica de programao nada mais do que a lgica usada na programao de computadores, que segue as leis do pensamento e os processos do raciocnio, cujo objetivo desenvolver tcnicas que ajudem as pessoas a realizar uma tarefa com o mnimo de esforo. Por exemplo, com o uso da lgica e da computao, hoje temos acesso ao correio eletrnico, mais conhecido por email, em que uma mensagem escrita pode chegar quase que instantaneamente ao seu destino, em qualquer lugar do mundo. Imagine como era antes do correio eletrnico? Quanto tempo demorava uma carta para chegar ao Japo, saindo do Brasil? E antes do avio? Quando tempo essa carta demorava para chegar de navio? E antes do navio? Havia alguma possibilidade de essa carta chegar ao seu destino? 1

Ferreira, Aurlio Buarque de Holanda. Novo Aurlio sculo XXI: O Dicionrio da Lngua Portuguesa. 3.a edio. Nova Fronteira. Rio de Janeiro. 1999.

1Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

1.2. Processamento de DadosNa informtica, o tratamento de uma informao refere-se entrada de dados, ao processamento desses dados de entrada e sada dos resultados desse processamento, numa seqncia como mostra a figura a seguir:

EntradaFigura 1 Processamento de dados

Processamento

Sada

A entrada de dados, que pode ser uma coleta de dados, uma depurao de dados ou um armazenamento de dados, recebe a informao necessria que ser tratada no processamento de dados. Essa entrada pode ser feita atravs de dispositivos de entrada, por exemplo, teclado, mouse, etc. O processamento de dados, que pode ser aritmtico ou lgico, trata a informao recebida na entrada de dados, gerando resultados. Esse processamento efetuado dentro do computador, na unidade lgica e aritmtica conhecida como ULA que fica dentro da CPU (Unidade Central de Processamento), o crebro do computador. A sada de dados, que pode ser uma coleta de resultados ou uma distribuio de resultados, a entrega dos dados processados para o usurio. Essa sada pode ser feita atravs de dispositivos de sada, por exemplo, monitor, impressora, etc. Exemplificando, considere um problema cujo objetivo encontrar a soluo da soma de dois nmeros. A partir dessa informao, podemos verificar que nossa entrada de dados so os dois nmeros dos quais queremos encontrar a soma. Continuando, percebemos que nosso processamento realizar o clculo aritmtico da soma dos dois nmeros fornecidos na entrada de dados. E, finalizando, temos como resultado desse processamento a soma realizada desses dois nmeros.

1.3. AlgoritmoDefinio Podemos definir algoritmo como um processo que rene um conjunto de aes que so necessrias para tratar os dados de entrada e transform-los em resultados para um determinado objetivo. Nesse sentido, podemos considerar que uma receita de bolo um algoritmo, pois a partir dos ingredientes (dados de entrada), realizamos vrias aes como bater os ingredientes numa batedeira, colocar numa assadeira e depois assar por determinado tempo (processamento) para, no final, termos um bolo bem-feito (resultado de sada). De qualquer forma, trataremos a construo de algoritmos lgicos computacionais, em que os dados de entrada, o processamento e os resultados de sada so dados virtuais no formato que o computador entende.

2Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Mtodo para o desenvolvimento de um algoritmo Para a construo de um bom algoritmo, devemos seguir os seguintes passos: a. ler e compreender o problema para o qual ser construdo um algoritmo; b. determinar quais sero a entrada de dados do seu algoritmo; c. determinar quais as aes, lgicas e/ou aritmticas, que devero ser realizadas no seu algoritmo, bem como, as restries, se houver, para cada uma dessas aes; d. determinar qual ser a sada de resultados do seu algoritmo; e. construir o algoritmo em um dos tipos de algoritmo descritos na prxima seo; f. testar o algoritmo usando o teste de mesa descrito no final deste captulo. Tipos de algoritmo As formas mais importantes para a construo de algoritmos so: a descrio narrativa, o fluxograma e o pseudocdigo (ou portugus estruturado ou portugol). Para exemplificar cada um dos tipos de algoritmo, vamos considerar o seguinte problema: a soma de dois nmeros. Descrio narrativa. A descrio narrativa nada mais do que descrever, utilizando uma linguagem natural (no nosso caso, a lngua portuguesa), as aes a serem realizadas no tratamento dos dados de entrada para os resultados de sada na resoluo do problema proposto. A vantagem desse tipo de algoritmo que a linguagem natural no oferece o esforo do aprendizado, pois ela j bem conhecida. A desvantagem que a linguagem natural pode ter interpretaes diferentes dependendo do ponto de vista de cada pessoa, podendo dificultar a transcrio para o programa. Para o nosso exemplo, a descrio narrativa ficaria da seguinte forma:

iniciar o algoritmo; receber dois nmeros; somar esses dois nmeros; apresentar a soma dos dois nmeros; finalizar o algoritmo.Fluxograma. O fluxograma a forma de descrever as aes a serem realizadas no tratamento dos dados de entrada para os resultados de sada usando uma representao simblica preestabelecida, por exemplo, como os smbolos na Figura 3. A vantagem desse tipo de algoritmo o entendimento. Qualquer representao grfica sempre mais bem entendida do que uma representao por escrito. A desvantagem desse tipo de algoritmo a necessidade do aprendizado de cada smbolo bem como seu significado. Alm disso, um algoritmo descrito por um fluxograma no apresenta detalhes, podendo dificultar a transcrio para o programa.

3Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Para o nosso exemplo, o fluxograma ficaria da seguinte forma:

incio

N1, N2

S = N1 + N 2

S

fim

Figura 2 Fluxograma da soma de dois nmeros

Smbolo utilizado para determinar o incio e o trmino do algoritmo. Smbolo utilizado para determinar o sentido do fluxo de dados do algoritmo e utilizado para conectar os smbolos existentes. Smbolo utilizado para determinar uma ao ou comando que pode ser um clculo ou uma atribuio de valores. Smbolo utilizado para determinar a sada de dados do algoritmo. Essa entrada de dados pode ser via dispositivos de entrada. Smbolo utilizado para determinar a sada de dados do algoritmo. Essa sada de dados pode ser via monitor. Smbolo utilizado para determinar uma deciso que indicar qual caminho ser seguido no algoritmo. Smbolo utilizado para determinar uma conexo entre partes de um mesmo algoritmo.Figura 3 Fluxograma

Pseudocdigo. O pseudocdigo a forma de descrever as aes para a resoluo de um problema proposto por meio de regras preestabelecidas. A vantagem desse tipo de algoritmo a possibilidade da transcrio quase que imediata desse algoritmo para uma linguagem de programao, bastando saber a sintaxe e a semntica dessa linguagem de programao. A desvantagem deste tipo de algoritmo a necessidade do aprendizado de cada uma das regras do pseudocdigo bem como seu significado. A seguir, apresentaremos cada uma dessas regras do pseudocdigo para o melhor aprendizado. Para o nosso exemplo, o pseudocdigo ficaria da seguinte forma:

4Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Algoritmo Soma incio_algoritmo declarar N1, N2, S numrico_inteiro; ler (N1, N2); S N1 + N2; mostrar (S); fim_algoritmo.

Pseudocdigo Estrutura O pseudocdigo o tipo de algoritmo que exploraremos a partir de agora. Como vimos no exemplo anterior, o algoritmo escrito em pseudocdigo possui uma estrutura, ou seja, um nome, um incio, a declarao de variveis e constantes, a entrada de dados, o processamento desses dados, a sada de resultados e o fim. Todo e qualquer algoritmo escrito em pseudocdigo precisa dessa estrutura para que o tratamento da informao seja apresentado da forma mais compreensvel possvel.

Teste de mesa Como vimos na seo de mtodo para o desenvolvimento de um algoritmo, o ltimo item refere-se a testar o algoritmo construdo. Para testar um algoritmo, utilizamos o teste de mesa que verifica se o algoritmo realiza exatamente o que se espera dele. Para realizar o teste de mesa em um algoritmo muito simples, basta seguir, passo-a-passo, cada comando do algoritmo como se fosse o computador. Assim, no final do teste de mesa, voc pode concluir se o algoritmo est correto ou no. Se no estiver, basta corrigir o algoritmo, refazer o teste de mesa e repetir esse processo at que voc se certifique de que o algoritmo esteja realmente correto. Mesmo que voc suponha que seu algoritmo esteja correto, voc deve fazer o teste de mesa, pois erros imperceptveis podem ser detectados. No se corre o risco de ter um algoritmo que no retorna sempre o resultado esperado.

Comentrios em pseudocdigo Os comentrios em pseudocdigos so simbolizados com duas barras (//) seguidas do comentrio. Para o nosso exemplo, os comentrios podem ser colocados da seguinte forma:

5Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

// nome do algoritmo Algoritmo Soma incio_algoritmo // declarao das variveis declarar N1, N2, S numrico_inteiro; // entrada de dados leitura de dois nmeros inteiros ler (N1, N2); // processamento de dados clculo da soma dos dois nmeros S N1 + N2; // sada de resultados resultado da soma dos dois nmeros mostrar (S); fim_algoritmo.

1.4. ProgramaUm programa de computador a codificao de um algoritmo numa linguagem de programao especfica, por exemplo, Java. Podemos distingir dois tipos de linguagens: de alto nvel e de baixo nvel. As linguagens de baixo nvel so as linguagens de mquina, aquelas que o computador entende. As linguagens de alto nvel so as linguagens de programao que servem de intermedirias entre a linguagem natural e a linguagem de mquina. Sempre que codificamos um algoritmo numa linguagem de programao, esse programa precisa ser traduzido para a linguagem entendida pela mquina. A esse processo chamamos interpretao ou compilao.

1.5. Java linguagem de programaoDefinio

No fim da dcada de 80, um pequeno grupo de trabalho da Sun, liderado por James Gosling, pesquisava um projeto de programao cujo principal objetivo era facilitar a interface de programao entre aparelhos eletrnicos e seus usurios, criando vrios mecanismos de programao semelhantes em aparelhos diferentes como microondas, batedeira, aparelho de som, secretria eletrnica, entre outros. Em 1990, a equipe direcionou a pesquisa para a criao de uma nova linguagem de programao, inicialmente chamada oak com uma arquitetura neutra e capaz de comportar-se adequadamente em plataformas de trabalho diferentes.

6Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Em 1993, com o surgimento da WWW (World Wide Web), a Sun percebeu que a nova linguagem desenvolvida pelo grupo liderado por James Gosling era ideal para a programao na Internet por ser uma arquitetura neutra e criada para vrias plataformas. Foi assim que surgiu a linguagem de programao Java, ou simplesmente Java, uma linguagem de programao atualmente bastante aceita pela comunidade de desenvolvedores de software e Internet. Com o Java, usurios da Internet e da WWW foram beneficiados pelo acesso seguro e os desenvolvedores de software, pela portabilidade. As principais caractersticas do Java so: simples e familiar, orientada a objeto, distribuda, interpretada, robusta, segura, arquitetura neutra e porttil, alta performance, multitarefa e dinmica. Princpios bsicos de um ambiente java tpico Os sistemas Java normalmente possuem um ambiente, uma linguagem, uma interface de programas aplicativos Java e vrias bibliotecas de classes. Alm disso, os programas Java passam por cinco fases antes de serem executados. Na primeira fase, devemos editar o arquivo fonte. Podemos fazer isso utilizando qualquer editor de textos como o bloco de notas do Windows ou usando qualquer editor de Java que vem juntamente dos ambientes de desenvolvimento integrado (Integrated Development Environments IDE). No arquivo fonte, o cdigo java deve ser escrito de acordo com sua sintaxe e semntica, alm disso, deve ter pelo menos uma classe principal que contenha o mtodo principal, que o void main(). Vale lembrar que todo nome de arquivo fonte deve terminar com a extenso .java. Por exemplo, teste.java. Na segunda fase, devemos utilizar o comando javac para compilar o programa. Com esse comando, o compilador Java traduz o programa Java para bytecodes a linguagem entendida pelo interpretador Java. Por exemplo, para compilar um programa chamado teste.java numa janela do DOS, devemos digitar, a seguir do prompt do DOS, o seguinte comando: javac teste.java. Se a compilao finalizar sem erros, um arquivo chamado teste.class ser gerado. Este o arquivo contendo os bytecodes que sero interpretados durante a fase de execuo. Os bytecodes podem ser considerados instrues de mquinas para o JVM (Java Virtual Machine). Na terceira fase, o programa deve ser colocado na memria primria antes de ser executado. Isso feito pelo carregador de classe que copia o arquivo .class para a memria. Na quarta fase, os bytecodes passam pelo verificador de bytecodes que verifica se o programa Java atende aos padres de segurana de Java. Na quinta fase, o programa interpretado bytecode por bytecode, sob controle da CPU, realizando assim cada ao a ser executada pelo programa. Para o arquivo teste.java compilado anteriormente, foi criado o arquivo teste.class, teste por ser o nome da classe principal do programa. Para executar esse arquivo teste.class, devemos digitar o seguinte comando no prompt do DOS: java teste. A partir da, teremos o resultado do programa desenvolvido. Plataforma java Por plataforma entendemos o conjunto de hardware e software no qual um programa executado. Alguns exemplos de plataformas conhecidas so: Windows, Linux, MacOs, etc. Java tambm uma plataforma, no entanto sem hardware.

7Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

A plataforma Java tem dois componentes: JVM Java Virtual Machine e Java API Java Application Programming Interface. O Java API uma coleo de componentes de software prontos que incluem desde estruturas para manipulao de arquivos at a construo de aplicativos grficos. O Java API organizado como um grupo de bibliotecas com classes e interfaces. Essas bibliotecas so chamadas de pacotes. Instalando o ambiente java Para o desenvolvimento de aplicativos utilizando o Java, necessria a instalao do compilador Java, do Java API e do JVM. A instalao do ambiente segue o mesmo esquema da instalao de qualquer produto para Windows. Devemos baixar a verso mais apropriada e fazer a instalao. Informaes podem ser adquiridas nos seguintes sites: java.sun.com, java.net, java.com, entre outros. Comentrios em java O uso de comentrios em programas muito importante, seja na linguagem Java ou em qualquer outra linguagem de programao. Os comentrios permitem explicar o contedo do cdigo para que serve, alm de facilitar a manuteno posterior desse cdigo. Em Java, podemos comentar o programa de duas formas: usando duas barras (//), onde todo o contedo direita estar comentado: ou barra asterisco, asterisco barra (/* */), onde todo o contedo entre os dois asteriscos estar comentado. Por exemplo: // Isso um comentrio usando duas barras. /* Isso tambm um comentrio. Mas, usando barra asterisco e asterisco barra. */ O mtodo main No cdigo fonte de qualquer programa Java, temos uma classe principal. Dentro dessa classe principal, devemos ter o mtodo main que o mtodo principal de qualquer programa Java e sem esse mtodo o programa no funciona. Isso por que pelo mtodo main que o programa inicia sua execuo. A sintaxe do mtodo main a seguinte: public static void main(String args []) onde: public indica que o mtodo main pode ser chamado por outro objeto, static indica que o mtodo main um mtodo de classe e void indica que o mtodo main no retorna nenhum valor. O mtodo main aceita um nico argumento: um vetor de caracteres (do tipo String) que armazena os valores digitados pelo usurio aps o nome do programa.

8Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

1.6. Exemplo/* Primeiro programa em Java Este cdigo fonte ser salvo no arquivo primeiro_programa.java Este programa serve para exemplificar um programa Java para os alunos de Lgica de Programao */ public class primeiro_programa { public static void main(String argumentos []) { System.out.print(" System.exit(0); } // fim do mtodo main } // fim da classe principal primeiro_programa Primeiro Programa de Lgica de Programao");

Exerccios de lgica01. Trs homens esto em um restaurante. A conta de R$ 30,00, ento cada homem d uma nota de R$ 10,00 para o garom. O garom pega a conta e entrega o pagamento para o gerente que decide dar um desconto de R$ 5,00 na conta. No meio do caminho de volta mesa, o garom desonestamente pega R$ 2,00 dos R$ 5,00 e devolve R$ 1,00 para cada um dos homens mesa. Ento cada homem pagou R$9,00, dando um total de R$ 27,00. O garom ficou com R$ 2,00, os homens pagaram R$ 27,00, ou seja, somando esses dois valores, temos R$ 29,00. O que aconteceu com o outro R$ 1,00? 02. Qual nmero que quando adicionado de 5/4 d o mesmo resultado de quando ele multiplicado por 5/4? 03. Descubra e escreva o prximo nmero da srie abaixo: 18, 46, 94, 63, 52, ? 04. H um nmero de trs dgitos a que, se voc adicionar 7, ele divide exatamente por 7; se voc adicionar 8, ele divide exatamente por 8; se voc adicionar 9, ele divide exatamente por 9. Qual esse nmero? 05. Trs garotos juntos tm trs balas. Joo tem 3 balas a mais do que Jos, mas 5 a menos que Pedro. Quantas balas tem cada um deles?

9Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

06. Voc tem exatamente R$ 100,00 para comprar os seguintes alimentos cujos preos so para um quilograma: arroz R$ 0,59, feijo R$ 1,99, batata R$ 2,87 e carne R$ 3,44. Voc deve gastar exatamente os R$ 100,00. Quantos quilos de cada alimento voc deve comprar? 07. Toda soma de cubos consecutivos, comeando de 1, sempre um quadrado perfeito. Por exemplo: 13 + 2 3 = 9 = 3 2 13 + 23 + 33 = 36 = 62 13 + 23 + 33 + 43 = 100 = 102 e assim por diante. Entretanto, no problema proposto aqui, comear de 1 no permitido. Voc deve encontrar o menor quadrado perfeito que igual soma de no mnimo quatro cubos perfeitos consecutivos, excluda a unidade. 08. Um certo nmero, maior que 5000, mas menor que 50000, tem as seguintes propriedades: quando dividido por 4, tem um resto igual a 3; quando dividido por 5, tem resto igual a 1; quando dividido por 7, tem resto igual a 2; quando dividido por 11, tem resto igual a 2; e quando dividido por 17, tem resto igual a 12. Qual esse nmero? 09. Todo nmero mpar exceto dois entre 1 e 8999 ou um primo ou a soma de um primo e duas vezes um quadrado, por exemplo: 21 = 19 + 2 * 12 27 = 19 + 2 * 22 35 = 5 + 2 * 52 Quais so as duas excees? 10. Corredores em uma maratona so numerados comeando de 1. Um dos corredores notou que a soma dos nmeros menores que seu prprio nmero era igual soma dos nmeros maiores. Se havia mais do que 100 corredores, mas menos do que 1000, que nmero era do corredor acima e quantos corredores havia na corrida? 11. Em minha casa h muitos gatos: sete no comem peixe; seis no comem fgado; cinco no comem frango; quatro no comem peixe nem fgado; trs no comem peixe nem frango; dois no comem fgado nem frango; um no come fgado, peixe nem frango; nenhum deles come todas as trs comidas. Quantos gatos eu tenho? 12. Encontre a menor seqncia de nmeros primos consecutivos cuja soma seja igual a 106620. 13. Trs casais vivem felizes numa cidade. Com base nas dicas abaixo, tente descobrir o nome de cada marido (Cleber, Lucas, Pedro), a profisso de cada um (Pedreiro, Arquiteto, Escultor) e o nome de suas respectivas esposas (Laura, Priscila, Mariana): a. O pedreiro casado com Mariana. b. Pedro arquiteto. c. Priscila no casada com Pedro.

10Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

d. Cleber no pedreiro. 14. No ltimo vero, trs grupos acamparam na floresta. Com base nas dicas abaixo, tente descobrir o nome do guia de cada acampamento (Heitor, Paulo, Sergio), o tipo de grupo que cada um liderou (crianas, jovens, adultos) e a cor das barracas que cada grupo de campista usou (amarelo, preto, vermelho). a. Paulo foi o guia do grupo que acampou nas barracas de cor preto. b. O animado grupo dos adultos ocupou as barracas de cor vermelho. c. Heitor foi o grupo das crianas.

2. Como construir um algoritmo2.1. Exemplo de como fazer um cafVamos escrever vrios algoritmos de como fazer um caf utilizando o algoritmo de descrio narrativa. Vamos perceber que, por mais fcil que seja a tarefa, muitas vezes no nos atentamos para os pequenos detalhes da execuo dessa tarefa, mas que podem fazer falta para alcanar o resultado desejado. Vamos ver como fica um algoritmo seqencial para nosso exemplo: Descrio Narrativa Seqencial

iniciar algoritmo; pegar bule; colocar coador de plstico sobre o bule; colocar coador de papel sobre o coador de plstico; colocar caf tostado e modo sobre o coador de papel; colocar gua sobre o caf; finalizar algoritmo.Nessa descrio, seguimos uma seqncia de vrios passos, um aps o outro. Isso significa que as aes foram executadas linearmente, da direita para a esquerda e de cima para baixo. Esse algoritmo mostra como qualquer pessoa, naturalmente, faria um caf, sem se importar com qualquer detalhe. Agora, analisando o algoritmo, verificamos que o resultado a ser alcanado bem definido: fazer um caf. No entanto, e se a gua no estivesse fervente? Como sairia o caf? O caf seria feito com a gua fria porque no foi prevista essa condio para o algoritmo. Para resolver esse problema, podemos fazer uma seleo para verificar se a gua est fervente ou no. Assim, temos o seguinte algoritmo de seleo para o nosso exemplo:

11Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Descrio Narrativa de Seleo

iniciar algoritmo; pegar bule; colocar coador de plstico sobre o bule; colocar coador de papel sobre o coador de plstico; colocar caf tostado e modo sobre o coador de papel; se a gua estiver fervente, ento colocar gua sobre o caf; finalizar algoritmo.Nessa descrio, fazemos uma seleo para a gua, ou seja, verificamos se a gua est fervente. Em caso afirmativo, a gua colocada sobre o caf. Se a seleo for falsa (a gua no estiver fervente), o caf no ser feito. Nesse algoritmo, colocamos uma seleo para verificar qual o caminho que o algoritmo deve seguir. Perceba que, dependendo do resultado da seleo, algumas aes do algoritmo podem ser realizadas ou no. Analisando o algoritmo, percebemos que o caf seria feito somente se a gua estivesse fervente. Como podemos garantir que o resultado do algoritmo, que ter o caf pronto, seja alcanado? Para resolver esse problema, podemos fazer uma repetio para verificar a condio da gua e quando ela estiver fervente ser colocada sobre o caf. Assim, temos o seguinte algoritmo de repetio para o nosso exemplo: Descrio Narrativa de Repetio sem a Estrutura de Repetio

iniciar algoritmo; pegar bule; colocar coador de plstico sobre o bule; colocar coador de papel sobre o coador de plstico; colocar caf tostado e modo sobre o coador de papel; se a gua no estiver fervente, ento aquecer a gua; se a gua no estiver fervente, ento continuar aquecendo a gua; se a gua no estiver fervente, ento continuar aquecendo a gua;... continua at quando?

colocar gua sobre o caf; finalizar algoritmo.12Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Percebemos que o algoritmo no est terminado, pois falta saber quando a gua estar fervendo para ser colocada sobre o caf. Para simplificarmos nosso algoritmo, podemos reescrev-lo utilizando uma condio de parada para determinar um limite para esse algoritmo: Descrio Narrativa de Repetio usando a Estrutura de Repetio

iniciar algoritmo; pegar bule; colocar coador de plstico sobre o bule; colocar coador de papel sobre o coador de plstico; colocar caf tostado e modo sobre o coador de papel; enquanto a gua no estiver fervente, faa aquecer a gua; colocar gua sobre o caf; finalizar algoritmo.Note que as duas descries narrativas de repetio retornam o mesmo resultado que aquecer a gua at ela ferver e ter o caf pronto. A nica diferena que na segunda descrio utilizamos uma forma mais adequada para descrever um conjunto de aes em repetio.

2.2. Outro exemplo de Construo de Algoritmo envolvendo LgicaConsidere a Torre de Hani com trs hastes e trs discos. Uma das hastes serve de suporte para trs discos de tamanhos diferentes de forma que os menores esto sobre os maiores. Desenvolva um algoritmo que mova todos os discos da haste onde se encontram para uma das outras duas hastes da Torre de Hani, seguindo as seguintes regras: Pode-se mover um disco de cada vez para qualquer haste, contanto que um disco maior nunca seja colocado sobre um disco menor. Resoluo: Considerando discos 1, 2, 3 e hastes A, B, C, temos o seguinte resultado:

mover o disco 1 da haste A para a haste B; mover o disco 2 da haste A para a haste C; mover o disco 1 da haste B para a haste C; mover o disco 3 da haste A para a haste B; mover o disco 1 da haste C para a haste A; mover o disco 2 da haste C para a haste B; mover o disco 1 da haste A para a haste B.

13Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Exerccios de Construo de Algoritmo envolvendo LgicaUtilizando a descrio narrativa, construa algoritmos para os seguintes exerccios: 01. Um homem com suas trs cargas - um lobo, um bode e um mao de alfafa - precisa atravessar um rio usando um barco que possui capacidade para atravessar somente o homem e mais uma de suas trs cargas. Considerando que o lobo come o bode e o bode come o mao de alfafa, quais os percursos que o homem deve fazer para atravessar o rio sem perder nenhuma de suas cargas? Desenvolva um algoritmo indicando todos os percursos efetuados pelo homem para atravessar o rio sem perder nenhuma das cargas. 02. A partir do exemplo da Seo 2.2, amplie a soluo apresentada, de maneira a completar a operao descrita, de troca dos discos entre hastes, considerando a existncia de 3 hastes e 4 discos. 03. Trs jesutas e trs canibais precisam atravessar um rio com um barco que possui capacidade para transportar somente duas pessoas. Considerando que em qualquer margem, a quantidade de jesutas no seja menor que a de canibais, quais os percursos que devem ser feitos para os 3 jesutas e os 3 canibais atravessarem o rio? Desenvolva um algoritmo indicando todos os percursos efetuados para todos atravessarem o rio com segurana. 04. Tendo como exemplo os algoritmos desenvolvidos para solucionar o problema de fazer um caf, elabore trs algoritmos que mostrem os passos necessrios para trocar um pneu furado. Considere o seguinte conjunto de situaes, um para cada algoritmo: a. trocar o pneu dianteiro direito; b. verificar se o pneu reserva est em condies de uso; em caso afirmativo, trocar o pneu dianteiro direito; c. verificar se existe algum pneu furado; em caso afirmativo, verificar se o pneu reserva est em condies de uso e, em caso afirmativo, trocar o pneu correto. Para cada algoritmo desenvolvido, introduza novas aes e altere o fluxo do algoritmo de forma compatvel com as situaes apresentadas. 05. Considere uma calculadora comum de quatro operaes. Considere que as teclas de diviso e multiplicao esto quebradas. Desenvolva trs algoritmos que resolvam expresses matemticas de multiplicao, diviso e exponenciao usando apenas as operaes de adio e subtrao.

14Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

3. Constantes, Variveis e Tipos de DadosA partir deste captulo, estaremos preocupados em conhecer as partes necessrias para se escrever um algoritmo completo em pseudocdigo. Para isso, neste captulo, vamos estudar como as constantes, os tipos de dados e as variveis so utilizados em pseudocdigo.

3.1. Tipos de DadosOs tipos de dados so as caractersticas comuns dos dados a serem manipulados. Podemos considerar quatro classificaes para os tipos de dados: inteiro, real, caracter e lgico. O tipo inteiro caracteriza qualquer dado numrico que pertena ao conjunto dos nmeros inteiros. Por exemplo: -5, 0, 32. O tipo inteiro quando armazenado no computador ocupa 2 bytes, o que corresponde a 65536 possibilidades, ou seja, de 32767 at 32767. O tipo real caracteriza qualquer dado numrico que pertena ao conjunto dos nmeros reais. Por exemplo: -9.0, 0, 29.45. O tipo real quando armazenado no computador ocupa 4 bytes, o que corresponde a 232 possibilidades, podendo ter de 6 a 11 dgitos significativos com sinal. O tipo caracter caracteriza qualquer dado que pertena a um conjunto de caracteres alfanumricos e so simbolizados por entre aspas duplas (). Por exemplo: 15", Eu", Pare!, ?%@. O tipo caracter quando armazenado no computador ocupa 1 byte para cada caracter. O tipo lgico caracteriza qualquer dado que possa assumir somente duas situaes: verdadeiro ou falso. Por exemplo: feminino ou masculino, loja aberta ou fechada, brasileiro ou estrangeiro. O tipo lgico quando armazenado no computador ocupa 1 byte, pois possui apenas duas formas de representao. Pseudocdigo No pseudocdigo, h nomes especiais para representar cada tipo de dados, como se segue:

para o tipo inteiro, usaremos numrico_inteiro; para o tipo real, usaremos numrico_real; para o tipo caracter, usaremos alfanumrico; para o tipo lgico usaremos lgico.Java No Java tambm h nomes especiais, chamados palavras reservadas, para representar cada tipo de dado, como segue: para o tipo lgico, temos: boolean tipo lgico que s pode assumir true ou false intervalo compreendido: ocupa 1 bit

Figura 4 O tipo lgico em Java 15Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

para o tipo real, temos dois tipos diferentes, dependendo da capacidade de armazenamento: float double nmeros reais de 32 bits intervalo compreendido: 3.4E-038 ... 3.4E+038 nmeros reais com preciso dupla intervalo compreendido: 1.7E-308 ... 1.7E-308

Figura 5 O tipo real em Java

para o tipo caracter que representa um nico caracter, temos: char caracter que ocupa 16 bits (sem sinal) intervalo compreendido: 0 ... 65536 inclui unicode (alfabetos latinos, grego, cirlico, etc.)

Figura 6 O tipo caracter em Java

para o tipo inteiro, temos quatro tipos diferentes, dependendo da capacidade de armazenamento byte short int long nmeros inteiros de 8 bits intervalo compreendido: -128 ... 127 nmeros inteiro de 16 bits intervalo compreendido: -32.768 ... 32.767 nmeros inteiros de 32 bits intervalo compreendido: -2.147.483.648 ... 2.147.483.647 nmeors inteiros de 64 bits intervalo compreendido: -9.223.372.036.854.775.808 ... 9.223.372.036.854.775.807

Figura 7 O tipo inteiro em Java

para o tipo caracter que representa uma cadeia de caracteres, temos: String no um tipo primitivo. uma classe definida dentro de um pacote do Java.

Figura 8 O tipo String em Java

3.2. ConstantesDefinio Dizemos que determinado dado uma constante quando este dado no sofre nenhuma alterao, ou seja, ele fixo. Por exemplo, podemos definir uma constante pi 3.14, dentro do algoritmo e, nesse algoritmo, esse valor nunca sofrer alterao.16Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Pseudocdigo A declarao de um dado constante em pseudocdigo ter a seguinte regra sinttica: declarar constante ; Por exemplo: declarar constante pi 3.14 numrico_real; Podemos tambm declarar vrios dados constantes em pseudocdigo numa mesma linha, se eles forem todos do mesmo tipo, seguindo a regra sinttica abaixo e considerando NC como nome da constante e VC como valor da constante: declarar constante , , ... , ; Por exemplo: declarar constante pi 3.14, x 9.3, telefone -7.23 numrico_real; Java

A declarao de um dado constante em java ter a seguinte regra sinttica: final = ; Por exemplo: final double pi = 3.14;

Podemos tambm declarar vrios dados constantes em Java numa mesma linha, se eles forem todos do mesmo tipo, seguindo a regra sinttica abaixo e considerando NC como nome da constante e VC como valor da constante: final = , = , ... , = ;

Por exemplo: final double pi = 3.14, x = 9.3, telefone = -7.23;

17Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

3.3. VariveisDefinio Dizemos que determinado dado uma varivel quando o mesmo pode sofrer alguma alterao, ou seja, ele varivel. Por exemplo, podemos definir uma constante x, dentro do algoritmo e, nesse algoritmo, esse valor poder sofrer alterao. Pseudocdigo A declarao de um dado varivel em pseudocdigo ter a seguinte regra sinttica: declarar ; Por exemplo: declarar x numrico_inteiro; Podemos tambm declarar vrios dados variveis em pseudocdigo numa mesma linha se eles forem todos do mesmo tipo, seguindo a regra sinttica abaixo e considerando NV como nome da varivel: declarar , , ... , ; Por exemplo: declarar telefone, idade, valor, cor alfanumrico; No momento da declarao de um dado varivel em pseudocdigo, podemos tambm inicializar a varivel, assim a declarao com a inicializao ter a seguinte regra sinttica: declarar ; Por exemplo: declarar y 5 numrico_real;

18Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Java A declarao de um dado varivel em java ter a seguinte regra sinttica: ; Por exemplo: int x; Podemos tambm declarar vrios dados variveis em Java numa mesma linha se eles forem todos do mesmo tipo, seguindo a regra sinttica abaixo e considerando NV como nome da varivel: , , ... , ; Por exemplo: char letra, tom, nome; No momento da declarao de um dado varivel em Java, podemos tambm inicializar a varivel, assim a declarao com a inicializao ter a seguinte regra sinttica: = ; Por exemplo: double y = 5;

3.4. IdentificadoresDefinio Os identificadores so os nomes dados s informaes de um programa, por exemplo, nome da varivel, nome da constante, nome do programa etc. Por exemplo: pi, x, num_1, valor5, etc. Os identificadores so nicos para uma determinada informao, por exemplo, um mesmo identificador no pode ser usado para o nome de uma varivel e de uma constante, ou para o nome de duas variveis de mesmo tipo ou de tipos diferentes. Uma vez que um identificador foi usado para uma determinada informao, ele no pode ser usado novamente para identificar outra informao.

19Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Por exemplo, em pseudocdigo: declarar x numrico_inteiro; x numrico_real; Por exemplo, em Java: int x ; double x; Esse exemplo mostra o que no pode acontecer, ou seja, o identificador x declarado como um tipo inteiro e depois como um tipo real. Um identificador pode possuir somente um tipo de informao. Formato Esses identificadores devem seguir as seguintes regras para serem vlidos:

todos os caracteres devem ser letras, nmeros ou o sublinhado (o nico caracter especialpermitido);

o primeiro caracter deve ser uma letra; os demais caracteres podem ser letras, nmeros ou sublinhado; no so permitidos caracteres especiais (com exceo do sublinhado); palavras reservadas (de uma linguagem de programao ou do pseudocdigo) no devem serusadas como identificadores.

3.5. Converses entre Tipos em JavaEm Java, as converses de tipos menos significativos para tipos mais significativos, por exemplo, de inteiro para real, so feitas automaticamente e sem problemas, basta fazer a sua atribuio, por exemplo: // declarao da varivel x do tipo int inicializado com o valor 10 int x = 10; // declarao da varivel y do tipo double double y; // atribuio do valor de x para y, a converso de int para double feita automaticamente y = x;

20Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

No entanto, s vezes, queremos fazer atribuies de tipos mais significativos para tipos menos significativos, por exemplo, de real para inteiro. Nesse caso, precisamos fazer a converso do tipo real para inteiro antes de fazer qualquer atribuio, por exemplo: // declarao da varivel i do tipo int int i; // declarao da varivel j do tipo double inicializado com o valor 5.2 double j = 5.2; // atribuio do valor de j, j convertido para int, para i i = (int) j; Essa operao de converso entre tipos chamada de cast. As converses de tipos menos significativos para tipos mais significativos permitidas so: byte short int long float double e char int Todas as demais converses entre tipos devem ser convertidas com o uso de operaes de cast.

3.6. Exemplos com Constantes, Variveis e Identificadores em Pseudocdigo1. So identificadores vlidos: num1, item5C, tipo_a2, A123, idade, telefone 2. So identificadores no vlidos: 1num, 5Citem, _tipoa2, _2valor, 123A, R$, nota/2, 5*, x&y 3. Declarao de constantes: declarar constante num1 9 numrico_inteiro; constante x_2 -3.28, cor 7.4 numrico_real; 4. Declarao de variveis declarar um 5, dois numrico_inteiro; maria, vlr9 numrico_real; valor_4A "alfabeto" alfanumrico; sexo, X987 lgico; amarelo '5', cor alfanumrico;21Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

3.7. Exemplos com Constantes, Variveis e Identificadores em Java1. So identificadores vlidos: num1, item5C, tipo_a2, A123, idade, telefone 2. So identificadores no vlidos: 1num, 5Citem, _tipoa2, _2valor, 123A, R$, nota/2, 5*, x&y 3. Declarao de constantes: final int num1 = 9; final double x_2 = -3.28, cor = 7.4; 4. Declarao de variveis int um = 5, dois; double maria, vlr9; String valor_4A = "alfabeto"; boolean sexo, X987; char amarelo = '5', cor;

Exerccios com Constantes, Variveis e Identificadores01. Determine qual o tipo de dado que aparece nas seguintes frases: a. A placa de trnsito "E" significa estacionamento permitido. b. Hoje a temperatura em graus Celsius atingiu 45 graus. c. A prova de Lgica de Programao estava fcil e a menor nota foi 6.5. d. O sexo do meu primeiro filho feminino. 02. Assinale os identificadores vlidos: a. A={1,2,3} f. D/YU l. 5mar q. US$ b. M2 g. Avenida m. KJO&U r. df_2_9_df c. PARE! h. A*34 n. LKJHHG s. num-4 d. "MARIA" i. M(I) o. KhMjh t. CEP e. email@email j. Teste_1 p. x < >= 2 3=1+2 5-2 10

Resultado Verdadeiro Falso Verdadeiro Verdadeiro Falso Falso

Figura 14 Operadores relacionais

Java Os operadores relacionais em Java tm uma pequena diferena dos operadores relacionais em pseudocdigo e so representados como segue:25Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Operador > < >= 8 1=1+5 -2= 4 / 2 + 7 2 1 >= 2 + 7 1 >= 9 F 3. Expresses lgicas com operadores lgicos, relacionais e aritmticos a. 3 < 7 e 5 * 2 = 2 + 1 3 < 7 e 10 = 3 VeF F b. pot(2 , 3) 12 no V ou 0 2 + 7 = 3 e V no V ou 5 = 3 e V no V ou F e V F ou F e V F ou F F

Exerccios com Operadores01. Calcule o resultado das seguintes expresses aritmticas: a. 5 * 9 mod 2 4 / 2 b. 4 7 div 2 + pot(2 , 4) / rad(4) c. rad(pot(3 , 2)) + pot(2 , 3) mod rad(4) 8 / 2 d. rad(16) div 9 / 3 4 * 3 pot(5 + 3 , rad(9)) e. rad(16 mod 4) + 5 * 2 / 10 pot(8 / 2 , 2 div 2) f. rad(16) / 2 + 2 * 5 mod 3 / 1 * pot(3 , 2 + 4) g. rad(rad(16)) + pot(pot(2 , 2) , pot(2 , 3)) + 5 * 4 / 2 h. rad(rad(pot(2 , 4))) + pot(rad(4) , pot(rad(4) , 3)) + 9 5 * 4 i. 5 * 3 mod 5 + 4 div 8 / 2 + 5 mod (4 + 2) j. rad(100) mod pot(4 , 3) pot(2 , 4) div 8 / 2 + 5 3 * 2 02. Calcule o resultado das seguintes expresses lgicas com operadores relacionais e aritmticos: a. 3 * 8 mod 2 = 20 / 4 b. 5 10 div 3 > pot(3 , 3) / rad(25) c. rad(pot(3 , 2)) < pot(5 , 2) mod rad(49) 81 / 9 d. rad(81) div 8 / 3 4 >= 5 pot(10 3 , rad(4)) e. rad(15 mod 3) + 15 * 12 / 6 12 + 35 mod (17 12) j. rad(36) mod pot(2 , 3) pot(3 , 4) div 18 / 6 < 25 13 * 2

29Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

03. Calcule o resultado das seguintes expresses lgicas com operadores lgicos, relacionais e aritmticos: a. 2 = 10 mod 2 e 16 > 4 b. 5 10 div 3 > pot(3 , 3) ou rad(25) = 5 c. no F e rad(pot(3 , 2)) < pot(5 , 2) ou 5 mod rad(49) >= 81 / 9 d. no V ou rad(81) div 8 / 3 4 >= 5 pot(10 3 , rad(4)) e. rad(15 mod 3) = 19 ou 15 * 2 = 7 i. no F ou 27 * 25 mod 13 < 91 e 51 div 3 > 12 ou 35 mod (17 12) >= 13 j. rad(36) mod pot(2 , 3) >= 10 ou no V e pot(3 , 4) div 18 / 6 < 25 13 * 2

5. Estrutura SeqencialUma estrutura seqencial aquela em que as aes de um algoritmo so executadas numa ordem seqencial, ou seja, de cima para baixo e da esquerda para a direita. Para o pseudocdigo adotado nesta apostila, convencionaremos que o uso do ponto-e-vrgula (;) determina o final de uma ao. Em qualquer estrutura de algoritmos, para expressar a entrada de dados, o processamento desses dados e a sada de resultados usamos os comandos de atribuio, comandos de entrada e comandos de sada, os quais veremos a seguir:

5.1. Operador de Atribuio () e Comandos de AtribuioO operador de atribuio, no nosso pseudocdigo representado pelo operador de atribuio , serve para atribuir um determinado valor para uma varivel, tendo o cuidado de verificar se o valor que est sendo atribudo varivel tem o tipo de dado compatvel, ou seja, se uma varivel x foi declarada como inteiro, s permitido atribuir valores inteiros varivel x.

Pseudocdigo O comando de atribuio em pseudocdigo ter a seguinte regra sinttica: ; onde expresso pode ser uma expresso lgica, aritmtica ou lgica.

30Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Por exemplo, vamos considerar que as variveis x, y e z foram declaradas como do tipo numrico_inteiro: x 25; y x + 15 3; z y x + rad(x) pot(y , 2); Java O comando de atribuio em Java ser o igual (=) e sua regra sinttica fica praticamente inalterada em relao ao pseudocdigo: = ; onde expresso pode ser uma expresso lgica, aritmtica ou lgica. Por exemplo, vamos considerar que as variveis x, y e z foram declaradas como do tipo int: x = 25; y = x + 15 3; z = y x + Math.sqrt(x) Math.pow(y , 2);

5.2. Comandos de Entrada e SadaOs comandos de entrada e sada so utilizados para que haja uma interao entre o algoritmo e o usurio do algoritmo. Nesse caso, com o comando de entrada, possvel que o usurio fornea dados para serem processados pelo algoritmo e, com o comando de sada, possvel que o usurio veja o resultado do processamento dos dados. Pseudocdigo Comandos de Entrada Para que o usurio possa entrar com dados num algoritmo, utilizaremos a seguinte regra sinttica para o comando de entrada: ler (); Por exemplo, vamos considerar que uma varivel num foi declarada como do tipo numrico_real: ler (num); Quando esse comando for executado, o algoritmo espera que o usurio digite algum valor real e o valor digitado ser atribudo varivel num. Por exemplo, se o usurio digitar 5, ento a varivel num passar a ter o valor 5.0.

31Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Podemos tambm receber valores para vrias variveis com um mesmo comando de entrada, seguindo a seguinte regra sinttica: ler (, , ... , ); Por exemplo, vamos considerar que as variveis num1, num2 e num3 foram declaradas como do tipo numrico_real: ler (num1, num2, num3); Quando esse comando for executado, o algoritmo espera que o usurio digite trs valores reais separados pela tecla e os valores digitados sero atribudos s variveis num1, num2 e num3. Por exemplo, se ele digitar: 5.2 -2.34 0.0 , ento as variveis num1, num2 e num3 passaro a ter os valores 5.2, -2.34 e 0.0, respectivamente. Java Comandos de Entrada Para que o usurio possa entrar com dados num programa Java, utilizaremos o mtodo JOptionPane.showInputDialog definido dentro do pacote javax.swing. Para isso, o programa deve fazer o import dessa biblioteca no incio do programa da seguinte forma: import javax.swing.*; Utilizaremos a seguinte regra sinttica para o comando de entrada: = (JOptionPane.showInputDialog("")); Por exemplo, vamos considerar que uma varivel num foi declarada como do tipo double: num = Double.parseDouble(JOptionPane.showInputDialog("Digite um nmero")); Quando esse comando for executado, o programa espera que o usurio digite algum valor que recebido pelo mtodo como do tipo String. Esse valor convertido para o tipo double e atribudo varivel num. Por exemplo, se o usurio digitar 5, ento o mtodo recebe a String 5", converte para o double 5.0 e a varivel num passar a ter o valor 5.0. Observao: note que a converso de tipos s necessria se a varivel que receber o retorno do mtodo showInputDialog no for do tipo String. Os mtodos acima explicados utilizam janelas para a comunicao com o usurio, ou seja, as mensagens de coleta de dados so feitas com o uso de janelas com uma interface grfica mais amigvel. Outra forma utilizada para receber dados do usurio usando o vetor 2 de argumentos. Essa forma no possui uma interface grfica e a coleta de dados feita pela tela do MS-DOS. Quando executamos um determinado arquivo, por exemplo, arquivo.class, usamos o seguinte comando no prompt do DOS: c:\ java arquivo 2

O conceito de vetor ser visto no captulo 10. 32Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Podemos tambm passar argumentos como parmetro para o programa que est sendo executado, por exemplo, da seguinte forma: c:\ java arquivo 1 Logica O dado String 1" e o dado String Logica" esto sendo passados como parmetros para o mtodo principal. Mas onde? O cabealho do mtodo principal de qualquer programa Java : public static void main(String arg []) arg o nome dado para um vetor de String que recebe os argumentos passados como parmetros quando o programa executado. No nosso exemplo, dois valores (1" e Logica") foram passados como parmetros, nesse caso, nosso vetor arg possui esses dois valores, um na sua posio 0 e um na sua posio 1. Utilizaremos a seguinte regra sinttica para pegar os dados desse vetor arg: = (arg[]); Por exemplo: int num = Integer.parseInt(arg[0]); String n = arg[1]; No primeiro exemplo, pega-se o contedo do vetor arg na posio 0, converte-se esse dado para o tipo int e armazena-se na varivel num. No segundo exemplo, pega-se o contedo do vetor arg na posio 1 e armazena-se na varivel n. Note que podemos passar tantos argumentos como parmetros quantos forem necessrios e a ordem dos argumentos digitados sempre a mesma que aparece no vetor arg. Observao: note que a converso de tipos s necessria se a varivel que receber o contedo do vetor arg no for do tipo String. Pseudocdigo Comandos de Sada Para que o usurio possa ver o resultado do processamento dos dados ou alguma mensagem enviada pelo algoritmo, utilizaremos a seguinte regra sinttica para o comando de sada: escrever (); Por exemplo, vamos considerar que uma varivel num foi declarada como do tipo numrico_inteiro e o valor 5 lhe foi atribudo: num 5; escrever (num);

33Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Quando o comando escrever for executado, o algoritmo mostra na tela do usurio o contedo da varivel num, nesse caso, o valor 5, j convertido para o tipo alfanumrico. Ao invs de mostrar para o usurio o contedo de uma varivel, podemos mostrar um dado alfanumrico, conforme a seguinte regra sinttica abaixo: escrever (""); Por exemplo: escrever ("Disciplina de Lgica de Programao"); Quando o comando escrever for executado, o algoritmo mostra na tela do usurio a seguinte mensagem: Disciplina de Lgica de Programao. Com o mesmo comando de sada, podemos enviar uma mensagem cujo contedo seja a concatenao de vrios dados do tipo alfanumricos, sejam eles do tipo alfanumricos ou da converso de outros tipos de dados para o tipo alfanumrico, seguindo a seguinte regra sinttica: escrever ("", , ... , "", , ... , ""); Por exemplo, vamos considerar que as variveis num1 e num2 foram declaradas como do tipo numrico_inteiro e os valores 10 e 5 lhes foram, respectivamente, atribudos: num1 10; num2 5; escrever ("Maria tem" , num1 , "anos e Joo tem" , num2 , "anos"); Quando o comando escrever for executado, o algoritmo mostra na tela do usurio a seguinte mensagem: Maria tem 10 anos e Joo tem 5 anos. Perceba que os contedos que esto entre aspas duplas (Maria tem , anos e Joo tem , anos) so dados do tipo alfanumricos e sua impresso na tela no se altera, enquanto que num1 e num2 so dados do tipo numrico_inteiro e o que mostrado na tela no so os nomes das variveis mas sim os seus contedos (10 , 5) j convertidos para o tipo alfanumrico. Note ainda que a vrgula dentro do comando escrever tem a funo de concatenar as informaes, mostrando ao final uma nica mensagem. Java Comandos de Sada Para que o usurio possa ver o resultado do processamento dos dados ou alguma mensagem enviada pelo programa Java, utilizaremos o mtodo JOptionPane.showMessageDialog definido dentro do pacote javax.swing. Para isso, o programa deve fazer o import dessa biblioteca no incio do programa da seguinte forma: import javax.swing.*;

34Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Utilizaremos a seguinte regra sinttica para o comando de sada: JOptionPane.showMessageDialog(null , ""); Por exemplo, vamos considerar que uma varivel num foi declarada como do tipo numrico_inteiro e o valor 5 lhe foi atribudo: num = 5; JOptionPane.showMessageDialog(null, num); Quando o comando JOptionPane.showMessageDialog for executado, o programa mostra na tela do usurio o contedo da varivel num, nesse caso, o valor 5, j convertido para o tipo String. Ao invs de mostrar para o usurio o contedo de uma varivel, podemos mostrar um dado alfanumrico, conforme a seguinte regra sinttica abaixo: JOptionPane.showMessageDialog(null, ""); Por exemplo: JOptionPane.showMessageDialog(null, "Disciplina de Lgica de Programao"); Quando o comando JOptionPane.showMessageDialog for executado, o programa mostra na tela do usurio a seguinte mensagem: Disciplina de Lgica de Programao. Com o mesmo comando de sada, podemos enviar uma mensagem cujo contedo seja a concatenao de vrios dados do tipo String, sejam eles do tipo String ou da converso de outros tipos de dados para o tipo String, seguindo a seguinte regra sinttica: JOptionPane.showMessageDialog(null, ""+ + ... + "" + + ... + ""); Por exemplo, vamos considerar que as variveis num1 e num2 foram declaradas como do tipo int e os valores 10 e 5 lhes foram, respectivamente, atribudos: num1 = 10; num2 = 5; JOptionPane.showMessageDialog(null, "Maria tem" + num1 + "anos e Joo tem" + num2 + "anos"); Quando o comando JOptionPane.showMessageDialog for executado, o programa mostra na tela do usurio a seguinte mensagem: Maria tem 10 anos e Joo tem 5 anos. Perceba que os contedos que esto entre aspas duplas so dados do tipo String e sua impresso na tela no se altera, enquanto que num1 e num2 so dados do tipo int e o que mostrado na tela no so os nomes das variveis mas sim os seus contedos j convertidos para o tipo String. Note ainda que o sinal de mais (+) dentro do comando JOptionPane.showMessageDialog tem a funo de concatenar as informaes, mostrando ao final uma nica mensagem.

35Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Os mtodos acima explicados utilizam janelas para a comunicao com o usurio, ou seja, as mensagens de aviso so feitas com o uso de janelas com uma interface grfica mais amigvel. Outro mtodo utilizado para mostrar o resultado de um processamento de dados ou alguma mensagem para o usurio o mtodo System.out.print ou System.out.println. A nica diferena entre esses dois mtodos que o primeiro somente mostra a mensagem passada como parmetro e o segundo, alm de mostrar a mensagem, pula o cursor para a linha de baixo. Esses mtodos no possuem uma interface grfica e a mensagem mostrada na tela do MS-DOS. Utilizaremos as seguintes regras sintticas para este comando de sada: System.out.print (""); System.out.println (""); Todas as propriedades de quantidade de parmetros e concatenao de Strings vistos para o mtodo JOptionPane.showMessageDialog tambm valem para os mtodos System.out.println e System.out.print.

5.3. BlocosUm bloco representado por um conjunto de aes cujo incio e fim so bem definidos. Um algoritmo pode ser considerado um bloco. As variveis declaradas dentro de um bloco so reconhecidas somente dentro desse bloco.

Pseudocdigo Em pseudocdigo, um bloco tem seu incio com a palavra incio e seu trmino com a palavra fim;. Um algoritmo pode ser considerado um bloco, no entanto, seu incio determinado com a palavra incio_algoritmo e seu trmino com a palavra fim_algoritmo. Por exemplo: Algoritmo Exemplo incio_algoritmo // incio do bloco ou algoritmo Declarar // declarao das variveis e/ou constantes // seqncia dos comandos fim_algoritmo. // fim do bloco ou algoritmo

Nesse exemplo, o bloco inicia-se com a palavra incio_algoritmo e termina com a palavra fim_algoritmo.

36Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Note que um algoritmo deve estar bem identado, isto , deve estar numa formao que facilite o seu entendimento. No exemplo acima, veja que as palavras incio_algoritmo e fim_algoritmo aparecem ligeiramente direita do cabealho do algoritmo Algoritmo Exemplo; a palavra Declarar aparece ligeiramente direita da palavra incio_algoritmo porque as declaraes esto dentro do bloco; as declaraes de variveis e/ou constantes aparecem ligeiramente direita da palavra Declarar, pois as declaraes fazem parte do bloco de declarao; e, por fim, a seqncia de comandos aparece ligeiramente direita da palavra incio_algoritmo, mas alinhado com a palavra Declarar, pois a seqncia de comandos tambm faz parte do bloco do algoritmo. Java Em programas Java, um bloco tem seu incio com a chave aberta, {, e seu trmino com a chave fechada, }. Um programa Java tambm pode ser considerado um bloco com incio e trmino representados pela chave aberta e chave fechada, respectivamente. Por exemplo: // nome da classe class Exemplo { // incio do bloco que limita a classe // cabealho do mtodo principal public static void main(String argumentos[ ]) { // incio do bloco que limita o mtodo principal // declarao das variveis e/ou constantes // seqncia dos comandos } // fim do bloco que limita o mtodo principal } // fim do bloco que limita a classe Nesse exemplo, o bloco inicia-se com a chave aberta e termina com a chave fechada. Nesse caso, temos dois blocos, o bloco da classe exemplo e o bloco do mtodo principal main(). Note que um programa Java tambm deve estar bem identado, isto , deve estar numa formao que facilite o seu entendimento. No exemplo acima, veja que as chaves aberta e fechada aparecem ligeiramente direita do nome da classe class Exemplo e ligeiramente direita do mtodo principal main(); as declaraes de variveis e/ou constantes aparecem ligeiramente direita da chave aberta e da chave fechada do mtodo principal main(), pois as declaraes fazem parte do bloco do mtodo principal; e, por fim, a seqncia de comandos tambm aparece ligeiramente direita da chave aberta e da chave fechada do mtodo principal main(), mas alinhada com as declaraes, pois a seqncia de comandos tambm faz parte do bloco do mtodo principal main().

37Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

5.4. Estrutura SeqencialUma estrutura seqencial aquela em que as aes de um algoritmo so executadas numa ordem seqencial, ou seja, de cima para baixo e da esquerda para a direita. Para o pseudocdigo adotado nesta apostila, convencionaremos que o uso do ponto-e-vrgula (;) determina o final de uma ao. Pseudocdigo Em pseudocdigo, a estrutura seqencial representa um conjunto de aes ou comandos que so executados num determinado fluxo. Numa estrutura sequncial, este fluxo executado de cima para baixo e da esquerda para a direita. A estrutura seqencial para pseudocdigo segue a seguinte regra sinttica: Algoritmo incio_algoritmo Declarar // declarao das variveis e/ou constantes ; ; ... ; fim_algoritmo. Por exemplo: Algoritmo Exemplo_Sequencial incio_algoritmo Declarar x, y alfanumrico; ler(x, y); escrever("Voc digitou primeiro o" , x); escrever("Voc digitou logo em seguida o" , y); fim_algoritmo. Esse exemplo caracteriza uma estrutura seqencial, pois a execuo desse algoritmo, desde seu incio at o seu trmino, segue um fluxo: primeiro as variveis do tipo alfanumrico x e y so declaradas; depois essas variveis recebem valores digitados pelo usurio; depois uma mensagem com o valor de x apresentada ao usurio; e, por ltimo, uma mensagem com o valor de y apresentada na tela. Se o usurio digitou 5 e 10, o valor de x ser 5 e o valor de y ser 10. O resultado da execuo deste exemplo ser:38Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Voc digitou primeiro o 5 Voc digitou logo em seguida o 10 Java Em Java, a estrutura seqencial no difere do pseudocdigo em relao ao comportamento, pois tambm representa um conjunto de aes ou comandos que so executados num determinado fluxo. Este fluxo, num programa seqencial em Java, tambm executado de cima para baixo e da esquerda para a direita. A estrutura seqencial para Java segue a seguinte regra sinttica: class { public static void main(String argumentos[ ]) { // declarao das variveis e/ou constantes ; ; ... ; } } Por exemplo: class Exemplo_Sequencial { public static void main(String arg[ ]) { String x, y; x = JOptionPane.showInputDialog("Digite um valor"); y = JOptionPane.showInputDialog("Digite um valor"); JOptionPane.showMessageDialog(null, "Voc digitou primeiro o " + x); JOptionPane.showMessageDialog(null, "Voc digitou logo em seguida o " + y); System.exit(0); } }

39Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Esse exemplo caracteriza uma estrutura seqencial, pois a execuo desse programa, desde seu incio at o seu trmino, segue um fluxo: primeiro as variveis do tipo String x e y so declaradas; depois a varivel x recebe um valor digitado pelo usurio; depois a varivel y recebe um valor digitado pelo usurio; depois uma mensagem com o valor de x apresentada ao usurio; depois uma mensagem com o valor de y apresentada na tela; e, por fim; o mtodo System.exit(0), que finaliza e sai do programa, executado. O resultado da execuo desse exemplo : Digite um valor // suponha que o usurio digitou 5 e clicou no boto ok Digite um valor // suponha que o usurio digitou 10 e clicou no boto ok Voc digitou primeiro o 5 // e o usurio clicou no boto ok Voc digitou logo em seguida o 10 // e o usurio clicou no boto ok

5.5. Funes de Tratamento de Caracteres em JavaAlgumas vezes, precisamos trabalhar com caracteres em Java e para isso podemos utilizar alguns comandos existentes:

static boolean isDigit(char)Verifica se determinado caracter digito.

static boolean isLowerCase(char)Verifica se determinado caracter minsculo.

static boolean isUpperCase(char)Verifica se determinado caracter maisculo.

static boolean isSpace(char)Verifica se determinado caracter um espao.

static char toLowerCase(char)Retorna a converso de determinado caracter para minsculo.

static char toUpperCase(char)Retorna a converso de determinado caracter para maisculo.

boolean equals(Object)Verifica se um objeto igual a outro.40Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

boolean equalsIgnoreCase(String)Verifica se um String igual a outro sem diferenciar letras maisculas de minsculas.

String concat(String)Retorna dois Strings concatenados em um nico String.

String toString()Retorna a converso de determinado valor num String.

int length()Retorna o tamanho de um String.

boolean compareTo(String)Verifica se dois Strings so iguais.

5.6. Exemplos de Estrutura Seqencial em Pseudocdigo1. Desenvolva um algoritmo que receba trs valores numricos inteiros e mostre a soma desses trs nmeros. Algoritmo Somar incio_algoritmo // declarao de variveis e/ou constantes Declarar num1, num2, num3, soma numrico_inteiro; // mensagem ao usurio escrever ("Digite trs valores inteiros"); // entrada de dados ler (num1 , num2 , num3); // processamento de dados soma num1 + num2 + num3; // sada de resultados escrever ("A soma dos trs valores digitados : " , soma); fim_algoritmo.

41Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

2. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a mdia aritmtica dessas quatro notas. Algoritmo MediaAritmetica incio_algoritmo // declarao de variveis e/ou constantes Declarar n1, n2, n3, n4, media numrico_real; // mensagem ao usurio escrever ("Digite as quatro notas bimestrais"); // entrada de dados ler (n1 , n2 , n3 , n4); // processamento de dados media (n1 + n2 + n3 + n4) / 4; // sada de resultados escrever ("A mdia : " , media); fim_algoritmo. 3. Desenvolva um algoritmo que receba a base e a altura de um tringulo, calcule e mostre a rea deste tringulo. Algoritmo AreaTriangulo incio_algoritmo // declarao de variveis e/ou constantes Declarar base, altura, area numrico_real; // mensagem ao usurio escrever ("Digite a base e a altura do tringulo"); // entrada de dados ler (base , altura); // processamento de dados area (base * altura) / 2; // sada de resultados escrever ("A rea do tringulo : " , area); fim_algoritmo.

42Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

5.7. Exemplos de Estrutura Seqencial em Java1. Desenvolva um algoritmo que receba trs valores numricos inteiros e mostre a soma desses trs nmeros. class Somar { public static void main (String args [ ]) { // declarao de variveis e/ou constantes int num1, num2, num3, soma; // mensagem ao usurio e entrada de dados num1 = Integer.parseInt(JOptionPane.showInputDialog( "Digite um valor inteiro")); num2 = Integer.parseInt(JOptionPane.showInputDialog( "Digite um valor inteiro")); num3 = Integer.parseInt(JOptionPane.showInputDialog( "Digite um valor inteiro")); // processamento de dados soma = num1 + num2 + num3; // sada de resultados System.out.println ("A soma dos trs valores digitados : " + soma); System.exit(0); } // fim do void main } // fim da classe Somar

2. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a mdia aritmtica dessas quatro notas. class MediaAritmetica { public static void main (String args [ ]) { // declarao de variveis e/ou constantes double n1, n2, n3, n4, media; // mensagem ao usurio e entrada de dados

43Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

n1 = Double.parseDouble(JOptionPane.showInputDialog( "Digite uma nota bimestral")); n2 = Double.parseDouble(JOptionPane.showInputDialog( "Digite uma nota bimestral")); n3 = Double.parseDouble(JOptionPane.showInputDialog( "Digite uma nota bimestral")); n4 = Double.parseDouble(JOptionPane.showInputDialog( "Digite uma nota bimestral")); // processamento de dados media = (n1 + n2 + n3 + n4) / 4; // sada de resultados System.out.println ("A mdia : " + media); System.exit(0); } // fim do void main } // fim da classe

3. Desenvolva um algoritmo que receba a base e a altura de um tringulo, calcule e mostre a rea desse tringulo. class AreaTriangulo { public static void main (String args [ ]) { // declarao de variveis e/ou constantes double base, altura, area; // mensagem ao usurio e entrada de dados base = Double.parseDouble(JOptionPane.showInputDialog( "Digite a base do tringulo")); altura = Double.parseDouble(JOptionPane.showInputDialog( "Digite altura do tringulo")); // processamento de dados area = (base * altura) / 2; // sada de resultados System.out.println ("A rea do tringulo : " + area); System.exit(0); } // fim do void main } // fim da classe main

44Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

Exerccios de Algoritmos Seqenciais01. Desenvolva um algoritmo que receba o salrio de um funcionrio, calcule e mostre seu novo salrio com reajuste de 15%. 02. Desenvolva um algoritmo que receba a base e a altura de um retngulo, calcule e mostre a rea desse retngulo. Frmula da rea de um retngulo: A = base . altura. 03. Desenvolva um algoritmo que receba uma temperatura em graus Celsius (C), calcule e mostre a temperatura convertida para graus Fahrenheit (F). Frmula de converso: F = (9.C + 160) / 5. 04. Desenvolva um algoritmo que receba uma temperatura em graus Kelvin (K), calcule e mostre a temperatura convertida para graus Celsius (C). Frmula de converso: C = K - 273. 05. Desenvolva um algoritmo que receba dois valores inteiros para as variveis x e y, efetue a troca dos valores, ou seja, x passa a ter o valor de y e y passa a ter o valor de x e mostre os valores trocados. 06. Desenvolva um algoritmo que receba os coeficientes a, b e c de uma equao de segundo grau (ax2 + bx + c), calcule e mostre as razes reais dessa equao, considerando uma equao que possui duas razes reais. 07. Desenvolva um algoritmo que receba os valores do comprimento (C), da largura (L) e da altura (H) de um paraleleppedo, calcule e mostre o volume desse paraleleppedo. Frmula do volume de um paraleleppedo: V = C . L . H. 08. Desenvolva um algoritmo que receba o salrio bruto de um funcionrio, calcule e mostre o salrio lquido desse funcionrio, sabendo que ele recebe 10% de gratificao calculados sobre o salrio bruto, mas paga 20% de imposto de renda tambm calculados sobre o salrio bruto. 09. Desenvolva um algoritmo que receba o valor de um depsito em poupana, calcule e mostre o valor aps um ms de aplicao na poupana, sabendo que a poupana rende 5% ao ms. 10. Desenvolva um algoritmo que receba um valor em Real, calcule e mostre o valor convertido para Dlar. 11. Desenvolva um algoritmo que receba um valor em Euro, calcule e mostre o valor convertido para Real. 12. Desenvolva um algoritmo que receba um valor numrico real, calcule e mostre o quadrado desse nmero. 13. Desenvolva um algoritmo que receba dois valores numrico inteiro, calcule e mostre a soma do quadrado desses dois nmeros.45Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

14. Desenvolva um algoritmo que receba dois valores numrico real, calcule e mostre o quadrado da diferena desses dois nmeros. 15. Desenvolva um algoritmo que receba o nome e o sobrenome de uma pessoa e mostre o nome inteiro dessa pessoa. 16. Desenvolva um algoritmo que receba trs valores numrico inteiro, calcule e mostre o cubo da soma desses trs nmeros. 17. Desenvolva um algoritmo que receba dois valores numrico real, calcule e mostre a diferena do cubo desses dois nmeros. 18. Desenvolva um algoritmo que receba o nome, a idade e o sexo de uma pessoa e mostre essas informaes na tela. 19. Desenvolva um algoritmo que receba o raio (R) de uma circunferncia, calcule e mostre o comprimento dessa circunferncia. Frmula do comprimento da circunferncia: C = 2 . p . R. 20. Desenvolva um algoritmo que receba o raio (R) de uma circunferncia, calcule e mostre a rea dessa circunferncia. Frmula da rea: A = p . R2. 21. Desenvolva um algoritmo que receba o ano de nascimento de uma pessoa e o ano atual, calcule e mostre a idade dessa pessoa e quantos anos essa pessoa ter daqui a 10 anos. 22. Desenvolva um algoritmo que receba o nmero de horas trabalhadas por um funcionrio e quanto esse funcionrio recebe por hora trabalhada, calcule e mostre o valor que deve ser recebido por esse funcionrio. 23. Desenvolva um algoritmo que receba uma quantidade de um alimento em quilos, calcule e mostre quantos dias durar esse alimento para uma pessoa que consome 50 gramas desse alimento por dia. 24. Desenvolva um algoritmo que receba a altura de um degrau, calcule e mostre quantos degraus uma pessoa precisa subir se deseja estar a uma altura de 5 quilmetros. 25. Desenvolva um algoritmo que receba um valor numrico inteiro, calcule e mostre qual o quociente e o resto da diviso desse nmero por 3. 26. Desenvolva um algoritmo que receba os valores dos catetos (C1, C2) de um tringulo retngulo, calcule e mostre o valor da hipotenusa (H) desse tringulo. Frmula do clculo da hipotenusa de um tringulo retngulo. H2 = C12 + C22. 27. Desenvolva um algoritmo que receba os valores de dois ngulos de um tringulo qualquer, calcule e mostre o valor do terceiro ngulo desse tringulo, sabendo que a soma dos trs ngulos de um tringulo igual a 180.46Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

28. Desenvolva um algoritmo que receba um horrio em horas, minutos e segundos, calcule e mostre este mesmo horrio convertido em minutos. 29. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa e a data atual, calcule e mostre a idade desta pessoa em anos, meses, dias e semanas. 30. Desenvolva um algoritmo que receba o valor de um produto, calcule e mostre o valor desse produto aps um desconto de 15%.

6. Estrutura de DecisoQuando desenvolvemos um algoritmo ou programa estruturado, muitas vezes, precisamos interferir no fluxo natural ou seqencial que o algoritmo deve seguir. No entanto, precisamos saber controlar qual o fluxo que o algoritmo percorre do incio at o fim de sua execuo. Para isso, utilizaremos os fluxos de controle, por exemplo, estrutura de deciso e estrutura de repetio. Uma estrutura de deciso um fluxo de controle utilizado para decidir qual o fluxo que o algoritmo seguir. Uma estrutura de deciso determina qual conjunto de comandos ou bloco ser executado aps uma condio ser avaliada. Essa condio representada por expresses lgicas e relacionais que podem ou no serem satisfeitas, isto , podem retornar ao valor verdadeiro ou falso. Uma estrutura de deciso pode ser simples, composta ou encadeada. Veremos a seguir como e quando trabalhar com cada uma delas.

6.1. Estrutura de Deciso Simples (se/ento)Uma estrutura de deciso simples pode ser utilizada quando o algoritmo precisa testar determinada condio antes de executar um conjunto de comandos. Nesse caso, uma condio avaliada e, se seu resultado for verdadeiro, o conjunto de comandos dentro da estrutura de deciso simples se/ento executado. Por outro lado, se o resultado da avaliao for falso, esse conjunto de comandos no far parte do fluxo de execuo do algoritmo.

Pseudocdigo

Na estrutura de deciso simples, utilizaremos as palavras se e ento que representam as palavras principais dessa estrutura e a palavra fimse; para determinar o fim do bloco de execuo dessa estrutura. A estrutura de deciso simples para pseudocdigo segue a seguinte regra sinttica:

47Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SI Algoritmos Semestre I

se () ento ; fimse; Por exemplo: se (var < 0) ento escrever(O nmero , var , negativo); fimse; Nesse exemplo, a varivel var possui um valor numrico e vai passar por uma avaliao, ou seja, a expresso var