118
Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 1 INTRODUÇÃO A PROGRAMAÇÃO Prof. Maurício Capobianco Lopes Profª. Luciana Pereira de Araújo (Material de Apoio)

INTRODUÇÃO A PROGRAMAÇÃO - inf.furb.brinf.furb.br/poo/.../apostilas/ApostilaIntroducaoProgramacao-FURBOT.pdf · Universidade Regional de Blumenau - Introdução a Programação

  • Upload
    hacong

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 1

INTRODUÇÃO A PROGRAMAÇÃO

Prof. Maurício Capobianco Lopes

Profª. Luciana Pereira de Araújo

(Material de Apoio)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 2

1. FUNDAMENTOS DA PROGRAMAÇÃO DE COMPUTADORES

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 3

1 INTRODUÇÃO A PROGRAMAÇÃO DE

COMPUTADORES

• Os computadores são máquinas programáveis utilizadas para automatizar tarefas

• As ações executadas por estas máquinas são baseadas em dados e regras que dependem da aplicação para as quais são criadas

• A programação de um computador é uma tarefa executada pelo programador

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 4

1.1 SOLUÇÃO DE PROBLEMAS

• O computador segue as ordens (COMANDOS E INSTRUÇÕES) contidas em um programa de computador e escritas em uma linguagem de programação

• A sequência lógica e coerente destas ordens é representada através de Algoritmos, Fluxogramas ou Diagramas

• A implementação destas ordens em uma linguagem computacional é denominada de Programa de Computador

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 5

1.1 SOLUÇÃO DE PROBLEMAS

• A SOLUÇÃO DE UM PROBLEMA com base em um SOFTWARE envolve um conjunto de PROCESSOS (regras) que operam sobre DADOS, necessitando de RECURSOS (dados de Entrada) e produzindo RESULTADOS (dados de Saídas)

• PROCESSOS (regras) são as ações executadas pelo computador para operar ou transformar os dados

Entradas(Recursos)

Processos(Regras)

Saídas(Resultados)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 6

1.2. TÉCNICAS PARA REPRESENTAÇÃO DE

SOLUÇÕES

• As principais técnicas para representações de soluções de problemas com base em softwares são:

– Algoritmos, Fluxogramas ou Diagramas;

• NÃO EXIGEM um computador para serem executados e testados.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 7

1.2.1. ALGORITMOS

• Representam as instruções para a solução de um problema com base em um subconjunto de palavras de uma língua (p. ex. língua portuguesa);

• Também são conhecidos por pseudolinguagem ou pseudocódigo;

ler (nota)

se nota >= 6.0 então

escrever (“Aluno

aprovado”)

senão

escrever (“Aluno

reprovado”)

fim se

• Tem uma estrutura semântica e sintáticaprópria, mas que pode variar nasdiferentes bibliografias ou formas derepresentação.

• Vantagem: facilidade de elaboração.• Desvantagem: legibilidade e ambigui-

dade em problemas não triviais.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 8

1.2.2. FLUXOGRAMAS (DIAGRAMA DE

BLOCOS)

• É o tipo mais comum de representação de solução de problemas com base em uma notação gráfica.

• Contêm um conjunto de símbolos com significados específicos para cada instrução.

• Vantagem: legibilidade.• Desvantagens: espaço e

ferramentas para elaboração.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 9

1.2.3. DIAGRAMAS

• Outros tipos de diagramas também permitem a representação de soluções de problemas com base em notações gráficas.

Diagrama de Chapin (Nassi-Shneiderman) Diagrama de Estados

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 10

EXERCÍCIOS PROPOSTOS

• Exercícios: descrever uma solução para os problemas a seguir. – trocar o pneu de um carro

– fazer uma limonada

– fazer miojo

– trocar uma lâmpada

– pegar um livro emprestado na biblioteca

– desenhar e recortar um quadrado em uma folha de papel

– movimentar um peão em um tabuleiro de xadrez

– movimentar uma peça em um jogo de dados dado o tabuleiro abaixo

1 2

Avance até a casa

8

4 5 6

7

81011

171615

13Volte

para o início

Volte para

casa 5

18 20

Avance até a casa

17

Volte para casa 11

Início

Fim

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 11

2. CONSTRUÇÃO DE ALGORITMOS

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 12

2 CONSTRUÇÃO DE ALGORITMOS

• Para que o computador possa cumprir corretamente as tarefas desejadas é necessário construir algoritmos organizados de forma lógica.

• "LÓGICA: coerência de raciocínio, de idéia; seqüência coerente, regular e necessária de acontecimentos, de coisas" (DICIONÁRIO AURÉLIO).

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 13

2.1 ALGORITMO: INSTRUÇÕES

• As INSTRUÇÕES mais comuns em algoritmos são:

Tipo DescriçãoAtribuição Existem informações em um programa que precisam ser

armazenadas em VARIÁVEIS. Nestes casos, utiliza-se uma expressão de atribuição.A atribuição é representada por um flecha para a esquerda ( ) ou pelo sinal de igual ( = )

Entrada e Saída

Os programas normalmente recebem e informam dados executando operações denominadas de entrada (comando “ler”) e saída (comando “escrever”).

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 14

2.1 ALGORITMO: INSTRUÇÕES

• As INSTRUÇÕES mais comuns em algoritmos são:

Tipo Descrição

Estruturas de Controle de Seleção e Repetição

Em um programa podem existir comandos executados apenas em determinadas situações. Nestes casos utilizam-se as estruturas de seleção. Em outras situações, um comando precisa ser executado repetidas vezes. Nestes casos, utilizam-se as estruturas de repetição.

Chamadas de Sub-rotinas

Muitas vezes em um programa, a solução de um ALGORITMO, requer a execução de outros ALGORTIMOS.

Tratamentos de Erros

Muitas situações na programação de computadores requerem cuidado pois podem gerar diversos tipos de erros. Nas linguagens mais modernas, existem estruturas específicas para o tratamento destes erros.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 15

2.2. NOTAÇÕES DE FLUXOGRAMA

• Início/Fim: indica o ponto inicial e o ponto final do fluxograma

• Entrada: indica os valores a serem utilizados para a realização das ações em todo o fluxograma

• Operação/Comando: indica a ação que será realizada em um determinado ponto do fluxograma

Início/Fim

Entrada / Informação

Entrada / Dados Manuais

Operação/Comando

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 16

2.2. NOTAÇÕES DE FLUXOGRAMA

• Decisão: indica um desvio de fluxo conforme o resultado de uma condição (verdadeiro/falso)

• Saída: indica o resultado obtido após o percurso de um fluxo

• Conector: utilizado quando o fluxograma não cabe em uma única página

• Sentido do fluxo: indica o próximo passo que irá ocorrer em uma ação e outra do fluxograma

Decisão

Saída

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 17

2.2.1 EXEMPLO DE UM FLUXOGRAMA

• José e Ana estão decidindo quem inicia o jogo na escola através de cara e coroa. José pediu cara, logo, se ele tirar cara ele inicia a jogada. Se Ana tirar coroa, ela é quem inicia a jogada.

Jogar moeda

Moeda é cara?

Início

João inicia Ana inicia

Fim

SimNão

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 18

2.3 DADOS

• DADOS são as informações que devem ser armazenadas

• DADOS podem ser:

– de entrada: necessários para a realização do algoritmo– intermediários: produzidos ao longo do algoritmo– saída: informados pelo algoritmo

• Os DADOS são representados através de variáveis ou constantes e tem tipos

• Todas as informações armazenadas na memória do computador tem endereço de memória. São as VARIÁVEIS

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 19

2.4 TIPOS DE DADOS

• Toda variável tem um tipo de dado associado. O tipo de dado determina:

– que valores a variável pode assumir– as operações às quais ela pode ser submetida– o espaço a ser ocupado pela variável na memória

• Os tipos de dados primitivos são:

– inteiro: armazena números inteiros– real: armazena números com casas decimais– caractere: armazena qualquer símbolo único– lógico: armazena verdadeiro ou falso

• Os operadores mais comuns sobre as variáveis são:

– adição (+), subtração (-), multiplicação (*), divisão (/) e resto (%)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 20

MÉTODO

• Para a construção de um algoritmo, pergunte-se

– O QUE EU TENHO? (Entradas)

– O QUE EU QUERO? (Saídas)

– O QUE EU PRECISO COMPUTAR? (Algoritmo)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 21

3. INTRODUÇÃO A LINGUAGEM DE PROGRAMAÇÃO

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 22

3.1 A LINGUAGEM JAVA

• Plataforma de programação iniciada pela Sun Microsystems e atualmente pertencente a Oracle;

• “Linguagem de programação de propósito geral, concorrente, baseada em classes e orientada a objetos”;

• Possui algumas semelhanças com as linguagens C e C++;

• É uma linguagem case sensitive, ou seja, diferencia maiúsculas de minúsculas;

• Independente de plataforma, pois seus programas são compilados em um formato próprio denominado bytecodes (.class).

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 23

3.1 A LINGUAGEM JAVA

• O Java, em sua distribuição atual 8, tem versões diferentes para diversos tipos de desenvolvimento. Entre elas destacam-se:

– Java Standard Edition (JavaSE): voltado para aplicações desktop, integra os elementos padrão da plataforma e permite o desenvolvimento de aplicações de pequeno e médio porte. Inclui todas as APIs consideradas de base, além da máquina virtual padrão (JVM – Java Virtual Machine);

– Java Enterprise Edition (JavaEE): voltada para aplicações Web e aplicações corporativas complexas. Adiciona APIsespecíficas aos elementos padrão da plataforma.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 24

3.1 A LINGUAGEM JAVA

• Para executar aplicações em java é necessário

– Java Runtime Environment (JRE): contém a máquina virtual Java (JVM), responsável por compilar os arquivos Java desenvolvidos. Além disso, possui bibliotecas de classe utilizadas em tempo de execução e aplicações/recursos necessários para executar programas escritos na linguagem Java;

– Java Development Kit (JDK): ambiente de desenvolvimento para a criação de aplicativos usando a linguagem de programação Java. Contém as ferramentas úteis para o desenvolvimento dos programas a serem executados na plataforma Java.

• Download:

– http://www.oracle.com/technetwork/java/index.html

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 25

3.2 IDES PARA DESENVOLVIMENTO JAVA

• Os ambientes de programação são comumente denominados de IDE (Integrated Development Environment – Ambiente Integrado de Desenvolvimento)

– Possuem uma interface amigável para o desenvolvimento de programas

– Reúnem características e ferramentas de apoio ao desenvolvimento de software com objetivo de agilizar o processo

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 26

3.2 IDES PARA DESENVOLVIMENTO JAVA

• Componentes básicos de uma IDE:

– Editor– Compilador– Linker– Depurador/Debugger

• Exemplos de Ambientes para a linguagem Java:

– Eclipse– Netbeans– BlueJ– JCreator– JBuilder– etc.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 27

3.2 IDES PARA DESENVOLVIMENTO JAVA

• As principais IDEs para o desenvolvimento de aplicativos em Java são:

– Eclipse: https://www.eclipse.org/

– Netbeans: https://netbeans.org/

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 28

3.3 FURBOT

• Ambiente de apoio ao ensino de lógica de programação desenvolvido na FURB em 2008

• Disponibiliza um ambiente que possibilita o desenvolvimento de algoritmos de controle de personagens de tal forma a criar uma atmosfera facilitadora ao aprendizado

• Link com mais informações:

– http://inf.furb.br/poo/ProjetoFurbot/

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 29

3.3 FURBOT – CONCEITOS INICIAIS

• O Furbot é formado por um ambiente composto por linhas e colunas no qual habita um robô e demais personagens.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 30

3.3 FURBOT – CONCEITOS INICIAIS

EnunciadoIniciar

Velocidade

Cenário/Mundo

Saídas

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 31

3.3 FURBOT – CONCEITOS INICIAIS

• O cenário é criado a partir de um arquivo XML

<furbot>

<enunciado>

Faça o robô andar até a posição (7,4). &lt;br&gt;

Lembre-se de que as coordenadas sempre serão

fornecidas como (x, y).&lt;br&gt;

A primeira coluna e linhas são a de número ZERO.

</enunciado>

<mundo>

<qtdadeLin>8</qtdadeLin>

<qtdadeCol>8</qtdadeCol>

<explodir>true</explodir>

</mundo>

<robo>

<x>0</x>

<y>0</y>

</robo>

</furbot>

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 32

3.3 FURBOT – PERSONAGENS

• Furbot: é o robô que recebe as missões a serem executadas no mundo;

• Alien: inimigo do robô, está no mundo para impedi-lo de realizar as missões;

• Booleano: identificadores lógicos (true/false);

• Numero: números utilizados durante a realização das missões;

• Tesouro: baú que guarda tesouros, os quais devem ser encontrados pelo Furbot;

• Parede: obstáculo que impede a passagem.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 33

3.3 FURBOT – COMANDOS INICIAIS

• andarDireita():void

– Faz com que o robô ande uma célula à direita. Se houver um obstáculo ou for o fim do mundo, o robô explode;

• andarEsquerda():void

– Faz com que o robô ande uma célula à esquerda. Se houver um obstáculo ou for o fim do mundo, o robô explode;

• andarAcima():void

– Faz com que o robô ande uma célula para cima. Se houver um obstáculo ou for o fim do mundo, o robô explode;

• andarAbaixo():void

– Faz com que o robô ande uma célula para baixo. Se houver um obstáculo ou for o fim do mundo, o robô explode.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 34

3.3 FURBOT – COMANDOS INICIAIS

• diga (String):void

– Faz com que a mensagem enviada como parâmetro seja apresentada na tela. Toda mensagem deve ser escrita entre os parêntesis e grafada entre aspas duplas;

• diga (Object):void

– Permite que seja passado como parâmetro um objeto que contém a mensagem a ser apresentada na tela. Este recurso é avançado e você só vai utilizá-lo mais adiante;

• limparConsole():void

– Limpa a área de mensagens do mundo. Geralmente utilizamos para facilitar a visualização de mensagens importantes.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 35

3.4 FURBOT – PRIMEIROS PASSOS

• O Furbot pode ser utilizado através da IDE Eclipse ou Netbeans

• Para que seja possível utilizá-lo é necessário realizar o download das seguintes bibliotecas:

– Furbot.jar– commons-digester-1.8.jar– commons-logging-1.1.jar– commons-beanutils.jar

• Link:

– http://inf.furb.br/poo/ProjetoFurbot/download.html

• Tutorial de utilização:

– http://inf.furb.br/poo/ProjetoFurbot/documentacao.html

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 36

3.4 FURBOT – PRIMEIROS PASSOS

Importações

Nome do XML

Definição da

Classe

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 37

3.4 FURBOT – PRIMEIROS PASSOS

Método de

inteligência do

Robô

Método de

inicialização

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 38

3.5 ORIENTAÇÃO A OBJETOS

• A ORIENTAÇÃO A OBJETOS (OO) modela o mundo a partir dos objetos existentes no mundo real.

• Os objetos têm CARACTERÍSTICAS (atributos) e COMPORTAMENTOS (métodos) próprios, sendo definidos pelas CLASSES às quais pertencem.

Professores Maurício Capobianco Lopes e Luciana Pereira de Araújo class Class Model

Aluno

- numeroDeMatricula: int

- nome: String

- sexo: char

+ informarNumeroDeMatricula() : int

+ estudar() : void

Atributos

Métodos

Classe

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 39

3.5 ORIENTAÇÃO A OBJETOS - CLASSES

• Agrupa um conjunto de objetos com características comuns

• É o modelo genérico de um objeto;

• Exemplo: Pessoa, Carro, Sala, Pássaro, Mesa, ...

Padrão de nome:Inicia com letra maiúscula

Definição no Java:

public class NomeClasse {

//código-fonte

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 40

3.5 ORIENTAÇÃO A OBJETOS - OBJETOS

• É um elemento de uma classe

• O objeto possui as características bem definidas

• Exemplo: joao (Classe Pessoa), gol (Classe Carro), sala S-101 (Classe Sala).

Padrão de nome:Inicia com letra minúscula

Definição no Java:

Classe nomeObj;

Exemplos:

Pessoa pessoa;

Carro carro;

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 41

3.5 ORIENTAÇÃO A OBJETOS - ATRIBUTOS

• São as características das classes/objetos

• Exemplo: nome, tamanho, cor, altura, largura...

Padrão de nome:Inicia com letra minúscula

Definição no Java:

tipo nome;

Exemplos:

String nome;

float altura;

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 42

3.5 ORIENTAÇÃO A OBJETOS - MÉTODOS

(SUB-ROTINAS)

• São as ações/estados das classes.

• Exemplo: escrever, imprimir, calcular, iniciar ...

Padrão de nome:Inicia com letra minúscula, segue com ()

Definição no Java:

encapsulamento tipoRetorno nome(parâmetros)

{

}

Ex: public static void main(String args[]) {

//Implementação do método

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 43

4. TIPOS E OPERADORES EM JAVA

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 44

4.1 TIPOS DE DADOS: PRIMITIVOS

• Os TIPOS DE DADOS PRIMITIVOS são os tipos básicos de uma linguagem.

• O Java possui também o tipo void que não armazena nenhum conteúdo.

Tipo Tamanho (em bits) Domínio Dígitos Significativos

float (literal: f) 32 1.4 * 10-45 .. 3.4 * 1038 7-8double (literal: d) 64 5.0 * 10-324 .. 1.8 * 10308 15-16

Tipo Tamanho (em bits) Armazenamento

char 16 1 caracter UNICODE

Tipo Tamanho (em bits) Armazenamento

boolean 1 true ou falseLógico:

Numéricos

Inteiros:

Numéric

os Reais:

Alfanumérico:

Tipo Tamanho (em bits) Domínio

byte 8 -128 .. 127short 16 -32.768 .. 32.767

int 32 -2.147.483.648 .. 2.147.483.647long (literal: L) 64 -2^64 .. 2^64-1

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 45

4.2 OPERADORES EM JAVA

• ATRIBUIÇÃO

– O operador de ATRIBUIÇÃO na linguagem Java é o SINAL DE IGUAL.

– Na ATRIBUIÇÃO a variável à esquerda recebe o valor da expressão à direita

Exemplos:

x = 100;

y = x + 3;

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 46

4.2 OPERADORES EM JAVA

• ARITMÉTICOS

– Os operadores aritméticos permitem a execução de operações sobre as variáveis

Operador Exemplo Comentário++ ++x ou x++ soma 1 em x antes ou depois de usar a variável-- --x ou x-- subtrai 1 em x antes ou depois de usar a variável+ x + y soma o conteúdo de x e y- x - y subtrai o conteúdo de y do conteúdo de x* x * y multiplica x por y/ x / y obtém o quociente de x por y% x % y obtém o resto da divisão de x por y+= x += y equivale a x = x + y-= x -= y equivale a x = x – y*= x *= y equivale a x = x * y/= x /= y equivale a x = x / y%= x %= y equivale a x = x % y

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 47

4.3 OPERADORES RELACIONAIS EM JAVA

• Os operadores RELACIONAIS permitem a comparação entre variáveis

Operador Exemplo Comentário== x == y conteúdo de x é igual ao de y?!= x != y conteúdo de x é diferente de y?<= x <= y conteúdo de x é menor ou igual ao de y?>= x >= y conteúdo de x é maior ou igual ao de y?< x < y conteúdo de x é menor que o de y?> x > y conteúdo de x é maior que o de y?

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 48

4.4 OPERADORES LÓGICOS EM JAVA

• Os operadores LÓGICOS permitem realizar combinações de operações relacionais, juntando diversas decisões em uma única expressão

Operação Operador Comentário

E && compara duas expressões avaliando o resultadocomo verdadeiro ou falso. Será verdadeiro se todasas expressões forem verdadeiras

OU || compara duas expressões avaliando o resultadocomo verdadeiro ou falso. Será verdadeiro se pelomenos uma das expressões forem verdadeiras

NEGAÇÃO ! nega o resultado de uma expressão. Se for falsopassa para verdadeiro. Se for verdadeiro passa parafalso.

E OU NEGAÇÃO

V e V = V V ou V = V NÃO V = F

V e F = F V ou F = V NÃO F = V

F e V = F F ou V = V

F e F = F F ou F = F

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 49

4.5 PALAVRAS RESERVADAS E

IDENTIFICADORES EM JAVA

• PALAVRAS RESERVADAS são todos os nomes pré-existentes na linguagem que tem algum significado.

– EXEMPLOS de palavras reservadas: public, class, int, double, etc.

• IDENTIFICADORES são todos os nomes criados pelo programador. São utilizados para nomear classe, atributos e métodos. Os identificadores não podem ter nomes que sejam palavras reservadas. Devem iniciar por letras.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 50

4.5 PALAVRAS RESERVADAS E

IDENTIFICADORES EM JAVA

• É possível definir um GRUPO DE VARIÁVEIS em uma mesma linha, usando o mesmo qualificador e tipo, separando-os por vírgula (,)

• A definição de uma variável, ou grupo de variáveis, sempre é finalizada com o símbolo PONTO-E-VÍRGULA (;).Exemplos:

private char letra, caracter;

private int x, y = 2, z;

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 51

4.6 TIPOS DE DADOS: CADEIA DE

CARACTERES (CLASSE STRING)

• Uma CADEIA DE CARACTERES em Java é denominada de String.

• Uma String não é um tipo primitivo, mas sim uma CLASSE e, portanto, seu nome é iniciado com uma letra maiúscula.

• O TAMANHO de uma String é limitado à memória disponível.

• Um char é representado entre apóstrofos (Ex: ‘a’), enquanto uma String é representado entre aspas (Ex: “a”).

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 52

4.6 TIPOS DE DADOS: CADEIA DE

CARACTERES (CLASSE STRING)

• A classe String usa o operador + para a concatenação entre strings.

– String nome = “Silva” + “sauro”;

• Principais métodos da classe String:

Método Funcionalidadeboolean equals(String s) comparar dois strings e retornar verdadeiro ou falsobooleanequalsIgnoreCase(String s)

comparar dois strings ignorando maiúscula e minúsculas

int length() retornar o número de caracteres da Stringint indexOf(String s) procurar o string s e retornar a posição onde encontrou. Se

não encontrou retorna -1char charAt(int i) retornar o caractere na posição i da string

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 53

4.6 TIPOS DE DADOS: CADEIA DE

CARACTERES (CLASSE STRING)

• Uma necessidade muito comum dos programadores Java é converter uma String para um tipo primitivo ou vice-versa.

• A tabela a seguir apresenta os principais métodos para conversão:

Método FuncionalidadeInteger.parseInt (String s); String para inteiroDouble.parseDouble (String s) String para real (double)Float.parseFloat (String s) String para real (float)String.valueOf (valor) Qualquer tipo primitivo para String

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 54

5. COMANDOS DE CONTROLE DE FLUXO: REPETIÇÃO - ENQUANTO

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 55

5. COMANDOS DE CONTROLE DE FLUXO:REPETIÇÃO

• As estruturas de CONTROLE DE REPETIÇÃO são utilizadas para repetir um determinado grupo de comandos por diversas vezes.

• As estruturas de REPETIÇÃO também são conhecidas por laços ou loop.

• Se não montadas adequadamente, as estruturas de REPETIÇÃO podem produzir laços infinitos em um programa, ou seja, o programa pode ficar eternamente executando o conjunto de instruções, até que seja retirado da memória de forma forçada.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 56

5. COMANDOS DE CONTROLE DE FLUXO:REPETIÇÃO

• As estruturas de CONTROLE DE REPETIÇÃO mais comuns são (entre parênteses seu nome em Java):

– baseadas em contador: para (for)– baseadas em condição: enquanto (while / do while)

• Quando usar qual?

– para (for): quando se sabe o número de vezes que o laço será executado;

– enquanto (while): quando não se tem certeza sobre o número de vezes que o laço será executado, podendo inclusive nunca ser executado;

– faça-enquanto (do-while): quando não se tem certeza sobre o número de vezes que o laço será executado, mas se sabe que ele tem que ser executado pelo menos uma vez;

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 57

5.1 COMANDOS DE REPETIÇÃO -ENQUANTO (WHILE / DO WHILE)

• As estruturas de repetição condicionais avaliam uma determinada condição lógica para fazer a execução do laço de repetição. A condição sempre será avaliada como verdadeira ou falsa.

• A estrutura condicional mais comum é o enquanto-faça. A estrutura enquanto-faça executa um conjunto de instruções enquanto a expressão lógica for avaliada como verdadeira.

• A condição pode estar no início ou no fim do bloco de execução.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 58

5.2 COMANDOS DE REPETIÇÃO –ENQUANTO (WHILE)

• Sintaxe e exemplo do comando de controle de repetição ENQUANTO com a condição no INÍCIO do bloco:

Em Java

while (expressão-lógica) {

<seqüência-de-comandos>

}

Em Java

int contador = 1;

int potencia = x;

while (potencia <= 100) {

potencia *= x;

contador++;

}

.......

Condição

Início

...........

............Fim

Sim

Não

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 59

5.2 COMANDOS DE REPETIÇÃO - FAÇA

ENQUANTO (DO WHILE)

• Sintaxe e exemplo do comando de controle de repetição ENQUANTO com a condição no FIM do bloco:

Em Java

do {

<sequência-de-comandos>

} while (expressão-lógica);

Em Java

int contador = 1;

int potencia = x;

do {

potencia *= x;

contador++;

} while (potencia <= 100);

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 60

5.2 COMANDOS DE REPETIÇÃO –ENQUANTO (WHILE / DO WHILE)

• IMPORTANTE:

– expressão-lógica: é a expressão avaliada antes de cada repetição do laço. Quando seu resultado for VERDADEIRO, <sequência-de-comandos> é executada

– na expressão lógica podem ser usados os operadores lógicos NAO, E ou OU, como uma estrutura de seleção do tipo se, por exemplo

• Em Java deve-se notar o uso de ponto e vírgula (;) após a expressão lógica APENAS no do-while.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 61

5.3 FURBOT – COMANDOS DE AVALIAÇÃO

DA SITUAÇÃO

• ehVazio (Direcao direcao) : boolean

– Método que verifique se a célula indicada por direção é vazia– Neste caso o furbot retorna um valor verdadeiro (true) – Se está ocupada o furbot retorna um valor falso (false)– O método não indica quem está ocupando aquela posição– Se a célula na direção apontada fica além dos limites do mundo,

o método retorna verdadeiro

• ehFim (Direcao direcao) : boolean

– Método que verifica se a célula na direção passada comoparâmetro fica além do mundo.

– Se ela for além do mundo retorna verdadeiro (true) senãoretorna falso (false)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 62

5.3 FURBOT – COMANDOS DE AVALIAÇÃO

DA SITUAÇÃO

• Direcao

– Indica o caminho a ser testado pelo robô

• DIREITA: refere-se à posição à direita do robô

• ESQUERDA: refere-se à posição à esquerda do robô

• AQUIMESMO: refere-se à posição onde está o robô

• ABAIXO: refere-se à posição abaixo do robô

• ACIMA: refere-se à posição acima do robô

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 63

6. COMANDOS DE CONTROLE DE FLUXO: SELEÇÃO - SE

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 64

6. COMANDOS DE CONTROLE DEFLUXO: SELEÇÃO

• Utilizados para auxiliar e otimizar a construção de programas

• Tipos de estrutura de seleção no Java:

– Simples: se (if)

– Encadeadas: se-senão (if – else)

– Múltipla: escolha (switch case)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 65

6.1 COMANDOS DE SELEÇÃO (SELEÇÃO

SIMPLES)

• Seleção Simples (se)– As estruturas de SELEÇÃO

SIMPLES apresentam uma condição que determina se o bloco de comandos a seguir deve ou não ser executado.

– Ele será executado se a condição for verdadeira.

.......

Condição

Início

............

Fim

SimNão

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 66

6.1 COMANDOS DE SELEÇÃO (SELEÇÃO

SIMPLES)

• Sintaxe e exemplo simplificado para verificar se um aluno está aprovado em uma disciplina

• Em Java, se houver apenas um comando a ser executado dentro da estrutura de controle, as chaves podem ser dispensadas. No caso de mais de um comando, elas são obrigatórias.

Em Java:

if (expressão-lógica) {

[bloco-instrucoes-verdadeiro]

}

Em Java:

if (media >= 6) {

situacao = “Aprovado”;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 67

6.2 COMANDOS DE SELEÇÃO (SELEÇÃO

ENCADEADA)

• Seleção Encadeada (se-então)– As ESTRUTURAS DE SELEÇÃO

ENCADEADAS apresentam alternativas de ação diferentes de acordo com a situação avaliada.

– Se a condição testada for VERDADEIRA é executado um bloco de comandos. Se ela for FALSA, é executado outro bloco de comandos.

.......

Condição

Início

........... ............

Fim

SimNão

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 68

6.2 COMANDOS DE SELEÇÃO (SELEÇÃO

ENCADEADA)

• Sintaxe e exemplo para informar se um aluno está aprovado ou reprovado em uma disciplina:

Em Java:

if (expressão-lógica) {

[bloco-instrucoes-verdadeiro]

} else {

[bloco-instrucoes-falso]

}

Em Java:

if (media >= 6) {

situacao = “Aprovado”;

} else {

situacao = “Reprovado”;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 69

6.3 COMANDOS DE SELEÇÃO (SELEÇÃO

COMPOSTA)

• Seleção Composta

– As ESTRUTURAS DE SELEÇÃO COMPOSTAS apresentam mais de uma condição e podem ser simples ou encadeadas.

– Devem ser utilizadas com os OPERADORES LÓGICOS E ou OU.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 70

6.3 COMANDOS DE SELEÇÃO (SELEÇÃO

COMPOSTA)

• Sintaxe e exemplo usando o E (&& em Java) para verificar se uma pessoa pode nadar em uma piscina:

Em Java:

if (condição1 && condição2) {

[bloco-instrucoes-

verdadeiro]

} else {

[bloco-instrucoes-falso]

}

Em Java:

if (temperatura > 25 && agua

== ‘L’) {

podeNadar = true;

} else {

podeNadar = false;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 71

6.3 COMANDOS DE SELEÇÃO (SELEÇÃO

COMPOSTA)

• Sintaxe e exemplo usando o OU (|| em Java) para verificar se uma pessoa pode pagar meia entrada:

Em Java:

if (condição1 || condição2) {

[bloco-instrucoes-

verdadeiro]

} else {

[bloco-instrucoes-falso]

}

Em Java:

if (idade < 18 || idade >= 60)

{

meiaEntrada = true;

} else {

meiaEntrada = false;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 72

6.4 FURBOT – COMANDOS DE POSIÇÃO

• getX() : int

– Método que retorna um valor inteiro contendo o número da coluna em que está o robô

– A primeira coluna é ZERO

• getY() : int

– Método que retorna um valor inteiro contendo o número da linha em que está o robô

– A primeira linha é ZERO

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 73

6.4 FURBOT – COMANDOS DE

MANIPULAÇÃO DE OBJETOS

• ehObjetoDoMundoTipo (String classe, Direcaodirecao) : boolean

– Método que retorna verdadeiro caso existe um objeto do tipo passado como parâmetro na direção informada

– Ex. ehObjetoDoMundoTipo("Alien", ACIMA)

• getObjeto(Direcao direcao) : ObjetoMundo

– Método que retorna o objeto da célula indicada em direção

– Se não tiver nada nessa célula, ou for além dos limites do mundo, retorna null

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 74

7. COMANDOS DE CONTROLE DE FLUXO: SUB-ROTINAS

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 75

7. COMANDOS DE CONTROLE DE FLUXO:SUB-ROTINAS

• São estruturas de controle em nível de unidade

• São rotinas (pequenos programas) que realizam uma determinada função específica

• Permitem modularizar os programas

• Permitem reutilização de código

• São ativadas por um programa principal ou outros subprogramas, causando um desvio

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 76

7. COMANDOS DE CONTROLE DE FLUXO:SUB-ROTINAS

Subprograma A

Subprograma C

Subprograma B

Programa

Principal

Subprograma D

Subprograma A

Subprograma C

Subprograma B

Programa

Principal

Programa

Principal

Subprograma D

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 77

7.1 MÉTODOS

• Em Orientação a Objetos as sub-rotinas são MÉTODOS das classes

• Tipos de Métodos em Java:

– Pré-definidas na biblioteca de classes da linguagem

– Definidas pelo programador em suas classes

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 78

7.1 MÉTODOS

• Os métodos operam sobre dados. Assim, normalmente os métodos têm valores de Entrada e Saída.

• Os dados de ENTRADA sobre os quais os métodos operam podem ser:

– ATRIBUTOS: são dados que já existem dentro da própria classe;– PARÂMETROS: são dados que não existem na classe, mas que

são necessários para o processamento do método.

• A SAÍDA gerada por um método pode ser:

– ATRIBUTO: neste caso o resultado da execução do método fica armazenado na própria classe;

– RETORNO: neste caso, o método devolve o resultado para quem solicitou, como um resultado de uma função.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 79

7.1 MÉTODOS

• Um método em Java tem:– Nome: define o nome do método

(identificador)– Qualificador: também chamado

de encapsulamento, define a visibilidade do método para outras classes (use public ou private)

– Tipo: define o tipo da informação que terá o resultado da sub-rotina (saída ou retorno)

• métodos sem retorno devem ser definidas como do tipo void;

• o resultado de um método deve ser retornado a partir da cláusula return

– Parâmetros: definem os dados que serão trocados entre o método e a rotina que o ativou (entrada ou saída)

• Sintaxe (definição):

qualificador tipo

identificador [(tipo

parâmetros)];

{

[declarações]

< Bloco >

return

<expressão>;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 80

7.2 PARÂMETROS

• Em uma linguagem de programação os parâmetros são denominados de:

– Formais (Declaração)– Atuais ou Reais (Ativação)

• PARÂMETROS FORMAIS: devem ter a definição do tipo antes do nome da variável.

• PARÂMETROS ATUAIS ou REAIS: não devem ter a definição do tipo antes do nome da variável.

• TRANSFERÊNCIA DE PARÂMETROS

– Número de Parâmetros Formais = Número de Parâmetros Atuais/Reais.

– O Argumento Formal e seu correspondente Argumento Atual devem ser do mesmo tipo.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 81

7.2 PARÂMETROS

• PASSAGEM DE PARÂMETRO POR VALOR:

– Na passagem de parâmetro por valor, o parâmetro formal recebe o conteúdo do parâmetro atual.

– Exemplo:int troca (int a, int b)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 82

7.2 PARÂMETROS

• PASSAGEM DE PARÂMETRO POR REFERÊNCIA:

– Na passagem de parâmetro por referência, o parâmetro formal e o parâmetro atual tem o mesmo endereço de memória.

– Ao alterar a variável relacionada ao parâmetro formal, a variável do parâmetro atual também é alterada

– Não podem ser utilizadas expressões como parâmetros atuais na ativação (chamada) da sub-rotina.

– No Java a passagem de parâmetros por referência é feita através do uso de classes como tipo

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 83

7.3 CHAMADAS

• Os métodos podem ser ativados em atribuições, condições ou em parâmetros de outros métodos.

• A chamada de um método deve seguir a sintaxe de ativação

• Sintaxe (ativação):

variavel = metodo(parâmetros);

ouSystem.out.println(“formato” + metodo (parâmetros));

ouif (metodo(parâmetros))

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 84

7.4 EXEMPLOS DE MÉTODOS DO FURBOT

• Alguns métodos utilizados do FURBOT:andarDireita();

andarEsquerda();

Como são métodos que apenas realizam uma ação e não retornam informação, são métodos com tipo de retorno void.

ehObjetoDoMundoTipo(“Classe”,DIRECAO):boolean

ehVazio(DIRECAO):boolean

São métodos que retornam um valor boolean que normalmente é utilizado para comparação em um comando if. Esses métodos também possuem parâmetros

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 85

8. ATRIBUTOS

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 86

8. ATRIBUTOS

• Propriedade ou característica de uma classe que descreve umintervalo de valores que os objetos podem representar;

• Descrevem o estado de um objeto;

• Normalmente é descrito por um substantivo;

• Possui um tipo de dado;

• Os atributos são declarados dentro da classe, porém fora dosmétodos;

• O atributo pode ser acessado por qualquer método da classe, logo,se um método precisa da informação que está contida no atributo,pode utilizá-la diretamente sem a necessidade do parâmetro.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 87

8. ATRIBUTOS

Calculadora Furbot

Numero1

Numero2 quantLinhas

colunaAtual

contAlien

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 88

8. ATRIBUTOS

• Um atributo em Java tem:– Nome: define o nome do

atributo (identificador)

– Qualificador: também chamado de encapsulamento, define a visibilidade do método para outras classes (normalmente private)

– Tipo: define o tipo da informação que ele armazena

• Sintaxe (definição):

qualificador tipo nome;

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 89

8. EXEMPLOS

public class Exe01 extends Furbot {

private int numero1;

private String nome;

private float resultado;

public static void main(String args[]) {

....

}

public void inteligencia(){

....

}

}

Os atributos são declarados dentro da classe e são visíveis em qualquerparte da classe, independente do tipo de método.

Atributos

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 90

9. COMANDOS DE CONTROLE DE FLUXO: SELEÇÃO - ESCOLHA

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 91

9. COMANDOS DE SELEÇÃO (SELEÇÃO

MÚLTIPLA)

• As estruturas de SELEÇÃO MÚLTIPLA permitem avaliar uma entre diversas alternativas

Escolha o temposol : vou à praiachuva : fico em casa

Fim escolha

Escolha a corverde : tenho esperançavermelho : estou apaixonado

azul : está tudo tranquiloFim escolha

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 92

9. COMANDOS DE SELEÇÃO (SELEÇÃO

MÚLTIPLA)

• Sintaxe e exemplo simplificado de um algoritmo para contar o número de pessoas de cada sexo:

Em Português Estruturado:

escolha <expressão-de-seleção>

opção 1 : <seqüência-de-comandos-1>

opção 2 : <seqüência-de-comandos-2>

.

senão

<seqüência-de-comandos-extra>

Em Português Estruturado:

escolha sexo

‘F’ : contF = contF + 1

‘M’ : contM = contM + 1

senão

contI = contI + 1

Em Java:

switch (<expressão>) {

case 1 : [bloco-de-comandos-1]

break;

case 2 : [bloco-de-comandos-2]

break;

.

default : [bloco-de-comandos-default]

}

Em Java:

switch (sexo) {

case ‘F’ : contF++;

break;

case ‘M’ : contM++;

break;

default : contI++;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 93

9. COMANDOS DE SELEÇÃO (SELEÇÃO

MÚLTIPLA)

• Em Java a EXPRESSÃO pode ter como resultado um valor NUMÉRICO INTEIRO, CARACTERE, ENUMERAÇÃO ou STRING.

• Em Java a opção senão é denominada de defaulte é opcional.

• O break é utilizado para finalizar o switch e deve ser usado em cada condição.

• Não é possível usar intervalos de valores em java(ex. 1 a 5)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 94

10. CRIAÇÃO DE OBJETOS

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 95

10. CRIAÇÃO DE OBJETOS

• O FURBOT permite a criação de objetos que podem ser inseridos em qualquer local do mapa

• Para serem inseridos os objetos precisam ser criados usando o método new()

• O método new() cria um endereço de memória (handle) para o objeto e permite que o mesmo possa receber e informar valores e proceder cálculos ou operações

• O endereço de memória alocado para o objeto deve ser armazenado em uma variável do tipo da classe do objeto que se deseja criar

• Sintaxe:Nome_Classe nome_objeto = new Nome_Classe();

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 96

10. CRIAÇÃO DE OBJETOS

• Exemplos:

– Para criar um numeroNumero numero = new Numero();

– Para criar um booleanoBooleano logico = new Booleano();

– Para criar um alienAlien alien = new Alien();

– Para criar um tesouroTesouro tesouro = new Tesouro();

– Para criar uma paredeParede parede = new Parede();

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 97

10. CRIAÇÃO DE OBJETOS

• Ao criar os objetos Numero, Booleano e Tesouro é necessário definir o seu conteúdo utilizando o método setValor()

• Exemplos:

– Para criar e definir o valor de um numeroNumero numero = new Numero();

numero.setValor (10);

– Para criar e definir o valor de um booleanoBooleano logico = new Booleano();

logico.setValor (true);

– Para criar um tesouroTesouro tesouro = new Tesouro();

tesouro.setValor (50);

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 98

10. CRIAÇÃO DE OBJETOS

• Para adicionar ou remover objetos do mundo podem ser utilizados os métodos:

– adicionarObjetoNoMundo (ObjetoDoMundo objeto, Direcao direcao) : void

• adiciona um objeto no mundo na posição relativa à direção informada.

– adicionarObjetoNoMundoXY(ObjetoDoMundo objeto, int X, int Y):

• adiciona um objeto no mundo na coordenada x,y.

– removerObjetoDoMundo(ObjetoDoMundo objeto) : • remove um objeto do mundo passado como parâmetro

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 99

10. CRIAÇÃO DE OBJETOS

• Exemplos:

– Para criar, definir e adicionar um numeroNumero numero = new Numero();

numero.setValor (10);

adicionarObjetoNoMundo (numero,

AQUIMESMO);

– Para criar e adicionar um AlienAlien alien = new Alien();

adicionarObjetoNoMundoXY (alien, 0, 0);

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 100

11. COMANDOS DE CONTROLE DE FLUXO: REPETIÇÃO – PARA FAÇA

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 101

11. COMANDOS DE REPETIÇÃO - PARA

FAÇA (FOR)

• As estruturas de repetição com contador permitem a execução de um grupo de comandos num determinado número conhecido de vezes.

• Exemplos:

Para 5 bombons faça

coma o bombom

Fim para

Para 40 alunos faça

calcule a média do aluno

Fim para

Para n valores faça

some o valor

Fim para

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 102

11. COMANDOS DE REPETIÇÃO - PARA

FAÇA (FOR)

• Sintaxe e exemplo para calcular a potência de um número x elevado a 5:

• Em Java as expressões podem ser:

– numéricas (real ou inteira) - ex: for (double x = 10; x > 1; x -= 0.5)– caractere - ex: for (char x = 'a'; x <= 'z'; x++).

Em Português Estruturado

para contador de inicio a

fim faça

bloco de comandos

fim para

Em Java

for (expressão 1; expressão 2;

expressão 3) {

[bloco de comandos};

}

Em Português Estruturado

potencia = 1

para contador de 1 a 5 faça

potencia = potencia * x

fim para

Em Java

int potencia = 1;

for (int contador = 1; contador <=

5; contador++) {

potencia *= x;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 103

11. COMANDOS DE REPETIÇÃO - PARA

FAÇA (FOR)

• IMPORTANTE:

– expressão 1: é a expressão que define o valor de inicialização de uma variável de controle. Esta expressão é uma instrução de atribuição executada uma única vez antes de o laço ser iniciado

– expressão 2: é a expressão que define a condição de teste da variável de controle. Ela é avaliada como verdadeira ou falsa no início de cada execução do laço. Se a expressão for verdadeira, o bloco de comandos do laço é executado. Se for falsa, o laço é encerrado e o controle passa para a instrução seguinte. Normalmente usa os operadores relacionais: >, <, >=, <=

– expressão 3: é a expressão que define a forma de atualização da variável de controle a cada vez que o laço for repetido. Ela é executada ao final de cada repetição do laço. A atualização pode ser feita de forma crescente ou decrescente e em qualquer valor.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 104

12. TIPOS DE DADOS TEXTO (CHAR E STRING)

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 105

12.1 CHAR

• O tipo de dado char é um tipo primitivo e permite armazenar um único caractere;

• O valor inicial de um char, por default, no Java é ‘\0’.Em Português Estruturado

Na declaração

caractere nome;

Em Java

Na declaração

private char nome;

char nome = 'L';

Em Português Estruturado

Comparação

se nome = 'a' então

Atribuição

nome <- 'a';

Em Java

Comparação

if (nome == 'a')

Atribuição

nome = 'a';

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 106

12.2 STRING

• O tipo de dado String é uma classe do Java e permite armazenar caracteres alfa-numéricos;

• O valor inicial de uma String é null.Em Português Estruturado

Na declaração

texto nome;

Em Java

Na declaração

private String nome;

String nome = "Texto inicial";

Em Português Estruturado

Comparação

se nome = "a" então

Atribuição

nome <- "a";

Em Java

Comparação

if (nome.equals("valor")

Atribuição

nome = "valor";

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 107

12.2 STRING

• Por ser uma classe do Java, o tipo String possui alguns métodos para manipulação de seus dados, sendo alguns deles:

Método Significado

equals(String): boolean Compara se o texto da String é exatamente igual ao texto do parâmetro

equalsIgnoreCase(String): boolean Compara se o texto da String é igual ao do parâmetro sem diferenciar maiúsculas de minúsculas

charAt(int): char Retorna o caractere da posição indicada no parâmetro

indexOf(char): int Retorna a posição (número) da primeira ocorrência do caractere passado como parâmetro

length(): int Retorna o tamanho da String

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 108

12.2 STRING

Método Significado

split(String): String[] Retorna um vetor de String contendo as partes de uma String maior com base no texto divisor passado no parâmetro

toLowerCase(): String Retorna uma String com todos os caracteres minúsculos

toUpperCase(): String Retorna uma String com todos os caracteres maiúsculos

substring(int, int): String Retorna uma parte da String com base nos índices inicial e final passados como parâmetro

replace(String, String): String Retorna um String substituindo todas as ocorrências de uma String antiga pela nova

trim(): String Retorna uma String removendo os espaçosem branco das bordas externas

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 109

13. TIPOS ESTRUTURADOS

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 110

13. TIPOS ESTRUTURADOS

• Os problemas computacionais muitas vezes exigem o armazenamento de grande quantidade de dados em memória para posterior processamento.

• Exemplo 1: dado o nome de 50 pessoas, escrever estes dados em ordem alfabética.

– Problema: neste caso criaríamos uma variável para cada nome? E se fossem 1000 nomes?

• Exemplo 2: uma loja registrou em um dia a quantidade vendida de cada um de seus 200 produtos. Informe o código dos produtos que tiveram vendas acima da média.

– Problema: neste caso criaríamos 200 variáveis, uma para cada produto?

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 111

13. TIPOS ESTRUTURADOS

• Exemplo 3: a loja do exemplo 2 quer fazer um controle mensal de suas vendas. Para isto ela mantém os dados de cada um de seus produtos vendidos em cada dia do mês.

– Problema: quantas variáveis teríamos que criar neste caso?

• Exemplo 4: uma pessoa quer ir de uma cidade A até uma cidade F. Considerando que há vários caminhos possíveis e que são registradas as distâncias intermediárias entre as cidades (ex. de A a B, de B a C, de B a D, etc.) informe o caminho que tem a menor distância entre A e F.

– Problema: neste caso quantos caminhos vamos armazenar? Como vamos totalizar parcialmente as distâncias de cada caminho?

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 112

13. TIPOS ESTRUTURADOS

• Para a solução destes exemplos é necessário o uso de estruturas de dados.

• As estruturas de dados ampliam o conceito de variáveis, pois permitem armazenar diversas informações a partir da definição de uma única variável.

• Existem diversos tipos de estruturas de dados, tais como, vetores, matrizes, listas, filas, pilhas, árvores, arquivos, entre outras.

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 113

13.1 TIPOS ESTRUTURADOS

UNIDIMENSIONAIS (VETORES)

• Os Tipos Estruturados Unidimensionais permitem armazenar diversos dados de um mesmo tipo (homogêneos) em uma única variável.

• Os Tipos Estruturados Unidimensionais também são conhecidos como Vetores

• Cada dado armazenado é identificada por um índice, que é a posição em que o mesmo se encontra dentro da estrutura

• O índice define a posição do elemento no vetor• As aplicações mais comuns dos tipos estruturados são:

– armazenamento parcial de dados– pesquisa/busca de informações– ordenação

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 114

13.1 TIPOS ESTRUTURADOS

UNIDIMENSIONAIS (VETORES)

• A representação mais comum para um Vetor é uma tabela indexada, conforme o exemplo a seguir:

• No exemplo foi definida uma tabela de 10 valores, ou seja, nesta estrutura podem ser armazenados até 10 valores de um determinado tipo de dado

• As informações em um vetor são identificadas por um índice que normalmente é dado entre colchetes []

0 1 2 3 4 5 6 7 8 9

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 115

13.1 TIPOS ESTRUTURADOS

UNIDIMENSIONAIS (VETORES)

• Exemplos de Vetores em Computador:

– Vetor de números reais (tamanho: 15)

• nesse vetor a posição [6] armazena 8.5

– Vetor de nomes (tamanho: 10)

• nesse vetor o elemento da posição [2] é “Maria”;

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

5.77 18.59 32.5 0.87 56.7 33.3 8.5 7.0 10.5 6.2 17.8 1.5 5.32 99.7 0.01

0 1 2 3 4 5 6 7 8 9

João Pedro Maria José Darci Chico Elvira Eulália Manoel Betânia

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 116

13.1 TIPOS ESTRUTURADOS

UNIDIMENSIONAIS (VETORES)

• Exemplos de Vetores em Computador:

– Vetor de números inteiros (tamanho: 18)

• nesse vetor o elemento da posição [14] é 2

– Vetor de caracteres (tamanho: 12)

– nesse vetor a posição [10] armazena ‘R’;

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

20 89 132 45 666 58 3 47 99 125 255 23 139 47 2 13 931 409

0 1 2 3 4 5 6 7 8 9 10 11

Q @ Y O [ 7 D > J M R =

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 117

13.1 TIPOS ESTRUTURADOS

UNIDIMENSIONAIS (VETORES)

• Sintaxe e exemplo do uso de Tipos Estruturados Unidimensionais (Vetores):

Em Português Estruturado

Na declaração

tipo identificador [tamanho]

No corpo do programa

identificador[indice]

Em Java

Na declaração

tipo <identificador>[] = new

tipo[tamanho];

No corpo do programa

<identificador>[indice]

Em Português Estruturado

inteiro numeros [15]

para cont de 1 a 15 faça

numeros[cont] = cont

fim para

Em Java

int numeros[] = new int[15];

for (cont=0; cont<15; cont++) {

numeros[cont] = cont;

}

Universidade Regional de Blumenau - Introdução a Programação - Elaborado por: Maurício Capobianco Lopes e Luciana Pereira Araújo - 118

13.1 TIPOS ESTRUTURADOS

UNIDIMENSIONAIS (VETORES)

• TAMANHO: define o número de elementos do vetor.

• ÍNDICE: define a posição do elemento no vetor. Pode ser definido através de valores constantes, variáveis ou expressões.

• Em Java o índice inicial está sempre na posição 0 (zero).