Professional Documents
Culture Documents
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
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;
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
28
O que abstrao?
29
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
32
Tcnicas de Programao I
Sistema Computacional
Software Hardware
Peopleware
33
UCP Memria
UCP Memria
6,8
(6 + 8) / 2
34
UCP Memria
Ana, 5, 3
Ana, reprovado
Tcnicas de Programao I
Algoritmo
Linguagem de computao
Programa
35
2 codificao) do algoritmo em
alguma linguagem de programao
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
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).
37
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
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.
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
Sntese do problema
bloco de instrues
41
- 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.
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
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
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.
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
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
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.
F
CONTADOR loop AO
53
54
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.
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.
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
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
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
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
. . .
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
. . .
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
Distribuio
VM Windows SO Windows
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:
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
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:
- 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
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.
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
1 16 8 16 32 64 32 64
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:
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
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
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
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
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
115
Tcnicas de Programao I
O Exemplo em Java
System.out.println(media >= 6 ? Aprovado : Reprovado);
Tcnicas de Programao I
116
Tcnicas de Programao I
Tcnicas de Programao I
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
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:
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
120
Tcnicas de Programao I
Tcnicas de Programao I
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.
Exemplo:
Faa Obtenha as notas da turma Calcula e Apresente a mdia Enquanto houver mais turmas para calcular a mdia
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
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++
Tcnicas de Programao I
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
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.
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
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.
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
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