You are on page 1of 125

Técnicas de Programação I

Prof. João Roberto Cruz
1º Semestre / 2012

Técnicas de Programação I
Conteúdo Programático:
Unidade 1: Introdução à Algoritmos e Linguagens de Programação Unidade 2: Conceitos Introdutórios de Programação em Linguagem Java Unidade 3: Estrutura de Seleção Unidade 4: Estrutura de Repetição Unidade 5: Funções e Recursividade

1

Técnicas de Programação I
BIBLIOGRAFIAS
BÁSÍCA 1. Puga, Sandra; Rissetti, Gerson. LÓGICA DE PROGRAMAÇÃO E ESTRUTURAS DE DADOS: COM APLICAÇÕES EM JAVA. 2ª. São Paulo: Pearson Education, 2009. 2. Deitel, H. M. & Deitel, P. J. JAVA: COMO PROGRAMAR. 8ª. Ed. São Paulo: Pearson Prentice-Hall, 2010. 3. Goodrich, Michael T.; Tamassia, Robert. ESTRUTURAS DE DADOS E ALGORITMOS EM JAVA. 4.Ed. Porto Alegre: Bookman, 2007. 600p. COMPLEMENTAR 1. Souza, Marco Antonio Furlan; Gomes, Marcelo Marques; Soares, Marcio Vieira; Concilio, Ricardo. ALGORITMOS E LÓGICA DE PROGRAMAÇÃO. São Paulo: Thomson, 2005. 214p. 2. Lafore, Robert. ESTRUTURAS DE DADOS E ALGORITMOS EM JAVA. Rio de Janeiro: Ciência Moderna, 2004. 702p.

Técnicas de Programação I
Unidade 1: Introdução à Algoritmos e Linguagens de Programação
1.1 1.2 1.3 1.4 Introdução à Organização de Computadores Algoritmos, estrutura de dados e programas Função dos Algoritmos na Computação Exemplos informais de algoritmos 1.4.1 – Torre de Hanoi 1.4.2 – Três Jesuítas e três canibais 1.4.3 – Exemplos do cotidiano 1.5 – Notações gráficas e descritivas de algoritmos – – – –

2

Técnicas de Programação I
Unidade 1: Introdução à Algoritmos e Linguagens de Programação
1.6 – Paradigmas de linguagens de programação 1.7 – Processos de Tradução

Técnicas de Programação I
1.1 – Introdução à Organização de Computadores "Os computadores são como automóveis. Você não precisa saber detalhes do seu funcionamento para utilizá-los, mas algum conhecimento ajuda. As pessoas inteligentes sabem selecionar o carro certo - ou componentes de hardware certo - para suas necessidades".(Meyer, 2000, p. 53)

3

Saída.Técnicas de Programação I Funcionamento básico dos sistemas de computação (a) (b) (c) (d) Os computadores executam quatro funções distintas sendo elas: Entrada. Armazenamento/recuperação de dados. Processamento. Técnicas de Programação I Componentes básicos de um sistema de computação Periféricos de entrada Unidade de Processamento CPU Periféricos de saída Dispositivos de armazenamento memória 4 .

entre outras.Os dados produzidos na saída correspondem a execução de instruções (comandos) durante a etapa de processamento. somar. por exemplo. Cada processador tem um conjunto único de instruções para processar os dados. realizada pela CPU (Unidade Central de Processamento processador). 5 . Os “operandos” fornecem os dados a serem utilizados na operação ou ainda a forma de alcançar a posição destes dados na memória. Técnicas de Programação I OPERAÇÃO OPERANDOS INSTRUÇÃO (COMANDO) A “operação” especifica a função a ser desempenhada. porém geralmente utilizam a mesma forma de composição das instruções. armazenar ou desviar.Técnicas de Programação I .

cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita. um programa de computador.Um Algoritmo tem um caráter imperativo no qual a ocorrência do nome de uma ação também é chamada de comando. Um algoritmo não representa. .Algoritmo é uma seqüência finita de instruções (comandos) bem definidas e não ambíguas.Em outras palavras. estrutura de dados e programas . um algoritmo é uma norma executável para atingir um certo efeito desejado (obter uma solução para certo tipo de problema). e sim os passos necessários para realizar uma tarefa.2 – Algoritmos.Técnicas de Programação I 1. 6 . Técnicas de Programação I . necessariamente.

ou seja. os algoritmos representam a lógica dos programas e são codificados em instruções (comandos) pertencentes a uma determinada linguagem de programação” 7 .Um algoritmo DEVE ser determinístico.Exemplos de algoritmos (na vida prática): Manuais de uso Instruções de montagem Receitas de cozinha Informações de como chegar a um lugar . depois de executado. Técnicas de Programação I “Em computação. dadas as mesmas condições iniciais deve produzir. os mesmos resultados.Técnicas de Programação I .

E se algumas vezes ele colocar um avental após buscar a panela e antes de descascar as batatas? Técnicas de Programação I 2) Inserção de Comandos: “Trazer a cesta de batatas da despensa”. “Colocar o avental”. “Descascar batatas”. “Devolver a cesta à despensa”. “Trazer a panela do armário”.E se a colocação do avental só ocorrer quando o cozinheiro estiver de roupa branca? 8 .Técnicas de Programação I Exemplo de Algoritmo usado por um cozinheiro para “descascar batatas para o jantar”: 1) Seqüência Simples de Comandos: “Trazer a cesta de batatas da despensa”. . . “Descascar batatas”. “Trazer a panela do armário”. “Devolver a cesta à despensa”.

.. . é difícil sabermos determinar se o número de batatas escolhido (nº de repetições de “Descascar.Precisamos então introduzir outro tipo de comando: 9 .”) foi suficiente para o jantar. “Trazer a panela do armário”. em cada vez que o algoritmo é executado. “Trazer a panela do armário”. “Devolver a cesta à despensa”.A execução da ação “colocar avental” depende. SE “roupa é branca” ENTÃO “Colocar o avental”. SE “roupa é branca” ENTÃO “Colocar o avental”.Podemos ver ainda que. “Devolver a cesta à despensa”. 10 “Descascar batatas”. “Descascar batatas”.. . do resultado (verdadeiro ou falso) da inspeção “se a roupa é branca”. desta forma.E se em um dia o cozinheiro tiver que descascar 10 quantidades batatas? Técnicas de Programação I 4) Conectivo Repetitivo: “Trazer a cesta de batatas da despensa”. .Técnicas de Programação I 3) Conectivo Condicional: “Trazer a cesta de batatas da despensa”.

pode-se solucionar de forma simples problemas extremamente complexos. Um texto estático. “Devolver a cesta à despensa”. escrito no mesmo nível de detalhes do relato de um observador.Com isto vemos o poder do conceito de algoritmo. capaz de cobrir toda uma classe de acontecimentos.De acordo com o modo como um conjunto de dados são organizados e como as operações que são efetuadas sobre estes dados. SE “roupa é branca” ENTÃO “Colocar o avental” ENQUANTO “número de batatas é insuficiente” FAÇA “Descascar batatas”. “Trazer a panela do armário”. .Estruturas de dados (Data Structures) é o nome dado a organização de dados e algoritmos de forma coerente e racional de modo a otimizar o seu uso.Técnicas de Programação I 5) Conectivo Repetitivo Condicional: “Trazer a cesta de batatas da despensa”. 10 . . Técnicas de Programação I .

Listas. Vetores ou arrays. Pilhas. Filas.Estruturas de dados clássicas: Tipo de dados. Técnicas de Programação I . Classificação de Dados. Árvores. 11 .Técnicas de Programação I . Grafos. Pesquisa de dados.Uma estrutura de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente. .Dados quando estão organizados de uma forma coerente representam uma estrutura de dados.

em contraposição ao termo "hardware". mais freqüentemente. escrito em alguma linguagem de programação.Um programa de computador é a formalização de um algoritmo em qualquer linguagem capaz de ser transformada em instruções que serão executadas por um computador gerando os resultados esperados Técnicas de Programação I . 12 . O termo pode ser uma referência ao código fonte. quando é feita uma referência à parte não física do sistema computacional. .O termo "software" pode ser utilizado quando se quer designar um conjunto de programas ou. que designa o conjunto de componentes eletrônicos que constituem um computador.Um programa de computador é uma coleção de instruções que descrevem uma tarefa a ser realizada por um computador. ou ao arquivo que contém a forma executável deste código fonte.Técnicas de Programação I .

13 . até a documentação das operações necessárias à elaboração de soluções voltadas para a construção de interface entre software e hardware. como os sistemas operacionais.3 – Função dos Algoritmos na Computação . Os programas voltados para dar suporte funcional aos computadores. são chamados de software aplicativo. ou de aplicação.Técnicas de Programação I . programas e demais aplicativos. são chamados de software de sistema. desde de a definição das instruções realizadas pelo hardware – processadores e demais dispositivos. passando pelas operações executadas pelo sistema operacional.Os algoritmos são amplamente utilizados na área da ciência da computação. no gerenciamento dos computadores.Os programas de computador utilizados diretamente por pessoas comuns. Técnicas de Programação I 1. como os editores de texto.

Brasil é um país do planeta Terra 2. Todo cavalo é um mamífero 3. Portanto.Técnicas de Programação I 1. todos os Brasileiros são Terráqueos 14 . Todos os Brasileiros são do Brasil 3. todo cavalo é um animal Exemplo2: 1.Permite chegar a determinadas conclusões .O que é Lógica? Exemplo1: 1. Logo.Organização do pensamento de forma coerente . Todo mamífero é um animal 2.Permite escolher problemas conhecidos caminhos para resolver Técnicas de Programação I .4 – Introdução à Lógica O que é Lógica? .

2. Hoje é sábado Todo sábado que não tem feriado tem aula Hoje não é feriado: Logo. hoje tem aula Técnicas de Programação I . 3. 3. 4.Técnicas de Programação I . 2. 4. quando Alexandre ronca? 15 . Alexandre só ronca quando bebe Alexandre só bebe quando sai Alexandre sai todos os dias Portanto.Lógica no cotidiano Exemplo1: 1.O que é Lógica? Exemplo3: 1.

Técnicas de Programação I .Lógica no cotidiano Exercício: Três jesuítas e três canibais precisam atravessar um rio. Por medida de segurança não se deve permitir que em nenhuma margem a quantidade de jesuítas seja inferior à de canibais. considerando que o barco não pode navegar vazio? 16 . Alexandre só ronca quando bebe 2. Portanto. Alexandre só bebe quando sai 3. Qual a solução para efetuar a travessia com segurança. para tal dispõem de um barco com capacidade para duas pessoas.Lógica no cotidiano Exemplo1: 1. quando Alexandre ronca? R: Todos os dias Técnicas de Programação I . Alexandre sai todos os dias 4.

O problema é que ele só pode transportar uma coisa de cada vez no seu pequeno barco. que são dois fardos de capim e um carneiro. se ele deixar o carneiro e o capim juntos. o carneiro vai comer o capim. 06. 08. 03. 04. 05. Como fazer então para que ele leve sua carga para a outra margem sem prejuízo algum? 17 . 02. 11. 10. 07.Técnicas de Programação I .Lógica no cotidiano Resposta: 01. Pior ainda. 09. Atravessar um jesuíta e um canibal para a margem B Voltar o jesuíta para a margem A Atravessar dois canibais para a margem B Voltar um canibal para a margem A Atravessar dois jesuítas para a margem B Voltar um jesuíta e um canibal para a margem A Atravessar dois jesuítas para a margem B Voltar um canibal para a margem A Atravessar dois canibais para a margem B Voltar um canibal para a margem A Atravessar dois canibais para a margem B Técnicas de Programação I .Lógica no cotidiano Exercício: Um agricultor precisa atravessar o rio para transportar sua carga.

Ele então deixa lá um fardo e traz o carneiro de volta. lá onde está o carneiro no momento. Ele vai levar um fardo para a margem de destino. Então.Lógica no cotidiano Resposta: Primeiro vai levar o carneiro para a outra margem e deixará na margem de origem. Em seguida ele voltará e vai pegar um fardo de capim.Lógica no cotidiano Exercício: Torre de Hanói. os dois fardos de capim. Mover os três discos de uma haste para outra. ele deixa o carneiro sozinho na margem de origem e leva o outro fardo de capim para a margem de destino. Técnicas de Programação I .Técnicas de Programação I . nunca pode ser colocado um disco maior sobre um menor 18 . considerando as seguintes regras: pode-se mover apenas um disco de cada vez. Finalmente ele volta e leva o carneiro.

Deve ser o mais simples. claro e preciso possível 19 .Lógica no cotidiano Exercício: Torre de Hanói (Solução) Técnicas de Programação I Resumo de Algoritmo . para resolução de um problema conhecido . logicamente organizados.Seqüência finita de passos.Visa a atingir um objetivo bem definido .Técnicas de Programação I .

posicionar a escada embaixo da lâmpada. posicionar a escada embaixo da lâmpada.Algoritmo 1: Troca de Lâmpada 1. Técnicas de Programação I . subir na escada. 7. então 6. 4. pegar uma escada. 6. 5. 5. 8. retirar a lâmpada velha. retirar a lâmpada queimada. colocar a lâmpada nova.Técnicas de Programação I . subir na escada. buscar uma lâmpada nova. 2. 3. 20 . colocar a lâmpada nova.Algoritmo 2: Troca de Lâmpada com teste 1. buscar uma lâmpada nova. 3. 2. pegar uma escada. se a lâmpada não acender. acionar o interruptor. 4.

então 14. posicionar a escada embaixo da lâmpada. se a lâmpada não acender. colocar outra lâmpada nova. 12.Algoritmo 3: Troca de Lâmpada com teste no início 1. 04. subir na escada. pegar uma escada.Algoritmo 4: Troca de Lâmpada com teste e repetição indefinida 01. acionar o interruptor. posicionar a escada embaixo da lâmpada. 13. colocar a lâmpada nova. acionar o interruptor. retirar a lâmpada queimada. 07. 06. colocar a lâmpada nova. 4. 05. se a lâmpada não acender. 8. colocar outra lâmpada nova. então 3. buscar uma lâmpada nova. retirar a lâmpada queimada. 16. 15. 10. 09. 6. retirar a lâmpada queimada. 7. retirar a lâmpada queimada. 5. buscar uma lâmpada nova. se a lâmpada não acender. se a lâmpada não acender. 2. 08. 02.Técnicas de Programação I . então 17. então 03. se a lâmpada não acender. colocar outra lâmpada nova. acionar o interruptor. Até quando? 21 . então 11. retirar a lâmpada queimada. Técnicas de Programação I . pegar uma escada. subir na escada. 18.

11.Algoritmo 6: Troca de Lâmpada com teste para 10 soquetes 01. buscar uma lâmpada nova. 04.. se a lâmpada não acender. se a lâmpada não acender. colocar uma lâmpada nova. então 03. 11. retirar a lâmpada queimada..Algoritmo 5: Troca de Lâmpada com teste e condição de parada 01. retirar a lâmpada queimada. 04. retirar a lâmpada queimada. 08. buscar uma lâmpada nova. 13. Técnicas de Programação I . colocar uma lâmpada nova. (. posicionar a escada embaixo da lâmpada. retirar a lâmpada queimada. enquanto a lâmpada não acender.Técnicas de Programação I . subir na escada. 12.) Repetir para todos os soquetes. 02. 02. pegar uma escada. 17. 12. 06. subir na escada. faça 10. pegar uma escada. acionar o interruptor. pegar uma escada. 22 . 05. 05. 07. 09. posicionar a escada embaixo da lâmpada. colocar uma lâmpada nova. acionar o interruptor do 1º soquete. 06. 14. 16. colocar uma lâmpada nova. enquanto a lâmpada não acender. 07. faça 10.. então 15. 08. acionar o interruptor. acionar o interruptor do 2º soquete. posicionar a escada embaixo da lâmpada. então 03.. se a lâmpada não acender. acionar o interruptor do 1º soquete. 09.

colocar uma lâmpada nova.2 Descrição Narrativa 1.6. 07. retirar a lâmpada queimada. colocar uma lâmpada nova. retirar a lâmpada queimada.3 Fluxograma 1. enquanto a lâmpada não acender.Algoritmo 7: Troca de Lâmpada com teste para 10 soquetes e repetição 01. buscar uma lâmpada nova.Técnicas de Programação I .6 – Tipos de Algoritmos 1. 10. ir até o painel de interruptores.6.6. acionar o interruptor. 06. faça 03. Enquanto soquete menor ou igual a dez. 08. 13. 09. 14. se a lâmpada não acender. 04. posicionar a escada embaixo da lâmpada. acionar o interruptor do próximo soquete. 11. Técnicas de Programação I 1. subir na escada. 02.6.1 Pseudocódigo ou Português Estruturado 1. então 05. faça 12.4 Diagrama diagrama N-S de Chapin Nassi-Shneiderman ou 23 . pegar uma escada.

media: real inicio Leia(x) Leia(y) media ← (x+y)/2 escreva(media) fimalgoritmo 24 . .Desvantagem: Necessário aprender regras (linguagem de Técnicas de Programação I 1.1 .y.Pseudocódigo ou Português Estruturado .Pseudocódigo ou Português Estruturado .6.Vantagem: Transcrição para programa computador) é praticamente imediata.6.1 .Técnicas de Programação I 1.Exemplo: Ler dois números e calcular a média algoritmo “Media” var x.

3.Utiliza linguagem natural .Vantagem: Não é necessário aprender nenhum conceito novo . 2.6. 2.6.Técnicas de Programação I 1.Ler dois números e calcular a média 1.2 Descrição Narrativa . dificultando Técnicas de Programação I 1. Ler o primeiro número Ler o segundo número Calcular a média entre os dois números Mostrar o resultado da média 25 .2 Descrição Narrativo (Exemplo) .Desvantagem: Permite transcrição para programa várias interpretações.

Vantagem: Entendimento de gráficos é mais fácil que de textos .3 Fluxograma .6.3 Fluxograma (Síbolos) Representa o início ou fim do fluxograma Processamento Entrada de dados Saída de dados Decisão Preparação (usado em repetições) Conector (interliga partes do fluxograma ou desvia o fluxo) Conector de página Seta de orientação do fluxo 26 .Desvantagem: Necessário aprender simbologia e não apresenta detalhes para transcrever para programa Técnicas de Programação I 1.6.Utiliza elementos gráficos .Técnicas de Programação I 1.

Apresenta a solução do problema por meio de um diagrama de quadros com uma visão hierárquica e estruturada .6.Vantagem: Visão hierárquica .Ler dois números e calcular a média início Ler x.Técnicas de Programação I 1.4 Diagrama diagrama N-S de Chapin ou Nassi-Shneiderman ou .6.3 Fluxograma (Exemplo) .Desvantagem: Difícil representar a recursividade 27 .y M = (x + y) / 2 M fim Técnicas de Programação I 1.

4 Diagrama de Chapin diagrama N-S (Exemplo) ou Nassi-Shneiderman ou Técnicas de Programação I O que é Programação? = ABSTRAÇÃO! A realidade é complexa e rica em detalhes! 28 .6.Técnicas de Programação I 1.

Técnicas de Programação I Abstração Realidade O que você abstrai dessa realidade? Técnicas de Programação I Abstração O que é abstração? 29 .

Técnicas de Programação I Abstração Abstração = Operação mental que observa a realidade e captura apenas os aspectos relevantes para um contexto Técnicas de Programação I 30 .

Técnicas de Programação I Técnicas de Programação I 31 .

Técnicas de Programação I MASLOW Técnicas de Programação I  A tarefa de programar sistemas computacionais envolve o exercício constante da abstração da realidade e sua codificação em uma linguagem de programação Abstração Realidade Abstração + Programação Sistema de Locadora de Veículo 32 .

Técnicas de Programação I Sistema Computacional

O que é um Sistema Computacional?

Técnicas de Programação I

Sistema Computacional
Software Hardware

Peopleware

33

Técnicas de Programação I Programação de Sistema Computacional

A programação de um sistema computacional pode ser resumida em 3 passos básicos
Entrada Dispositivo de Entrada Processamento Saída Dispositivo de Saída

UCP Memória

Técnicas de Programação I Programação de Sistema Computacional
Exemplo 1 – Exibir a média de dois números
Entrada Dispositivo de Entrada Processamento Saída Dispositivo de Saída

UCP Memória

6,8

(6 + 8) / 2

7

34

Técnicas de Programação I Programação de Sistema Computacional
Exemplo 2 – Exibir se o aluno está aprovado ou reprovado
Entrada Dispositivo de Entrada Processamento Saída Dispositivo de Saída

UCP Memória

Ana, 5, 3

Se (5+3)/2>=7 aprovado Senão reprovado

Ana, reprovado

Técnicas de Programação I

Algoritmo
Linguagem de computação

Programa

35

produzem a solução para o problema Descrição desse conjunto de ações ALGORITMO Levantamento Resolução de Problema • • Codificação (uso de uma linguagem de programação) Programação 36 .Técnicas de Programação I Princípios da solução de problemas Problema 1 Fase de resolução do problema Solução na forma de algoritmo Solução como um programa de computador 2 codificação) do algoritmo em alguma linguagem de programação Fase de implementação (ou Técnicas de Programação I Princípios da solução do problemas • • Compreensão do problema Criação de uma seqüência de operações (ou ações) que. quando executadas.

em caso de manutenção. no cabeçalho do algoritmo. é um programa com comentários errados. • não dar margem à dupla interpretação (não ambíguo). principalmente: • descrição do que faz o algoritmo • autor • data de criação 37 . 2. Saber que estes serão lidos por outras pessoas. também. Escrever comentários na sua elaboração. Técnicas de Programação I Algoritmo x Qualidade • • Todo algoritmo deve ser feito de maneira lógica e racional. Ao construir algoritmos devemos: 1. • capacidade de receber dado(s) de entrada do mundo exterior. Sempre atualizar os comentários. • poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo. • ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito). permitindo sua fácil correção. incluindo. Pior do que um programa sem comentários. 3. Use comentários. visando principalmente a sua eficiência e clareza. não apenas frasear.Técnicas de Programação I Revendo Características de Algoritmo • Todo algoritmo deve apresentar algumas características básicas: • ter fim. 4. onde os mesmos devem acrescentar alguma coisa.

os comentários dizem o porquê. 8. 7. todavia evite nomes muito longos ou muito curtos. Use identação nos comandos de acordo com o nível que estejam. Os comandos nos dizem o que está sendo feito. Utilizar espaços e/ou linhas em branco para melhorar a legibilidade.Um comando por linha é suficiente. 6. ou seja. fim-se comando6. Escolha nomes representativos para variáveis. Uso de parênteses aumenta a legibilidade e previne erros.: início comando 1. Ex.Utilize identação. alinhe comandos de mesmo nível e desloque comandos de nível inferior. se condicao1 então comando2. senão comando4. comando3. pois mostra a estrutura lógica do algoritmo. Ex: • Prefira SalBruto ou SalarioBruto ao invés de SB ou VAR1 • Prefira TotAlunosAprovDireta ao invés de TotalAlunosAprovacaoDireta Técnicas de Programação I Algoritmo x Qualidade 10.Técnicas de Programação I Algoritmo x Qualidade 5. comando5. 11. fim 38 .

• Técnicas de Programação I Método Cartesiano • • Deve-se utilizar o Método Cartesiano quando a complexidade (variedade) não estiver totalmente absorvida. pois. conhecida. • Aplicar o Planejamento Reverso. aplicar a ela o método. Nosso principal objetivo enquanto programadores é vencer a complexidade. • Analisar a divisão obtida para garantir coerência. que se torna.Técnicas de Programação I Método para construção de algoritmos • • • • • • Ler atentamente o enunciado. Determinar o que deve ser feito para transformar as entradas determinadas nas saídas específicas. Retirar do enunciado a relação das entradas de dados. • Analisar o objeto para garantir entendimento e coerência. portanto. podemos: • Utilizar o Método Cartesiano. a partir de alguns requisitos especificados. • • Este método consiste justamente em atacar o problema abrangente dividindo-o em partes menores. se necessário. dependente de sua completa compreensão. 39 . • Se alguma parte não for bem compreendida. Podemos esquematizar o seguinte procedimento (algoritmo) para o método: • Dividir o problema em suas partes principais. É justamente o enunciado do exercício que fornece o encaminhamento necessário à resolução do problema. a fim de torná-lo mais simples ou específico e. devemos determinar qual a seqüência de ações é capaz de transformar um conjunto definido de dados nas informações de resultado. Nesta fase é que determinamos a construção de algoritmos propriamente dito. • Montar uma Tabela de Decisão. Retirar do enunciado a relação das saídas de dados. dividir novamente as partes não compreendidas. o que mantém célebre a frase de Descartes “Dividir para Conquistar”. Para isso.

Técnicas de Programação I Planejamento Reverso • • • Processo utilizado que. Procura desagregar. a fim de esclarecer e visualizar facilmente quais valores o conjunto de condições deve assumir para que se efetue sua respectiva ação. Objetiva basicamente relacionar as ações que dependem de alguma condição com as próprias condições. detectando então algum possível erro no desenvolvimento deste. verificando se os resultados obtidos correspondem ao esperado quando da montagem do algoritmo. Técnicas de Programação I Tabelas de Decisão • • • • • • Utilizar quando uma ou mais ações dependentes de um conjunto de condições assumirem determinadas combinações de valores. desmontando a informação. Essa atividade é conhecida por “teste de mesa”. a partir das saídas (informações de resultado). a fim de atingir os dados de entrada Quando então teríamos (do fim para o início) todas as ações. Executar o algoritmo. Construir o algoritmo. Implica executar todas as ações descritas seguindo o fluxo de execução estabelecido. 40 .

O nosso computador hipotético apresentará a seguinte organização: 41 .Técnicas de Programação I Exemplo algoritmo "primeiro" // Síntese // Objetivo: analisar idade de uma pessoa // Entrada: idade // Saída: mensagem de velho ou jovem // Declarações bloco de var declarações idade : inteiro inicio escreva("Informe sua idade: ") leia (idade) se (idade < 25) entao escreva ("VOCE É JOVEM!") senao escreva ("VOCE É VELHO!") fimse fimalgoritmo Síntese do problema bloco de instruções Técnicas de Programação I Um ambiente para escrever algoritmos Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos.

podemos afirmar que existem 4 operações básicas que qualquer computador pode executar: a) operações de entrada e saída: ler dados do teclado e escrever dados na tela são exemplos destas operações. independentemente dos seus tamanhos.Técnicas de Programação I Um ambiente para escrever algoritmos .Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. 42 . Resumidamente. Dispositivo de Saída (vídeo e impressora): Técnicas de Programação I Funcionamento do nosso computador Todos os computadores. Memória: .É o meio que se dispõe para apresentação dos resultados obtidos. b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição. necessitando da transferência dos dados para essa unidade e da volta do resultado final para ser guardado na memória. subtração.É o meio pelo qual os dados que serão trabalhados pelo algoritmo vão ser introduzidos em nosso computador hipotético. são conceitualmente semelhantes ao esquema da figura anterior. 5. Dispositivo de entrada (o teclado): 2. . Elas servem para introduzir dados na memória do nosso computador e exibir dados que já estejam lá armazenados. É uma verdadeira gerente que distribui tarefas às outras unidades. multiplicação e divisão). testes de condições lógicas (2>6 ? X=Y ?). .Cada uma das partes constituintes da figura acima tem os seguintes significados: . 1.Exerce controle sobre as demais partes do nosso computador. Unidade de Controle: 4. Unidade Lógica e Aritmética (ULA): 3. Todo dado fornecido ao computador e o resultado de suas operações ficam guardados na memória. -Parte responsável pelas operações matemáticas e avaliações lógicas. c) operações lógicas e relacionais: têm aplicabilidade em comparações. d) movimentação de dados entre os vários componentes: as operações aritméticas são executadas na Unidade Lógica e Aritmética.

seria bem provável que utilizasse os passos a seguir: a) saber quais são os números. que está guardado na memória. calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa tarefa. b) calcular a soma dos números. normalmente. b3) movimentação do resultado da ULA para guardar na memória. b1) movimento do valor dos números entre a memória e a ULA. b2) operação aritmética de somar os 2 números. para o dispositivo de saída desejado. c) operação de saída do resultado. Técnicas de Programação I Resolvendo um problema • Vejamos como seria resolvido esse mesmo problema em termos das operações básicas citadas anteriormente: a) operação de entrada de dados dos números . • Deve-se salientar que os passos b1 à b3. c) responder à questão com o valor do resultado. 43 . ficam embutidos na operação matemática.Técnicas de Programação I Resolvendo um problema • • Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão informados. não sendo explicitados.

fimalgoritmo 44 .Técnicas de Programação I Resolvendo um problema • • • • • Em resumo.y) soma <. está em uma linguagem de baixo nível para o nosso computador hipotético. para resolver o problema de adicionar dois números. em última análise. programar consiste em dividir qualquer problema em muitos pequenos passos. usando uma ou mais das quatro operações básicas citadas. dada anteriormente. Em uma linguagem de alto nível teríamos um resultado assim: leia (x. Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível). Esses passos que compõem o algoritmo são denominados de comandos. pode-se dizer que escrever algoritmos ou.. A seqüência de operações básicas. inicio .x + y escreva(soma) Técnicas de Programação I Instruções Delimitadoras Servem para especificar o início e o fim do algoritmo..

cadeia.lista de nomes de variáveis separados por vírgula <tipo> .c: real nome: cadeia (caractere) sexo: caractere pratica_esporte: lógico 45 . lógico Técnicas de Programação I Declaração de Variáveis Exemplos: var var var var a.b. real.Técnicas de Programação I Declaração de Variáveis Utilizado para especificar os nomes e os respectivos tipos das variáveis necessárias no algoritmo var <variáveis>: <tipo> onde: <variáveis> .inteiro. caracter.

// <comentário> Exemplo: // Isto é um exemplo de comentário Técnicas de Programação I Instrução de Entrada Usada para ler dados de entrada do algoritmo. para torna-lo mais claro.Técnicas de Programação I Bloco de Comentário Serve para explicar um determinado trecho do algoritmo. leia(<variáveis>) onde: <variáveis> . facilitando seu entendimento por outras pessoas ou posteriormente. 46 .conterão os dados lidos.

47 .b.c) leia(nome) leia(sexo) leia(pratica_esporte) Técnicas de Programação I Instrução de Saída Usada para mostrar os resultados do processamento dos dados de entrada. escreva(<resultados>) onde: <resultados> .geralmente é o conteúdo de uma ou mais variáveis com a resposta do problema.Técnicas de Programação I Instrução de Entrada Exemplos: leia(a.

sexo) escreva(“Pratica esporte. <variável> <.<expressão> onde: <variável> . 48 .Técnicas de Programação I Instrução de Saída Exemplos: escreva(“O valor de D é: ” + D) escreva(nome.um valor do mesmo tipo da variável ou uma expressão lógica ou aritmética.nome de uma variável <expressão> .”) Técnicas de Programação I Instrução de Atribuição Utilizado para atribuir um determinado valor a uma variável.

TRUE (verdadeiro) sexo <.‘M’ Técnicas de Programação I Estruturas chaves da construção de algoritmos • Existem 3 estruturas básicas de controle nas quais se baseiam os algoritmos: • Sequenciação • Decisão ou seleção • Repetição ou iteração 49 .“Paulo” Pratica_Esporte <.b^2-4*a*c nome <.Técnicas de Programação I Instrução de Atribuição Exemplos d <.

Técnicas de Programação I Seqüenciação • • Os comandos do algoritmo fazem parte de uma seqüência. estritamente. o comando de ordem i+1 só será executado após a execução do de ordem i (o 3 só será executado após o 2). onde é relevante a ordem na qual se encontram os mesmos. Todo algoritmo é uma seqüência. pois serão executados um de cada vez. poderíamos expressar uma seqüência da seguinte maneira: Comando-1 Comando-2 Comando-3 : Comando-n • • Tem-se uma seqüenciação de n comandos na qual os comandos serão executados na ordem em que aparecem. isto é. De uma forma genérica. A seqüenciação é aplicada quando a solução do problema pode ser decomposta em passos individuais. de acordo com essa ordem. Técnicas de Programação I Seqüenciação AÇÃO A AÇÃO B 50 .

teremos a execução da <seq."Cunha" nome <."Joao" nome2 <. Caso contrário (senão). estamos sempre tomando decisões."d" letra2 <." " letra1 <.nome1 + espaco + letra1 + letra2 + espaco + nome2 escreva(nome) fimalgoritmo Técnicas de Programação I Decisão ou Seleção • • • • • • Essa estrutura também é conhecida por estrutura condicional. de comandos-2>.Técnicas de Programação I Seqüenciação Exemplo: algorítmo “Concatena” var // Declaração de variáveis letra1. A decisão deve ser sempre usada quando há a necessidade de testar alguma condição e em função da mesma tomar uma atitude. Em nosso dia-a-dia. Há a subordinação da execução de um ou mais comandos à veracidade de uma condição. de comandos-1> senao <seq. 51 . em caso contrário. de comandos-2> fimse Se a <condição> for verdadeira será executado a <seq. Vejamos o funcionamento: se <condição> entao <seq. nome2. nome : caractere inicio espaco <. letra2."a" nome1 <. de comandos-1> e. vou comer um sanduíche na lanchonete da esquina. então vou almoçar em um bom restaurante. espaco : caractere nome1. vejamos um exemplo: Se tiver dinheiro suficiente.

Técnicas de Programação I Decisão ou Seleção CONDIÇÃO AÇÃO A AÇÃO B Técnicas de Programação I Decisão ou Seleção Exemplo: algorítmo “MaioNumero” // Declaração de variáveis var A : inteiro B : inteiro inicio leia(A) leia(B) se A = B entao escreva(“A e B iguais”) senao se A > B entao escreva(“A é maior”) senao escreva(“B é maior”) fimse fimse fimalgoritmo 52 .

A utilização combinada dessas 3 estruturas descritas vai permitir expressar a solução para uma gama muito grande de problemas. Vejamos alguns exemplos: a) vou atirar pedras na vidraça até quebrá-la. Todas as linguagens de programação oferecem representantes dessas estruturas. c) enquanto tiver saúde e dinheiro. vou desfrutar a vida. haverá a repetição da atitude de bater um pênalti um número determinado de vezes (cinco).Técnicas de Programação I Repetição ou Iteração • • • • • • • • Essa estrutura também é conhecida por “looping” ou laço. b) baterei cinco pênaltis. No exemplo (b). vai-se repetir a ação de atirar pedras na janela até que seja satisfeita a condição de quebrar a janela. a condição que me permitirá continuar desfrutando a vida é ter dinheiro e saúde. No exemplo (a). Técnicas de Programação I Repetição ou Iteração ESTRUTURA ENQUANTO-FAÇA ESTRUTURA REPITA-ATÉ ESTRUTURA PARA F CONTADOR loop AÇÃO V 53 . A repetição permite que tarefas individuais sejam repetidas um número determinado de vezes ou tantas vezes quantas uma condição lógica permita. No exemplo (c).

1 fimenquanto fimalgoritmo Técnicas de Programação I Repetição ou Iteração Exemplo Repita-Até: algorítmo “ExemploRepitaAte” // Declaração de variáveis var A : inteiro B : inteiro inicio leia(A) // Executa a leitura de “A” vezes um numero via teclado repita leia(B) escreva(B) A <.A .A .Técnicas de Programação I Repetição ou Iteração Exemplo Enquanto-Faça: algorítmo “ExemploEmquantoFaca” // Declaração de variáveis var A : inteiro B : inteiro inicio leia(A) enquanto A > 0 faca leia(B) escreva(B) A <.1 ate A < 1 fimalgoritmo 54 .

e assim sucessivamente. o algoritmo para calcular a média aritmética de dois números pode ser escrito da seguinte forma: algoritmo “CalculaMedia” inicio Receba os dois números Calcule a média dos dois números Exiba o resultado fimalgoritmo 55 . Num algoritmo. um comando que não for do entendimento do destinatário terá que ser desdobrado em novos comandos.Técnicas de Programação I Repetição ou Iteração Exemplo Para: algorítmo “ExemploPara” // Declaração de variáveis var A : inteiro B : inteiro i : inteiro inicio // Mostra o dobro de dez números fornecidos para i = 1 ate 10 faca leia(A) B <. que constituirão um refinamento do comando inicial. até que os comandos sejam entendidos pelo destinatário. Por exemplo.A * 2 escreva(B) fimpara fimalgoritmo Técnicas de Programação I Refinamentos sucessivos • • • Um algoritmo é considerado completo se os seus comandos forem do entendimento do seu destinatário.

ou não seja capaz de entender diretamente algum comando.Técnicas de Programação I Refinamentos sucessivos • • Podemos desdobrar o comando “Calcule a média dos dois números” em: Soma os dois números Divida o resultado por 2 Após esse refinamento. obtém-se: algoritmo “CalculaMedia” inicio Receba os dois números Soma os dois números Divida o resultado por 2 Exiba o resultado fimalgoritmo 56 . Assim sendo. a menos que o destinatário não saiba fazer as operações de adição e divisão. podemos reescrevê-lo. inserindo o refinamento na posição do comando que foi refinado. Técnicas de Programação I Refinamentos sucessivos • • O algoritmo estando completo. o algoritmo pode ser considerado completo.

letra2."Joao" nome2 <. permite ter uma visão global de como o algoritmo deve ser executado."a" nome1 <."Cunha" nome <. espaco : caractere nome1. um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entendê-lo. esta visão global torna-se menos clara e. causará uma ação conhecida por concatenação. juntar os caracteres ou cadeias usados na operação em uma só cadeia.Técnicas de Programação I Refinamentos sucessivos • • Reescrever um algoritmo completo."d" letra2 <. ou seja. À medida que o algoritmo passa a ser maior e mais complexo. Técnicas de Programação I Concatenação • O operador “+” caso seja usado entre variáveis do tipo caractere ou cadeia." " letra1 <. com os refinamentos sucessivos inseridos nos seus devidos lugares. neste caso. nome2.nome1 + espaco + letra1 + letra2 + espaco + nome2 escreva(nome) fimalgoritmo 57 . Exemplo: algorítmo “Concatena” var // Declaração de variáveis letra1. nome : caractere inicio espaco <.

Crie um comentário multilinha identificando a função do mesmo. escrever os valores que ficaram armazenados nas variáveis. 58 . Escreva um algoritmo que armazene o valor 10 em uma variável A e o valor 20 em uma variável B.Técnicas de Programação I .Calcule e escreva o valor da área para as circunferências de raio 3. Ao final.1416 e r é o raio da circunferência . 4. Sabendo que a área do círculo é dada pela fórmula: A= * r2 Onde =3. 3. duas com valor ( e raio) e uma para a área.Exercícios: 1.Crie um algorítmo / programa chamado areaCirculo seguindo a convenção para nomear os identificadores . 5.Exercícios: (cont.4696 Técnicas de Programação I . Faça um algoritmo que receba quatro números inteiros e que calcule e apresente a soma deles. . Faça um algoritmo que receba três notas e que calcule e apresente a média aritmética entre elas. R3 = 28. A seguir (utilizando apenas atribuições entre variáveis) troque os seus conteúdos fazendo com que o valor que está em A passe para B e viceversa. . e 9.2744 R5 = 78. seu nome e a data atual.) 2. Faça um comentário explicando a finalidade de cada variável.Declare três variáveis.54 R9 = 254.

(4/2)+(2/4) b) B <. Faça um algoritmo que leia a idade de uma pessoa expressa em anos.(4+2)*2-4 abaixo produzem o mesmo resultado? e A <. 8. Considerar ano com 365 dias e mês com 30 dias.Técnicas de Programação I . Os pares de instruções a) A <.4/2+2/4 e B <. 9.) 6.4/2+2/4 e C <.4+2*2-4 7.4/(2+2)/4 c) C <. Analise os algoritmos abaixo e diga o que será impresso na tela ao serem executados: Técnicas de Programação I .Exercícios: (cont.Exercícios: (cont. Escreva um algoritmo para ler um valor (do teclado) e escrever (na tela) o seu antecessor. meses e dias e escreva a idade dessa pessoa expressa apenas em dias. Escreva um algoritmo para ler as dimensões de um retângulo (base e altura). 59 .) 5. calcular e escrever a área do retângulo.

) 10.Exercícios: (cont. o número de votos brancos. o salário fixo e o valor que ele recebe por carro vendido. Calcule e escreva o salário final do vendedor.Técnicas de Programação I .) 13. Calcular e escrever o percentual que cada um representa em relação ao total de eleitores. O custo de um carro novo ao consumidor é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). nulos e válidos. mais uma comissão também fixa para cada carro vendido e mais 5% do valor das vendas por ele efetuadas. calcular e escrever o valor correspondente em graus Celsius (baseado na fórmula abaixo): C F . Escreva um algoritmo para ler uma temperatura em graus Fahrenheit. Calcular e escrever o valor do novo salário. 14. escrever um algoritmo para ler o custo de fábrica de um carro. 12.= ----------5 9 60 .32 ---------. 11. calcular e escrever o custo final ao consumidor. Escreva um algoritmo para ler o número total de eleitores de um município. Uma revendedora de carros usados paga a seus funcionários vendedores um salário fixo por mês.Exercícios: (cont. o valor total de suas vendas. Escreva um algoritmo para ler o salário mensal atual de um funcionário e o percentual de reajuste. Técnicas de Programação I . Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%. Escrever um algoritmo que leia o número de carros por ele vendidos.

Técnicas de Programação I .2 – Programação Estruturada 1.) 15.7 – Paradigmas de Linguagem de Programação 1.3 – Programação Orientada a Objetos 61 . Considerar que a média é ponderada e que o peso das notas é 2.7.7.7. 3 e 5. Faça um algoritmo que leia três notas de um aluno.1 – Programação Linear 1.Exercícios: (cont. Fórmula para o cálculo da média final é: n1 * 2 + n2 * 3 + n3 * 5 Média final = ----------------------------------10 Técnicas de Programação I 1. calcule e escreva a média final deste aluno.

na sua execução. É por sua vez a linha divisória entre a programação linear e a programação orientada a objetos.Técnicas de Programação I 1. em se falando de criação de softwares. Na prática.Situando-se na programação estruturada.Linguagem Assembly (uso de mnemônicos) . com início e fim definidos. obedeçam a uma seqüência de passos executados consecutivamente.Pressupõe a criação de programas que.Linguagem Basic (uso do comando GOTO) 10 20 30 40 50 60 CLS A=1 PRINT A A=A+2 IF A > 99 THEN END GOTO 30 Técnicas de Programação I 1. pode-se dizer que busca a criação de estruturas simplificadas usando para isso sub-rotinas e funções. onde cada parte de tal programação busca resolver uma necessidade única.Usada nas primeiras linguagens de programação Exemplo: . .1 – Programação Linear .2 – Programação Estruturada .7. pode-se dizer também que a programação estruturada transformou-se em uma programação modular. 62 .7.

é a busca de uma total interação entre diversas unidades de software. end.2 – Programação Estruturada Exemplo: Linguagem Pascal Números Pares entre dois valores inteiros program pares. readln(x.7. x := x + 2. Técnicas de Programação I 1. writeln('Fim da Lista').').Na programação orientada a objetos. var x. y: integer. begin writeln('Digite os dois valores'). na hora de fazer a análise e o projeto de orientação a objetos.7. while x <= y do begin writeln(x.Técnicas de Programação I 1. a base do pensamento na hora da construção de um programa. chamados objetos.3 – Programação Orientada a Objetos . end. tem como conseqüência a procura do melhor conjunto de objetos para formar tal sistema. if (x mod 2) <> 0 then x := x + 1. ' . 63 . A busca. y).

//mostra o resultado da soma para o usuário JOptionPane. public class Soma{ public static void main(String[]args){ //declaração das variáveis String numeroA. //efetua a soma dos números soma = numero1 + numero2.Técnicas de Programação I 1. Cada classe também determina o comportamento que é definido pelos métodos e seus estados possíveis.showMessageDialog(null.swing.Talvez o exemplo mais fácil de ser citado é a linguagem java.parseInt(numeroB). O que gera o correto e eficaz funcionamento do sistema.3 – Programação Orientada a Objetos . //converte os números de string para inteiro numero1 = Integer. numero2 = Integer.Exemplo: Programa em Java para somar dois números inteiros: import javax."Resultado". muito utilizada atualmente no mercado de desenvolvimento de sistemas.JOptionPane. numeroB. numeroB = JOptionPane.7. } } 64 . int numero1.parseInt(numeroA). Técnicas de Programação I 1. numero2.showInputDialog("Entre com o segundo número inteiro"). definem os objetos presentes e trabalhados. chamados de atributos.PLAIN_MESSAGE).3 – Programação Orientada a Objetos . as classes contidas em um certo sistema/programa.showInputDialog("Entre com o primeiro número inteiro").Com isto. soma.JOptionPane. //pede dois números inteiros numeroA = JOptionPane. Nesta programação.7. o resultado é a necessidade da troca de mensagens entre tais objetos. ."A soma dos números é: " + soma.

Técnicas de Programação I
1.8 – Processo de Tradução – Compilação – Interpretação – Implementação híbrida

Técnicas de Programação I

CÓDIGO FONTE

TRADUÇÃO

LINGUAGEM DE MÁQUINA

65

Técnicas de Programação I
– Compilação
• Programas são traduzidos para linguagem de máquina e são executados diretamente no computador • Envolve dois processos distintos: – Tradução (compilação) – Execução • A execução é iniciada depois que a tradução é concluída • A execução não tem acesso ao programa fonte • Vantagem: execução rápida

Técnicas de Programação I
– Compilação

LP

Fonte

Compilação LM Dados Execução
Executável criado antes da execução

66

Técnicas de Programação I
– Interpretação
• O interpretador “executa” diretamente cada instrução do programa fonte, sem traduzir para linguagem de máquina • Simula, por software, uma máquina virtual onde o ciclo de execução entende os comandos da linguagem de alto nível • Desvantagem: execução de 10 a 100 vezes mais lenta, devido ao passo de decodificação da instrução de alto nível, que é mais complexa • Tem acesso ao programa fonte, para depuração ou mesmo para alterar o código sendo executado

Técnicas de Programação I
– Interpretação

Fonte LP

Interpretação LM Dados Execução
Executável criado em tempo de execução

67

instruções intermediárias são projetadas para serem interpretadas facilmente Técnicas de Programação I – Implementação híbrida LP Fonte Compilação Código Intermediário Código intermediário criado antes da execução Interpretação LM Dados Execução Executável criado em tempo de execução 68 .Técnicas de Programação I – Implementação híbrida • Mescla compilação com interpretação • Programas fonte são traduzidos intermediária que é interpretada para uma linguagem • Tem maior portabilidade que uma linguagem compilada • São mais rápidas que uma linguagem interpretada .

O compilador cria bytecodes e os armazena em disco. Fase 1 Editor Disco Fase 2 Compilador Disco Memória Principal Fase 3 Carregador de Classe Disco . Não é específico de uma PLATAFORMA. 69 . Exemplo.Técnicas de Programação I – Código Intermediário  É mais ágil de INTERPRETAR. .: JVM – Java Virtual Machine (Máquina Virtual Java) . Necessita ser instalado um INTERPRETADOR DE CÓDIGO. O carregador de classe coloca bytecodes na memória. .NET – Dot Net (Máquina Virtual Microsoft) O código intermediário é chamado de bytecode     Técnicas de Programação I – Ambiente Java Típico O programa é criado no editor e armazenado em disco.

. por um ambiente de execução Java. Este conjunto é chamado plataforma Java. Fase 5 Memória Principal Interpretador . Quando programa-se em Java usa-se a linguagem de programação Java e um ambiente de desenvolvimento Java para gerar um software que será executado em um ambiente de distribuição Java. . Basicamente constitui-se de uma linguagem de programação e um programa para execução chamado de máquina virtual (JVM – Java Virtual Machine). possivelmente armazenando valores dos dados enquanto executa o programa. . Técnicas de Programação I Java – Visão Geral Java é uma tecnologia. . . 70 .Técnicas de Programação I – Ambiente Java Típico Fase 4 O verificador de bytecodes Memória Principal O verificador de bytecodes confirma que todos os bytecodes são válidos e não violam restrições de segurança do Java. O interpretador lê os bytecodes e os traduz para uma linguagem que o computador pode entender.

seja de hardware ou de sistema operacional. A JVM possui uma especificação que pode ser implementada nas diversas arquiteturas. A JVM (Java Virtual Machine) emula uma máquina real possuindo um conjunto de instruções próprio e atua em áreas de gerenciamento de memória. mas sim com o arquivo de formato class.Conjunto de instruções (equivalentes às instruções da Conjunto de registradores Formato padrão de classes Pilha de memória Pilha de objetos coletados pelo garbage-collector Área de memória 71 . Técnicas de Programação I Java – Máqina Virtual A máquina virtual não trabalha diretamente com a linguagem de programação Java. que são as instruções para a máquina virtual e uma tabela de símbolos. Uma JVM possui definições implementação dos seguintes itens: CPU) concretas para a .Técnicas de Programação I Java – Máquina Virtual A máquina virtual Java é um dos principais componentes da plataforma Java e permite que o mesmo código possa ser executado em várias plataformas sem a necessidade de recompilação. Essa especificação visa não atender a nenhum tipo de tecnologia em específico. Esse tipo de arquivo contém os bytecodes.

Palm OS. Técnicas de Programação I Java – Máquina Virtual A JVM não permite que um programa Java acesse recursos de hardware diretamente.Técnicas de Programação I Java Virtual – Máquina O código Java é compilado. a máquina virtual traduz as instruções do código Java para instruções válidas no sistema operacional em que está rodando. rodando em Linux. run anywhere. protegendo o computador de operações perigosas. Windows. Ou seja. como acesso à regiões protegidas da memória ou formatação física do disco rígido. Solaris ou qualquer outro sistema operacional que possua uma máquina virtual Java implementada. Esse byte-code poderá então ser interpretado por qualquer máquina virtual Java. Compile once. gerando o conjunto de instruções chamado de byte-code. Ambiente de Desenvolvimento CÓDIGO JAVA COMPILADOR Distribuição VM Windows SO Windows Byte Code Java VM Linux SO Linux VM Celular SO Celular Ambiente de Execução 72 . Esse byte-code é aplicado à Máquina Virtual Java (JVM) que se encarrega de interpretar os comandos para o sistema operacional onde o programa está rodando.

a linguagem Java introduziu o conceito de garbage-collection.O programa foi escrito utilizando a sintaxe e semântica da linguagem Java . Dados são escritos e lidos da memória do computador satisfazendo os requisitos de cada programa.Não existem violações de áreas restritas de memória no código . a máquina virtual Java causará um erro de execução (runtime error). o programador é responsável por controlar essa alocação. 73 .O código não gera Stack Overflow . e evitar os erros comuns associados à alocação de memória. Para facilitar a vida dos programadores. Basic e C/C++.Não existe nenhuma conversão ilegal entre dados do programa . Técnicas de Programação I Gerenciamento de Memória Durante a execução de um programa de computador.Os tipos de parâmetros dos métodos são corretos .Técnicas de Programação I Java – Máquina Virtual pela Um programa Java só é executado caso o seu byte-code passe verificação de segurança da JVM. como o acesso indevido a áreas reservadas de memória. impedindo o estouro de memória (stack overflow) e outros problemas. ocorre a alocação e liberação dinâmica de memória RAM. que consiste em: . Em linguagens tradicionais como Pascal.O acesso a objetos está corretamente declarado Caso alguma das condições acima não seja satisfeita.

a JVM cria um ponteiro para uma área de memória equivalente ao tamanho do tipo de dado utilizado por essa variável. É com elas que a maioria das aplicações são construídas e executadas.org/wiki/Java Java Standard Edition (JavaSE): É a tecnologia Java para computadores pessoais. ou seja. Caso o computador fique com pouca memória disponível. Quando essa variável é associada a outra região de memória.Técnicas de Programação I Gerenciamento de Memória Garbage-collection é um mecanismo de controle automático de alocação e liberação de memória. gerador de documentação (javadoc). . depurador. http://www. como compilador (javac). é esta versão que executará os sistemas construídos com a SDK. A 74 . Técnicas de Programação I Plataforma Java plataforma Java se divide em três grandes edições. Várias APIs acompanham esta versão e tantas outras podem ser baixadas opcionalmente no site da Sun. notebooks e arquiteturas com poder de processamento e memória consideráveis. permitindo que esse espaço de memória seja re-alocado.javafree. empacotador de componentes (jar). O processo de garbage-collection ocorre automaticamente durante a execução de um programa Java. a JVM coloca o espaço alocado anteriormente em uma pilha de objetos em desuso. O programador não precisa se preocupar com aritmética de ponteiros (grande dificuldade em linguagens como C e Pascal. a JVM remove objetos dessa pilha.Java Runtime Edition (JRE): uma versão mais leve da JDK pois é preparada para o ambiente de execução. Quando uma variável é declarada em um código de computador.O J2SE possui duas divisões: .Java Development Kit (JDK) ou Standard Development Kit (SDK): um conjunto para desenvolvimento em Java e deveria ser instalado apenas pelos desenvolvedores por possuir ferramentas para tal tarefa.

75 .Connected Limited Device Configuration (CLDC): Para celulares e smartphones. que são mais limitados . A Java EE simplifica as aplicações empresariais e multi-camadas. smartphones. baseada em componentes padronizados.Connected Device Configuration (CDC): Para Palmtops e Pocket pcs e alguns dispositívos mais poderosos. Possui APIs bem simples e leves para economizar espaço. memória e processamento. O J2ME se divide em dois grupos de bibliotecas. palm tops. integração de sistemas ou distribuição de serviços para terceiros. A plataforma Java EE não é um produto. e oferece um conjunto completo de serviços para estes componentes. É ideal para a construção de servidores de aplicação. Possui um grande número de APIs onde a segurança é a principal preocupação. É dividida em dois grupos: . javacards e demais dispositivos. modulares e reusáveis. São utilizadas para sistemas em celulares. pocket pcs.Técnicas de Programação I Plataforma Java Java Mobile Edition (JavaME): É a tecnologia Java para dispositivos móveis com limitações de memória ou processamento. Técnicas de Programação I Plataforma Java Java Enterprise Edition (JavaEE): É a tecnologia Java para aplicações corporativas que podem estar na internet ou não. mas sim de uma especificação definida pela Sun.

classes com o mesmo nome em pacotes diferentes podem ser diferenciadas pelo nome completo. Um package Java é um mecanismo para agrupar classes de finalidades afins ou de uma mesma aplicação. Package As classes que compõem o núcleo de funcionalidades Java estão organizadas em pacotes. ou seja. No entanto.io java. Um package é uma coleção de classes e interfaces relacionadas fornecendo proteção de acesso e gerenciamento de nomes de diretórios. a principal funcionalidade de um pacote Java é evitar a explosão do espaço de nome. possuem quatro variáveis e elementos pacotes. Usamos a declaração import para acessar essas classes. Técnicas de Programação I Características da linguagem Entre os principais pacotes oferecidos como parte do núcleo Java estão: java.classe. o mecanismo de pacotes permite localizar cada classe necessária durante a execução da aplicação. pacote. Se a declaração import não for utilizada e desejarmos utilizar alguma classe externa.lang java.util java.net Packages contêm classes e duas outras entidades de Java veremos posteriormente: exceções e interfaces. será necessário colocar o caminho da classe a cada acesso. métodos. que 76 . Além de facilitar a organização conceitual das classes.Técnicas de Programação I Características da linguagem Todos os programas Java básicos: classes.

Esse é um dos vários pacotes incluídos na API. Tal formato é demonstrado abaixo: 1 // Duas barras significam comentário 2 /* comentários também podem seguir o formato de C++ */ 3 4 public class NomeDoPrograma 5 { 6 // O método main indica que o código Java pode ser executado 7 8 9 10 11 } static public void main(String[] args) { // aqui virão os comandos } 77 . Técnicas de Programação I Características da linguagem Estrutura de um código Java Como todas linguagem de programação. deve-se inserir a diretiva package com o nome do pacote no início da classe. O compilador Java define implicitamente um pacote para as classes no diretório atual e o importa implicitamente.Técnicas de Programação I Características da linguagem Exemplo: import java. Para colocarmos uma classe em um pacote. O asterisco no final diz ao compilador para importar todas as classes do pacote java. Esse é o motivo porque não precisamos colocar explicitamente as classes que escrevemos em um pacote.lang. Java possui um formato básico para a escrita de códigos.lang.*.

versão. o interpretador da JVM executa os comandos que estiverem dentro do bloco indicado pelo método "static public void main(String)". . Um comentário pode conter qualquer informação relevante ao comportamento do programa.java (o exemplo acima deveria ser salvo como NomeDoPrograma.linha 4: é a declaração do "nome do programa". que é case-sensitive (existe diferença entre maiúsculas e minúsculas).Técnicas de Programação I Características da linguagem Compreendendo o código Java: .java). Quando um programa Java é executado. . . autor. . pois Java permite linhas em branco entre os comandos .linhas 1 e 2: representam comentários. O arquivo que contém o código Java deve ser salvo com o mesmo nome que aparece após a declaração public class e mais a extensão . Os demais programas não conterão o método main().linha 8: essa linha indica à Java Virtual Machine que o programa será executado. Técnicas de Programação I Características da linguagem Compreendendo o código Java: .linha 5 e 8: a abertura de chave { indica início de bloco.linha 10 e 11: o fechamento de chave } indica fim de bloco 78 .linha 3: está em branco.linha 9: aqui seria escrito o código propriamente dito. etc.

class 79 .Chame o compilador Java para este arquivo: C:\javac HelloWorld. 1. apresentaremos um exemplo de criação.Seu diretório deve ter recebido um novo arquivo após essa compilação: HelloWorld.Java em um diretório qualquer com o seguinte conteúdo: public class HelloWorld { public static void main (String args[]) { System.println("Hello World!").Crie o arquivo HelloWorld. utilizando apenas os programas da JSDK. compilação e execução de um programa Java. sem o uso de uma IDE.Java 3.Técnicas de Programação I Características da linguagem Compilando e Executando A seguir. } } Técnicas de Programação I Características da linguagem Compilando e Executando 2.out.

Chame o interpretador Java para este arquivo (omita a extensão .Técnicas de Programação I Características da linguagem Compilando e Executando 4.Observe o resultado na tela: Hello World! Técnicas de Programação I Estrutura da linguagem Comentários Qualquer informação especificada entre os caracteres de comentário será ignorada pelo compilador. // e pode estar no final da linha Em bloco: /*Comentário em bloco Aceita múltiplas linhas Não utilize comentários aninhados */ 80 . Os comentários em Java podem ser por linha ou em bloco: Por linha: // isto é um comentário e inicia com duas barras.class do arquivo): C:\java HelloWorld 5. int valor.

Comentários não podem ser aninhados . . /** */ isto é um comentário para geração de javadoc 81 . Técnicas de Programação I Estrutura da linguagem Comentários javadoc Há também um tipo especial de comentário que é utilizado pelo javadoc para gerar documentação da API do código Java.Técnicas de Programação I Estrutura da linguagem Comentários A regras que tratam dos comentários em Java são: .A notação // não tem significado dentro dos comentários /* e /**.Não podem ocorrer dentro de strings ou literais .As notações /* e */ não tem significado dentro dos comentários //.

atributos de classe ou de instância.Técnicas de Programação I Estrutura da linguagem Identificadores Identificadores usados para determinar nomes de variáveis. Pela premissa de ser casesensitive existe uma diferenciação entre letras maiúsculas e minúsculas. Os identificadores em Java iniciam com uma letra.Classes e interfaces começam com letra maiúscula: .Constantes com todas as letras em maiúsculo: .Se o identificador for um nome composto por mais de uma palavra. Técnicas de Programação I Estrutura da linguagem Convenções para Identificadores Na linguagem Java é utilizada a seguinte convenção para formação de identificadores: CONSTANTE variável Classe . cada nova palavra começa com letra maiúscula: exemplo: variávelComNomeComposto 82 . um sublinhado (_ ) ou um sinal de dólar "$" e podem possuir números após o primeiro caractere da palavra. parâmetros e métodos.Variáveis e métodos começam com letra minúscula: .

147. Técnicas de Programação I Estrutura da linguagem Tipos Numéricos Inteiros Os tipos inteiros guardam valores numéricos sem parte fracionária.854.Técnicas de Programação I Estrutura da linguagem Tipos Primitivos No Java. Seis deles são numéricos.808 até 9.147. Tipo int short byte long Tamanho 4 bytes 2 bytes 1 byte 8 bytes Faixa de Valores -2. todos os objetos necessitam ter seu tipo especificado.768 até 32.775.036.373.648 até 2.775.036. 83 .767 -128 até 127 -9.483.372. Não se pode esquecer que como Java é portável. o tipo int é suficiente. um é o caractere e o outro é o booleano.854.647 -32.223.807 Na maioria das ocasiões. são Classes e serão tratados a seguir.483. Os tipos Array e String não são tipos primitivos. Existem 8 tipos primitivos em Java. esses valores são os mesmos para qualquer plataforma de hardware.223.

Se o número aparecer sem o F.3. 84 . pois sua precisão é maior.40282347E+38F (aproximandamente 7 dígitos significativos) +/1. (3. Técnicas de Programação I Estrutura da linguagem Tipo caractere O tipo char serve para representar apenas uma letra ou número. Tipo char Tamanho 2 bytes Faixa de Valores 0 até 65536 Esse tipo serve para representar caracteres usando a tabela Unicode. O tipo char é sempre representado por aspas simples (‘h’).04F). Dessa tabela faz parte a tabela ASCII e mais alguns caracteres especiais.Técnicas de Programação I Estrutura da linguagem Tipos Numéricos de Ponto Flutuante Os tipos primitivos que representam valores numéricos com ponto flutuante: Tipo float Tamanho 4 bytes Faixa de Valores +/. Caracteres representados por aspas duplas (“h”) na verdade são Strings. Números do tipo float aparecem com um sufixo F. ele é considerado double.79769313486231570E+308 (15 dígitos significativos) double 8 bytes Normalmente utilizamos o double na maioria das situações onde é necessária a representação desse tipo de número.

a máquina virtual cuidará desse trabalho.0 0. Esse tipo é usado apenas para testes lógicos. Tipo byte short int long float double boolean Valor 0 0 0 0 0. sendo que não é necessário inicializar as variáveis com esses valores.Técnicas de Programação I Estrutura da linguagem Tipo booleano O tipo booleano pode assumir apenas dois valores. true ou false. Tipo Tamanho Faixa de Valores true ou false boolean 1 bit Técnicas de Programação I Estrutura da linguagem Valores Padrão Abaixo segue uma lista com os valores padrões de todos os tipos primitivos.0 false 85 .

lang. Abaixo apresentamos os mais significativos: charAt(int indice) retorna o caractere na posição especificada int compareTo(String outraString) retorna um valor negativo se a string vier antes de outraString na ordem do dicionário.String A classe java.String possui muitos métodos.lang.lang. ignorando maiúsculas e minúsculas String toLowerCase() retorna uma nova string convertendo maiúsculas para minúsculas 86 .String boolean equals(String outra) retorna true se a string for igual à outra boolean equalsIgnoreCase(String outra) retorna true se a string for igual à outra.Técnicas de Programação I Estrutura da linguagem Métodos da Classe java. um valor positivo se outraString vier antes e 0 (zero) caso forem iguais boolean endsWith(String sufixo) retorna true se a string terminar com sufixo Técnicas de Programação I Estrutura da linguagem Métodos da Classe java.

Técnicas de Programação I Estrutura da linguagem Métodos da Classe java. 87 . Exemplos: (na declaração da variável) float umFloat = 0.String String toUpperCase() retorna uma nova string convertendo minúsculas para maiúsculas String trim() elimina espaços iniciais e finais Técnicas de Programação I Estrutura da linguagem Operadores Operador de Atribuição A atribuição é feita através do operador “=”: <identificador> = <valor>. Exemplos: (após declaração da variável) idade = 18. existe = true.5.lang. char caracter = ‘i’.

utilizados em testes e condições de entrada em um fluxo do programa. Operador == != < > >= <= Nome Igual Diferente Menor Maior Maior ou igual Menor ou igual Exemplo 10 == 10 3 != 2 4 < 10 10 > 6 3 >= 3 5 <= 6 88 . Operador + * / % Nome Adição Subtração Multiplicação Divisão Módulo Exemplo 23+29 29-23 0.Técnicas de Programação I Estrutura da linguagem Operadores Operadores Aritméticos Operadores aritméticos são aqueles que efetuam operações aritméticas em um ou mais tipos primitivos.5 * salario 100/42 57% 5 Técnicas de Programação I Estrutura da linguagem Operadores Operadores Relacionais Os operadores relacionais utilizados para formar expressões condicionais.

// Equivalente a: a = a * 3. a *= 3. Operador && || ! ^ ?: Nome AND OR NOT XOR Condicional Exemplo (0 < 2) && ( 10 > 5) ( 10 >11 ) || (10 < 12 ) !( 1= = 4 ) ( 1!= 0) ^ ( 3< 2 ) 3>2? (comando): (comando) Técnicas de Programação I Estrutura da linguagem Operadores Atribuição Composta Para facilitar a programação. que pode ser formada com operadores aritméticos ou lógicos. utilizados em testes e condições de entrada em um fluxo do programa.Técnicas de Programação I Estrutura da linguagem Operadores Operadores Lógicos Os operadores lógicos. // Equivalente a: a = a + b. Exemplos: a += b. Java oferece um tipo de atribuição chamada atribuição composta. são utilizados para formar expressões condicionais. assim como os relacionais. 89 .

o operador após a variável. i = i -1. será realizado o incremento ou decremento e depois o valor da variável será utilizado. isto é. o que está mais acima ocorre antes: ++ * -/ + <> <= >= == ^ && || = *= /= %= += -= != + % ! 90 . Colocando–se antes (++var). --i. //Equivalente a: //Equivalente a: i = i +1. Ao contrário (var++). Técnicas de Programação I Estrutura da linguagem Operadores Precedência dos Operadores A tabela abaixo apresenta os operadores em ordem decrescente de precedência. faz com que o valor da variável seja utilizado primeiro e o incremento ou decremento seja feito depois.Técnicas de Programação I Estrutura da linguagem Operadores Incremento e Decremento O incremento é dado pelo operador ++ e o decremento pelo operador --. Este decremento ou incremento pode ser feito antes ou depois da utilização da variável. Exemplos: i++.

Técnicas de Programação I Estrutura da linguagem .Variáveis Estrutura da linguagem Devem ser declaradas antes de serem usadas Devem ter um tipo definido (o tipo não muda) Devem ter seu valor iniciado antes de usá-la Deve ser usada dentro do escopo (método ou bloco) Tipo Tamanho (bits) Valor Mínimo Valor Máximo boolean char byte short int long float double 1 16 8 16 32 64 32 64 false 0 -27 -215 -231 -263 true 215-1 27-1 215-1 231-1 263-1 91 .Caracteres Especiais Caractere \n \t \b \r \f \\ \’ \” Significado Nova Linha (Enter) Tab (10 espaços) Backspace (retorna 1 caractere) Retorno (início da linha) Formfeed (avança 1 página na impressora) Barra Invertida Apóstrofe Aspas Técnicas de Programação I .

double PI = 3.replace(‘a’. localTrabalho.retorna a posição da palavra na String str.Substitui uma palavra 92 . Declaração e atribuição: <tipo> <nome> = <valor>.replaceAll(“String”.1416. 10) .Variáveis Estrutura da linguagem Devem ser declaradas antes de serem usadas Devem ter um tipo definido (o tipo não muda) Devem ter seu valor iniciado antes de usá-la Deve ser usada dentro do escopo (método ou bloco) Declaração: <tipo da variável> <nome da variável>. Exemplo: String str = “Isto é uma String do Java”.substitui “a” por “@” str.string começando em 0 e terminando em 9 str. A classe String possui métodos para essas manipulações.String Estrutura da linguagem String é uma classe que manipula cadeias de caracteres. . str. . Exemplo: int saldo.charAt(5) – Caractere na posição 5 str. endereço.indexOf(“uma”). String nomeCliente=“Luis”.length() – Tamanho da String str. .Técnicas de Programação I .equals( str2 ) .Comparação entre Strings str. Técnicas de Programação I .”Cadeia de caracteres”).substring(0.’@’).

separadas por caractere terminador de linha (’\n’). • Dados podem ser armazenados em arquivos. organizados em estrutura hierárquica de conjuntos de arquivos (chamados de diretórios) para facilitar localização e uso de arquivos. ou gravação) de dados envia dados para um dispositivo de saída conectado ao computador (ex: tela de terminal. contém definição do método println.).println(e) * out: variável estática declarada na classe System. * tipo de out: PrintStream. • Escrevendo caracteres em dispositivo de saída padrão: System. disco etc. 93 .Técnicas de Programação I Estrutura da linguagem .Entrada e Saída Textual • Texto: seqüência de linhas. impressora. Técnicas de Programação I Estrutura da linguagem . • Dados armazenados como seqüências de bytes ou caracteres.Entrada e Saída Textual: Primeiras Noções • Operação de saída (ou escrita. disco. fita etc.out.). • Operação de entrada (ou leitura) de dados obtém dados de um dispositivo de entrada (ex: teclado.

} } import java.in.Entrada e Saída Textual • Lendo caracteres do dispositivo de entrada padrão: int a = System.io (explicação detalhada mais à frente).out.read(). class ESTextual { public static void main (String[] args) throws IOException{ int a = System. Técnicas de Programação I Estrutura da linguagem . e escrita desse caractere lido no dispositivo de saída padrão: import java.io.in. System. armazena em a um único byte lido do dispositivo de entrada padrão.*.io. do dispositivo de entrada padrão. • Valor entre 0 e 255 representa código do caractere lido. “importa” nomes definidos em “biblioteca” java.*.Entrada e Saída Textual Leitura de um único caractere (representável em um byte). throws IOException também explicado mais adiante. 94 .read().println((char)a).Técnicas de Programação I Estrutura da linguagem .

Técnicas de Programação I Estrutura da linguagem . • Bibliotecas AWT e Swing permitem tratamento de eventos em componentes de interface gráfica Técnicas de Programação I Estrutura da linguagem showInputDialog String entrada = JOptionPane.Entrada e Saída em Janelas. Campos de Texto e Botões • E/S em componentes de “interface gráfica” (ou “interface visual”) • Modelo de tratamento de eventos: ações (ex: pressionar botão do mouse) originam chamadas a métodos. 95 .showInputDialog("Entre com um valor inteiro:").

*. entrada = JOptionPane. int y = Integer. class JanelasDeDialogo1{ public static void main(String[] a){ String entrada = JOptionPane. } 96 .swing.showInputDialog("Entre com outro valor inteiro: "). • Botão OK “clicado” ou tecla Enter pressionada -> cadeia digitada é retornada como objeto da classe String (e janela desaparece). int x = Integer.parseInt(entrada). Técnicas de Programação I Estrutura da linguagem showMessageDialog import javax.showInputDialog("Entre com um valor inteiro: "). } JOptionPane.Técnicas de Programação I Estrutura da linguagem showInputDialog • showInputDialog cria janela e espera usúário digitar cadeia de caracteres no campo de texto. • Botão Cancel “clicado” -> valor null é retornado.parseInt(entrada).showMessageDialog(null."Soma dos valores digitados = " + (x+y)).

Técnicas de Programação I Estrutura da linguagem showMessageDialog Técnicas de Programação I Estrutura da linguagem showMessageDialog • 1o argumento especifica componente abaixo do qual a janela deve ser criada • se null (isto é. a janela é criada no centro da tela • 2o argumento especifica cadeia de caracteres a ser mostrada na janela 97 . nenhum componente) for especificado.

javax.JOptionPane.JOptionPane. .parseInt(javax.showInputDialog("Idade da pessoa:")). javax. // Saída de dados javax. . javax. nome.swing. javax.JOptionPane. idade = Integer. int idade. "Idade da Pessoa".swing. "Nome da Pessoa".. sexo = javax.swing. sexo. idade. Técnicas de Programação I NetBeans 98 . String sexo.JOptionPane.showMessageDialog(null.JOptionPane.JOptionPane.swing.. javax..swing.INFORMATION_MESSAGE). // Entrada de dados nome = javax. "Sexo da Pessoa".showMessageDialog(null.INFORMATION_MESSAGE).showInputDialog("Sexo da pessoa:").JOptionPane.swing.showMessageDialog(null.swing.Técnicas de Programação I Estrutura da linguagem Outros exemplos: String nome.JOptionPane.swing.swing.JOptionPane.showInputDialog("Nome da pessoa:").INFORMATION_MESSAGE)..

Herança. Características da POO: • Abstração . é um mecanismo de criarmos novos objetos a partir de outros que já existem. Polimorfismo. Polimorfismo. Isto cria a possibilidade de criarmos várias classes. indica que podemos utilizar um objeto conhecendo apenas sua interface. dados e semântica – Conhecido com um contrato entre o projetista da classe e o programador que a utiliza. 99 . é descrito como um conjunto de métodos (é as vezes dados disponíveis publicamente) e suas semânticas associadas. de um objeto é definido por sua classes.Técnicas de Programação I Java Orientação à Objetos • • A programação OO separa estritamente a noção entre o que deve ser feito e como deve ser feito. Cada objeto é uma istância de uma classe. Herança. Essa combinação – métodos. é o mecanismo de programação que oculta os detalhes privados • da implementação que estão por detrais das interfaces públicas. Encapsulamento. O como. se refere a capacidade de reconhecer num objeto particular um outro mais geral. Sobcarga. Encapsulamento. • • • Técnicas de Programação I Java Orientação à Objetos • • • • Abstração. A forma mais simples de polimorfismo oferecido pela linguagem Java é a sobrecarga de métodos como o mesmo nome com assinatura diferente. tomando como prontas e disponíveis as características do objeto origem. a qual de define a implementação dos métodos que o objeto admite. O que. hierarquicamente relacionadas.

que podem ser baixados do próprio site http://www. Podemos entender uma classe como um modelo ou especificação para certos objetos. módulos e APIs.Técnicas de Programação I Classe • Uma classe é um tipo de objeto que pode ser definido pelo programador para descrever uma entidade real ou abstrata. Métodos são conjuntos de instruções que operam os campos para manipular o estado. É um produto open source. Classe é o modelo abstrato de um objeto.netbeans. Uma classe contém dois tipos de membros. chamados campos e métodos. A criação de um objeto. • • • • Técnicas de Programação I NetBeans NetBeans IDE é um conjunto de bibliotecas. formando um ambiente integrado de desenvolvimento visual possibilitando ao desenvolvedor complilar. 100% Java e possui vários módulos de expansão (modules). Instanciar significa criar uma instância da classe. Instanciação. eles compõem o estado de um objeto ou classe. Campos (atributos) são dados que pertencem à classe propriamente dita ou aos objetos da classe.org 100 . uma instância representa um objeto concreto desta classe. debugar. efetuar deploying de suas aplicações .

• Wizards . JSTL. criação de templates.ferramentas de gerenciamento de código. podendo também utilizar Projects. • Editor . FTP ou base de dados remota. XML com suporte a DTDs e XML Schemas e etc. EJBs) . portanto multi-plataforma .Técnicas de Programação I NetBeans • Interface com o usuário – Os menus. barras de ferramentas e outros componentes UI-interfaces de apresentação são fornecidos por esta plataforma. etc. Técnicas de Programação I NetBeans Workbench Área de trabalho Samples Exemplos Tutorials Tutorial 101 . para aplicações WEB (Servlets e JSP.Rico em recursos para aplicações visuais Swing ou AWT. • Cross-Plataform – Totalmente escrito em 100% Java. CVS. • Gerenciamento – As views gerenciam a estrutura do seu projeto localmente ou remotamente.

Técnicas de Programação I
Área de trabalho
Área de Desenvolvimento

Projeto

Navegador

Saida

Técnicas de Programação I
Criando Projeto
Aplicação Web Site

102

Técnicas de Programação I
Criando Projeto

Técnicas de Programação I
Criando package

103

Técnicas de Programação I
Criando classes

Técnicas de Programação I
Criando Classes

104

Técnicas de Programação I Line Number Técnicas de Programação I Alterar o Navegador 105 .

etc Técnicas de Programação I Projeto 106 .Técnicas de Programação I Configuração: Fonte.

Main .Técnicas de Programação I Class: .Greeting Técnicas de Programação I Class: .Main .ClasseValor 107 .

Técnicas de Programação I Criando classes Técnicas de Programação I NetBeans 108 .

A class JOptionPane permite que você exiba facilmente uma caixa de diálogo contendo informações chamada diálogo de mensagem.showInputDialog(“Mensagem”) JoptionPane.JOptionPane JoptionPane. O método showInputDialog é usado para criar uma janela com uma pergunta.showMessageDialog(null. O método showMessageDialog é usado para apresentar um texto e esperar por uma confirmação do usuário.Icone) null ( componente pai.”Msg2”.“Msg1”. que deve ser respondida pelo usuário em um campo de texto. utilizado para especificar a posição de criação da janela ) Msg1 (Mensagem interna) Msg2 (Mensagem da barra de titulo) Icone (Valor padrão que representam icons de mensagems ) 109 .Técnicas de Programação I Diálogo As caixas de diálogos são janelas que em geral são utilizadas para exibir mensagens importantes para o usuário de um aplicativo.swing. Técnicas de Programação I Diálogo Objeto JOptionPane Import Propriedade import javax.

ERRO_MESSAGE JOptionPane. WARNING_MESSAGE JOptionPane. INFORMATION_MESSAGE JOptionPane. PLAIN_MESSAGE diálogo que indica um erro para o usuário do aplicativo diálogo informacional para o usuário do aplicativo diálogo que adverte o usuário do aplicativo diálogo que informa uma pergunta para o usuário diálogo simples com msg sem icone para o usuário do aplicativo Técnicas de Programação I JOptionPane 110 . QUESTION_MESSAGE JOptionPane.Técnicas de Programação I Tipo de diálogo de mensagem JOptionPane.

Técnicas de Programação I JOptionPane int float double int novoValor = Integer.parseInt(valor) float novoValor = Float.parseDouble(valor) Técnicas de Programação I Fatorial 111 .parseFloat(valor) double novoValor = Double.

… int numero1. nomeVariavel2. tratamento de qualquer tipo da linguagem. • tipo pode ser um dos tipos da linguagem Java ou uma classe definida por seu programa Java. • Erros de entradas inesperadas (tipos incompatíveis com as conversões) devem ser tratados pelo usuário. String primeiroNumero. caracteres (char). • Os argumentos passados ao método showInputDialog() são vistos sempre como Strings em seus programas Java. tipo lógico (boolean) e variável binária (byte) Técnicas de Programação I Recordando…. números reais (float ou double)..showInputDialog(“Digite o primeiro Número inteiro: “). • O método showInputDialog() combina a montagem da janela de edição com o prompt de digitação do string fornecido pelo usuário. ou seja. primeiroNumero = JOptionPane.. • Utilize preferencialmente letras minúsculas e com nomes significativos para o programa para declarar nomes de variáveis . • A declaração de variáveis em Java segue a sintaxe tipo nomeVariavel. • Não há em Java método que faça para as entradas o que os métodos print() e println() fazem para as saídas de programas. int e long). 112 .. • Os tipos de variáveis da linguagem Java incluem inteiros (short. .Técnicas de Programação I Recordando…. ou tipo nomeVariavel1. • Por essa razão as variáveis informadas aos programas Java são sempre Strings que devem ser convertidas.

parseInt (primeiroNumero). Técnicas de Programação I Lembre-se…. • Para maior visibilidade no programa. • • A estrutura if compara os valores das variáveis numero1 e numero2 para determinar sua igualdade de valores.lang. Caso numero1 e numero2 sejam iguais.parseInt() converte um objeto String em um tipo int. primeiro faz a adição e depois a atribuição do resultado na variável soma. • A classe Integer está definida no pacote java. • A instrução combina o sinal de atribuição (‘=‘) com soma (‘+’) • O programa Java segue a precedência de operadores.Técnicas de Programação I Recordando…. Para fazê-la. No exemplo. if (numero1 == numero2) resultado = resultado + numero1 + “ == ” + numero2. • O método Integer. utilize espaços para separar operadores aritméticos “A soma é”+ soma • O operador “+” nessa expressão é de concatenação. numero1 = Integer. a condição da estrutura if será verdadeira e o programa colocará na variável resultado o string que concatena as expressões na seguinte ordem: Substring1: (resultado + numero1) ou seja: “”+ valor de numero1 Substring2: ((resultado+numero1)+”==“) acresce “==“ Substring3: ((resultado+numero1+”==“)+numero2) acresce valor de numero2 Final: resultado = Substring3 113 . Java primeiro fará a conversão da variável soma em String e depois combinará o resultado em um String maior contendo a primeira parte “A soma é” acrescida do resultado da variável soma na forma de um string. soma = numero1 + numero2.

[ou {bloco de comandos Java.  Exemplo: Se a média das notas do aluno for maior ou igual a 6 Imprimir “Aprovado” Sintaxe if (condição) comando Java. dependendo do valor de determinada condição. y = y + 1.out.) representa o término de uma linha de código.Técnicas de Programação I Ponto e Vírgula. recurso = (x + y) * 100 + (a . System.}] verdadeiro O Exemplo em Java if (media >= 6) System. Blocos • • (.out. } Técnicas de Programação I A estrutura if  Necessária sempre que os programas encontrarem seqüências alternativas de ações. { x = x + 1.println(“Aprovado”). Um bloco é composto por uma coleção de declarações delimitadas por chaves { }.out. if (media >= 6) { System.c).println(“Aprovado”). } // fim do bloco if Media >=6 falso Imprimir “Aprovado” Estrutura de Seleção if 114 .b .print(“O Aluno está”).

System.out. } // fim do bloco else verdadeiro Media >=6 Imprimir “Aprovado” falso Imprimir “Reprovado” 115 .print(“O Aluno está”).println(“Reprovado”).}] else comando Java. } // fim do bloco if else { System.out. Exemplo: Se a média das notas do aluno for maior ou igual a 6 Imprimir “Aprovado” Senão Imprimir “Reprovado” Sintaxe if (condição) comando Java.out.out.}]  Técnicas de Programação I Estrutura de Seleção if/else O Exemplo em Java if (media >= 6){ System.println(“Aprovado”). [ou {bloco de comandos Java.print(“O Aluno está”).Técnicas de Programação I Estrutura de Seleção if/else A estrutura if/else  Necessária sempre o programa deve executar uma ou mais ações quando uma condição for verdadeira ou. executar outra ação ou seqüência de ações. quando essa for falsa. [ou {bloco de comandos Java. System.

out. verdadeiro Media >=6 Imprimir “Aprovado” falso Imprimir “Reprovado” Técnicas de Programação I Estruturas if/else Aninhadas Seqüência de estruturas if/else  São utilizadas para o teste de múltiplos casos.println(media >= 6 ? “Aprovado” : “Reprovado”).Técnicas de Programação I Operador Ternário Condicional ?: Sintaxe (condição) ? {ação ou bloco verdade} : {ação ou bloco falso} O Exemplo em Java System. Exemplo: Se a média das notas do aluno for maior ou igual a 9 conceito = ‘A’ Senão Se a média das notas do aluno for maior ou igual a 7 conceito = ‘B’ Senão Se a média das notas do aluno for maior ou igual a 6 conceito = ‘C’ Senão conceito = ‘D’  116 .

else if (media >= 6) System.out.print(“O Conceito é C”).print(“O Conceito é A”).out.Técnicas de Programação I Estruturas if/else Aninhadas Em Java if (media >= 9) System.out. 117 .out.print(“O Conceito é B”). else System. else if (media >= 7) System. verdadeiro Media >=9 A falso verdadeiro Media >=7 B falso verdadeiro Media >=6 falso D C Técnicas de Programação I Estrutura de Seleção Múltipla switch switch/case  Utilizada em programas em que uma variável ou expressão pode assumir diferentes valores e há uma ação (ou bloco de ações) para cada valor possível.  Exemplo (organizando as ações de um programa): De acordo com a opção solicitada pelo usuário: caso 1: solicite a nota da prova do aluno caso 2: solicite a nota do trabalho do aluno caso 3: solicite a nota do projeto do aluno caso 4: calcule a média final do aluno default: encerre o programa  Utilize o comando break para não acionar as ações nos blocos definidos nos “cases” (e no default) abaixo do “case” acionado.print(“O Conceito é D”).

int escolha.showMessageDialog(null. } } } Técnicas de Programação I .30 cada se forem compradas menos de uma dúzia. JOptionPane. operando2.parseInt(JOptionPane. (operando1 + " + " + operando2 + " = " + resultado).showInputDialog("Digite sua Escolha : \n 1-Soma \n 2-Subtração" ). Escreva um programa que leia o número de maçãs compradas. avaliações de um aluno. Escrever também a média calculada.00 se forem compradas pelo menos 12.swing. int operando1. operando2 = Integer. 06) Ler dois valores (considere que não serão lidos valores iguais) e escrever o maior deles. calcule e escreva o custo total da compra. 04) Ler as notas da 1a.showMessageDialog(null. Calcular a média aritmética simples e escrever uma mensagem que diga se o aluno foi ou não aprovado (considerar que nota igual ou maior que 6 o aluno é aprovado).showInputDialog ("Digite o segundo operando:" )).parseInt(JOptionPane. (operando1 + " .JOptionPane. break.INFORMATION_MESSAGE). e 2a.showMessageDialog(null.Exercícios: 01) Ler um valor e escrever a mensagem É MAIOR QUE 10! se o valor lido for maior que 10. operando1 = Integer. "Você escolheu a soma:".showInputDialog ("Digite o primeiro operando:" )). esc = JOptionPane. /** * @author João Roberto */ public class TesteCase { public static void main(String[] args) { String esc."Opção não existe!!!". JOptionPane. switch (escolha) { case 1: resultado = operando1 + operando2. case 2: resultado = operando1 .operando2. JOptionPane. caso contrário escrever NÃO É MAIOR QUE 10! 02) Ler um valor e escrever se é positivo ou negativo (considere o valor zero como positivo). break.Técnicas de Programação I Estrutura switch/case // programa exemplo de utilização da estrutura switch/case import javax. default: JOptionPane. break. 03) As maçãs custam R$ 1.INFORMATION_MESSAGE). Escrever uma mensagem que diga se ela poderá ou não votar este ano (não é necessário considerar o mês em que a pessoa nasceu)." + operando2 + " = " + resultado). 118 . resultado. escolha = Integer.INFORMATION_MESSAGE).parseInt(esc). JOptionPane. "Você escolheu a subtração:".escolha. e R$ 1. JOptionPane. 05) Ler o ano atual e o ano de nascimento de uma pessoa.

Escrever o nome do vencedor.Exercícios: (cont.“Números iguais”. que deverá ser acrescido das horas extras. caso o segundo seja maior que o primeiro. senão escrever a mensagem 'Saldo Negativo'.débito + crédito). 11) Ler 3 valores (considere que não serão informados valores iguais) e escrever a soma dos 2 maiores. cujo cálculo é o valor da hora regular com um acréscimo de 50%. Após.30 e o preço do litro do álcool é R$ 2. 14) Ler dois valores e imprimir uma das três mensagens a seguir: . saldo. . B e C) representando as medidas dos lados de um triângulo e escrever se formam ou não um triângulo. OBS: para formar um triângulo. desconto de 5% por litro Gasolina acima de 20 litros. Escreva um algoritmo que leia o número de horas trabalhadas em um mês. 13) Ler o nome de 2 times e o número de gols marcados na partida (para cada time).“Primeiro é maior”. caso os números sejam iguais . o salário por hora e escreva o salário total do funcionário.Exercícios: (cont.) 12) Ler 3 valores (A. Também testar se saldo atual for maior ou igual a zero escrever a mensagem 'Saldo Positivo'.) 07) A jornada de trabalho semanal de um funcionário é de 40 horas. desconto de 4% por litro Escreva um algoritmo que leia o número de litros vendidos e o tipo de combustível (codificado da seguinte forma: A-álcool. G-gasolina). desconto de 3% por litro Álcool acima de 20 litros. 09) Ler um valor e escrever se é positivo. desconto de 6% por litro até 20 litros. calcule e imprima o valor a ser pago pelo cliente sabendo-se que o preço do litro da gasolina é R$ 3. 119 . 15) Um posto está vendendo combustíveis com a seguinte tabela de descontos: até 20 litros. caso tenham sido trabalhadas (considere que o mês possua 4 semanas exatas).“Segundo maior”. 10) Ler 3 valores (considere que não serão informados valores iguais) e escrever o maior deles. o valor de cada lado deve ser menor que a soma dos outros 2 lados. débito e crédito. O funcionário que trabalhar mais de 40 horas receberá hora extra. 08) Faça um algoritmo para ler: número da conta do cliente. calcular e escrever o saldo atual (saldo atual = saldo . Caso não haja vencedor deverá ser impressa a palavra EMPATE. negativo ou zero. Técnicas de Programação I .90. caso o primeiro seja maior que o segundo.Técnicas de Programação I .

parseInt(JOptionPane.showMessageDialog(null.parseInt(esc). JOptionPane." + operando2 + " = " + resultado). (operando1 + " + " + operando2 + " = " + resultado). O programa continuará com a ação imediatamente após o comando while.  Exemplo:  Enquanto o usuário desejar continuar calcule a média de cada aluno  O corpo da estrutura while pode ser uma instrução única ou um bloco de comandos. int operando1.parseInt(JOptionPane. escolha. operando1 = Integer. break.JOptionPane. operando2 = Integer.showInputDialog("Digite o segundo operando da soma:")).parseInt(JOptionPane.showInputDialog("Digite sua Escolha : \n 1-Soma \n 2-Subtração \n 3-Sair"). break.Técnicas de Programação I Estrutura de Repetição while  A estrutura de repetição while permite especificar uma ação ou um bloco de ações que devem permanecer sendo repetidas enquanto determinada condição for verdadeira. JOptionPane.swing. int escolha.showInputDialog("Digite o segundo operando:")). esc = JOptionPane.parseInt(JOptionPane. Quando a condição do comando while se tornar falsa. break. } operando1 = Integer. case 2: resultado = operando1 . esc = JOptionPane.parseInt(esc). JOptionPane.INFORMATION_MESSAGE). operando2 = Integer.   Técnicas de Programação I Estrutura de Repetição while // programa exemplo de utilização da estrutura de repetição while import javax.INFORMATION_MESSAGE).operando2.showMessageDialog(null. IMPORTANTE: você deve sempre prever o comando ou ação que tornará falsa a condição do comando while. "Opção não existe!!!". JOptionPane.showInputDialog("Digite o primeiro operando da soma:")).INFORMATION_MESSAGE). default: JOptionPane. "Você escolheu a soma:". while (escolha != 3) { switch (escolha) { case 1: resultado = operando1 + operando2. /** * @author João Roberto */ public class TesteCaseWhile { public static void main(String[] args) { String esc. Caso contrário seu programa entrará em loop infinito. a ação (ou bloco) do comando será finalizada.showMessageDialog(null. "Você escolheu a subtração:". (operando1 + " . JOptionPane. resultado. ) } } 120 . escolha = Integer.showInputDialog("Digite o primeiro operando:")).showInputDialog("Digite sua Escolha : \n 1-Soma \n 2-Subtração \n 3-Sair"). operando2. escolha = Integer.

// número de notas lidas valorNota.JOptionPane. JOptionPane.INFORMATION_MESSAGE).    121 . Caso contrário seu programa entrará em loop infinito. // adiciona a nota ao total total += valorNota."Media turma". } // fim do laço while media = total/10. // média de todas as notas String nota. Quando a condição do comando do/while se tornar falsa. // adiciona 1 ao contador de notas contadorNotas++. // converte nota de String para inteiro valorNota = Integer.valor inteiro:"). A diferença para a estrutura while está no fato de que do/while inicia pela execução do bloco e somente após a mesma analisa a condição. // valor da nota digitada media."Média da Turma é " + media. o programa continuará com a ação imediatamente após o comando do/while. IMPORTANTE: você deve sempre prever o comando ou ação que tornará falsa a condição do comando do/while.showMessageDialog(null. // prepara para executar laço // Fase de Processamento while (contadorNotas <= 10) { // solicita entrada e lê a nota digitada pelo usuário nota = JOptionPane. System. public class MediaWhile { //o método main inicia a execução do aplicativo Java public static void main(String args[]) { int total.swing.parseInt(nota). Obtém notas da turma  Exemplo: Faça Obtenha as notas da turma Calcula e Apresente a média Enquanto houver mais turmas para calcular a média Calcula e apresenta média Continua Sim falso  O do/while sempre admite que a primeira interação ocorre antes da confirmação da condição O corpo da estrutura do/while pode ser uma instrução única ou um bloco de comandos. // nota digitada pelo usuário // Fase de Inicialização total = 0. // executa divisão inteira // exibe média das notas do teste JOptionPane.exit( 0 ). // limpa variável total contadorNotas = 1.Técnicas de Programação I Estrutura de Repetição while // Programa de média da turma com repetição controlada por contador import javax.showInputDialog("Entre com a nota . // soma das notas digitadas pelo usuário contadorNotas. } // fim do método main } // fim da classe MediaWhile Técnicas de Programação I Estrutura de Repetição do…while  A estrutura de repetição do/while permite repetir uma ação ou um bloco de ações até que determinada condição seja verdadeira.

Normalmente break e continue interrompem laços em que estão inseridos. } int contador = 1 Contador <=10 Verdadeiro falso Instruções no corpo do laço “for”. Exemplo: Para o contador ‘i’ de 1 a 10 faça Obtenha a nota do i-ésimo aluno some a nota do i-ésimo aluno ao total. .  Exemplo: Enquanto verdade permanente (ex: x == 1. com retorno à expressão condicional do laço. do/while ou switch. for. condição de continuação. A instrução break interrompe o laço (no caso das estruturas de repetição) e impede a execução de outros casos de um comando switch. ao contrário do break. devese utilizar break e continue rotulados (com denominação de blocos). se condição de fim for alcançada break. Para interromper um conjunto aninhado de estruturas. sem mudar x) realize as operações ….. incrementos) { ação ou bloco de ações no comando. Calcule a média da turma como sendo o total divido por 10  O comando for tem três seções de variáveis: for (inicializadores. não interrompe o laço).  122 . reiniciando o mesmo (portanto. contador++ Técnicas de Programação I Instruções break e continue   As instruções break e continue modificam o comportamento das estruturas de repetição while. Fim do Enquanto  A instrução continue permite o salto do conjunto de operações.Técnicas de Programação I Estrutura de Repetição for   A estrutura de repetição for permite repetir uma ação ou um bloco de ações com controle de contador ou da condição de permanência no looping.

for e continue for (int contador=0. calcule e imprima a média (simples) desse aluno. caso contrário deverá encerrar o algoritmo. Técnicas de Programação I . 02) Reescreva o exercício anterior utilizando a estrutura ENQUANTO. avaliações de um aluno. 06) Acrescente uma mensagem 'NOVO CÁLCULO (S/N)?' ao final do exercício [05]. } while (++contador<numero).Técnicas de Programação I Estrutura de Repetição for e continue . saidaFinal = saidaFinal + contador + " ". pares++. para o segundo valor não pode ser aceito o valor zero e imprimir o resultado da divisão do primeiro valor lido pelo segundo valor lido. pares++. 123 .. contador < numero. e 2a. } - do/while e continue do { if ((contador % 2)!=0) // resto da divisão por dois não é zero continue. ou seja. (utilizar a estrutura REPITA). 04) Acrescentar uma mensagem de 'VALOR INVÁLIDO' no exercício [02] caso o 05) Escreva um algoritmo para ler as notas da 1a. Só devem ser aceitos valores válidos durante a leitura (0 a 10) para cada nota. segundo valor informado seja ZERO. 03) Acrescentar uma mensagem de 'VALOR INVÁLIDO' no exercício [01] caso o segundo valor informado seja ZERO. Se for respondido 'S' deve retornar e executar um novo cálculo. deve ser lido um novo valor.Exercícios: 01) Escreva um algoritmo para ler 2 valores e se o segundo valor informado for ZERO. saidaFinal = saidaFinal + contador + " ". contador++) { if ((contador % 2)!=0)//resto da divisão por dois não é zero continue.

Exercícios: (cont.20] (incluindo os valores 10 e 20 no intervalo) e quantos deles estão fora deste intervalo.Exercícios: (cont. 11) Ler 10 valores e escrever quantos desses valores lidos são NEGATIVOS. b) o valor de cada mercadoria. imprimir o valor total em estoque e a média de valor das mercadorias em estoque. 124 . Ao final imprimir o valor total em estoque e a média de valor das mercadorias. Então o funcionamento deverá ser da seguinte forma: ler o valor da mercadoria e perguntar ‘MAIS MERCADORIAS (S/N)?’. ler as notas destes alunos.Técnicas de Programação I . 13) Ler 10 valores. após isto.) 14) Ler o número de alunos existentes em uma turma e. que 100. escreva o maior e o menor valor lido. 18) Faça um programa que leia 100 valores e no final. Ao final. calcular e escrever a média aritmética dessas notas lidas. Técnicas de Programação I . 17) O mesmo exercício anterior. 08) Escreva um algoritmo para imprimir os números de 1 (inclusive) a 10 (inclusive) em ordem decrescente. calcular e escrever a média aritmética desses valores lidos.) 07) Escreva um algoritmo para imprimir os números de 1 (inclusive) a 10 (inclusive) em ordem crescente. mas agora não será informado o número de mercadorias em estoque. 09) Escreva um algoritmo para imprimir os 10 primeiros números inteiros maiores 10) Escreva um algoritmo que calcule e imprima a tabuada do 8 (1 a 10). soma total dos 10 números lidos. Escreva um algoritmo que permita a entrada das seguintes informações: a) o número total de mercadorias no estoque. 15) Escreva um algoritmo para ler 10 números e ao final da leitura escrever a 16) Uma loja está levantando o valor total de todas as mercadorias em estoque. 12) Ler 10 valores e escrever quantos desses valores lidos estão no intervalo [10.

escrever: .a média aritmética dos preços dos produtos 20) Faça um algoritmo para ler o código e o preço de 15 produtos.: O final da leituras dos dados se dará com a entrada de um “salário negativo”. Faça um algoritmos para coletar dados sobre o salário e número de filhos de cada habitante e após as leituras. Depois de ler todos os números o algoritmo deve apresentar na tela o maior dos números lidos e a média dos números lidos. 125 .00 Obs.o maior preço lido .) 19) Faça um algoritmo para ler uma quantidade e a seguir ler esta quantidade de números.Exercícios: (cont.Técnicas de Programação I . calcular e 21) A prefeitura de uma cidade deseja fazer uma pesquisa entre seus habitantes. escrever: a) Média de salário da população b) Média do número de filhos c) Maior salário dos habitantes d) Percentual de pessoas com salário menor que R$ 150.