You are on page 1of 125

Tcnicas de Programao I

Prof. Joo Roberto Cruz


1 Semestre / 2012

Tcnicas de Programao I
Contedo Programtico:
Unidade 1: Introduo Algoritmos e Linguagens de Programao Unidade 2: Conceitos Introdutrios de Programao em Linguagem Java Unidade 3: Estrutura de Seleo Unidade 4: Estrutura de Repetio Unidade 5: Funes e Recursividade

Tcnicas de Programao I
BIBLIOGRAFIAS
BSCA 1. Puga, Sandra; Rissetti, Gerson. LGICA DE PROGRAMAO E ESTRUTURAS DE DADOS: COM APLICAES EM JAVA. 2. So Paulo: Pearson Education, 2009. 2. Deitel, H. M. & Deitel, P. J. JAVA: COMO PROGRAMAR. 8. Ed. So 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 LGICA DE PROGRAMAO. So Paulo: Thomson, 2005. 214p. 2. Lafore, Robert. ESTRUTURAS DE DADOS E ALGORITMOS EM JAVA. Rio de Janeiro: Cincia Moderna, 2004. 702p.

Tcnicas de Programao I
Unidade 1: Introduo Algoritmos e Linguagens de Programao
1.1 1.2 1.3 1.4 Introduo Organizao de Computadores Algoritmos, estrutura de dados e programas Funo dos Algoritmos na Computao Exemplos informais de algoritmos 1.4.1 Torre de Hanoi 1.4.2 Trs Jesutas e trs canibais 1.4.3 Exemplos do cotidiano 1.5 Notaes grficas e descritivas de algoritmos

Tcnicas de Programao I
Unidade 1: Introduo Algoritmos e Linguagens de Programao
1.6 Paradigmas de linguagens de programao 1.7 Processos de Traduo

Tcnicas de Programao I
1.1 Introduo Organizao de Computadores "Os computadores so como automveis. Voc no 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)

Tcnicas de Programao I
Funcionamento bsico dos sistemas de computao (a) (b) (c) (d) Os computadores executam quatro funes distintas sendo elas: Entrada; Processamento; Armazenamento/recuperao de dados; Sada.

Tcnicas de Programao I
Componentes bsicos de um sistema de computao
Perifricos de entrada Unidade de Processamento CPU Perifricos de sada

Dispositivos de armazenamento memria

Tcnicas de Programao I
- Os dados produzidos na sada correspondem a execuo de instrues (comandos) durante a etapa de processamento, realizada pela CPU (Unidade Central de Processamento processador). Cada processador tem um conjunto nico de instrues para processar os dados, porm geralmente utilizam a mesma forma de composio das instrues.

Tcnicas de Programao I
OPERAO OPERANDOS

INSTRUO (COMANDO) A operao especifica a funo a ser desempenhada, por exemplo, somar, armazenar ou desviar, entre outras. Os operandos fornecem os dados a serem utilizados na operao ou ainda a forma de alcanar a posio destes dados na memria.

Tcnicas de Programao I
1.2 Algoritmos, estrutura de dados e programas - Algoritmo uma seqncia finita de instrues (comandos) bem definidas e no ambguas, cada uma das quais pode ser executada mecanicamente num perodo de tempo finito e com uma quantidade de esforo finita. Um algoritmo no representa, necessariamente, um programa de computador, e sim os passos necessrios para realizar uma tarefa.

Tcnicas de Programao I
- Um Algoritmo tem um carter imperativo no qual a ocorrncia do nome de uma ao tambm chamada de comando. - Em outras palavras, um algoritmo uma norma executvel para atingir um certo efeito desejado (obter uma soluo para certo tipo de problema).

Tcnicas de Programao I
- Exemplos de algoritmos (na vida prtica): Manuais de uso Instrues de montagem Receitas de cozinha Informaes de como chegar a um lugar

- Um algoritmo DEVE ser determinstico, ou seja, dadas as mesmas condies iniciais deve produzir, depois de executado, os mesmos resultados.

Tcnicas de Programao I

Em computao, os algoritmos representam a lgica dos programas e so codificados em instrues (comandos) pertencentes a uma determinada linguagem de programao

Tcnicas de Programao I
Exemplo de Algoritmo usado por um cozinheiro para descascar batatas para o jantar:
1) Seqncia Simples de Comandos: Trazer a cesta de batatas da despensa; Trazer a panela do armrio; Descascar batatas; Devolver a cesta despensa. - E se algumas vezes ele colocar um avental aps buscar a panela e antes de descascar as batatas?

Tcnicas de Programao I
2) Insero de Comandos: Trazer a cesta de batatas da despensa; Trazer a panela do armrio; Colocar o avental; Descascar batatas; Devolver a cesta despensa. - E se a colocao do avental s ocorrer quando o cozinheiro estiver de roupa branca?

Tcnicas de Programao I
3) Conectivo Condicional: Trazer a cesta de batatas da despensa; Trazer a panela do armrio; SE roupa branca ENTO Colocar o avental; Descascar batatas; Devolver a cesta despensa. - A execuo da ao colocar avental depende, em cada vez que o algoritmo executado, do resultado (verdadeiro ou falso) da inspeo se a roupa branca. - E se em um dia o cozinheiro tiver que descascar 10 quantidades batatas?

Tcnicas de Programao I
4) Conectivo Repetitivo: Trazer a cesta de batatas da despensa; Trazer a panela do armrio; SE roupa branca ENTO Colocar o avental; 10 Descascar batatas; Devolver a cesta despensa. - Podemos ver ainda que, desta forma, difcil sabermos determinar se o nmero de batatas escolhido (n de repeties de Descascar...) foi suficiente para o jantar. - Precisamos ento introduzir outro tipo de comando:

Tcnicas de Programao I
5) Conectivo Repetitivo Condicional: Trazer a cesta de batatas da despensa; Trazer a panela do armrio; SE roupa branca ENTO Colocar o avental ENQUANTO nmero de batatas insuficiente FAA Descascar batatas; Devolver a cesta despensa. - Com isto vemos o poder do conceito de algoritmo. Um texto esttico, capaz de cobrir toda uma classe de acontecimentos, escrito no mesmo nvel de detalhes do relato de um observador.

Tcnicas de Programao I
- Estruturas de dados (Data Structures) o nome dado a organizao de dados e algoritmos de forma coerente e racional de modo a otimizar o seu uso. - De acordo com o modo como um conjunto de dados so organizados e como as operaes que so efetuadas sobre estes dados, pode-se solucionar de forma simples problemas extremamente complexos.

10

Tcnicas de Programao I
- Dados quando esto organizados de uma forma coerente representam uma estrutura de dados. - Uma estrutura de dados um modo particular de armazenamento e organizao de dados em um computador de modo que possam ser usados de modo eficiente.

Tcnicas de Programao I
- Estruturas de dados clssicas: Tipo de dados; Vetores ou arrays; Listas; Filas; Pilhas; rvores; Grafos; Pesquisa de dados; Classificao de Dados.

11

Tcnicas de Programao I
- Um programa de computador uma coleo de instrues que descrevem uma tarefa a ser realizada por um computador. O termo pode ser uma referncia ao cdigo fonte, escrito em alguma linguagem de programao, ou ao arquivo que contm a forma executvel deste cdigo fonte. - Um programa de computador a formalizao de um algoritmo em qualquer linguagem capaz de ser transformada em instrues que sero executadas por um computador gerando os resultados esperados

Tcnicas de Programao I
- O termo "software" pode ser utilizado quando se quer designar um conjunto de programas ou, mais freqentemente, quando feita uma referncia parte no fsica do sistema computacional, em contraposio ao termo "hardware", que designa o conjunto de componentes eletrnicos que constituem um computador.

12

Tcnicas de Programao I
- Os programas de computador utilizados diretamente por pessoas comuns, como os editores de texto, so chamados de software aplicativo, ou de aplicao. Os programas voltados para dar suporte funcional aos computadores, como os sistemas operacionais, so chamados de software de sistema.

Tcnicas de Programao I
1.3 Funo dos Algoritmos na Computao - Os algoritmos so amplamente utilizados na rea da cincia da computao, desde de a definio das instrues realizadas pelo hardware processadores e demais dispositivos, passando pelas operaes executadas pelo sistema operacional, no gerenciamento dos computadores, at a documentao das operaes necessrias elaborao de solues voltadas para a construo de interface entre software e hardware, programas e demais aplicativos.

13

Tcnicas de Programao I
1.4 Introduo Lgica O que Lgica? - Organizao do pensamento de forma coerente - Permite chegar a determinadas concluses - Permite escolher problemas conhecidos caminhos para resolver

Tcnicas de Programao I
- O que Lgica? Exemplo1: 1. Todo mamfero um animal 2. Todo cavalo um mamfero 3. Portanto, todo cavalo um animal Exemplo2: 1. Brasil um pas do planeta Terra 2. Todos os Brasileiros so do Brasil 3. Logo, todos os Brasileiros so Terrqueos

14

Tcnicas de Programao I
- O que Lgica? Exemplo3:

1. 2. 3. 4.

Hoje sbado Todo sbado que no tem feriado tem aula Hoje no feriado: Logo, hoje tem aula

Tcnicas de Programao I
- Lgica no cotidiano Exemplo1: 1. 2. 3. 4. Alexandre s ronca quando bebe Alexandre s bebe quando sai Alexandre sai todos os dias Portanto, quando Alexandre ronca?

15

Tcnicas de Programao I
- Lgica no cotidiano Exemplo1:

1. Alexandre s ronca quando bebe 2. Alexandre s bebe quando sai 3. Alexandre sai todos os dias 4. Portanto, quando Alexandre ronca? R: Todos os dias

Tcnicas de Programao I
- Lgica no cotidiano Exerccio: Trs jesutas e trs canibais precisam atravessar um rio; para tal dispem de um barco com capacidade para duas pessoas. Por medida de segurana no se deve permitir que em nenhuma margem a quantidade de jesutas seja inferior de canibais. Qual a soluo para efetuar a travessia com segurana, considerando que o barco no pode navegar vazio?

16

Tcnicas de Programao I
- Lgica no cotidiano
Resposta: 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. Atravessar um jesuta e um canibal para a margem B Voltar o jesuta para a margem A Atravessar dois canibais para a margem B Voltar um canibal para a margem A Atravessar dois jesutas para a margem B Voltar um jesuta e um canibal para a margem A Atravessar dois jesutas 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

Tcnicas de Programao I
- Lgica no cotidiano Exerccio: Um agricultor precisa atravessar o rio para transportar sua carga, que so dois fardos de capim e um carneiro. O problema que ele s pode transportar uma coisa de cada vez no seu pequeno barco. Pior ainda, se ele deixar o carneiro e o capim juntos, o carneiro vai comer o capim. Como fazer ento para que ele leve sua carga para a outra margem sem prejuzo algum?

17

Tcnicas de Programao I
- Lgica no cotidiano Resposta: Primeiro vai levar o carneiro para a outra margem e deixar na margem de origem, os dois fardos de capim. Em seguida ele voltar e vai pegar um fardo de capim. Ele vai levar um fardo para a margem de destino, l onde est o carneiro no momento. Ele ento deixa l um fardo e traz o carneiro de volta. Ento, ele deixa o carneiro sozinho na margem de origem e leva o outro fardo de capim para a margem de destino. Finalmente ele volta e leva o carneiro.

Tcnicas de Programao I
- Lgica no cotidiano Exerccio: Torre de Hani. Mover os trs discos de uma haste para outra, considerando as seguintes regras: pode-se mover apenas um disco de cada vez; nunca pode ser colocado um disco maior sobre um menor

18

Tcnicas de Programao I
- Lgica no cotidiano Exerccio: Torre de Hani (Soluo)

Tcnicas de Programao I
Resumo de Algoritmo - Seqncia finita de passos, logicamente organizados, para resoluo de um problema conhecido - Visa a atingir um objetivo bem definido - Deve ser o mais simples, claro e preciso possvel

19

Tcnicas de Programao I
- Algoritmo 1: Troca de Lmpada 1. pegar uma escada;

2. posicionar a escada embaixo da lmpada;


3. buscar uma lmpada nova; 4. subir na escada; 5. retirar a lmpada velha; 6. colocar a lmpada nova.

Tcnicas de Programao I
- Algoritmo 2: Troca de Lmpada com teste 1. pegar uma escada; 2. posicionar a escada embaixo da lmpada; 3. buscar uma lmpada nova; 4. acionar o interruptor; 5. se a lmpada no acender, ento 6. subir na escada; 7. retirar a lmpada queimada; 8. colocar a lmpada nova.

20

Tcnicas de Programao I
- Algoritmo 3: Troca de Lmpada com teste no incio 1. acionar o interruptor; 2. se a lmpada no acender, ento 3. pegar uma escada; 4. posicionar a escada embaixo da lmpada; 5. buscar uma lmpada nova; 6. subir na escada; 7. retirar a lmpada queimada; 8. colocar a lmpada nova.

Tcnicas de Programao I
- Algoritmo 4: Troca de Lmpada com teste e repetio indefinida
01. acionar o interruptor; 02. se a lmpada no acender, ento 03. pegar uma escada; 04. posicionar a escada embaixo da lmpada; 05. buscar uma lmpada nova; 06. acionar o interruptor; 07. subir na escada; 08. retirar a lmpada queimada; 09. colocar a lmpada nova; 10. se a lmpada no acender, ento 11. retirar a lmpada queimada; 12. colocar outra lmpada nova; 13. se a lmpada no acender, ento 14. retirar a lmpada queimada; 15. colocar outra lmpada nova; 16. se a lmpada no acender, ento 17. retirar a lmpada queimada; 18. colocar outra lmpada nova; At quando?

21

Tcnicas de Programao I
- Algoritmo 5: Troca de Lmpada com teste e condio de parada
01. acionar o interruptor; 02. se a lmpada no acender, ento 03. pegar uma escada; 04. posicionar a escada embaixo da lmpada; 05. buscar uma lmpada nova; 06. subir na escada; 07. retirar a lmpada queimada; 08. colocar uma lmpada nova; 09. enquanto a lmpada no acender, faa 10. retirar a lmpada queimada; 11. colocar uma lmpada nova; 12. acionar o interruptor;

Tcnicas de Programao I
- Algoritmo 6: Troca de Lmpada com teste para 10 soquetes
01. acionar o interruptor do 1 soquete; 02. se a lmpada no acender, ento 03. pegar uma escada; 04. posicionar a escada embaixo da lmpada; 05. buscar uma lmpada nova; 06. subir na escada; 07. retirar a lmpada queimada; 08. colocar uma lmpada nova; 09. enquanto a lmpada no acender, faa 10. retirar a lmpada queimada; 11. colocar uma lmpada nova; 12. acionar o interruptor do 1 soquete; 13. acionar o interruptor do 2 soquete; 14. se a lmpada no acender, ento 15. pegar uma escada; 16. posicionar a escada embaixo da lmpada; 17. (...) Repetir para todos os soquetes...

22

Tcnicas de Programao I
- Algoritmo 7: Troca de Lmpada com teste para 10 soquetes e repetio
01. ir at o painel de interruptores; 02. Enquanto soquete menor ou igual a dez, faa 03. acionar o interruptor do prximo soquete; 04. se a lmpada no acender, ento 05. pegar uma escada; 06. posicionar a escada embaixo da lmpada; 07. buscar uma lmpada nova; 08. subir na escada; 09. retirar a lmpada queimada; 10. colocar uma lmpada nova; 11. enquanto a lmpada no acender, faa 12. retirar a lmpada queimada; 13. colocar uma lmpada nova; 14. acionar o interruptor;

Tcnicas de Programao I
1.6 Tipos de Algoritmos 1.6.1 Pseudocdigo ou Portugus Estruturado 1.6.2 Descrio Narrativa 1.6.3 Fluxograma 1.6.4 Diagrama diagrama N-S de Chapin Nassi-Shneiderman ou

23

Tcnicas de Programao I
1.6.1 - Pseudocdigo ou Portugus Estruturado
- Vantagem: Transcrio para programa computador) praticamente imediata. - Desvantagem: Necessrio aprender regras (linguagem de

Tcnicas de Programao I
1.6.1 - Pseudocdigo ou Portugus Estruturado
- Exemplo: Ler dois nmeros e calcular a mdia algoritmo Media var x,y,media: real inicio Leia(x) Leia(y) media (x+y)/2 escreva(media) fimalgoritmo

24

Tcnicas de Programao I
1.6.2 Descrio Narrativa
- Utiliza linguagem natural - Vantagem: No necessrio aprender nenhum conceito novo - Desvantagem: Permite transcrio para programa vrias interpretaes, dificultando

Tcnicas de Programao I
1.6.2 Descrio Narrativo (Exemplo)
- Ler dois nmeros e calcular a mdia 1. 2. 2. 3. Ler o primeiro nmero Ler o segundo nmero Calcular a mdia entre os dois nmeros Mostrar o resultado da mdia

25

Tcnicas de Programao I
1.6.3 Fluxograma
- Utiliza elementos grficos - Vantagem: Entendimento de grficos mais fcil que de textos - Desvantagem: Necessrio aprender simbologia e no apresenta detalhes para transcrever para programa

Tcnicas de Programao I
1.6.3 Fluxograma (Sbolos)
Representa o incio ou fim do fluxograma Processamento Entrada de dados Sada de dados Deciso Preparao (usado em repeties) Conector (interliga partes do fluxograma ou desvia o fluxo) Conector de pgina Seta de orientao do fluxo

26

Tcnicas de Programao I
1.6.3 Fluxograma (Exemplo)
- Ler dois nmeros e calcular a mdia

incio

Ler x,y

M = (x + y) / 2

fim

Tcnicas de Programao I
1.6.4 Diagrama diagrama N-S de Chapin ou Nassi-Shneiderman ou

- Apresenta a soluo do problema por meio de um diagrama de quadros com uma viso hierrquica e estruturada - Vantagem: Viso hierrquica - Desvantagem: Difcil representar a recursividade

27

Tcnicas de Programao I
1.6.4 Diagrama de Chapin diagrama N-S (Exemplo) ou Nassi-Shneiderman ou

Tcnicas de Programao I O que Programao? = ABSTRAO!

A realidade complexa e rica em detalhes!

28

Tcnicas de Programao I Abstrao

Realidade O que voc abstrai dessa realidade?

Tcnicas de Programao I Abstrao

O que abstrao?

29

Tcnicas de Programao I Abstrao


Abstrao = Operao mental que observa a realidade e captura apenas os aspectos relevantes para um contexto

Tcnicas de Programao I

30

Tcnicas de Programao I

Tcnicas de Programao I

31

Tcnicas de Programao I

MASLOW

Tcnicas de Programao I

A tarefa de programar sistemas computacionais envolve o exerccio constante da abstrao da realidade e sua codificao em uma linguagem de programao

Abstrao

Realidade

Abstrao + Programao Sistema de Locadora de Veculo

32

Tcnicas de Programao I Sistema Computacional

O que um Sistema Computacional?

Tcnicas de Programao I

Sistema Computacional
Software Hardware

Peopleware

33

Tcnicas de Programao I Programao de Sistema Computacional

A programao de um sistema computacional pode ser resumida em 3 passos bsicos


Entrada Dispositivo de Entrada Processamento Sada Dispositivo de Sada

UCP Memria

Tcnicas de Programao I Programao de Sistema Computacional


Exemplo 1 Exibir a mdia de dois nmeros
Entrada Dispositivo de Entrada Processamento Sada Dispositivo de Sada

UCP Memria

6,8

(6 + 8) / 2

34

Tcnicas de Programao I Programao de Sistema Computacional


Exemplo 2 Exibir se o aluno est aprovado ou reprovado
Entrada Dispositivo de Entrada Processamento Sada Dispositivo de Sada

UCP Memria

Ana, 5, 3

Se (5+3)/2>=7 aprovado Seno reprovado

Ana, reprovado

Tcnicas de Programao I

Algoritmo
Linguagem de computao

Programa

35

Tcnicas de Programao I Princpios da soluo de problemas


Problema

Fase de resoluo do problema

Soluo na forma de algoritmo

Soluo como um programa de computador

2 codificao) do algoritmo em
alguma linguagem de programao

Fase de implementao (ou

Tcnicas de Programao I Princpios da soluo do problemas


Compreenso do problema Criao de uma seqncia de operaes (ou aes) que, quando executadas, produzem a soluo para o problema Descrio desse conjunto de aes
ALGORITMO

Levantamento

Resoluo de Problema

Codificao (uso de uma linguagem de programao)

Programao

36

Tcnicas de Programao I Revendo Caractersticas de Algoritmo Todo algoritmo deve apresentar algumas caractersticas bsicas:

ter fim; no dar margem dupla interpretao (no ambguo); capacidade de receber dado(s) de entrada do mundo exterior; poder gerar informaes de sada para o mundo externo ao do ambiente do algoritmo; ser efetivo (todas as etapas especificadas no algoritmo devem ser alcanveis em um tempo finito).

Tcnicas de Programao I Algoritmo x Qualidade


Todo algoritmo deve ser feito de maneira lgica e racional, visando principalmente a sua eficincia e clareza. Ao construir algoritmos devemos: 1. Saber que estes sero lidos por outras pessoas, permitindo sua fcil correo. 2. Escrever comentrios na sua elaborao, onde os mesmos devem acrescentar alguma coisa, no apenas frasear. 3. Sempre atualizar os comentrios, em caso de manuteno. Pior do que um programa sem comentrios, um programa com comentrios errados. 4. Use comentrios, tambm, no cabealho do algoritmo, incluindo, principalmente: descrio do que faz o algoritmo autor data de criao

37

Tcnicas de Programao I Algoritmo x Qualidade


5. Os comandos nos dizem o que est sendo feito, os comentrios dizem o porqu. 6. Utilizar espaos e/ou linhas em branco para melhorar a legibilidade. 7. Uso de parnteses aumenta a legibilidade e previne erros. 8. Escolha nomes representativos para variveis, todavia evite nomes muito longos ou muito curtos. Ex: Prefira SalBruto ou SalarioBruto ao invs de SB ou VAR1 Prefira TotAlunosAprovDireta ao invs de TotalAlunosAprovacaoDireta

Tcnicas de Programao I Algoritmo x Qualidade


10.Um comando por linha suficiente. 11.Utilize identao, pois mostra a estrutura lgica do algoritmo. Use identao nos comandos de acordo com o nvel que estejam, ou seja, alinhe comandos de mesmo nvel e desloque comandos de nvel inferior. Ex.: incio comando 1; se condicao1 ento comando2; comando3; seno comando4; comando5; fim-se comando6; fim

38

Tcnicas de Programao I
Mtodo para construo de algoritmos
Ler atentamente o enunciado. justamente o enunciado do exerccio que fornece o encaminhamento necessrio resoluo do problema, que se torna, portanto, dependente de sua completa compreenso. Retirar do enunciado a relao das entradas de dados. Retirar do enunciado a relao das sadas de dados. Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especficas. Nesta fase que determinamos a construo de algoritmos propriamente dito, pois, a partir de alguns requisitos especificados, devemos determinar qual a seqncia de aes capaz de transformar um conjunto definido de dados nas informaes de resultado. Para isso, podemos: Utilizar o Mtodo Cartesiano; Aplicar o Planejamento Reverso; Montar uma Tabela de Deciso.

Tcnicas de Programao I
Mtodo Cartesiano
Deve-se utilizar o Mtodo Cartesiano quando a complexidade (variedade) no estiver totalmente absorvida, conhecida. Nosso principal objetivo enquanto programadores vencer a complexidade, o que mantm clebre a frase de Descartes Dividir

para Conquistar.

Este mtodo consiste justamente em atacar o problema abrangente dividindo-o em partes menores, a fim de torn-lo mais simples ou especfico e, se necessrio, dividir novamente as partes no compreendidas. Podemos esquematizar o seguinte procedimento (algoritmo) para o mtodo: Dividir o problema em suas partes principais. Analisar a diviso obtida para garantir coerncia. Se alguma parte no for bem compreendida, aplicar a ela o mtodo. Analisar o objeto para garantir entendimento e coerncia.

39

Tcnicas de Programao I Planejamento Reverso

Processo utilizado que, a partir das sadas (informaes de resultado). Procura desagregar, desmontando a informao, a fim de atingir os dados de entrada Quando ento teramos (do fim para o incio) todas as aes.

Tcnicas de Programao I Tabelas de Deciso


Utilizar quando uma ou mais aes dependentes de um conjunto de condies assumirem determinadas combinaes de valores. Objetiva basicamente relacionar as aes que dependem de alguma condio com as prprias condies, a fim de esclarecer e visualizar facilmente quais valores o conjunto de condies deve assumir para que se efetue sua respectiva ao. Construir o algoritmo. Executar o algoritmo. Implica executar todas as aes descritas seguindo o fluxo de execuo estabelecido, verificando se os resultados obtidos correspondem ao esperado quando da montagem do algoritmo, detectando ento algum possvel erro no desenvolvimento deste. Essa atividade conhecida por teste de mesa.

40

Tcnicas de Programao I Exemplo


algoritmo "primeiro" // Sntese // Objetivo: analisar idade de uma pessoa // Entrada: idade // Sada: mensagem de velho ou jovem // Declaraes bloco de var declaraes idade : inteiro inicio escreva("Informe sua idade: ") leia (idade) se (idade < 25) entao escreva ("VOCE JOVEM!") senao escreva ("VOCE VELHO!") fimse fimalgoritmo

Sntese do problema

bloco de instrues

Tcnicas de Programao I Um ambiente para escrever algoritmos


Descreveremos uma mquina hipottica para a qual escreveremos nossos algoritmos. O nosso computador hipottico apresentar a seguinte organizao:

41

Tcnicas de Programao I Um ambiente para escrever algoritmos


- Cada

uma das partes constituintes da figura acima tem os seguintes significados:


- o meio pelo qual os dados que sero trabalhados pelo algoritmo vo ser introduzidos em nosso computador hipottico; -Parte responsvel pelas operaes matemticas e avaliaes lgicas;

1. Dispositivo de entrada (o teclado):

2. Unidade Lgica e Aritmtica (ULA): 3. Unidade de Controle: 4. Memria:

- Exerce controle sobre as demais partes do nosso computador. uma verdadeira gerente que distribui tarefas s outras unidades; - Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operaes ficam guardados na memria; - o meio que se dispe para apresentao dos resultados obtidos.

5. Dispositivo de Sada (vdeo e impressora):

Tcnicas de Programao I
Funcionamento do nosso computador
Todos os computadores, independentemente dos seus tamanhos, so conceitualmente semelhantes ao esquema da figura anterior. Resumidamente, podemos afirmar que existem 4 operaes bsicas que qualquer computador pode executar: a) operaes de entrada e sada: ler dados do teclado e escrever dados na tela so exemplos destas operaes. Elas servem para introduzir dados na memria do nosso computador e exibir dados que j estejam l armazenados; b) operaes aritmticas: so utilizadas na realizao de operaes matemticas (adio, subtrao, multiplicao e diviso); c) operaes lgicas e relacionais: tm aplicabilidade em comparaes, testes de condies lgicas (2>6 ? X=Y ?); d) movimentao de dados entre os vrios componentes: as operaes aritmticas so executadas na Unidade Lgica e Aritmtica, necessitando da transferncia dos dados para essa unidade e da volta do resultado final para ser guardado na memria.

42

Tcnicas de Programao I
Resolvendo um problema

Suponha que queiramos resolver o seguinte problema: a partir de dois nmeros que sero informados, calcular a adio dos mesmos. Se voc fosse encarregado de efetuar essa tarefa, seria bem provvel que utilizasse os passos a seguir:

a) saber quais so os nmeros; b) calcular a soma dos nmeros; c) responder questo com o valor do resultado.

Tcnicas de Programao I
Resolvendo um problema

Vejamos como seria resolvido esse mesmo problema em termos das operaes bsicas citadas anteriormente:

a) operao de entrada de dados dos nmeros ; b1) movimento do valor dos nmeros entre a memria e a ULA; b2) operao aritmtica de somar os 2 nmeros; b3) movimentao do resultado da ULA para guardar na memria; c) operao de sada do resultado, que est guardado na memria, para o dispositivo de sada desejado.

Deve-se salientar que os passos b1 b3, normalmente, ficam embutidos na operao matemtica, no sendo explicitados.

43

Tcnicas de Programao I
Resolvendo um problema

Em resumo, pode-se dizer que escrever algoritmos ou, em ltima anlise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operaes bsicas citadas. Esses passos que compem o algoritmo so denominados de comandos. Os comandos de uma linguagem de programao podem estar mais prximos da mquina (linguagens de baixo nvel) ou serem mais facilmente entendidos pelo homem (linguagens de alto nvel). A seqncia de operaes bsicas, dada anteriormente, para resolver o problema de adicionar dois nmeros, est em uma linguagem de baixo nvel para o nosso computador hipottico. Em uma linguagem de alto nvel teramos um resultado assim:
leia (x,y) soma <- x + y escreva(soma)

Tcnicas de Programao I
Instrues Delimitadoras Servem para especificar o incio e o fim do algoritmo. inicio ... fimalgoritmo

44

Tcnicas de Programao I
Declarao de Variveis Utilizado para especificar os nomes e os respectivos tipos das variveis necessrias no algoritmo var <variveis>: <tipo> onde: <variveis> - lista de nomes de variveis separados por vrgula <tipo> - inteiro, real, caracter, cadeia, lgico

Tcnicas de Programao I
Declarao de Variveis

Exemplos: var var var var a,b,c: real nome: cadeia (caractere) sexo: caractere pratica_esporte: lgico

45

Tcnicas de Programao I
Bloco de Comentrio

Serve para explicar um determinado trecho do algoritmo, para torna-lo mais claro, facilitando seu entendimento por outras pessoas ou posteriormente. // <comentrio> Exemplo: // Isto um exemplo de comentrio

Tcnicas de Programao I
Instruo de Entrada

Usada para ler dados de entrada do algoritmo. leia(<variveis>) onde: <variveis> - contero os dados lidos.

46

Tcnicas de Programao I
Instruo de Entrada

Exemplos: leia(a,b,c) leia(nome) leia(sexo) leia(pratica_esporte)

Tcnicas de Programao I
Instruo de Sada Usada para mostrar os resultados do processamento dos dados de entrada. escreva(<resultados>) onde: <resultados> - geralmente o contedo de uma ou mais variveis com a resposta do problema.

47

Tcnicas de Programao I
Instruo de Sada Exemplos: escreva(O valor de D : + D) escreva(nome, sexo) escreva(Pratica esporte.)

Tcnicas de Programao I
Instruo de Atribuio Utilizado para atribuir um determinado valor a uma varivel. <varivel> <- <expresso> onde: <varivel> - nome de uma varivel <expresso> - um valor do mesmo tipo da varivel ou uma expresso lgica ou aritmtica.

48

Tcnicas de Programao I
Instruo de Atribuio Exemplos d <- b^2-4*a*c nome <- Paulo Pratica_Esporte <- TRUE (verdadeiro) sexo <- M

Tcnicas de Programao I Estruturas chaves da construo de algoritmos Existem 3 estruturas bsicas de controle nas quais se baseiam os algoritmos: Sequenciao Deciso ou seleo Repetio ou iterao

49

Tcnicas de Programao I Seqenciao

Os comandos do algoritmo fazem parte de uma seqncia, onde relevante a ordem na qual se encontram os mesmos, pois sero executados um de cada vez, estritamente, de acordo com essa ordem. De uma forma genrica, poderamos expressar uma seqncia da seguinte maneira:
Comando-1 Comando-2 Comando-3 : Comando-n

Tem-se uma seqenciao de n comandos na qual os comandos sero executados na ordem em que aparecem, isto , o comando de ordem i+1 s ser executado aps a execuo do de ordem i (o 3 s ser executado aps o 2). Todo algoritmo uma seqncia. A seqenciao aplicada quando a soluo do problema pode ser decomposta em passos individuais.

Tcnicas de Programao I Seqenciao

AO A

AO

50

Tcnicas de Programao I
Seqenciao
Exemplo:
algortmo Concatena var // Declarao de variveis letra1, letra2, espaco : caractere nome1, nome2, nome : caractere inicio espaco <- " " letra1 <- "d" letra2 <- "a" nome1 <- "Joao" nome2 <- "Cunha" nome <- nome1 + espaco + letra1 + letra2 + espaco + nome2 escreva(nome) fimalgoritmo

Tcnicas de Programao I Deciso ou Seleo


Essa estrutura tambm conhecida por estrutura condicional. H a subordinao da execuo de um ou mais comandos veracidade de uma condio. Vejamos o funcionamento: se <condio> entao <seq. de comandos-1> senao <seq. de comandos-2> fimse Se a <condio> for verdadeira ser executado a <seq. de comandos-1> e, em caso contrrio, teremos a execuo da <seq. de comandos-2>. A deciso deve ser sempre usada quando h a necessidade de testar alguma condio e em funo da mesma tomar uma atitude. Em nosso dia-a-dia, estamos sempre tomando decises, vejamos um exemplo: Se tiver dinheiro suficiente, ento vou almoar em um bom restaurante. Caso contrrio (seno), vou comer um sanduche na lanchonete da esquina.

51

Tcnicas de Programao I

Deciso ou Seleo

CONDIO

AO A

AO B

Tcnicas de Programao I Deciso ou Seleo


Exemplo: algortmo MaioNumero // Declarao de variveis 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

Tcnicas de Programao I

Repetio ou Iterao

Essa estrutura tambm conhecida por looping ou lao. A repetio permite que tarefas individuais sejam repetidas um nmero determinado de vezes ou tantas vezes quantas uma condio lgica permita. Vejamos alguns exemplos: a) vou atirar pedras na vidraa at quebr-la; b) baterei cinco pnaltis; c) enquanto tiver sade e dinheiro, vou desfrutar a vida. No exemplo (a), vai-se repetir a ao de atirar pedras na janela at que seja satisfeita a condio de quebrar a janela. No exemplo (b), haver a repetio da atitude de bater um pnalti um nmero determinado de vezes (cinco). No exemplo (c), a condio que me permitir continuar desfrutando a vida ter dinheiro e sade. A utilizao combinada dessas 3 estruturas descritas vai permitir expressar a soluo para uma gama muito grande de problemas. Todas as linguagens de programao oferecem representantes dessas estruturas.

Tcnicas de Programao I Repetio ou Iterao


ESTRUTURA ENQUANTO-FAA ESTRUTURA REPITA-AT ESTRUTURA PARA

F
CONTADOR loop AO

53

Tcnicas de Programao I Repetio ou Iterao


Exemplo Enquanto-Faa: algortmo ExemploEmquantoFaca // Declarao de variveis var A : inteiro B : inteiro inicio leia(A) enquanto A > 0 faca leia(B) escreva(B) A <- A - 1 fimenquanto fimalgoritmo

Tcnicas de Programao I Repetio ou Iterao


Exemplo Repita-At: algortmo ExemploRepitaAte // Declarao de variveis 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 - 1 ate A < 1 fimalgoritmo

54

Tcnicas de Programao I Repetio ou Iterao


Exemplo Para: algortmo ExemploPara // Declarao de variveis var A : inteiro B : inteiro i : inteiro inicio // Mostra o dobro de dez nmeros fornecidos para i = 1 ate 10 faca leia(A) B <- A * 2 escreva(B) fimpara fimalgoritmo

Tcnicas de Programao I Refinamentos sucessivos


Um algoritmo considerado completo se os seus comandos forem do entendimento do seu destinatrio. Num algoritmo, um comando que no for do entendimento do destinatrio ter que ser desdobrado em novos comandos, que constituiro um refinamento do comando inicial, e assim sucessivamente, at que os comandos sejam entendidos pelo destinatrio. Por exemplo, o algoritmo para calcular a mdia aritmtica de dois nmeros pode ser escrito da seguinte forma: algoritmo CalculaMedia inicio Receba os dois nmeros Calcule a mdia dos dois nmeros Exiba o resultado fimalgoritmo

55

Tcnicas de Programao I

Refinamentos sucessivos

Podemos desdobrar o comando Calcule a mdia dos dois nmeros em: Soma os dois nmeros Divida o resultado por 2 Aps esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatrio no saiba fazer as operaes de adio e diviso, ou no seja capaz de entender diretamente algum comando.

Tcnicas de Programao I Refinamentos sucessivos


O algoritmo estando completo, podemos reescrev-lo, inserindo o refinamento na posio do comando que foi refinado. Assim sendo, obtm-se: algoritmo CalculaMedia inicio Receba os dois nmeros Soma os dois nmeros Divida o resultado por 2 Exiba o resultado fimalgoritmo

56

Tcnicas de Programao I

Refinamentos sucessivos

Reescrever um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma viso global de como o algoritmo deve ser executado. medida que o algoritmo passa a ser maior e mais complexo, esta viso global torna-se menos clara e, neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entend-lo.

Tcnicas de Programao I Concatenao

O operador + caso seja usado entre variveis do tipo caractere ou cadeia, causar uma ao conhecida por concatenao, ou seja, juntar os caracteres ou cadeias usados na operao em uma s cadeia.

Exemplo: algortmo Concatena var // Declarao de variveis letra1, letra2, espaco : caractere nome1, nome2, nome : caractere inicio espaco <- " " letra1 <- "d" letra2 <- "a" nome1 <- "Joao" nome2 <- "Cunha" nome <- nome1 + espaco + letra1 + letra2 + espaco + nome2 escreva(nome) fimalgoritmo

57

Tcnicas de Programao I
- Exerccios: 1. Sabendo que a rea do crculo dada pela frmula: A= * r2 Onde =3.1416 e r o raio da circunferncia - Crie um algortmo / programa chamado areaCirculo seguindo a conveno para nomear os identificadores - Crie um comentrio multilinha identificando a funo do mesmo, seu nome e a data atual. - Declare trs variveis, duas com valor ( e raio) e uma para a rea. Faa um comentrio explicando a finalidade de cada varivel. - Calcule e escreva o valor da rea para as circunferncias de raio 3, 5, e 9. R3 = 28,2744 R5 = 78,54 R9 = 254.4696

Tcnicas de Programao I
- Exerccios: (cont.) 2. Faa um algoritmo que receba quatro nmeros inteiros e que calcule e apresente a soma deles. 3. Faa um algoritmo que receba trs notas e que calcule e apresente a mdia aritmtica entre elas. 4. Escreva um algoritmo que armazene o valor 10 em uma varivel A e o valor 20 em uma varivel B. A seguir (utilizando apenas atribuies entre variveis) troque os seus contedos fazendo com que o valor que est em A passe para B e viceversa. Ao final, escrever os valores que ficaram armazenados nas variveis.

58

Tcnicas de Programao I
- Exerccios: (cont.) 5. Analise os algoritmos abaixo e diga o que ser impresso na tela ao serem executados:

Tcnicas de Programao I
- Exerccios: (cont.) 6. Os pares de instrues a) A <- (4/2)+(2/4) b) B <- 4/(2+2)/4 c) C <- (4+2)*2-4 abaixo produzem o mesmo resultado? e A <- 4/2+2/4 e B <- 4/2+2/4 e C <- 4+2*2-4

7. Escreva um algoritmo para ler um valor (do teclado) e escrever (na tela) o seu antecessor. 8. Escreva um algoritmo para ler as dimenses de um retngulo (base e altura), calcular e escrever a rea do retngulo. 9. Faa um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e escreva a idade dessa pessoa expressa apenas em dias. Considerar ano com 365 dias e ms com 30 dias.

59

Tcnicas de Programao I
- Exerccios: (cont.) 10. Escreva um algoritmo para ler o nmero total de eleitores de um municpio, o nmero de votos brancos, nulos e vlidos. Calcular e escrever o percentual que cada um representa em relao ao total de eleitores. 11. Escreva um algoritmo para ler o salrio mensal atual de um funcionrio e o percentual de reajuste. Calcular e escrever o valor do novo salrio. 12. O custo de um carro novo ao consumidor a soma do custo de fbrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fbrica). Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo para ler o custo de fbrica de um carro, calcular e escrever o custo final ao consumidor.

Tcnicas de Programao I
- Exerccios: (cont.) 13. Uma revendedora de carros usados paga a seus funcionrios vendedores um salrio fixo por ms, mais uma comisso tambm fixa para cada carro vendido e mais 5% do valor das vendas por ele efetuadas. Escrever um algoritmo que leia o nmero de carros por ele vendidos, o valor total de suas vendas, o salrio fixo e o valor que ele recebe por carro vendido. Calcule e escreva o salrio final do vendedor. 14. Escreva um algoritmo para ler uma temperatura em graus Fahrenheit, calcular e escrever o valor correspondente em graus Celsius (baseado na frmula abaixo): C F - 32 ---------- = ----------5 9

60

Tcnicas de Programao I
- Exerccios: (cont.) 15. Faa um algoritmo que leia trs notas de um aluno, calcule e escreva a mdia final deste aluno. Considerar que a mdia ponderada e que o peso das notas 2, 3 e 5. Frmula para o clculo da mdia final : n1 * 2 + n2 * 3 + n3 * 5 Mdia final = ----------------------------------10

Tcnicas de Programao I
1.7 Paradigmas de Linguagem de Programao 1.7.1 Programao Linear 1.7.2 Programao Estruturada 1.7.3 Programao Orientada a Objetos

61

Tcnicas de Programao I
1.7.1 Programao Linear
- Pressupe a criao de programas que, na sua execuo, obedeam a uma seqncia de passos executados consecutivamente, com incio e fim definidos. - Usada nas primeiras linguagens de programao Exemplo: - Linguagem Assembly (uso de mnemnicos) - 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

Tcnicas de Programao I
1.7.2 Programao Estruturada
- Situando-se na programao estruturada, pode-se dizer que busca a criao de estruturas simplificadas usando para isso sub-rotinas e funes. por sua vez a linha divisria entre a programao linear e a programao orientada a objetos, em se falando de criao de softwares. Na prtica, pode-se dizer tambm que a programao estruturada transformou-se em uma programao modular, onde cada parte de tal programao busca resolver uma necessidade nica.

62

Tcnicas de Programao I
1.7.2 Programao Estruturada
Exemplo: Linguagem Pascal Nmeros Pares entre dois valores inteiros
program pares; var x, y: integer; begin writeln('Digite os dois valores'); readln(x, y); if (x mod 2) <> 0 then x := x + 1; while x <= y do begin writeln(x, ' - '); x := x + 2; end; writeln('Fim da Lista'); end.

Tcnicas de Programao I
1.7.3 Programao Orientada a Objetos
- Na programao orientada a objetos, a base do pensamento na hora da construo de um programa, a busca de uma total interao entre diversas unidades de software, chamados objetos. A busca; na hora de fazer a anlise e o projeto de orientao a objetos, tem como conseqncia a procura do melhor conjunto de objetos para formar tal sistema.

63

Tcnicas de Programao I
1.7.3 Programao Orientada a Objetos
- Com isto, o resultado a necessidade da troca de mensagens entre tais objetos. O que gera o correto e eficaz funcionamento do sistema. Nesta programao, as classes contidas em um certo sistema/programa, definem os objetos presentes e trabalhados. Cada classe tambm determina o comportamento que definido pelos mtodos e seus estados possveis, chamados de atributos. - Talvez o exemplo mais fcil de ser citado a linguagem java, muito utilizada atualmente no mercado de desenvolvimento de sistemas.

Tcnicas de Programao I
1.7.3 Programao Orientada a Objetos
- Exemplo: Programa em Java para somar dois nmeros inteiros:
import javax.swing.JOptionPane; public class Soma{ public static void main(String[]args){ //declarao das variveis String numeroA, numeroB; int numero1, numero2, soma; //pede dois nmeros inteiros numeroA = JOptionPane.showInputDialog("Entre com o primeiro nmero inteiro"); numeroB = JOptionPane.showInputDialog("Entre com o segundo nmero inteiro"); //converte os nmeros de string para inteiro numero1 = Integer.parseInt(numeroA); numero2 = Integer.parseInt(numeroB); //efetua a soma dos nmeros soma = numero1 + numero2; //mostra o resultado da soma para o usurio JOptionPane.showMessageDialog(null,"A soma dos nmeros : " + soma,"Resultado",JOptionPane.PLAIN_MESSAGE);

64

Tcnicas de Programao I
1.8 Processo de Traduo Compilao Interpretao Implementao hbrida

Tcnicas de Programao I

CDIGO FONTE

TRADUO

LINGUAGEM DE MQUINA

65

Tcnicas de Programao I
Compilao
Programas so traduzidos para linguagem de mquina e so executados diretamente no computador Envolve dois processos distintos: Traduo (compilao) Execuo A execuo iniciada depois que a traduo concluda A execuo no tem acesso ao programa fonte Vantagem: execuo rpida

Tcnicas de Programao I
Compilao

LP

Fonte

Compilao LM Dados Execuo


Executvel criado antes da execuo

66

Tcnicas de Programao I
Interpretao
O interpretador executa diretamente cada instruo do programa fonte, sem traduzir para linguagem de mquina Simula, por software, uma mquina virtual onde o ciclo de execuo entende os comandos da linguagem de alto nvel Desvantagem: execuo de 10 a 100 vezes mais lenta, devido ao passo de decodificao da instruo de alto nvel, que mais complexa Tem acesso ao programa fonte, para depurao ou mesmo para alterar o cdigo sendo executado

Tcnicas de Programao I
Interpretao

Fonte LP

Interpretao LM Dados Execuo


Executvel criado em tempo de execuo

67

Tcnicas de Programao I
Implementao hbrida
Mescla compilao com interpretao Programas fonte so traduzidos intermediria que interpretada para uma linguagem

Tem maior portabilidade que uma linguagem compilada So mais rpidas que uma linguagem interpretada - instrues intermedirias so projetadas para serem interpretadas facilmente

Tcnicas de Programao I
Implementao hbrida

LP

Fonte Compilao

Cdigo Intermedirio

Cdigo intermedirio criado antes da execuo

Interpretao LM Dados Execuo


Executvel criado em tempo de execuo

68

Tcnicas de Programao I
Cdigo Intermedirio

mais gil de INTERPRETAR. No especfico de uma PLATAFORMA. Necessita ser instalado um INTERPRETADOR DE CDIGO. Exemplo.: JVM Java Virtual Machine (Mquina Virtual Java) .NET Dot Net (Mquina Virtual Microsoft) O cdigo intermedirio chamado de bytecode

Tcnicas de Programao I
Ambiente Java Tpico
O programa criado no editor e armazenado em disco. O compilador cria bytecodes e os armazena em disco.

Fase 1

Editor

Disco

Fase 2

Compilador

Disco
Memria Principal

Fase 3

Carregador de Classe

Disco

. . .

O carregador de classe coloca bytecodes na memria.

69

Tcnicas de Programao I
Ambiente Java Tpico Fase 4
O verificador de bytecodes Memria Principal O verificador de bytecodes confirma que todos os bytecodes so vlidos e no violam restries de segurana do Java.

. . .

Fase 5

Memria Principal Interpretador

. . .

O interpretador l os bytecodes e os traduz para uma linguagem que o computador pode entender, possivelmente armazenando valores dos dados enquanto executa o programa.

Tcnicas de Programao I
Java Viso Geral
Java uma tecnologia. Basicamente constitui-se de uma linguagem de programao e um programa para execuo chamado de mquina virtual (JVM Java Virtual Machine). Quando programa-se em Java usa-se a linguagem de programao Java e um ambiente de desenvolvimento Java para gerar um software que ser executado em um ambiente de distribuio Java, por um ambiente de execuo Java. Este conjunto chamado plataforma Java.

70

Tcnicas de Programao I
Java Mquina Virtual
A mquina virtual Java um dos principais componentes da plataforma Java e permite que o mesmo cdigo possa ser executado em vrias plataformas sem a necessidade de recompilao. A JVM (Java Virtual Machine) emula uma mquina real possuindo um conjunto de instrues prprio e atua em reas de gerenciamento de memria. A JVM possui uma especificao que pode ser implementada nas diversas arquiteturas. Essa especificao visa no atender a nenhum tipo de tecnologia em especfico, seja de hardware ou de sistema operacional.

Tcnicas de Programao I
Java Mqina Virtual
A mquina virtual no trabalha diretamente com a linguagem de programao Java, mas sim com o arquivo de formato class. Esse tipo de arquivo contm os bytecodes, que so as instrues para a mquina virtual e uma tabela de smbolos. Uma JVM possui definies implementao dos seguintes itens: CPU) concretas para a

- Conjunto de instrues (equivalentes s instrues da Conjunto de registradores Formato padro de classes Pilha de memria Pilha de objetos coletados pelo garbage-collector rea de memria

71

Tcnicas de Programao I
Java Virtual Mquina

O cdigo Java compilado, gerando o conjunto de instrues chamado de byte-code. Esse byte-code aplicado Mquina Virtual Java (JVM) que se encarrega de interpretar os comandos para o sistema operacional onde o programa est rodando. Ou seja, a mquina virtual traduz as instrues do cdigo Java para instrues vlidas no sistema operacional em que est rodando. Esse byte-code poder ento ser interpretado por qualquer mquina virtual Java, rodando em Linux, Windows, Palm OS, Solaris ou qualquer outro sistema operacional que possua uma mquina virtual Java implementada. Compile once, run anywhere.

Tcnicas de Programao I
Java Mquina Virtual
A JVM no permite que um programa Java acesse recursos de hardware diretamente, protegendo o computador de operaes perigosas, como acesso regies protegidas da memria ou formatao fsica do disco rgido.

Ambiente de Desenvolvimento

CDIGO JAVA COMPILADOR

Distribuio
VM Windows SO Windows

Byte Code Java

VM Linux SO Linux

VM Celular SO Celular

Ambiente de Execuo

72

Tcnicas de Programao I
Java Mquina Virtual
pela Um programa Java s executado caso o seu byte-code passe verificao de segurana da JVM, que consiste em:

- O programa foi escrito utilizando a sintaxe e semntica da linguagem Java - No existem violaes de reas restritas de memria no cdigo - O cdigo no gera Stack Overflow - Os tipos de parmetros dos mtodos so corretos - No existe nenhuma converso ilegal entre dados do programa - O acesso a objetos est corretamente declarado Caso alguma das condies acima no seja satisfeita, a mquina virtual Java causar um erro de execuo (runtime error).

Tcnicas de Programao I
Gerenciamento de Memria
Durante a execuo de um programa de computador, ocorre a alocao e liberao dinmica de memria RAM. Dados so escritos e lidos da memria do computador satisfazendo os requisitos de cada programa. Em linguagens tradicionais como Pascal, Basic e C/C++, o programador responsvel por controlar essa alocao, impedindo o estouro de memria (stack overflow) e outros problemas, como o acesso indevido a reas reservadas de memria. Para facilitar a vida dos programadores, e evitar os erros comuns associados alocao de memria, a linguagem Java introduziu o conceito de garbage-collection.

73

Tcnicas de Programao I
Gerenciamento de Memria
Garbage-collection um mecanismo de controle automtico de alocao e liberao de memria. Quando uma varivel declarada em um cdigo de computador, a JVM cria um ponteiro para uma rea de memria equivalente ao tamanho do tipo de dado utilizado por essa varivel. Quando essa varivel associada a outra regio de memria, a JVM coloca o espao alocado anteriormente em uma pilha de objetos em desuso. Caso o computador fique com pouca memria disponvel, a JVM remove objetos dessa pilha, permitindo que esse espao de memria seja re-alocado.
O processo de garbage-collection ocorre automaticamente durante a execuo de um programa Java. O programador no precisa se preocupar com aritmtica de ponteiros (grande dificuldade em linguagens como C e Pascal.

Tcnicas de Programao I
Plataforma Java
plataforma Java se divide em trs grandes edies. http://www.javafree.org/wiki/Java Java Standard Edition (JavaSE): a tecnologia Java para computadores pessoais, notebooks e arquiteturas com poder de processamento e memria considerveis. Vrias APIs acompanham esta verso e tantas outras podem ser baixadas opcionalmente no site da Sun. com elas que a maioria das aplicaes so construdas e executadas.O J2SE possui duas divises: - 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, como compilador (javac), depurador, gerador de documentao (javadoc), empacotador de componentes (jar). - Java Runtime Edition (JRE): uma verso mais leve da JDK pois preparada para o ambiente de execuo, ou seja, esta verso que executar os sistemas construdos com a SDK. A

74

Tcnicas de Programao I
Plataforma Java
Java Mobile Edition (JavaME): a tecnologia Java para dispositivos mveis com limitaes de memria ou processamento. Possui APIs bem simples e leves para economizar espao, memria e processamento. So utilizadas para sistemas em celulares, palm tops, pocket pcs, smartphones, javacards e demais dispositivos. O J2ME se divide em dois grupos de bibliotecas. dividida em dois grupos: - Connected Limited Device Configuration (CLDC): Para celulares e smartphones, que so mais limitados - Connected Device Configuration (CDC): Para Palmtops e Pocket pcs e alguns dispositvos mais poderosos.

Tcnicas de Programao I
Plataforma Java
Java Enterprise Edition (JavaEE): a tecnologia Java para aplicaes corporativas que podem estar na internet ou no. Possui um grande nmero de APIs onde a segurana a principal preocupao. ideal para a construo de servidores de aplicao, integrao de sistemas ou distribuio de servios para terceiros. A plataforma Java EE no um produto, mas sim de uma especificao definida pela Sun. A Java EE simplifica as aplicaes empresariais e multi-camadas, baseada em componentes padronizados, modulares e reusveis, e oferece um conjunto completo de servios para estes componentes.

75

Tcnicas de Programao I
Caractersticas da linguagem
Todos os programas Java bsicos: classes, mtodos, possuem quatro variveis e elementos pacotes.

Package As classes que compem o ncleo de funcionalidades Java esto organizadas em pacotes. Um package Java um mecanismo para agrupar classes de finalidades afins ou de uma mesma aplicao. Alm de facilitar a organizao conceitual das classes, o mecanismo de pacotes permite localizar cada classe necessria durante a execuo da aplicao. No entanto, a principal funcionalidade de um pacote Java evitar a exploso do espao de nome, ou seja, classes com o mesmo nome em pacotes diferentes podem ser diferenciadas pelo nome completo, pacote.classe.

Tcnicas de Programao I
Caractersticas da linguagem
Entre os principais pacotes oferecidos como parte do ncleo Java esto:

java.lang java.util java.io java.net


Packages contm classes e duas outras entidades de Java veremos posteriormente: excees e interfaces. Um package uma coleo de classes e interfaces relacionadas fornecendo proteo de acesso e gerenciamento de nomes de diretrios. Usamos a declarao import para acessar essas classes. Se a declarao import no for utilizada e desejarmos utilizar alguma classe externa, ser necessrio colocar o caminho da classe a cada acesso. que

76

Tcnicas de Programao I
Caractersticas da linguagem
Exemplo: import java.lang.*; O asterisco no final diz ao compilador para importar todas as classes do pacote java.lang. Esse um dos vrios pacotes includos na API. O compilador Java define implicitamente um pacote para as classes no diretrio atual e o importa implicitamente. Esse o motivo porque no precisamos colocar explicitamente as classes que escrevemos em um pacote. Para colocarmos uma classe em um pacote, deve-se inserir a diretiva package com o nome do pacote no incio da classe.

Tcnicas de Programao I
Caractersticas da linguagem
Estrutura de um cdigo Java Como todas linguagem de programao, Java possui um formato bsico para a escrita de cdigos. Tal formato demonstrado abaixo: 1 // Duas barras significam comentrio 2 /* comentrios tambm podem seguir o formato de C++ */ 3 4 public class NomeDoPrograma 5 { 6 // O mtodo main indica que o cdigo Java pode ser

executado
7 8 9 10 11

static public void main(String[] args) { // aqui viro os comandos }

77

Tcnicas de Programao I
Caractersticas da linguagem
Compreendendo o cdigo Java: - linhas 1 e 2: representam comentrios. Um comentrio pode conter qualquer informao relevante ao comportamento do programa, autor, verso, etc. - linha 3: est em branco, pois Java permite linhas em branco entre os comandos - linha 4: a declarao do "nome do programa", que case-sensitive (existe diferena entre maisculas e minsculas). O arquivo que contm o cdigo Java deve ser salvo com o mesmo nome que aparece aps a declarao public class e mais a extenso .java (o exemplo acima deveria ser salvo como NomeDoPrograma.java).

Tcnicas de Programao I
Caractersticas da linguagem
Compreendendo o cdigo Java: - linha 5 e 8: a abertura de chave { indica incio de bloco. - linha 8: essa linha indica Java Virtual Machine que o programa ser executado. Os demais programas no contero o mtodo main(). Quando um programa Java executado, o interpretador da JVM executa os comandos que estiverem dentro do bloco indicado pelo mtodo "static public void main(String)". - linha 9: aqui seria escrito o cdigo propriamente dito. - linha 10 e 11: o fechamento de chave } indica fim de bloco

78

Tcnicas de Programao I
Caractersticas da linguagem
Compilando e Executando A seguir, apresentaremos um exemplo de criao, compilao e execuo de um programa Java, sem o uso de uma IDE, utilizando apenas os programas da JSDK. 1- Crie o arquivo HelloWorld.Java em um diretrio qualquer com o seguinte contedo:

public class HelloWorld { public static void main (String args[]) { System.out.println("Hello World!"); } }

Tcnicas de Programao I
Caractersticas da linguagem

Compilando e Executando 2- Chame o compilador Java para este arquivo: C:\javac HelloWorld.Java 3- Seu diretrio deve ter recebido um novo arquivo aps essa compilao: HelloWorld.class

79

Tcnicas de Programao I
Caractersticas da linguagem

Compilando e Executando 4- Chame o interpretador Java para este arquivo (omita a extenso .class do arquivo): C:\java HelloWorld 5- Observe o resultado na tela: Hello World!

Tcnicas de Programao I
Estrutura da linguagem
Comentrios Qualquer informao especificada entre os caracteres de comentrio ser ignorada pelo compilador. Os comentrios em Java podem ser por linha ou em bloco: Por linha: // isto um comentrio e inicia com duas barras. int valor; // e pode estar no final da linha Em bloco: /*Comentrio em bloco Aceita mltiplas linhas No utilize comentrios aninhados */

80

Tcnicas de Programao I
Estrutura da linguagem
Comentrios A regras que tratam dos comentrios em Java so: - Comentrios no podem ser aninhados - No podem ocorrer dentro de strings ou literais - As notaes /* e */ no tem significado dentro dos comentrios //. - A notao // no tem significado dentro dos comentrios /* e /**.

Tcnicas de Programao I
Estrutura da linguagem

Comentrios javadoc

H tambm um tipo especial de comentrio que utilizado pelo javadoc para gerar documentao da API do cdigo Java. /** */ isto um comentrio para gerao de javadoc

81

Tcnicas de Programao I
Estrutura da linguagem

Identificadores Identificadores usados para determinar nomes de variveis, atributos de classe ou de instncia, parmetros e mtodos. Os identificadores em Java iniciam com uma letra, um sublinhado (_ ) ou um sinal de dlar "$" e podem possuir nmeros aps o primeiro caractere da palavra. Pela premissa de ser casesensitive existe uma diferenciao entre letras maisculas e minsculas.

Tcnicas de Programao I
Estrutura da linguagem
Convenes para Identificadores Na linguagem Java utilizada a seguinte conveno para formao de identificadores:

CONSTANTE varivel Classe

- Constantes com todas as letras em maisculo: - Variveis e mtodos comeam com letra minscula: - Classes e interfaces comeam com letra maiscula:

- Se o identificador for um nome composto por mais de uma palavra, cada nova palavra comea com letra maiscula: exemplo: varivelComNomeComposto

82

Tcnicas de Programao I
Estrutura da linguagem

Tipos Primitivos No Java, todos os objetos necessitam ter seu tipo especificado. Existem 8 tipos primitivos em Java. Seis deles so numricos, um o caractere e o outro o booleano. Os tipos Array e String no so tipos primitivos, so Classes e sero tratados a seguir.

Tcnicas de Programao I
Estrutura da linguagem
Tipos Numricos Inteiros Os tipos inteiros guardam valores numricos sem parte fracionria.
Tipo int short byte long Tamanho 4 bytes 2 bytes 1 byte 8 bytes Faixa de Valores -2.147.483.648 at 2.147.483.647 -32.768 at 32.767 -128 at 127 -9.223.372.036.854.775.808 at 9.223.373.036.854.775.807

Na maioria das ocasies, o tipo int suficiente. No se pode esquecer que como Java portvel, esses valores so os mesmos para qualquer plataforma de hardware.

83

Tcnicas de Programao I
Estrutura da linguagem
Tipos Numricos de Ponto Flutuante Os tipos primitivos que representam valores numricos com ponto flutuante:
Tipo float Tamanho 4 bytes Faixa de Valores +/- 3.40282347E+38F (aproximandamente 7 dgitos significativos) +/1.79769313486231570E+308 (15 dgitos significativos)

double

8 bytes

Normalmente utilizamos o double na maioria das situaes onde necessria a representao desse tipo de nmero, pois sua preciso maior. Nmeros do tipo float aparecem com um sufixo F. (3.04F). Se o nmero aparecer sem o F, ele considerado double.

Tcnicas de Programao I
Estrutura da linguagem
Tipo caractere O tipo char serve para representar apenas uma letra ou nmero.

Tipo char

Tamanho 2 bytes

Faixa de Valores 0 at 65536

Esse tipo serve para representar caracteres usando a tabela Unicode. Dessa tabela faz parte a tabela ASCII e mais alguns caracteres especiais. O tipo char sempre representado por aspas simples (h). Caracteres representados por aspas duplas (h) na verdade so Strings.

84

Tcnicas de Programao I
Estrutura da linguagem

Tipo booleano O tipo booleano pode assumir apenas dois valores, true ou false. Esse tipo usado apenas para testes lgicos.
Tipo Tamanho Faixa de Valores true ou false

boolean 1 bit

Tcnicas de Programao I
Estrutura da linguagem

Valores Padro Abaixo segue uma lista com os valores padres de todos os tipos primitivos, sendo que no necessrio inicializar as variveis com esses valores, a mquina virtual cuidar desse trabalho.

Tipo byte short int long float double boolean

Valor 0 0 0 0 0.0 0.0 false

85

Tcnicas de Programao I
Estrutura da linguagem
Mtodos da Classe java.lang.String A classe java.lang.String possui muitos mtodos. Abaixo apresentamos os mais significativos: charAt(int indice) retorna o caractere na posio especificada int compareTo(String outraString) retorna um valor negativo se a string vier antes de outraString na ordem do dicionrio, 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

Tcnicas de Programao I
Estrutura da linguagem
Mtodos da Classe java.lang.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, ignorando maisculas e minsculas String toLowerCase() retorna uma nova string convertendo maisculas para minsculas

86

Tcnicas de Programao I
Estrutura da linguagem

Mtodos da Classe java.lang.String String toUpperCase() retorna uma nova string convertendo minsculas para maisculas String trim() elimina espaos iniciais e finais

Tcnicas de Programao I
Estrutura da linguagem
Operadores

Operador de Atribuio A atribuio feita atravs do operador =: <identificador> = <valor>; Exemplos: (na declarao da varivel) float umFloat = 0.5; char caracter = i; Exemplos: (aps declarao da varivel) idade = 18; existe = true;

87

Tcnicas de Programao I
Estrutura da linguagem
Operadores

Operadores Aritmticos Operadores aritmticos so aqueles que efetuam operaes aritmticas em um ou mais tipos primitivos.
Operador + * / % Nome Adio Subtrao Multiplicao Diviso Mdulo Exemplo 23+29 29-23 0.5 * salario 100/42 57% 5

Tcnicas de Programao I
Estrutura da linguagem
Operadores Operadores Relacionais Os operadores relacionais utilizados para formar expresses condicionais, utilizados em testes e condies 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

Tcnicas de Programao I
Estrutura da linguagem
Operadores Operadores Lgicos Os operadores lgicos, assim como os relacionais, so utilizados para formar expresses condicionais, utilizados em testes e condies de entrada em um fluxo do programa.
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)

Tcnicas de Programao I
Estrutura da linguagem
Operadores

Atribuio Composta Para facilitar a programao, Java oferece um tipo de atribuio chamada atribuio composta, que pode ser formada com operadores aritmticos ou lgicos. Exemplos: a += b; a *= 3; // Equivalente a: a = a + b; // Equivalente a: a = a * 3;

89

Tcnicas de Programao 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 utilizao da varivel. Colocandose antes (++var), ser realizado o incremento ou decremento e depois o valor da varivel ser utilizado. Ao contrrio (var++), o operador aps a varivel, faz com que o valor da varivel seja utilizado primeiro e o incremento ou decremento seja feito depois. Exemplos: i++; --i; //Equivalente a: //Equivalente a: i = i +1; i = i -1;

Tcnicas de Programao I
Estrutura da linguagem
Operadores Precedncia dos Operadores A tabela abaixo apresenta os operadores em ordem decrescente de precedncia, isto , o que est mais acima ocorre antes:
++ * -/ + <> <= >= == ^ && || = *= /= %= += -= != + % !

90

Tcnicas de Programao I
Estrutura da linguagem
- Caracteres Especiais Caractere \n \t \b \r \f \\ \ \ Significado Nova Linha (Enter) Tab (10 espaos) Backspace (retorna 1 caractere) Retorno (incio da linha) Formfeed (avana 1 pgina na impressora) Barra Invertida Apstrofe Aspas

Tcnicas de Programao I
- Variveis

Estrutura da linguagem

Devem ser declaradas antes de serem usadas Devem ter um tipo definido (o tipo no muda) Devem ter seu valor iniciado antes de us-la Deve ser usada dentro do escopo (mtodo ou bloco) Tipo Tamanho (bits) Valor Mnimo Valor Mximo

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

Tcnicas de Programao I
- Variveis

Estrutura da linguagem

Devem ser declaradas antes de serem usadas Devem ter um tipo definido (o tipo no muda) Devem ter seu valor iniciado antes de us-la Deve ser usada dentro do escopo (mtodo ou bloco) Declarao: <tipo da varivel> <nome da varivel>; Declarao e atribuio: <tipo> <nome> = <valor>; Exemplo:

int saldo; double PI = 3.1416;

Tcnicas de Programao I
- String

Estrutura da linguagem

String uma classe que manipula cadeias de caracteres. A classe String possui mtodos para essas manipulaes. Exemplo: String str = Isto uma String do Java; String nomeCliente=Luis, endereo, localTrabalho;
str.equals( str2 ) - Comparao entre Strings str.length() Tamanho da String str.substring(0, 10) - string comeando em 0 e terminando em 9 str.charAt(5) Caractere na posio 5 str.indexOf(uma); - retorna a posio da palavra na String str.replace(a,@); - substitui a por @ str.replaceAll(String,Cadeia de caracteres); - Substitui uma palavra

92

Tcnicas de Programao I
Estrutura da linguagem
- Entrada e Sada Textual: Primeiras Noes Operao de sada (ou escrita, ou gravao) de dados envia dados para um dispositivo de sada conectado ao computador (ex: tela de terminal, impressora, disco, fita etc.). Operao de entrada (ou leitura) de dados obtm dados de um dispositivo de entrada (ex: teclado, disco etc.). Dados armazenados como seqncias de bytes ou caracteres. Dados podem ser armazenados em arquivos, organizados em estrutura hierrquica de conjuntos de arquivos (chamados de diretrios) para facilitar localizao e uso de arquivos.

Tcnicas de Programao I
Estrutura da linguagem
- Entrada e Sada Textual Texto: seqncia de linhas, separadas por caractere terminador de linha (\n). Escrevendo caracteres em dispositivo de sada padro: System.out.println(e) * out: varivel esttica declarada na classe System. * tipo de out: PrintStream, contm definio do mtodo println.

93

Tcnicas de Programao I
Estrutura da linguagem
- Entrada e Sada Textual Lendo caracteres do dispositivo de entrada padro: int a = System.in.read(); armazena em a um nico byte lido do dispositivo de entrada padro. Valor entre 0 e 255 representa cdigo do caractere lido.

Tcnicas de Programao I
Estrutura da linguagem
- Entrada e Sada Textual Leitura de um nico caractere (representvel em um byte), do dispositivo de entrada padro, e escrita desse caractere lido no dispositivo de sada padro:
import java.io.*; class ESTextual { public static void main (String[] args) throws IOException{ int a = System.in.read(); System.out.println((char)a); } }

import java.io.*; importa nomes definidos em biblioteca java.io (explicao detalhada mais frente). throws IOException tambm explicado mais adiante.

94

Tcnicas de Programao I
Estrutura da linguagem
- Entrada e Sada em Janelas, Campos de Texto e Botes E/S em componentes de interface grfica (ou interface visual) Modelo de tratamento de eventos: aes (ex: pressionar boto do mouse) originam chamadas a mtodos. Bibliotecas AWT e Swing permitem tratamento de eventos em componentes de interface grfica

Tcnicas de Programao I
Estrutura da linguagem showInputDialog
String entrada = JOptionPane.showInputDialog("Entre com um valor inteiro:");

95

Tcnicas de Programao I
Estrutura da linguagem showInputDialog
showInputDialog cria janela e espera usrio digitar cadeia de caracteres no campo de texto. Boto OK clicado ou tecla Enter pressionada -> cadeia digitada retornada como objeto da classe String (e janela desaparece). Boto Cancel clicado -> valor null retornado.

Tcnicas de Programao I
Estrutura da linguagem showMessageDialog
import javax.swing.*; class JanelasDeDialogo1{ public static void main(String[] a){ String entrada = JOptionPane.showInputDialog("Entre com um valor inteiro: "); int x = Integer.parseInt(entrada); entrada = JOptionPane.showInputDialog("Entre com outro valor inteiro: "); int y = Integer.parseInt(entrada); } JOptionPane.showMessageDialog(null,"Soma dos valores digitados = " + (x+y));

96

Tcnicas de Programao I
Estrutura da linguagem showMessageDialog

Tcnicas de Programao I
Estrutura da linguagem showMessageDialog
1o argumento especifica componente abaixo do qual a janela deve ser criada se null (isto , nenhum componente) for especificado, a janela criada no centro da tela 2o argumento especifica cadeia de caracteres a ser mostrada na janela

97

Tcnicas de Programao I
Estrutura da linguagem
Outros exemplos:
String nome; String sexo; int idade; ... // Entrada de dados nome = javax.swing.JOptionPane.showInputDialog("Nome da pessoa:"); idade = Integer.parseInt(javax.swing.JOptionPane.showInputDialog("Idade da pessoa:")); sexo = javax.swing.JOptionPane.showInputDialog("Sexo da pessoa:"); ... // Sada de dados javax.swing.JOptionPane.showMessageDialog(null, nome, "Nome da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE); javax.swing.JOptionPane.showMessageDialog(null, idade, "Idade da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE); javax.swing.JOptionPane.showMessageDialog(null, sexo, "Sexo da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE);

Tcnicas de Programao I
NetBeans

98

Tcnicas de Programao I
Java Orientao Objetos
A programao OO separa estritamente a noo entre o que deve ser feito e como deve ser feito. O que, descrito como um conjunto de mtodos ( as vezes dados disponveis publicamente) e suas semnticas associadas. Essa combinao mtodos, dados e semntica Conhecido com um contrato entre o projetista da classe e o programador que a utiliza. O como, de um objeto definido por sua classes, a qual de define a implementao dos mtodos que o objeto admite. Cada objeto uma istncia de uma classe. Caractersticas da POO: Abstrao , Polimorfismo, Herana, Encapsulamento.

Tcnicas de Programao I
Java Orientao Objetos

Abstrao, o mecanismo de programao que oculta os detalhes privados

da implementao que esto por detrais das interfaces pblicas. Polimorfismo, se refere a capacidade de reconhecer num objeto particular um outro mais geral. Sobcarga, A forma mais simples de polimorfismo oferecido pela linguagem Java a sobrecarga de mtodos como o mesmo nome com assinatura diferente. Herana, um mecanismo de criarmos novos objetos a partir de outros que j existem, tomando como prontas e disponveis as caractersticas do objeto origem. Isto cria a possibilidade de criarmos vrias classes, hierarquicamente relacionadas. Encapsulamento, indica que podemos utilizar um objeto conhecendo apenas sua interface.

99

Tcnicas de Programao I
Classe
Uma classe um tipo de objeto que pode ser definido pelo programador para descrever uma entidade real ou abstrata. Podemos entender uma classe como um modelo ou especificao para certos objetos. Uma classe contm dois tipos de membros, chamados campos e mtodos. Campos (atributos) so dados que pertencem classe propriamente dita ou aos objetos da classe; eles compem o estado de um objeto ou classe. Mtodos so conjuntos de instrues que operam os campos para manipular o estado. Instanciao, A criao de um objeto. Instanciar significa criar uma instncia da classe. Classe o modelo abstrato de um objeto, uma instncia representa um objeto concreto desta classe.

Tcnicas de Programao I
NetBeans
NetBeans IDE um conjunto de bibliotecas, mdulos e APIs. formando um ambiente integrado de desenvolvimento visual possibilitando ao desenvolvedor complilar, debugar, efetuar deploying de suas aplicaes . um produto open source, 100% Java e possui vrios mdulos de expanso (modules), que podem ser baixados do prprio site http://www.netbeans.org

100

Tcnicas de Programao I
NetBeans
Interface com o usurio Os menus, barras de ferramentas e outros componentes UI-interfaces de apresentao so fornecidos por esta plataforma. Editor - Rico em recursos para aplicaes visuais Swing ou AWT, para aplicaes WEB (Servlets e JSP, JSTL, EJBs) , XML com suporte a DTDs e XML Schemas e etc. Gerenciamento As views gerenciam a estrutura do seu projeto localmente ou remotamente, podendo tambm utilizar Projects. CVS, FTP ou base de dados remota. Cross-Plataform Totalmente escrito em 100% Java, portanto multi-plataforma . Wizards - ferramentas de gerenciamento de cdigo, criao de templates, etc.

Tcnicas de Programao I
NetBeans

Workbench rea de trabalho

Samples Exemplos

Tutorials Tutorial

101

Tcnicas de Programao I
rea de trabalho
rea de Desenvolvimento

Projeto

Navegador

Saida

Tcnicas de Programao I
Criando Projeto
Aplicao Web Site

102

Tcnicas de Programao I
Criando Projeto

Tcnicas de Programao I
Criando package

103

Tcnicas de Programao I
Criando classes

Tcnicas de Programao I
Criando Classes

104

Tcnicas de Programao I
Line Number

Tcnicas de Programao I
Alterar o Navegador

105

Tcnicas de Programao I
Configurao: Fonte, etc

Tcnicas de Programao I
Projeto

106

Tcnicas de Programao I
Class: - Main - Greeting

Tcnicas de Programao I
Class: - Main - ClasseValor

107

Tcnicas de Programao I
Criando classes

Tcnicas de Programao I
NetBeans

108

Tcnicas de Programao I
Dilogo
As caixas de dilogos so janelas que em geral so utilizadas para exibir mensagens importantes para o usurio de um aplicativo. A class JOptionPane permite que voc exiba facilmente uma caixa de dilogo contendo informaes chamada dilogo de mensagem. O mtodo showMessageDialog usado para apresentar um texto e esperar por uma confirmao do usurio. O mtodo showInputDialog usado para criar uma janela com uma pergunta, que deve ser respondida pelo usurio em um campo de texto.

Tcnicas de Programao I
Dilogo
Objeto

JOptionPane
Import Propriedade

import javax.swing.JOptionPane JoptionPane.showInputDialog(Mensagem) JoptionPane.showMessageDialog(null,Msg1,Msg2,Icone) null ( componente pai, utilizado para especificar a posio de criao da janela ) Msg1 (Mensagem interna) Msg2 (Mensagem da barra de titulo) Icone (Valor padro que representam icons de mensagems )

109

Tcnicas de Programao I
Tipo de dilogo de mensagem
JOptionPane. ERRO_MESSAGE JOptionPane. INFORMATION_MESSAGE JOptionPane. WARNING_MESSAGE JOptionPane. QUESTION_MESSAGE JOptionPane. PLAIN_MESSAGE dilogo que indica um erro para o usurio do aplicativo dilogo informacional para o usurio do aplicativo dilogo que adverte o usurio do aplicativo dilogo que informa uma pergunta para o usurio dilogo simples com msg sem icone para o usurio do aplicativo

Tcnicas de Programao I
JOptionPane

110

Tcnicas de Programao I
JOptionPane
int float double int novoValor = Integer.parseInt(valor) float novoValor = Float.parseFloat(valor) double novoValor = Double.parseDouble(valor)

Tcnicas de Programao I
Fatorial

111

Tcnicas de Programao I

Recordando.
String primeiroNumero; int numero1;
A declarao de variveis em Java segue a sintaxe tipo nomeVariavel; ou tipo nomeVariavel1, nomeVariavel2, ...; tipo pode ser um dos tipos da linguagem Java ou uma classe definida por seu programa Java. Utilize preferencialmente letras minsculas e com nomes significativos para o programa para declarar nomes de variveis ; Os tipos de variveis da linguagem Java incluem inteiros (short, int e long), nmeros reais (float ou double), caracteres (char), tipo lgico (boolean) e varivel binria (byte)

Tcnicas de Programao I

Recordando.
primeiroNumero = JOptionPane.showInputDialog(Digite o primeiro Nmero inteiro: ); O mtodo showInputDialog() combina a montagem da janela de edio com o prompt de digitao do string fornecido pelo usurio. Os argumentos passados ao mtodo showInputDialog() so vistos sempre como Strings em seus programas Java. No h em Java mtodo que faa para as entradas o que os mtodos print() e println() fazem para as sadas de programas, ou seja, tratamento de qualquer tipo da linguagem. Por essa razo as variveis informadas aos programas Java so sempre Strings que devem ser convertidas. Erros de entradas inesperadas (tipos incompatveis com as converses) devem ser tratados pelo usurio.

112

Tcnicas de Programao I

Recordando.
numero1 = Integer.parseInt (primeiroNumero); O mtodo Integer.parseInt() converte um objeto String em um tipo int. A classe Integer est definida no pacote java.lang. soma = numero1 + numero2; A instruo combina o sinal de atribuio (=) com soma (+) O programa Java segue a precedncia de operadores. No exemplo, primeiro faz a adio e depois a atribuio do resultado na varivel soma. Para maior visibilidade no programa, utilize espaos para separar operadores aritmticos A soma + soma
O operador + nessa expresso de concatenao. Para faz-la, Java primeiro far a converso da varivel soma em String e depois combinar o resultado em um String maior contendo a primeira parte A soma acrescida do resultado da varivel soma na forma de um string.

Tcnicas de Programao I

Lembre-se.
if (numero1 == numero2) resultado = resultado + numero1 + == + numero2; A estrutura if compara os valores das variveis numero1 e numero2 para determinar sua igualdade de valores. Caso numero1 e numero2 sejam iguais, a condio da estrutura if ser verdadeira e o programa colocar na varivel resultado o string que concatena as expresses 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

Tcnicas de Programao I

Ponto e Vrgula, Blocos


(;) representa o trmino de uma linha de cdigo; recurso = (x + y) * 100 + (a - b - c); Um bloco composto por uma coleo de declaraes delimitadas por chaves { }; { x = x + 1; y = y + 1; }

Tcnicas de Programao I
A estrutura if Necessria sempre que os programas encontrarem seqncias alternativas de aes, dependendo do valor de determinada condio. Exemplo: Se a mdia das notas do aluno for maior ou igual a 6 Imprimir Aprovado Sintaxe if (condio) comando Java; [ou {bloco de comandos Java;}] verdadeiro O Exemplo em Java if (media >= 6) System.out.println(Aprovado); if (media >= 6) { System.out.print(O Aluno est); System.out.println(Aprovado); } // fim do bloco if
Media >=6 falso Imprimir Aprovado

Estrutura de Seleo if

114

Tcnicas de Programao I

Estrutura de Seleo if/else


A estrutura if/else

Necessria sempre o programa deve executar uma ou mais aes quando uma condio for verdadeira ou, quando essa for falsa, executar outra ao ou seqncia de aes. Exemplo: Se a mdia das notas do aluno for maior ou igual a 6 Imprimir Aprovado Seno Imprimir Reprovado Sintaxe if (condio) comando Java; [ou {bloco de comandos Java;}] else comando Java; [ou {bloco de comandos Java;}]

Tcnicas de Programao I

Estrutura de Seleo if/else


O Exemplo em Java
if (media >= 6){ System.out.print(O Aluno est); System.out.println(Aprovado); } // fim do bloco if else { System.out.print(O Aluno est); System.out.println(Reprovado); } // fim do bloco else

verdadeiro Media >=6 Imprimir Aprovado

falso Imprimir Reprovado

115

Tcnicas de Programao I

Operador Ternrio Condicional ?:


Sintaxe
(condio) ? {ao ou bloco verdade} : {ao ou bloco falso}

O Exemplo em Java
System.out.println(media >= 6 ? Aprovado : Reprovado);

verdadeiro Media >=6 Imprimir Aprovado

falso Imprimir Reprovado

Tcnicas de Programao I

Estruturas if/else Aninhadas


Seqncia de estruturas if/else

So utilizadas para o teste de mltiplos casos. Exemplo:


Se a mdia das notas do aluno for maior ou igual a 9 conceito = A Seno Se a mdia das notas do aluno for maior ou igual a 7 conceito = B Seno Se a mdia das notas do aluno for maior ou igual a 6 conceito = C Seno conceito = D

116

Tcnicas de Programao I

Estruturas if/else Aninhadas


Em Java
if (media >= 9) System.out.print(O Conceito A); else if (media >= 7) System.out.print(O Conceito B); else if (media >= 6) System.out.print(O Conceito C); else System.out.print(O Conceito D);
verdadeiro Media >=9 A

falso verdadeiro Media >=7 B

falso verdadeiro Media >=6 falso D C

Tcnicas de Programao I

Estrutura de Seleo Mltipla switch


switch/case Utilizada em programas em que uma varivel ou expresso pode assumir diferentes valores e h uma ao (ou bloco de aes) para cada valor possvel.

Exemplo (organizando as aes de um programa):

De acordo com a opo solicitada pelo usurio: 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 mdia final do aluno default: encerre o programa

Utilize o comando break para no acionar as aes nos blocos definidos nos cases (e no default) abaixo do case acionado.

117

Tcnicas de Programao I

Estrutura switch/case
// programa exemplo de utilizao da estrutura switch/case import javax.swing.JOptionPane; /** * @author Joo Roberto */ public class TesteCase { public static void main(String[] args) { String esc; int operando1, operando2, resultado; int escolha; operando1 = Integer.parseInt(JOptionPane.showInputDialog ("Digite o primeiro operando:" )); operando2 = Integer.parseInt(JOptionPane.showInputDialog ("Digite o segundo operando:" )); esc = JOptionPane.showInputDialog("Digite sua Escolha : \n 1-Soma \n 2-Subtrao" ); escolha = Integer.parseInt(esc); switch (escolha) { case 1: resultado = operando1 + operando2; JOptionPane.showMessageDialog(null, (operando1 + " + " + operando2 + " = " + resultado), "Voc escolheu a soma:", JOptionPane.INFORMATION_MESSAGE); break; case 2: resultado = operando1 - operando2; JOptionPane.showMessageDialog(null, (operando1 + " - " + operando2 + " = " + resultado), "Voc escolheu a subtrao:", JOptionPane.INFORMATION_MESSAGE); break; default: JOptionPane.showMessageDialog(null,escolha,"Opo no existe!!!", JOptionPane.INFORMATION_MESSAGE); break; } } }

Tcnicas de Programao I
- Exerccios: 01) Ler um valor e escrever a mensagem MAIOR QUE 10! se o valor lido for maior que 10, caso contrrio escrever NO MAIOR QUE 10! 02) Ler um valor e escrever se positivo ou negativo (considere o valor zero como positivo). 03) As mas custam R$ 1,30 cada se forem compradas menos de uma dzia, e R$ 1,00 se forem compradas pelo menos 12. Escreva um programa que leia o nmero de mas compradas, calcule e escreva o custo total da compra. 04) Ler as notas da 1a. e 2a. avaliaes de um aluno. Calcular a mdia aritmtica simples e escrever uma mensagem que diga se o aluno foi ou no aprovado (considerar que nota igual ou maior que 6 o aluno aprovado). Escrever tambm a mdia calculada. 05) Ler o ano atual e o ano de nascimento de uma pessoa. Escrever uma mensagem que diga se ela poder ou no votar este ano (no necessrio considerar o ms em que a

pessoa nasceu).

06) Ler dois valores (considere que no sero lidos valores iguais) e escrever o maior deles.

118

Tcnicas de Programao I
- Exerccios: (cont.) 07) A jornada de trabalho semanal de um funcionrio de 40 horas. O funcionrio que trabalhar mais de 40 horas receber hora extra, cujo clculo o valor da hora regular com um acrscimo de 50%. Escreva um algoritmo que leia o nmero de horas trabalhadas em um ms, o salrio por hora e escreva o salrio total do funcionrio, que dever ser acrescido das horas extras, caso tenham sido trabalhadas (considere que o ms possua 4 semanas exatas). 08) Faa um algoritmo para ler: nmero da conta do cliente, saldo, dbito e crdito. Aps, calcular e escrever o saldo atual (saldo atual = saldo - dbito + crdito). Tambm testar se saldo atual for maior ou igual a zero escrever a mensagem 'Saldo Positivo', seno escrever a mensagem 'Saldo Negativo'. 09) Ler um valor e escrever se positivo, negativo ou zero. 10) Ler 3 valores (considere que no sero informados valores iguais) e escrever o maior deles. 11) Ler 3 valores (considere que no sero informados valores iguais) e escrever a soma dos 2 maiores.

Tcnicas de Programao I
- Exerccios: (cont.) 12) Ler 3 valores (A, B e C) representando as medidas dos lados de um tringulo e escrever se formam ou no um tringulo. OBS: para formar um tringulo, o valor de cada lado deve ser menor que a soma dos outros 2 lados. 13) Ler o nome de 2 times e o nmero de gols marcados na partida (para cada time). Escrever o nome do vencedor. Caso no haja vencedor dever ser impressa a palavra EMPATE. 14) Ler dois valores e imprimir uma das trs mensagens a seguir: - Nmeros iguais, caso os nmeros sejam iguais - Primeiro maior, caso o primeiro seja maior que o segundo; - Segundo maior, caso o segundo seja maior que o primeiro. 15) Um posto est vendendo combustveis com a seguinte tabela de descontos:
at 20 litros, desconto de 3% por litro lcool acima de 20 litros, desconto de 5% por litro Gasolina acima de 20 litros, desconto de 6% por litro at 20 litros, desconto de 4% por litro

Escreva um algoritmo que leia o nmero de litros vendidos e o tipo de combustvel (codificado da seguinte forma: A-lcool, G-gasolina), calcule e imprima o valor a ser pago pelo cliente sabendo-se que o preo do litro da gasolina R$ 3,30 e o preo do litro do lcool R$ 2,90.

119

Tcnicas de Programao I

Estrutura de Repetio while

A estrutura de repetio while permite especificar uma ao ou um bloco de aes que devem permanecer sendo repetidas enquanto determinada condio for verdadeira.

Exemplo:

Enquanto o usurio desejar continuar calcule a mdia de cada aluno

O corpo da estrutura while pode ser uma instruo nica ou um bloco de comandos. Quando a condio do comando while se tornar falsa, a ao (ou bloco) do comando ser finalizada. O programa continuar com a ao imediatamente aps o comando while. IMPORTANTE: voc deve sempre prever o comando ou ao que tornar falsa a condio do comando while. Caso contrrio seu programa entrar em loop infinito.

Tcnicas de Programao I

Estrutura de Repetio while


// programa exemplo de utilizao da estrutura de repetio while import javax.swing.JOptionPane; /** * @author Joo Roberto */ public class TesteCaseWhile { public static void main(String[] args) { String esc; int operando1, operando2, resultado; int escolha; operando1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro operando:")); operando2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo operando:")); esc = JOptionPane.showInputDialog("Digite sua Escolha : \n 1-Soma \n 2-Subtrao \n 3-Sair"); escolha = Integer.parseInt(esc); while (escolha != 3) { switch (escolha) { case 1: resultado = operando1 + operando2; JOptionPane.showMessageDialog(null, (operando1 + " + " + operando2 + " = " + resultado), "Voc escolheu a soma:", JOptionPane.INFORMATION_MESSAGE); break; case 2: resultado = operando1 - operando2; JOptionPane.showMessageDialog(null, (operando1 + " - " + operando2 + " = " + resultado), "Voc escolheu a subtrao:", JOptionPane.INFORMATION_MESSAGE); break; default: JOptionPane.showMessageDialog(null, escolha, "Opo no existe!!!", JOptionPane.INFORMATION_MESSAGE); break; } operando1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro operando da soma:")); operando2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo operando da soma:")); esc = JOptionPane.showInputDialog("Digite sua Escolha : \n 1-Soma \n 2-Subtrao \n 3-Sair"); escolha = Integer.parseInt(esc); ) } }

120

Tcnicas de Programao I

Estrutura de Repetio while


// Programa de mdia da turma com repetio controlada por contador import javax.swing.JOptionPane; public class MediaWhile { //o mtodo main inicia a execuo do aplicativo Java public static void main(String args[]) { int total, // soma das notas digitadas pelo usurio contadorNotas, // nmero de notas lidas valorNota, // valor da nota digitada media; // mdia de todas as notas String nota; // nota digitada pelo usurio // Fase de Inicializao total = 0; // limpa varivel total contadorNotas = 1; // prepara para executar lao // Fase de Processamento while (contadorNotas <= 10) { // solicita entrada e l a nota digitada pelo usurio nota = JOptionPane.showInputDialog("Entre com a nota - valor inteiro:"); // converte nota de String para inteiro valorNota = Integer.parseInt(nota); // adiciona a nota ao total total += valorNota; // adiciona 1 ao contador de notas contadorNotas++; } // fim do lao while media = total/10; // executa diviso inteira // exibe mdia das notas do teste JOptionPane.showMessageDialog(null,"Mdia da Turma " + media,"Media turma", JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); } // fim do mtodo main } // fim da classe MediaWhile

Tcnicas de Programao I

Estrutura de Repetio dowhile

A estrutura de repetio do/while permite repetir uma ao ou um bloco de aes at que determinada condio seja verdadeira. A diferena para a estrutura while est no fato de que do/while inicia pela execuo do bloco e somente aps a mesma analisa a condio.

Obtm notas da turma

Exemplo:

Faa Obtenha as notas da turma Calcula e Apresente a mdia Enquanto houver mais turmas para calcular a mdia

Calcula e apresenta mdia

Continua Sim falso

O do/while sempre admite que a primeira interao ocorre antes da confirmao da condio O corpo da estrutura do/while pode ser uma instruo nica ou um bloco de comandos. Quando a condio do comando do/while se tornar falsa, o programa continuar com a ao imediatamente aps o comando do/while. IMPORTANTE: voc deve sempre prever o comando ou ao que tornar falsa a condio do comando do/while. Caso contrrio seu programa entrar em loop infinito.

121

Tcnicas de Programao I

Estrutura de Repetio for


A estrutura de repetio for permite repetir uma ao ou um bloco de aes com controle de contador ou da condio de permanncia no looping.

Exemplo:

Para o contador i de 1 a 10 faa Obtenha a nota do i-simo aluno some a nota do i-simo aluno ao total; Calcule a mdia da turma como sendo o total divido por 10

O comando for tem trs sees de variveis: for (inicializadores; condio de continuao; incrementos) { ao ou bloco de aes no comando; }

int contador = 1

Contador <=10 Verdadeiro falso

Instrues no corpo do lao for.

contador++

Tcnicas de Programao I

Instrues break e continue


As instrues break e continue modificam o comportamento das estruturas de repetio while, for, do/while ou switch. . A instruo break interrompe o lao (no caso das estruturas de repetio) e impede a execuo de outros casos de um comando switch.

Exemplo:

Enquanto verdade permanente (ex: x == 1, sem mudar x) realize as operaes .. se condio de fim for alcanada break; Fim do Enquanto

A instruo continue permite o salto do conjunto de operaes, com retorno expresso condicional do lao, reiniciando o mesmo (portanto, ao contrrio do break, no interrompe o lao). Normalmente break e continue interrompem laos em que esto inseridos. Para interromper um conjunto aninhado de estruturas, devese utilizar break e continue rotulados (com denominao de blocos).

122

Tcnicas de Programao I

Estrutura de Repetio for e continue


- for e continue for (int contador=0; contador < numero; contador++) { if ((contador % 2)!=0)//resto da diviso por dois no zero continue; pares++; saidaFinal = saidaFinal + contador + " "; }
-

do/while e continue

do { if ((contador % 2)!=0) // resto da diviso por dois no zero continue; pares++; saidaFinal = saidaFinal + contador + " "; } while (++contador<numero);

Tcnicas de Programao I
- Exerccios: 01) Escreva um algoritmo para ler 2 valores e se o segundo valor informado for ZERO, deve ser lido um novo valor, ou seja, para o segundo valor no pode ser aceito o valor zero e imprimir o resultado da diviso do primeiro valor lido pelo segundo valor lido. (utilizar a estrutura REPITA). 02) Reescreva o exerccio anterior utilizando a estrutura ENQUANTO. 03) Acrescentar uma mensagem de 'VALOR INVLIDO' no exerccio [01] caso o

segundo valor informado seja ZERO. segundo valor informado seja ZERO.

04) Acrescentar uma mensagem de 'VALOR INVLIDO' no exerccio [02] caso o

05) Escreva um algoritmo para ler as notas da 1a. e 2a. avaliaes de um aluno,

calcule e imprima a mdia (simples) desse aluno. S devem ser aceitos valores vlidos durante a leitura (0 a 10) para cada nota.

06) Acrescente uma mensagem 'NOVO CLCULO (S/N)?' ao final do exerccio [05].

Se for respondido 'S' deve retornar e executar um novo clculo, caso contrrio dever encerrar o algoritmo..

123

Tcnicas de Programao I
- Exerccios: (cont.) 07) Escreva um algoritmo para imprimir os nmeros de 1 (inclusive) a 10

(inclusive) em ordem crescente.

08) Escreva um algoritmo para imprimir os nmeros de 1 (inclusive) a 10

(inclusive) em ordem decrescente. que 100.

09) Escreva um algoritmo para imprimir os 10 primeiros nmeros inteiros maiores

10) Escreva um algoritmo que calcule e imprima a tabuada do 8 (1 a 10). 11) Ler 10 valores e escrever quantos desses valores lidos so NEGATIVOS.

12) Ler 10 valores e escrever quantos desses valores lidos esto no intervalo [10,20] (incluindo os valores 10 e 20 no intervalo) e quantos deles esto fora deste intervalo. 13) Ler 10 valores, calcular e escrever a mdia aritmtica desses valores lidos.

Tcnicas de Programao I
- Exerccios: (cont.) 14) Ler o nmero de alunos existentes em uma turma e, aps isto, ler as notas

destes alunos, calcular e escrever a mdia aritmtica dessas notas lidas. soma total dos 10 nmeros lidos.

15) Escreva um algoritmo para ler 10 nmeros e ao final da leitura escrever a

16) Uma loja est levantando o valor total de todas as mercadorias em estoque.

Escreva um algoritmo que permita a entrada das seguintes informaes: a) o nmero total de mercadorias no estoque; b) o valor de cada mercadoria. Ao final imprimir o valor total em estoque e a mdia de valor das mercadorias.
17) O mesmo exerccio anterior, mas agora no ser informado o nmero de

mercadorias em estoque. Ento o funcionamento dever ser da seguinte forma: ler o valor da mercadoria e perguntar MAIS MERCADORIAS (S/N)?. Ao final, imprimir o valor total em estoque e a mdia de valor das mercadorias em estoque.
18) Faa um programa que leia 100 valores e no final, escreva o maior e o menor

valor lido.

124

Tcnicas de Programao I
- Exerccios: (cont.) 19) Faa um algoritmo para ler uma quantidade e a seguir ler esta quantidade de

nmeros. Depois de ler todos os nmeros o algoritmo deve apresentar na tela o maior dos nmeros lidos e a mdia dos nmeros lidos. escrever: - o maior preo lido - a mdia aritmtica dos preos dos produtos

20) Faa um algoritmo para ler o cdigo e o preo de 15 produtos, calcular e

21) A prefeitura de uma cidade deseja fazer uma pesquisa entre seus habitantes.

Faa um algoritmos para coletar dados sobre o salrio e nmero de filhos de cada habitante e aps as leituras, escrever: a) Mdia de salrio da populao b) Mdia do nmero de filhos c) Maior salrio dos habitantes d) Percentual de pessoas com salrio menor que R$ 150,00 Obs.: O final da leituras dos dados se dar com a entrada de um salrio negativo.

125

You might also like