Módulo Básico. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP

Tamanho: px
Começar a partir da página:

Download "Módulo Básico. Rua Valorbe, 123 Lauzane Paulista Cep 02442-140 São Paulo SP webmaster@dbsystems.com.br"

Transcrição

1 Módulo Básico Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP

2 ÍNDICE JAVA MÓDULO BÁSICO 01. JAVA UMA VISÃO GERAL JAVA E A ORIENTAÇÃO A OBJETOS ABSTRAÇÃO OS TRÊS PRINCÍPIOS DA ORIENTAÇÃO A OBJETOS ENCAPSULAMENTO HERANÇA POLIMORFISMO POLIMORFISMO, ENCAPSULAMENTO E HERANÇA JUNTOS EXEMPLO POLIMORFISMO/ENCAPSULAMENTO/HERANÇA JUNTOS ANALISANDO NOSSOEXEMPLO.JAVA O COMANDO IF O LOOP FOR SEPARADORES PALAVRAS-CHAVE OS TIPOS SIMPLES CONVERSÕES E USO DE CAST EM JAVA USANDO CAST ENTRE TIPOS INCOMPATÍVEIS ARRAYS ARRAYS MULTIDIMENSIONAIS INTRODUÇÃO A STRINGS OS OPERADORES ARITMÉTICOS OPERADORES RELACIONAIS OPERADORES LÓGICOS BOOLEANOS O OPERADOR? O COMANDO SWITCH Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 1

3 26. O COMANDO WHILE O COMANDO DO-WHILE CLASSES EM JAVA VARIÁVEIS DE INSTÂNCIA DECLARANDO OBJETOS DETALHES SOBRE NEW ENTENDENDO AS REFERÊNCIAS ENTENDENDO OS MÉTODOS ACRESCENTANDO UM MÉTODO À CLASSE CAIXA MÉTODOS COM PARÂMETROS CONSTRUTORES CONSTRUTORES PARAMETRIZADOS A PALAVRA-CHAVE THIS A CLASSE PILHA SOBRECARREGANDO MÉTODOS RECURSÃO PUBLIC E PRIVATE A PALAVRA-CHAVE STATIC FINAL CONSTANTES EM JAVA A CLASSE OBJECT APRESENTANDO OS PACKAGES APRESENTANDO CLASSPATH MAIS SOBRE CONTROLE DE ACESSO A PALAVRA-CHAVE IMPORT INTERFACES ACESSO À BANCO DE DABOS USANDO JDBC Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 2

4 01. Java uma visão geral Uma das dificuldades no aprendizado de uma nova linguagem de programação está no fato de que os elementos da linguagem não fazem sentido isoladamente. Eles funcionam em conjunto formando a linguagem como um todo. Isso acontece também com a linguagem Java. Essa interdependência pode fazer com que seja difícil descrever um aspecto de Java sem falar de vários outros. Muitas vezes a discussão de uma característica pressupõe o conhecimento prévio de outra. Por este motivo, apresentaremos inicialmente uma rápida visão geral de diversos aspectos básicos de Java. Esta visão proporcionará uma base que permitirá que você escreva e entenda programas simples. Se você tiver dificuldade em entender algum aspecto, não se apavore. Todos os tópicos aqui discutidos serão examinados com maiores detalhes em outras lições. 02. Java e a orientação a objetos Se você é programador como eu, deve estar com os dedos coçando para começar a escrever código em Java. Porém antes disso, precisamos fazer uma breve introdução (ou revisão) de um conceito que é fundamental para a programação em Java: A orientação a objetos. Todos os programas Java são orientados a objetos. Em algumas linguagens, como C++, o programador pode optar por trabalhar ou não com orientação a objetos. Em Java, não existe essa opção. Na verdade, a orientação a objetos é tão importante em Java que é preciso entender seus princípios básicos, para poder escrever qualquer programa em Java, mesmo o mais simples. Por isso, logo no início queremos discutir alguns aspectos teóricos da orientação a objetos. 03. Abstração Um elemento essencial da programação orientada a objetos é a abstração. Nós seres humanos utilizamos a abstração como uma forma de lidar com a complexidade. Por exemplo, ninguém pensa em um carro como um conjunto de dezenas de milhares de peças individuais. Pensamos em um carro como um objeto bem definido e que tem um determinado comportamento. Essa abstração permite que as pessoas utilizem um carro para ir de um lugar para outro, mesmo sem entender nada de mecânica de automóveis. Podemos ignorar os detalhes de como o motor, a transmissão e o sistema de freios funcionam. Ao invés disso, utilizamos o objeto automóvel como um todo. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 3

5 Uma maneira poderosa de lidar com a abstração é usando classificações hierárquicas. Isso permite pensar em sistemas complexos como sendo formados por diversas camadas. Tais camadas representam porções mais compreensíveis. Visto de fora, um carro é um objeto único. Porém, uma vez dentro dele, o carro aparece para nós como consistindo de diversos subsistemas: direção, freios, sistema de som, ar condicionado, e assim por diante. O usuário pode utilizar os vários sistemas do automóvel, mesmo sem entender como eles funcionam. Basta saber que girando o botão ele aumenta o volume do rádio. Ou pisando no pedal de freio, o veículo pára. Ou seja, para usar o sistema basta conhecer a interface. Por sua vez, o técnico que conserta o ar condicionado do carro pode fazer seu trabalho com muita competência, mesmo que não saiba nada sobre como funciona o sistema de freios. Cada um dos subsistemas é formado por unidades mais especializadas. Por exemplo, o sistema de som consiste de rádio, toca-cds, toca-fitas, amplificador e alto-falantes. A idéia é que lidamos com a complexidade do carro, ou de qualquer outro sistema complexo, utilizando abstrações hierárquicas. Abstrações hierárquicas de sistemas complexos também podem ser aplicadas a programas de computador. Podemos usar a abstração para criar objetos a partir dos dados de um programa tradicional orientado para o processo. Uma seqüência de passos de processo pode ser tornar uma coleção de mensagens entre esses objetos. Assim, cada um desses objetos descreve seu próprio comportamento característico. Podemos então tratar esses objetos como entidades concretas que respondem a mensagens que mandam que eles façam alguma coisa. Esta é a essência da programação orientada a objetos. Os conceitos da orientação a objetos formam a base de Java. Na verdade, a orientação a objetos é intuitiva para nós humanos, porque nosso mundo é orientado a objetos. É importante compreender como esses conceitos se traduzem em programas. Como veremos, a programação orientada a objetos é um paradigma poderoso e natural. Os programas desenvolvidos desta forma podem ser modificados posteriormente com facilidade, para acompanhar mudanças nas necessidades do usuário ou da empresa. Uma vez que temos objetos definidos de forma clara, com interfaces limpas e confiáveis, podemos elegantemente modificar ou substituir partes de um sistema já existente sem medo de introduzir erros. Por exemplo, se o fabricante substituir o sistema de direção mecânica de um modelo de automóvel por um sistema de direção hidráulica, o motorista continuará fazendo curvas à esquerda e à direita da mesma forma que antes: girando o volante no sentido desejado. Ou seja, mudou a implementação, mas a interface continuou sendo a mesma. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 4

6 04. Os três princípios da orientação a objetos Linguagens de programação orientadas a objetos são aquelas que proporcionam mecanismos que ajudam a implementar o modelo orientado a objetos. Esses mecanismos são: Encapsulamento Herança Polimorfismo A seguir, examinaremos cada um desses conceitos. 05. Encapsulamento O encapsulamento é o mecanismo que permite agrupar em uma única entidade o código e os dados que esse código manipula. Tais elementos ficam assim protegidos contra interferências externas e utilização inadequada. Uma forma de pensar no encapsulamento é como um envoltório protetor que impede que o código e os dados sejam acessados arbitrariamente por outro trecho de código que esteja definido fora do envoltório. O acesso ao código e aos dados que ficam dentro do envoltório é rigidamente controlado por meio de uma interface bem definida. Para dar um exemplo do mundo real, consideremos a caixa de marchas de um automóvel. Ela encapsula centenas de porções de informações como: Potência do motor Tipo de uso do automóvel Peso máximo do automóvel Número de marchas O motorista tem apenas um método de afetar esse complexo encapsulamento: mudar a posição da alavanca. Não é possível afetar a transmissão mexendo na alavanca do pisca-pisca nem acionando o limpador de pára-brisa. Assim, a alavanca de mudança é uma interface bem definida, e na verdade única, para a transmissão. Por outro lado, o que acontece dentro da transmissão não afeta os objetos que estão fora dela. Por exemplo, uma mudança de marcha não acende os faróis. Pelo fato da caixa de marchas ser encapsulada, cada fabricante pode implementar internamente sua transmissão do jeito que achar melhor. Mas do ponto de vista do motorista, todas elas funcionam da mesma forma. Essa mesma idéia pode ser aplicada à programação. O poder do código encapsulado está no fato de que todo mundo sabe como acessá-lo e por isso pode Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 5

7 usá-lo, independentemente dos detalhes de programação e sem medo de efeitos colaterais indesejáveis. Em Java, a base do encapsulamento é a classe. Embora o conceito de classe vá ser examinado detalhadamente em outra lição, apresentamos a seguir uma breve discussão que será suficiente por enquanto. Uma classe define a estrutura e o comportamento (dados e código) que serão comuns a um conjunto de objetos. Cada objeto de uma dada classe contém a estrutura e o comportamento definidos pela classe, como se a classe fosse um molde usado para estampar o formato de cada um deles. Por esse motivo, os objetos são muitas vezes chamados de instâncias de uma classe. Assim, uma classe é uma construção lógica; um objeto é uma realidade física. Voltando ao exemplo do automóvel, o projeto e as especificações do Volkswagen Gol 1000 seriam a classe. Existe apenas uma classe Gol Cada automóvel Gol 1000 é um objeto, ou instância, dessa classe, e existem milhares desses objetos. Quando criamos uma classe, especificamos o código e os dados que a constituem. Coletivamente, esses elementos são chamados membros da classe. Especificamente, os dados definidos pela classe são chamados variáveis membros, ou variáveis de instância. O código que opera sobre os dados forma os chamados métodos membros, ou simplesmente métodos. Para o programadores C/C++, podemos dizer que o que um programador Java chama de método, é aquilo que em C/C++ é chamado de função. Em um programa Java escrito corretamente, os métodos definem como as variáveis membros, podem ser usadas. Isso significa que o comportamento e a interface de uma classe são definidos pelos métodos que operam sobre seus dados de instância. Como o propósito de uma classe é encapsular a complexidade, ela tem mecanismos para ocultar a complexidade da implementação que está dentro da classe. Cada método ou variável de uma classe pode ser marcado como sendo privativo (private) ou público (public). A interface pública de uma classe representa tudo que os usuários externos da classe podem saber, ou precisam saber. Os métodos e dados privativos somente podem ser acessados por código que seja membro da classe. Portanto, qualquer outro código que não seja membro da classe não pode acessar um método privativo ou uma variável privativa. Como os membros privativos de uma classe somente podem ser acessados por outras partes do programa através dos métodos públicos da classe, isso assegura que nenhuma ação inadequada acontecerá. É claro que isso significa que a interface pública precisa ser cuidadosamente projetada para não expôr excessivamente o funcionamento interno da classe. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 6

8 06. Herança A herança é um processo pelo qual um objeto adquire as propriedades de outro objeto. A herança é o que viabiliza o conceito de uma classificação hierárquica. Veja como: Um Pastor Alemão faz parte da classificação Cachorro... que faz parte da classificação Mamífero... que faz parte da classificação Animal. Observe que herança se refere aqui a características e comportamento, e não a bens materiais. No exemplo do Pastor Alemão, estamos falando da herança de características genéticas. Conforme mencionado anteriormente, a maioria dos tipos de conhecimento pode ser gerenciada por classificações hierárquicas de cima para baixo. Sem o uso de hierarquias, cada objeto precisaria definir todas as suas características explicitamente. Contudo, com o uso da herança, um objeto somente precisa definir aquelas qualidades que o tornam único dentro de sua classe. Ele pode herdar seus atributos gerais de sua classe-mãe. Assim, a herança é o mecanismo que torna possível que um objeto seja uma instância específica de um caso mais geral. Vamos dar uma olhada nesse processo mais de perto. As pessoas naturalmente vêem o mundo como sendo formado de objetos que são relacionados entre si de forma hierárquica, como animais, mamíferos e cachorros. Se quiséssemos descrever os animais de uma forma abstrata, diríamos que eles têm alguns atributos como tamanho, inteligência e tipo de esqueleto. Os animais têm também alguns aspectos de comportamento. Eles comem, respiram e dormem. Essa descrição de atributos e comportamento representa a definição de classe para os animais. Se quisermos descrever uma classe mais específica de animais, como os mamíferos, eles terão atributos mais específicos como pelos, tipo de dentes e glândulas mamárias. Os mamíferos são então conhecidos como uma subclasse de animais, e os animais são chamados de uma superclasse de mamíferos. Como os mamíferos são simplesmente animais especificados com mais precisão, eles herdam todos os atributos de animais. Uma subclasse que fica mais abaixo na hierarquia de heranças herda todos os atributos de cada um de seus ancestrais na chamada hierarquia de classes. A herança interage também com o encapsulamento. Se uma dada classe encapsula alguns atributos, então uma subclasse dela terá os mesmos atributos, e mais alguns, que são acrescentados como parte de sua especialização. Esse é o conceito fundamental que permite que os programas orientados a objetos cresçam em complexidade linearmente, e não geometricamente. Uma nova subclasse herda todos os atributos de todos os seus ancestrais. Ela não tem interações imprevisíveis com o restante do código do sistema. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 7

9 07. Polimorfismo Polimorfismo significa muitas formas. Trata-se de uma característica que permite que uma interface seja usada para uma classe genérica de ações, sendo que a ação específica em cada caso é determinada pela exata natureza da situação. Não entendeu? Vamos explicar melhor. Consideremos uma pilha, que é uma lista do tipo último-que-entra, primeiro-que-sai. Podemos ter um programa que requer três tipos de pilhas. Uma pilha é usada para valores inteiros, outra pilha para valores com ponto flutuante, e outra para caracteres. O algoritmo que implementa cada pilha é o mesmo, muito embora os dados sendo armazenados sejam diferentes. Em uma linguagem não orientada a objetos, seria necessário criar três conjuntos diferentes de rotinas de pilha, cada conjunto com um nome diferente. Mas em Java, por causa do polimorfismo, Java podemos especificar um conjunto geral de rotinas de pilha; todas as rotinas compartilhando os mesmos nomes. Mais genericamente, o conceito de polimorfismo é muitas vezes expresso pela frase "uma interface, múltiplos métodos". Isso significa que é possível projetar uma interface genérica que pode ser usada para especificar uma classe geral de ações. Cabe ao compilador selecionar a ação específica (isto é, o método) que se aplica a cada situação. O programador não precisa fazer essa seleção manualmente. Ele apenas precisa lembrar da interface geral. Ampliando a analogia do cachorro, o sentido do olfato do cachorro é polimórfico: Se o cachorro sente o cheiro do dono, ele abana a cauda e corre ao seu encontro. Se o cachorro sente o cheiro de um gato, ele late e corre atrás dele. Se o cachorro sente o cheiro de sua ração, ele começa a salivar e corre para seu prato. O mesmo sentido do olfato funciona de forma diferente nas várias situações. A diferença é o cheiro que está sendo sentido, isto é, o tipo de dados sobre os quais o nariz do cachorro está operando. Esse mesmo conceito geral pode ser implementado em Java, sendo aplicado aos métodos dentro de um programa Java. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 8

10 08. Polimorfismo, encapsulamento e herança juntos O polimorfismo, o encapsulamento e a herança combinam se para produzir um ambiente de programação que dá suporte ao desenvolvimento de programas muito mais robustos e escaláveis do que o modelo orientado a processo. Uma hierarquia de classes bem projetada é a base para a reutilização do código que representa um valioso patrimônio. Afinal de contas, o desenvolvimento de código requer um grande investimento em tempo e esforço. O encapsulamento permite melhorar as implementações com o passar do tempo. Desde que a interface pública das classes seja respeitada, elas poderão continuar sendo utilizadas sem rupturas. O polimorfismo permite criar código limpo, legível, robusto e lógico. Entre os dois exemplos do mundo real que mencionamos, o automóvel ilustra de forma mais completa o poder da orientação a objetos. Pode ser mais divertido pensar em cães do ponto de vista da herança, mas os automóveis são mais parecidos com programas de computador. Todos os motoristas utilizam a herança para dirigir diferentes tipos (subclasses) de veículos. Quer o veículo seja um ônibus escolar, esportivo Porsche ou a perua da família, os motoristas mais ou menos são capazes de encontrar e operar a direção, os freios e o acelerador (geralmente). Depois de arranhar um pouco as marchas, a maioria das pessoas é capaz até mesmo de dominar a diferença entre a mudança automática e a alavanca de mudanças tradicional. Isso porque os motoristas têm o conceito geral da superclasse da caixa de marchas tradicional e da automática, que é a transmissão. Por fim, o polimorfismo, reflete-se na possibilidade que os fabricantes de carros têm de oferecer uma ampla variedade de opções no mesmo veículo básico. Por exemplo, podemos ter sistema de freios anti-travamento ou freios tradicionais, direção hidráulica ou mecânica, motores de 4, 6 ou 8 cilindros. De qualquer forma, ainda pressionamos um pedal para parar, giramos o volante de direção para fazer uma curva e pressionamos o acelerador quando queremos que o carro avance. A mesma interface pode ser usada para controlar uma série de implementações diferentes. Como podemos ver, é através da aplicação do encapsulamento, da herança e do polimorfismo que as partes individuais se transformam em um objeto conhecido como automóvel. O mesmo vale para os programas de computador. Aplicando os princípios da orientação a objetos, as várias partes de um programa complexo podem ser montadas formando um todo robusto, coeso e de fácil manutenção. Conforme mencionamos anteriormente, todo programa em Java é orientado a objetos. Ou, dizendo de forma mais precisa, todo programa em Java envolve encapsulamento, herança e polimorfismo. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 9

11 Embora os pequenos programas didáticos que apresentaremos neste início de curso possam não exibir claramente todas essas características, elas estão presentes mesmo assim. Como veremos, muitos dos recursos fornecidos por Java fazem parte de bibliotecas de classes que acompanham a linguagem. Tais bibliotecas fazem uso intensivo do encapsulamento, da herança e do polimorfismo. 09. Exemplo polimorfismo/encapsulamento/herança juntos Classe Pai: 1 public class Pai { 2 public void i() { 3 System.out.println("Pai"); 4 } 5 } Classe Filho: 1 public class Filho extends Pai { 2 public void i() { 3 System.out.println("Filho"); 4 } 5 } Classe NossoExemplo: 1 // NossoExemplo 2 public class NossoExemplo { 3 // Todo aplicativo Java tem um, e somente 4 // um método main(). 5 // A execução do programa sempre 6 // começa no método main(). 7 public static void main(string args[]) { 8 Pai p = new Filho(); 9 p.i(); 10 } // Fim de main() 11 } // Fim da classe NossoExemplo Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 10

12 10. Analisando NossoExemplo.java Embora o programa NossoExemplo.java seja bastante simples, ele inclui diversas características importantes que encontraremos em todos os programas Java. Vamos examinar de perto cada parte do programa. Ele começa da seguinte forma (linha 1): // NossoExemplo.java Isto é um comentário. Como acontece com todas as linguagens de programação, Java permite digitar comentários no código fonte dos programas. O conteúdo de um comentário é ignorado pelo compilador. Um comentário descreve ou explica a operação de um programa para as pessoas que estejam lendo o código fonte. Neste caso, o comentário descreve o nome do programa. Em aplicativos de verdade, os comentários geralmente explicam como alguma parte do programa funciona, ou o que faz um determinado recurso. Java suporta três estilos de comentários. Um comentário de linha única, como o mostrado acima, começa com o par de caracteres // e estende-se até o fim da linha. Outro tipo de comentário é o de múltiplas linhas. Ele começa com o par de caracteres /* e estende-se até o par de caracteres de fechamento */. Geralmente, esses comentários de múltiplas linhas são usados para explicações mais longas, e os comentários de linha única para explicações curtas, linha por linha. A linha seguinte de NossoExemplo.java é a seguinte (linha 2): class NossoExemplo Esta linha utiliza a palavra-chave class para indicar que uma nova classe está sendo definida. A palavra NossoExemplo é o identificador usado como nome da classe. Toda a definição da classe, incluindo seus membros, aparecerá entre a chave de abertura { e a chave de fechamento }. O uso de chaves em Java é idêntico aquele que é feito em C e C++. Por enquanto, não se preocupe muito com os detalhes de uma classe, exceto pelo fato de que em Java, toda atividade do programa ocorre dentro das classes. Isso é conseqüência do fato de que todos os programas Java são orientados a objetos. Após algumas linhas de comentários, a próxima linha executável do programa é a seguinte (linha 7): public static void main(string args[]) Essa linha dá início ao método main(). (Lembre-se que em Java, um método é o equivalente a uma função em linguagem C). O método main() marca o local onde começa a execução de todos os programas Java. Todos os aplicativos Java Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 11

13 começam a execução chamando o método main(), da mesma forma que em C/C++ os programas começam na função main(). Não vamos explicar agora o significado exato de cada parte dessa linha, já que isso exigiria um detalhado entendimento do enfoque de Java para o encapsulamento. Contudo, como muitos exemplos desta primeira parte do curso utilizarão esta linha de código, vamos dar uma rápida olhada em cada parte. A palavra-chave public é um especificador de acesso, que permite que o programador controle a visibilidade dos membros de uma classe. Quando um membro de uma classe é precedido pela palavra public esse membro pode ser acessado por código de fora da classe na qual é declarado. O contrário de public é private, que impede que um membro seja usado por código definido fora de sua classe. Neste caso, main() deve ser declarado como public, já que ele deve ser chamado por código de fora da classe quando o programa é iniciado. A palavra-chave static permite que main() seja chamado sem necessidade de instanciar uma determinada classe. Isso é necessário, já que main() é chamado pelo interpretador Java antes que qualquer objeto seja criado. A palavra-chave void simplesmente avisa ao compilador que main() não retorna nenhum valor. Como veremos, os métodos podem retornar valores. Se tudo isso parece um tanto confuso, não entre em pânico. Procure entender o que está sendo apresentado aqui sobre esses conceitos. Todos eles serão discutidos com detalhes nas lições subseqüentes. Como dissemos, main() é o método que é chamado quando um aplicativo Java é iniciado. Tenha em mente que Java faz diferença entre letras maiúsculas e minúsculas. Portanto, Main() é diferente de main(). É importante compreender que o compilador Java é capaz de compilar classes que não contenham um método main(). Na verdade, isso é feito com bastante freqüência. Mas o interpretador Java não tem como rodar essas classes diretamente. Elas precisam ser criadas por outras classes. Por isso, se você digitar Main() ao invés de main(), o compilador vai compilar o programa. Contudo, o interpretador Java vai reportar um erro, porque não conseguirá encontrar o método main(). Qualquer informação que se precise passar para um método é recebida pelas variáveis especificadas dentro do par de parênteses que se segue ao nome do método. Essas variáveis são chamadas parâmetros. Se nenhum parâmetro for exigido para um determinado método, ainda assim é necessário incluir um par de parênteses vazio. Ao longo de todo este curso, sempre que uma palavra aparecer seguida de parênteses, assim: exemplodemetodo() Isso indicará que estamos falando de um método. Em main(), há somente um parâmetro, ainda que um tanto complicado. String args[ ] declara um parâmetro chamado args, que é um array de instâncias Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 12

14 da classe String. Arrays são coleções de objetos do mesmo tipo. Os objetos do tipo String armazenam strings de caracteres. Neste caso, args recebe quaisquer argumentos da linha de comando que estejam presentes quando o programa for executado. Este programa não faz nenhum uso dessas informações, mas outros programas mostrados mais adiante farão. A linha seguinte (linha 7) contém uma chave de abertura {. Ela indica o início do corpo de main(). Todo o código que forma um método deverá aparecer entre o par de chaves { e } (linha 10) que delimita o método. Outro ponto importante: main() é simplesmente o ponto de partida para o interpretador começar a execução. Um programa complexo pode ter dúzias de classes, sendo que apenas uma delas pode ter um método main() para dar partida no programa. Quando começarmos a trabalhar com applets, que são programas Java criados para rodar em um Web browser, veremos que normalmente um applet não tem método main(), já que o Web browser usa uma maneira diferente para dar início à execução do applet. Observe que as linhas que contém comandos terminam com um ponto-evírgula (;). Todos os comandos em Java são terminados com ponto-e-vírgula. O motivo pelo qual as outras linhas do programa não terminam em ponto-e-vírgula é porque, tecnicamente, elas não são comandos. Conforme indicam os comentários, o próximo caractere } que aparece na linha 10 encerra o método main(). O segundo caractere } que aparece na linha 11 encerra a definição da classe NossoExemplo. 11. O comando if Em outro ponto deste curso, faremos um exame completo dos comandos de controle. Por enquanto dois deles serão apresentados brevemente para que possam ser usados nos próximos exemplos de programas. Eles ajudam também a ilustrar um importante conceito de Java: os blocos de código. O comando if funciona em Java de forma muito parecida com os de outras linguagens. Na verdade, ele é sintaticamente idêntico ao if de C e C++. Sua forma mais simples é a seguinte: if(condição) comando; Neste exemplo, condição é uma expressão booleana. Se condição for verdadeira (true), então comando é executado. Se condição for falsa (false), comando é ignorado. Eis um exemplo: Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 13

15 if(var < 10) println("var é menor que 10"); Neste caso, se var contiver um valor inferior a 10, a expressão condicional será verdadeira, e a linha contendo println() será executada. Se var contiver um valor maior ou igual a 10, a linha contendo println() será ignorada. Como veremos em outro ponto deste curso, Java define uma completa coleção de operadores relacionais que podem ser usados em expressões condicionais. Eis alguns deles: Operador Significado < Menor do que > Maior do que == Igual a Observe que o teste de igualdade é um duplo sinal de igualdade ==. Eis um programa que ilustra o comando if: Listagem: MostraIf.java 1 // MostraIf.java 2 class MostraIf 3 { 4 public static void main(string args[]) 5 { 6 int i, j; 7 i = 50; 8 j = 100; 9 10 if(i < j) 11 System.out.println("i e' menor que j."); i = i * 2; 14 if(i == j) 15 System.out.println("Agora i e' igual a j."); i = i * 2; 18 if(i > j) 19 System.out.println("Agora i e' maior que j."); // Esta linha não será exibida. 22 if(i == j) 23 System.out.println("Isso não será exibido."); Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 14

16 24 } // Fim de main() 25 } // Fim da classe MostraIf. A saída exibida por esse programa é a seguinte: i e' menor que j. Agora i e' igual a j. Agora i e' maior que j. Outro aspecto a observar neste programa é que a linha 6 int i, j; Declara duas variáveis, i e j, usando uma lista separada por vírgula. Essa técnica é idêntica à usada em C/C O loop for Os comandos de loop são uma parte importante de todas as linguagens de programação. Java não é exceção. Veremos em outro ponto deste curso que Java oferece uma poderosa coleção de construções de loops. O mais versátil deles é o loop for, que apresentaremos resumidamente aqui. Se você conhece C ou C++, verá que o loop for em Java funciona da mesma forma que nessas linguagens. Se você não conhece C/C++, verá que o loop for não apresenta nenhuma dificuldade. A forma mais simples do loop for é a seguinte: for(inicialização; condição; iteração) comando; Geralmente a porção de inicialização ajusta a variável de controle do loop para um valor inicial. A condição é uma expressão booleana que testa a variável de controle do loop. Se o resultado do teste for verdadeiro (true), o loop for continua a ser executado. Se for falso (false), o loop é encerrado. A expressão de iteração determina como a variável de controle do loop é alterada cada vez que o loop é executado. Eis um pequeno programa que ilustra o loop for. 1 // TesteFor 2 class TesteFor 3 { 4 public static void main(string args[]) 5 { 6 int i; Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 15

17 7 for(i = 0; i < 10; i = i + 1) 8 System.out.println("Valor de i: " + i); 9 } // Fim de main() 10 } // Fim da classe TesteFor. Eis a saída deste programa: Valor de i: 0 Valor de i: 1 Valor de i: 2 Valor de i: 3 Valor de i: 4 Valor de i: 5 Valor de i: 6 Valor de i: 7 Valor de i: 8 Valor de i: 9 Neste exemplo, i é a variável de controle do loop. Ela é inicializada com o valor zero na porção de inicialização de for. No início de cada iteração (inclusive a primeira), o teste condicional i < 10 é executado. Se o resultado do teste for verdadeiro, o comando println() é executado, e depois a porção de iteração do loop é executada. Esse processo continua até que o teste condicional resulte em false. Uma observação: programas Java de nível profissional, raramente terão a porção de iteração do loop escrita da forma mostrada no programa acima. Ou seja, raramente teremos uma linha como esta: i = i + 1; O fato é que Java inclui um operador especial de incremento que executa essa operação de forma mais eficiente. O operador de incremento é representado por ++. Isto é, dois sinais de adição, lado a lado. O operador de incremento aumenta o valor do operando em 1. Usando o operador de incremento, o comando acima pode ser escrito da seguinte forma: x++; Assim, o for do programa acima geralmente será escrito da seguinte forma: for(i = 0; i < 10; i++) Experimente fazer essa modificação. Você verá que o loop continuará funcionando da mesma forma. Java oferece também um operador de decremento, representado por --. Esse operador diminui 1 do valor do operando. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 16

18 13. Separadores Java define alguns caracteres como separadores. O mais comum deles é o caractere de ponto-e-vírgula (;). Como já vimos, ele é usado para encerrar os comandos (statements). Outros separadores são comentados a seguir: ( ) Parênteses Usados para conter listas de parâmetros nas definições e invocações de métodos. Também são usados para definir precedência em expressões, conter expressões em comandos de controle e envolver tipos em conversões (casts). { } Chaves Usados para conter arrays inicializados automaticamente. Também são usados para definir blocos de código, em classes, métodos e escopos locais. [ ] Colchetes Usados para declarar tipos de arrays. Usados também para de-referenciar valores de arrays. ; Ponto-e-vírgula Encerra os comandos., Vírgula Separa identificadores consecutivos em declarações de variáveis. Usada também para encadear as declarações dentro de um comando for.. Ponto Usado para separar nomes de packages de subpackages e classes. Usado também para separar uma variável ou método de uma referência a variável. 14. Palavras-chave Java tem 47 palavras-chave reservadas e atualmente definidas. Essas palavras-chave, combinadas com a sintaxe de operadores e separadores, formam a definição da linguagem. As palavras-chave não podem ser usadas como nomes de variáveis, classes ou métodos. abstract const finally int public throw boolean continue float interface return throws break default for long short transient byte do goto native static try case double if new super void catch else implements package switch volatile char extends import private synchronized while class final instance of protected this As palavras-chave const e goto são reservadas, mas não utilizadas. Nos primeiros dias de Java, diversas outras palavras-chave foram reservadas para Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 17

19 possível utilização futura. Contudo, a atual especificação de Java somente define como palavras-chaves aquelas mostradas acima. Além das palavras-chave, Java reserva as seguintes: true false null Elas representam valores definidos por Java e não podem ser usadas como nomes de variáveis, classes ou métodos. 15. Os tipos simples Como acontece com todas as linguagens de programação modernas, Java suporta diversos tipos de dados. Podemos usar esses tipos para declarar variáveis e criar arrays. Desde já, é importante ter em mente que Java é uma linguagem com tipagem forte. Na verdade, parte da robustez e da segurança de Java é conseqüência desse fato. Mas o que significa isso? Primeiro, toda variável em Java tem um tipo. O mesmo vale para as expressões. Esses tipos são rigorosamente definidos. Segundo, todas as atribuições, quer sejam explícitas ou via passagem de parâmetros nas chamadas a métodos, são checadas quanto à compatibilidade de tipos. Não existem conversões automáticas, nem conversões de tipos conflitantes, como acontece em algumas linguagens. O compilador Java checa todas as expressões e parâmetros para assegurar que os tipos sejam compatíveis. Qualquer disparidade entre tipos é um erro e deve ser corrigida para que o compilador possa concluir a compilação da classe. Quem tem uma vivência em C ou C++ perceberá que a tipagem em Java é mais rigorosa do que nessas duas linguagens. Por exemplo, em C/C++ é possível atribuir um valor de ponto flutuante a um inteiro. Em Java, isso não é permitido. Também em C, não existe necessariamente um checagem forte de tipos entre um parâmetro e um argumento. Em Java, isso sempre acontece. A forte checagem de tipos de Java pode parecer inicialmente um pouco aborrecida. Mas é preciso ter em mente que a longo prazo isso ajudará a reduzir a possibilidade de erros no código. Java define oito tipos simples (ou elementares) de dados. Eles podem ser divididos em quatro grupos: Os tipos elementares de Java (separados por grupo) Números inteiros Ponto flutuante Caracteres Booleano Números inteiros, todos com sinal Números fracionários Letras, símbolos e algarismos Valor falso ou verdadeiro byte short Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 18

20 int long float double char boolean Esses tipos podem ser usados no estado original, ou para construir arrays ou criar novos tipos de classes. Assim, eles formam a base de todos os outros tipos de dados que podem ser criados. Os tipos elementares representam valores individuais, e não objetos complexos. Embora sob outros aspectos Java seja uma linguagem totalmente orientada a objetos, os tipos elementares não são objetos. Eles são análogos aos tipos simples encontrados na maioria das outras linguagens não-orientadas a objetos. A razão para isto é a eficiência. Se os tipos simples fossem objetos, a performance seria muito prejudicada. Os tipos simples são definidos explicitamente para ter uma determinada faixa de valores e um comportamento matemático. Linguagens como C e C++ permitem que o tamanho de um inteiro varie conforme o ambiente de execução. Em Java isso não acontece. Por causa dos requisitos de portabilidade de Java, todos os tipos de dados têm uma faixa de valores estritamente definida. Por exemplo, um int é sempre de 32 bits, independente da plataforma de execução. Isso garante que os programas rodarão em qualquer arquitetura de máquina, sem necessidade de serem portados. Embora uma rigorosa especificação do tamanho de um inteiro possa causar uma pequena perda de performance em alguns ambientes, isso é necessário para garantir a portabilidade. 16. Conversões e uso de cast em Java Para resolver certos problemas em programação, é relativamente comum atribuir um valor de um tipo a uma variável de outro tipo. Se os dois tipos forem compatíveis, Java fará a conversão automaticamente. Um exemplo: sempre é possível atribuir um valor int a uma variável long. Porém nem todos os tipos são compatíveis, de modo que nem todas as conversões são implicitamente permitidas. Por exemplo, não existe uma conversão definida de double para byte. Para conseguir uma conversão entre tipos incompatíveis, usamos o recurso chamado cast. Ele executa uma conversão explícita entre tipos incompatíveis. Quando um dado de um tipo é atribuído a uma variável de outro tipo, ocorre uma conversão automática de tipo se as duas condições abaixo forem satisfeitas: Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 19

21 Os dois tipos forem compatíveis tipo de destino tiver largura maior que o tipo original Quando essas duas condições são satisfeitas, ocorre uma conversão por alargamento. Por exemplo, o tipo int sempre é grande o suficiente para conter todos os valores do tipo byte, de modo que não há necessidade de uso de um cast explícito. Nas conversões por alargamento, os tipos numéricos, inclusive os tipos inteiros e de ponto flutuante, são compatíveis entre si. Contudo, os tipos numéricos não são compatíveis com char ou boolean. E também, char e boolean não são compatíveis entre si. Conforme mencionado anteriormente, Java também executa uma conversão automática de tipo ao armazenar uma constante literal inteira em uma variável do tipo byte, short ou long. 17. Usando cast entre tipos incompatíveis As conversões automáticas ajudam muito, mas não atendem a todas as necessidades de programação. Por exemplo, o que acontece se precisarmos atribuir um valor int a uma variável byte? Essa conversão não é feita automaticamente, porque um byte é menor que um int. Esse tipo de conversão é conhecido como conversão por estreitamento, já que estamos explicitamente tornando o valor mais estreito, para que ele caiba no tipo alvo. Para criar uma conversão entre dois tipos incompatíveis, é preciso usar um cast. Um cast é simplesmente uma conversão explícita de tipo. Em nosso exemplo acima, de int para byte, o cast teria a seguinte forma: int intvar; byte bytevar; //... bytevar = (byte) intvar; Aqui, bytevar representa uma variável tipo byte, e intvar representa uma variável tipo int. Se o valor int for maior que o valor máximo possível para um byte, ele será reduzido usando a conversão módulo, que consiste no resto de uma divisão inteira pelo alcance de byte. A conversão que ocorre quando um valor de ponto flutuante é atribuído a um tipo inteiro é diferente. Consiste de um truncamento. Como sabemos, valores inteiros não têm o componente fracionário. Assim, quando um valor de ponto flutuante é atribuído a um tipo inteiro, o componente fracionário é perdido. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 20

22 Por exemplo, se o valor for atribuído a um inteiro, o valor resultante será simplesmente 3. A parte fracionária.1416 será truncada. Importante: se o tamanho da parte inteira do número for grande demais para caber no tipo inteiro alvo, então o valor será reduzido usando a operação módulo pelo alcance do tipo alvo. O programa abaixo demonstra algumas conversões de tipos que requerem casts: Listagem: Casts.java 1 // Casts.java 2 // Ilustra o uso de 3 // casts. 4 5 class Casts 6 { 7 public static void main(string args[]) 8 { 9 byte bytevar; 10 int intvar = 257; 11 double doublevar = ; System.out.println("\nConversao de int para byte."); 14 bytevar = (byte) intvar; 15 System.out.println("intVar = " + intvar); 16 System.out.println("byteVar = " + bytevar); System.out.println("\nConversao de double para int."); 19 intvar = (int) doublevar; 20 System.out.println("doubleVar = " + doublevar); 21 System.out.println("intVar = " + intvar); System.out.println("\nConversao de double para byte."); 24 bytevar = (byte) doublevar; 25 System.out.println("doubleVar = " + doublevar); 26 System.out.println("byteVar = " + bytevar); 27 } // Fim de main() 28 } // Fim de classe Casts. Este programa gera a seguinte saída: Conversao de int para byte. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 21

23 intvar = 257 bytevar = 1 Conversao de double para int. doublevar = intvar = 317 Conversao de double para byte. doublevar = bytevar = 61 Vamos examinar cada uma das conversões. Na linha 14, quando o valor 257 é convertido por meio de um cast em uma variável byte, o resultado é o resto da divisão de 257 por 256, o valor máximo de um byte. No caso, esse resto é igual a 1. Na linha 19, quando doublevar é convertida em int, o componente fracional é perdido. Na linha 24, quando doublevar é convertida em byte, o componente fracional é perdido e o valor é reduzido com a operação módulo 256. O resultado é Arrays Um array é um grupo de variáveis do mesmo tipo que são referenciadas por um nome comum. Podemos criar arrays de qualquer tipo, e eles podem ter uma ou mais dimensões. Um elemento específico de um array é acessado por seu índice. Os arrays representam uma forma prática de agrupar elementos correlacionados do mesmo tipo. Um array unidimensional é, essencialmente, uma lista de variáveis do mesmo tipo. Para criar um array, primeiro criamos uma variável array do tipo desejado. Por exemplo, a linha abaixo: int num_dias_mes[]; Cria uma variável array do tipo int chamada num_dias_mes. Aqui, o tipo int declara o tipo básico do array. O tipo básico determina o tipo de dados de cada elemento que forma o array. Ou seja, o tipo básico do array determina o tipo dos dados que o array conterá. No caso, a linha acima cria uma variável array de ints. Embora esta declaração estabeleça o fato de que num_dias_mes é uma variável array, ainda não existe um array de fato neste ponto. Na verdade, o Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 22

24 valor de num_dias_mes é automáticamente ajustado para null, que representa um array sem nenhum valor. Para conectar num_dias_mes a um array físico e real de inteiros, é preciso alocá-lo, usando new e atribui-lo a num_dias_mes. new é um operador especial que aloca memória. Examinaremos new com mais detalhes mais adiante neste curso, mas precisamos usá-lo agora para alocar memória para arrays. Eis a forma como new é usado para alocar um array de 12 ints: num_dias_mes = new int[12]; Observe que nesta mesma linha, o array de ints recém-alocado está sendo atribuído à variável num_dias_mes. Aqui, int especifica o tipo dos dados que estão sendo alocados. O número 12 entre colchetes [ ] especifica o número de elementos contidos no array. E num_dias_mes é a variável array à qual o array recém alocado é conectado. Resumindo: quando usamos new para alocar um array, precisamos especificar o tipo e o número de elementos a alocar. Os elementos do array alocado por new serão automaticamente inicializados com o valor zero. Portanto, depois que a linha acima for executada, num_dias_mes se referirá a um array de 12 inteiros. Além disso, todos os elementos do array terão sido inicializados com o valor zero. Mais uma vez: a obtenção de um array é um processo em duas etapas. Primeiro, é preciso declarar uma variável do tipo de array desejado. Segundo, é preciso alocar a memória que conterá o array, usando new, e atribuí-la à variável do array. Assim, em Java, todos os arrays são alocados dinamicamente. Mais adiante neste curso trataremos com mais detalhes do conceito de alocação dinâmica. Uma vez que você tenha alocado um array, é possível acessar um elemento específico do array especificando seu índice dentro dos colchetes. Todos os índices de arrays começam em zero. Por exemplo, a linha abaixo atribui o valor 28 ao segundo elemento de num_dias_mes: num_dias_mes[1] = 28; A linha abaixo exibe o valor armazenado no índice 3: System.out.println(num_dias_mes[3]); Para ilustrar todos esses conceitos, eis um programa que cria um array com o número de dias de cada mês: Listagem: ArrayUni.Java Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 23

25 1 // ArrayUni.java 2 // Demonstra um array unidimensional. 3 class ArrayUni 4 { 5 public static void main(string args[]) 6 { 7 int num_dias_mes[]; 8 num_dias_mes = new int[12]; 9 // Janeiro. 10 num_dias_mes[0] = 31; // Fevereiro. 13 num_dias_mes[1] = 28; // Março, e assim 16 // por diante. 17 num_dias_mes[2] = 31; num_dias_mes[3] = 30; 20 num_dias_mes[4] = 31; 21 num_dias_mes[5] = 30; 22 num_dias_mes[6] = 31; 23 num_dias_mes[7] = 31; 24 num_dias_mes[8] = 30; 25 num_dias_mes[9] = 31; 26 num_dias_mes[10] = 30; // Dezembro. 29 num_dias_mes[11] = 31; 30 System.out.println("Abril tem " 31 + num_dias_mes[3] + 32 " dias."); 33 } // Fim de main() 34 } // Fim da classe ArrayUni. Ao ser executado, este programa exibe a seguinte saída: Abril tem 30 dias. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 24

26 Observe na linha 10 que, conforme mencionamos anteriormente, os índices dos arrays em Java começam em zero. É por isso que o número de dias de abril está em num_dias_mes[3], conforme mostrado na linha 19. Podemos combinar em uma única linha a declaração da variável array (linha 7) com a alocação do próprio array (linha 8), conforme mostrado abaixo: int num_dias_mes[] = new int[12]; Esta é a forma mais usada em programas Java profissionais. Os arrays podem ser inicializados no momento da declaração. O processo é muito parecido com aquele usado para inicializar tipos simples. Um inicializador de array é uma lista de expressões separadas por vírgulas contidas entre chaves { }. As vírgulas separam os valores dos elementos do array. O array será automaticamente criado com tamanho certo para conter o número de elementos especificados no inicializador do array. Não há necessidade de usar new. O exemplo abaixo é uma nova versão do programa ArrayUni.java: Listagem: ArrayUni2.java 1 // ArrayUni2.java 2 // Uma segunda versão 3 // ilustrando o uso 4 // de um array unidimensional. 5 class ArrayUni2 6 { 7 public static void main(string args[]) 8 { 9 // Declara e inicializa 10 // automaticamente o array. 11 int num_dias_mes[] = {31, 28, 31, 30, 31, 30, 12 31, 31, 30, 31, 30, 31}; 13 System.out.println("Abril tem " + 14 num_dias_mes[3] + 15 " dias."); 16 } // Fim de main() 17 } // Fim da classe ArrayUni2. Ao ser executado, este programa gera a mesma saída da versão anterior. Abril tem 30 dias. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 25

27 Observe nas linhas 11 e 12 que, já ao ser criado, o array de inteiros é inicializado com o número de dias de cada mês. Java faz uma rigorosa checagem para assegurar que o programador não tente armazenar ou referenciar valores fora do alcance do array. O sistema runtime de Java faz essa checagem para ter certeza de que todos os índices do array estejam dentro da faixa correta. Neste aspecto, Java é fundamentalmente diferente de C/C++, que não faz nenhuma checagem de limites em tempo de execução. Por exemplo, o sistema runtime faz a checagem do valor de cada índice do array num_dias_mes para assegurar que todos estejam dentro da faixa de 0 a 11, inclusive. Se tentarmos acessar um elemento fora do alcance do array, usando como índice um número negativo ou um número maior que o comprimento do array, isso causará um erro de tempo de execução. O exemplo abaixo utiliza um array unidimensional para encontrar a média de um conjunto de números. Listagem: MediaArray.Java 1 // MediaArray.java 2 // Utiliza um array 3 // para encontra a média 4 // entre vários números. 5 6 class MediaArray 7 { 8 public static void main(string args[]) 9 { 10 double numeros[] = {3.14, 7.2, 10.17, 14.31, 15.49}; 11 double resultado = 0; 12 int contador; for(contador = 0; contador < 5; contador++) 15 resultado = resultado + numeros[contador]; System.out.println("Valor medio = " + 18 resultado / 5); 19 } // Fim de main(). 20 } // Fim da classe MediaArray. Ao ser executado, MediaArray.java produz a seguinte saída: Valor medio = Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 26

28 19. Arrays multidimensionais Os arrays multidimensionais são implementados em Java na forma de arrays de arrays. Tais arrays de arrays parecem e funcionam exatamente como arrays multidimensionais. Porém existem algumas pequenas diferenças. Para declarar uma variável array multidimensional, especificamos cada índice adicional usando mais um par de colchetes. Por exemplo, a seguinte linha declara uma variável array bidimensional chamada array2d. int array2d[][] = new int[4][5]; Essa declaração aloca um array de ints de 4 por 5 e o atribui a array2d. Internamente, essa matriz é implementada como um array de arrays de int, representado pelo seguinte layout: [0][0] [0][1] [0][2] [0][3] [0][4] [1][0] [1][1] [1][2] [1][3] [1][4] [2][0] [2][1] [2][2] [2][3] [2][4] [3][0] [3][1] [3][2] [3][3] [3][4] Observe que o primeiro índice representa a linha e o segundo índice representa a coluna. O programa abaixo exemplifica um array bidimensional: Listagem: Array2D.java 1 // Array2D.java 2 // Ilustra o uso 3 // de um array 4 // bidimensional. 5 6 class Array2D 7 { 8 public static void main(string args[]) 9 { 10 int array2d[][] = new int[4][5]; 11 int i, j, k = 0; // Preenche o array. 14 for(i = 0; i < 4; i++) 15 for(j = 0; j < 5; j++) 16 { 17 array2d[i][j] = k; Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP 27

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

insfcanceof new public switch transient while byte continue extends for int null

insfcanceof new public switch transient while byte continue extends for int null Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 5 Instruções de controle: Parte 2 Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 5.1 Introdução Instrução de repetição for Instrução de repetição do while Instrução de seleção

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

INTRODUÇÃO À LINGUAGEM C++

INTRODUÇÃO À LINGUAGEM C++ INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Desenvolvimento OO com Java Orientação a objetos básica

Desenvolvimento OO com Java Orientação a objetos básica Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação Lógica de Programação 3. INTRODUÇÃO À LINGUAGEM C Caro Aluno Vamos iniciar o terceiro capítulo da nossa disciplina. Agora vamos começar a aplicar os conceitos vistos nos capítulos anteriores em uma linguagem

Leia mais

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes Programação Orientada a Objetos e Java - Introdução Carlos Lopes POO e Java Objetivo: proporcionar uma visão dos conceitos de POO e do seu uso na estruturação dos programas em Java. Classes e objetos em

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

5 Apresentando a linguagem C

5 Apresentando a linguagem C 5 Apresentando a linguagem C O criador da linguagem de programação C foi Dennis Ritchie que, na década de 70, programou-a por meio de um computador DEC PDP-11 rodando sistema operacional Unix. Entretanto,

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP O PHP através da versão 5, veio desenvolvido com suporte a programação orientada a objetos. O que significa isso? Que a partir da versão 5 é possível criar bibliotecas

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS Jean Henrique Zenzeluk* Sérgio Ribeiro** Resumo. Este artigo descreve os conceitos de Orientação a Objetos na linguagem de programação

Leia mais

BC0505 Processamento da Informação

BC0505 Processamento da Informação BC0505 Processamento da Informação Assunto: Modularização de código e passagem de parâmetros Aula Prática: 4 Versão: 0.2 Introdução Modularização No Java, como em outras linguagens de Programação Orientadas

Leia mais

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Introdução ao Paradigma Orientado a Objetos. Principais conceitos Introdução ao Paradigma Orientado a Objetos Principais conceitos Paradigmas de Programação PROGRAMAÇÃO ESTRUTURADA X PROGRAMAÇÃO ORIENTADA A OBJETOS Paradigma Programação estruturada Na programação estrutura

Leia mais

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti http://ead.celsomasotti.com.br

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti http://ead.celsomasotti.com.br LÓGICA DE PROGRAMAÇÃO Professor Celso Masotti http://ead.celsomasotti.com.br Ano: 2015 1 HTML & PHP em Ambiente Web PARTE II Sumário I Decisão... 4 Operadores de Comparação... 6 II IF ELSEIF ELSE... 7

Leia mais

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Tipos de dados Os programas manipulam dados, armazenando-os

Leia mais

Noções sobre Objetos e Classes

Noções sobre Objetos e Classes Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão

Leia mais

Estrutura Condicional em Java

Estrutura Condicional em Java Estrutura Condicional em Java Linguagem de Programação 1 O Java contém três tipos de instruções de seleção. A instrução if realiza uma ação se uma condição for verdadeira ou pula a ação se a condição for

Leia mais

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização

Leia mais

Testando e Comparando Valores

Testando e Comparando Valores Testando e Comparando Valores A Instrução if Um dos recursos mais importantes de uma linguagem de computador é a capacidade de testar e comparar valores, permitindo que seu programa se comporte diferentemente

Leia mais

Usando o do-file editor Automatizando o Stata

Usando o do-file editor Automatizando o Stata Usando o do-file editor Automatizando o Stata 1 O QUE É O EDITOR DE DO-FILE O Stata vem com um editor de texto integrado, o do-file editor (editor de do-files, em português), que pode ser usado para executar

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 3: Métodos LEEC@IST Java 1/45 Métodos (1) Sintaxe Qualif Tipo Ident ( [ TipoP IdentP [, TipoP IdentP]* ] ) { [ Variável_local Instrução ]* Qualif: qualificador (visibilidade,

Leia mais

2 Ferramentas Utilizadas

2 Ferramentas Utilizadas 2 Ferramentas Utilizadas Esta dissertação utiliza vários outros trabalhos para implementar os mecanismos de adaptação abordados. Essas ferramentas são descritas nas seções seguintes. 2.1 Lua Lua [7, 8]

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Funções Classes de armazenamento

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

Leia mais

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa Aula 12: Funções Nesta aula explicaremos o que são e como usar funções nos seus programas em JavaScript. Você aprenderá como elas podem receber e retornar valores à estrutura que as acionou. Entenderá

Leia mais

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame 6. Como aplicações gráficas funcionam em Java? Todas as aplicações gráficas em Java usam instâncias de classes existentes, que por serem parte da linguagem podem ser executadas em todas as versões de Java

Leia mais

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código } Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver

Leia mais

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética 2 PARADIGMA IMPERATIVO 2.1 CONCEITO As linguagens que pertencem ao paradigma imperativo tomam por base a perspectiva da máquina. Ou seja, no modo como o computador executa programas em linguagem de máquina.

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

UML: Diagrama de Casos de Uso, Diagrama de Classes

UML: Diagrama de Casos de Uso, Diagrama de Classes UML: Diagrama de Casos de Uso, Diagrama de Classes Diagrama de Casos de Uso O modelo de casos de uso visa responder a pergunta: Que usos (funcionalidades) o sistema terá? ou Para que aplicações o sistema

Leia mais

Aula de JavaScript 05/03/10

Aula de JavaScript 05/03/10 Objetos Sabe-se que variável são contêiners que podem armazenar um número, uma string de texto ou outro valor. O JavaScript também suporta objetos. Objetos são contêiners que podem armazenar dados e inclusive

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

compreender a importância de cada estrutura de controle disponível na Linguagem C;

compreender a importância de cada estrutura de controle disponível na Linguagem C; Aula 3 Estruturas de controle Objetivos Esperamos que, ao final desta aula, você seja capaz de: compreender a importância de cada estrutura de controle disponível na Linguagem C; construir programas em

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 6 Polimorfismo Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof.

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1: Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Algoritmos e Programação II. Sobrecarga

Algoritmos e Programação II. Sobrecarga Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque

Leia mais

Programação em papel quadriculado

Programação em papel quadriculado 4 NOME DA AULA: Programação em papel quadriculado Tempo de aula: 45 60 minutos Tempo de preparação: 10 minutos Objetivo principal: ajudar os alunos a entender como a codificação funciona. RESUMO Ao "programar"

Leia mais

7. Estrutura de Decisão

7. Estrutura de Decisão 7. Estrutura de Decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação

Leia mais

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B,

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

Resolução da lista de exercícios de casos de uso

Resolução da lista de exercícios de casos de uso Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se

Leia mais

Notas de Cálculo Numérico

Notas de Cálculo Numérico Notas de Cálculo Numérico Túlio Carvalho 6 de novembro de 2002 2 Cálculo Numérico Capítulo 1 Elementos sobre erros numéricos Neste primeiro capítulo, vamos falar de uma limitação importante do cálculo

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

Programação: Tipos, Variáveis e Expressões

Programação: Tipos, Variáveis e Expressões Programação de Computadores I Aula 05 Programação: Tipos, Variáveis e Expressões José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/56 Valores Valor é uma entidade

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Conversão de Tipos e Arrays

Conversão de Tipos e Arrays Conversão de Tipos e Arrays Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Conversão de Tipos Permite converter

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 5 Herança Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Programação Orientada a Objetos C++

Programação Orientada a Objetos C++ Programação Orientada a Objetos em C++ Sumário Histórico Comparação com Java Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Histórico Desenvolvido por Bjarne Stroustrup dos Bell Labs

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso

Leia mais

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes ITENS FUNDAMENTAIS Profª Angélica da Silva Nunes CONCEITOS BÁSICOS Hardware - é a parte física do computador, tais como: teclado, monitor de vídeo, etc. Software - são os programas e aplicativos que permitem

Leia mais

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010 Módulo 02 Programação Orientada a Objetos Última atualização: 07/06/2010 1 Objetivos Definir conceitos de orientação a objetos: o abstração, encapsulamento, pacotes. Discutir reutilização de código em

Leia mais

Exercícios Teóricos Resolvidos

Exercícios Teóricos Resolvidos Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Criar a classe Aula.java com o seguinte código: Compilar e Executar Introdução à Java Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Código Exemplo da Aula Criar a classe Aula.java com o seguinte código: public class Aula { public static void

Leia mais

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3) pg. 1/6 Material de Apoio 5 Herança Observe o código das classes Fatorial e Fibonacci apresentados abaixo. class Fatorial { class Fibonacci { private int n, res; private int n, res; public Fatorial( int

Leia mais

Representação de Algoritmos - Linguagens de Programação

Representação de Algoritmos - Linguagens de Programação Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

SIMULADOS & TUTORIAIS

SIMULADOS & TUTORIAIS SIMULADOS & TUTORIAIS TUTORIAIS JAVASCRIPT Tipos de dados em JavaScript Copyright 2013 Todos os Direitos Reservados Jorge Eider F. da Silva Proibida a reprodução deste documento no todo ou em parte por

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Lição 9 Trabalhando com bibliotecas de classes

Lição 9 Trabalhando com bibliotecas de classes Lição 9 Trabalhando com bibliotecas de classes Introdução à Programação I 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Explicar o que é programação orientada a objetos e alguns de seus

Leia mais