Você está na página 1de 71

Lgica de Programao Visual

Prof. Morgana Wagner

Apresentao da Disciplina
A disciplina introduz o estudo da programao, destacando a construo de algoritmos. Abrange os conceitos fundamentais da programao at o uso de estruturas bsicas de dados (vetores, matrizes e registros). Ter domnio da lgica da programao e implement-la no computador usando a linguagem Java com Orientao a Objetos. Nesta disciplina o aluno aprende a compreender como o crebro do computador pensa.

O que Lgica?
Palavra originada do grego logos, que significa linguagem Racional. a analise das forma e leis do pensamento, no se preocupa com a produo e sim com a forma.

Exercitando a lgica
Resta 1: http://www.hyperjogos.com/games/resta-1/ http://gratisjogos.uol.com.br/jogosgratis/estra tegia/resta1/resta1.php http://www.gamesz.com.br/games/raciocinio/ resta-1/

Exercitando a lgica
Canibais: http://www.mdig.com.br/index.php?itemid=76 5

O que Lgica de Programao?


Na construo de um software, por meio de raciocnio lgico que o homem constri algoritmos que se tornam programas de computador. Define a seqncia lgica para o desenvolvimento de softwares. a tcnica de encadear pensamentos para atingir determinado objetivo.
Algoritmo - Seqncia de passos ordenados para realizao de uma tarefa.

Raciocnio Lgico
Exemplo de Deduo: Gerson um Cientista. Todo Cientista Estudioso. Logo, Gerson Estudioso. O raciocnio Lgico nos conduz a somente duas respostas: Verdadeiro ou Falso.

Fases
Vimos que ALGORITMO uma seqncia lgica de instrues que podem ser executadas. importante ressaltar que qualquer tarefa que siga determinado padro pode ser descrita por um algoritmo.

Fases
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais: ENTRADA: So os dados de entrada do algoritmo PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final SADA: So os dados j processados

Hardware x Software
Os computadores armazenam informaes, fazem clculos, mas no so capazes de tomar decises sozinhos. Ns que orientamos o computador a realizar cada passo, seja voc mesmo, teclando e usando o mouse, ou, num nvel mais baixo, o programador que escreveu os programas que voc est usando.

Hardware x Software
Chegamos ento aos softwares, gigantescas cadeias de instrues . a que entra o sistema operacional e, depois dele, os programas que usamos no dia-a-dia. Embora as duas coisas sejam igualmente importantes, existe uma distino entre o "hardware", que inclui todos os componentes fsicos, como o processador, memria, placa-me, etc, e o "software", que inclui o sistema operacional, os programas e todas as informaes armazenadas. "hardware o que voc chuta, e software o que voc xinga".

Java
Caractersticas OO Implementao Hbrida Portvel Robusta Segura

Orientao a Objetos
Segue o conceito de classes: Atributos + Mtodos = Classes

Mtodos de Implementao

Compilao Interpretao Implementao hbrida

Compilao
Programas so traduzidos para linguagem de mquina e so executados diretamente no computador Envolve dois processos distintos: Traduo (compilao) Execuo A execuo iniciada depois que a traduo concluda A execuo no tem acesso ao programa fonte
Programa Fonte -> Traduo -> Programa Objeto

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

Implementao Hbrida
Mescla compilao com interpretao Programas fonte so traduzidos para uma linguagem intermediria que interpretada Tem maior portabilidade que uma linguagem compilada So mais rpidas que uma linguagem interpretada instrues intermedirias so projetadas para serem interpretadas facilmente

Java

Portvel, Robusta, Segura?

Blue J
Entre as caractersticas bsicas do BlueJ esto: Editor de Texto - possibilita escrever cdigo com um salientador de sintaxe e capacidade para compilar o arquivo; Class Browser - possibilita visualizar uma representao grfica das classes contidas em um projeto; Console Terminal - possibilita a execuo de mtodos que escrevem strings na tela, ou lem do teclado; Debugger - possibilita um monitoramento mais elegante do funcionamento de um programa, facilitando a deteco e remoo dos erros "lgicos"; Object Inspector - possibilita ver interativamente o contedo dos atributos dos objetos.

Blue J

Blue J
Indicador de Trabalho - indica quando a mquina virtual est executando; Bancada de objetos - local onde ficam todos os objetos criados, sobre os quais podemos chamar mtodos interativamente apenas com um clique de mouse.

Operadores Aritmticos
Soma + . Subtrao - . Multiplicao * . Diviso / . Resto da Diviso % .

Operadores de Atribuio
'+=' : op1 += op2 op1 = op1 + op2 '-=' : op1 -= op2 op1 = op1 - op2 '*=' : op1 *= op2 op1 = op1 * op2 '/=' : op1 /= op2 op1 = op1 / op2 '%=' : op1 %= op2 op1 = op1 % op2

Operadores de incremento ou decremento


So os operadores que nos permitem incrementar as variveis em uma unidade. Podem ser usados diante ou atrs da varivel dependendo do que quisermos, ou seja, se quisermos que se incremente ou vice-versa antes de utilizar ou o contrrio. '++' '--'

Operadores de Comparao
Permitem comparar variveis segundo a relao de igualdade/desigualdade o relao maior/menor. Devolvem sempre um valor booleano. '>': Maior que '<': Menor que '==': Iguais '=': Diferentes '>=': Maior ou igual que '<=': Menor ou igual que

Operao de concatenao
Operador de concatenao com cadeia de caracteres '+': Por Exemplo: System.out.println("O total "+ result +"unidades");

Classe Math
Vimos anteriormente como tratar nmeros de vrios tipos. Veremos agora, como aplicar conceitos matemticos mais complexos a nossos processamentos usando a classe Math do pacote Java.lang. A classe Math nos proporciona uma srie de operaes e constantes matemticas que so facilmente acessadas estaticamente, ou seja, no precisamos instanciar um objeto para podermos usar seus mtodos.

Constantes
A classe Math possui duas constantes que so o (pi) e E (base de logaritmos naturais ou neperianos) cada uma com o valor de 3,141592653589793 e 2.718281828459045, respectivamente. Abaixo est um exemplo simples, com o clculo do comprimento do crculo: 1.public class ComprimentoCirculo { 2. public static void main(String[] args) { 3. float raio = 2.4f; 4. double comprimento = 2 * raio * Math.PI; 5. System.out.println(comprimento); 6. } 7.}

Mximo e Mnimo
Como o ttulo j sugere, a classe Math de Java possui dois mtodos que retornam o maior e o menor valor de seus argumentos. Esses mtodos so max() e min();

Potncias e razes
Podemos fazer clculos de potncia e razes: pow (base, expoente) - calcula a potncia da base elevada ao expoente. sqrt (nmero) - calcula a raz quadrada de um nmero cbrt (nmero) - calcula a raiz cbica de um nmero exp (expoente) - calcula o valor da constante de Euler (E) elevado ao expoente

Potncias e razes
1.public class PotenciasRaizes { 2. public static void main(String[] args) { 3. System.out.println("1 MB tem " + Math.pow(2, 10) + " KB"); 4. System.out.println("A raiz quadrada de 121 " + Math.sqrt(121) 5. + " e a raiz cbica de 1331 tambm " + Math.cbrt(1331)); 6. } 7.}

Logaritmo
Na classe Math encontramos funes para clculo de logaritmo natural, na base de 10 e a soma do nmero mais 1. Tais mtodos so: log (nmero) - logaritmo natural de um nmero. log10 (nmero) - logaritmo natural de um nmero na base 10 log1p (nmero) - logaritmo natual de um nmero somado a 1. Esse mtodo retorna um resultado mais confivel se o nmero em questo for muito prximo a 0 ou um nmero fracionado. Ou seja, o resultado no o mesmo entre os mtodos log1p (0.1f) e log (1+0.1f).

Logaritmo
1.public class Exemplo { 2. public static void main(String[] args) { 3. float nr = 0.1f; 4. System.out.println("Resultado 1: " + Math.log(nr+1)); 5. System.out.println("Resultado 2: " + Math.log1p(nr)); 6. } 7.}

Arredondamentos e Valores Absolutos


abs (nmero) - retorna o valor absoluto do mesmo tipo do parmetro (ex.: inteiro retorna int positivo, decimal retorna float positivo, etc) ceil (decimal) - este mtodo retorna o valor decimal do parmetro sem a parte fracionada. Ex.: 2.1 ser 2, 6.0 ser 6, 10.8 ser 10... floor (decimal) - este mtodo retorna o primeiro inteiro aps o valor decimal. Ex.: 2.1 ser 3, 6.0 ser 6, 10.8 ser 11... rint (decimal) - retorna um valor double mais prximo do valor do parmetro. round (decimal) - retorna o arredondamento aritmtico do nmero decimal passado como parmetro

Arredondamentos e Valores Absolutos


01.public class Exemplo { 02. public static void main(String[] args) { 03. float nr = -5.75f; 04. System.out.println("Absoluto: " + Math.abs(nr) + 05. "\nInteiro mais baixo: " + Math.ceil(nr) + 06. "\nInteiro mais alto: " + Math.floor(nr) + 07. "\nDouble mais prximo: " + Math.rint(nr) + 08. "\nArredondamento: " + Math.round(nr)); 09. } 10.}

Trigonometria
sin (graus) - este mtodo retorna o valor do seno de acordo com o nmero de graus passado como parmetro. cos (graus) - este mtodo retorna o valor do coseno de acordo com o nmero de graus passado como parmetro. tan (graus) - este mtodo retorna o valor da tangente de acordo com o nmero de graus passado como parmetro. asin (graus) - este mtodo retorna o valor do arco seno de acordo com o nmero de graus passado como parmetro. acos (graus) - este mtodo retorna o valor do arco coseno de acordo com o nmero de graus passado como parmetro. atan (graus) - este mtodo retorna o valor do arco tangente de acordo com o nmero de graus passado como parmetro. sinh (graus) - este mtodo retorna o valor hiperblico do seno de acordo com o nmero de graus passado como parmetro. cosh (graus) - este mtodo retorna o valor hiperblico do coseno de acordo com o nmero de graus passado como parmetro. tanh (graus) - este mtodo retorna o valor hiperblico da tangente de acordo com o nmero de graus passado como parmetro. hypot (x , y) - retorna o valor da hipotenusa, ou, basicamente, a distncia entre dois pontos fundamentada na frmula x+y [sqrt (pow(x, 2) + pow(y,2))]. toRadians (graus) - retorna um valor aproximado de radianos de acordo com o ngulo medido em graus. toDegrees (raio) - retorna um valor aproximado de graus de acordo com o ngulo medido em raios.

Trigonometria
01.public class Hipotenusa { 02. public static void main(String[] args) { 03. double ponto1 = 30; 04. double ponto2 = 40; 05. System.out.println("A distancia entre o " 06. + ponto1 + " e o " + ponto2 + " " 07. + Math.hypot(ponto1, ponto2)); 08. } 09.}

Nmeros Randmicos
Os nmeros randmicos so obtidos usando o mtodo random(). O mtodo random() retorna um valor double em 0.0 e 1.0. Para conseguirmos um valor limite ou um alcance (comumente chamado de range) delimitado, devemos fazer pequenas operaes matemticas. Essas operaes so simples e podem ser resumidas da seguinte maneira. O limite inferior, ou valor inicial (start value) ser sempre somado ao nmero randmico. O limite superior, ou alcance (range) ser sempre o limite superior subtrado o limite inferior e depois multiplicado ao nmero randmico.

Nmeros Randmicos
01.public class Exemplo { 02. public static void main(String[] args) { 03. int limiteInferior = 5; 04. int limiteSuperior = 10; 05. int alcance = limiteSuperior - limiteInferior; 06. double nrRandomico = Math.random(); 07. System.out.println("O nmero randmico escolhido entre 5 e 10 foi " 08. + Math.round(limiteInferior + nrRandomico * alcance)); 09. } 10.}

Classe Scanner
Podemos ler entrada do usurio em aplicaes console usando a classe Scanner do JDK 5.0 e recentes. Para ler strings use o mtodo nextLine, para ler inteiros use nextInt e assim por diante. Veja um exemplo: import java.util.*; public class Estudos{ public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.print("Qual o seu nome? "); String nome = in.nextLine(); System.out.print("Qual sua idade? "); int idade = in.nextInt(); System.out.println("Ol, " + nome + ". Voc tem " + idade + " anos."); } }

Reviso
Mtodos; Classes e objetos; Criao e uso de objetos Variveis e mtodos de instncia e de classe. Construtores. Referncia this.

Mtodos
Estrutura de um mtodo; Chamadas a mtodos; Regras aplicadas aos mtodos; Sobrecarga de mtodos;

Estrutura de um mtodo
Um mtodo de uma classe tem a seguinte estrutura genrica:
<visibilidade> <static> <tipo_retorno> <nome_metodo> (<parmetros>) { //corpo ou escopo do mtodo. Fica entre chaves { }. }

<visibilidade> - public, private, <package>, protected; <static> - com a palavra static ou sem ela; <tipo_retorno> - void, tipo primitivo ou classe; <nome_mtodo> - valem as convenes; <parmetros> - devem ser do mesmo tipo que os argumentos enviados.

//Mtodo com retorno de valores public class AvaliaRandomico { public static void main(String args[]){ while (i<=intIteracoes) { a = intSorteado(inic,fin); switch (a){ case 1: i1++;break; case 2: i2++;break; ... } i++; } System.out.println (intIteracoes + ..... ..... + .... intPonto); System.out.println ("i1 - " + i1 + " \t" + strBarra(i1)); System.out.println ("i2 - " + i2 + " \t" + strBarra(i2));... } public static int intSorteado (int a, int b){ return ((int) (Math.random()*(b-a+1)) + a); } public static String strBarra(int a){ String strResult = ""; for (i = 0;i<=a;i+=intPonto){ strResult += "."; } return strResult; } }

Chamadas a Mtodos
Dentro da definio da classe nomeDoMetodo( ) Chamados automaticamente main( ), init( ), paint( ) Mtodos de classe Integer.parseInt( ), Math.random( )

Regras aplicadas aos mtodos


Mtodos retornam no mximo um valor; Se <tipo_retorno> no for void, o corpo do mtodo tem que ter um return; um erro de sintaxe passar os argumentos com tipos diferentes dos parmetros recebidos; Um mtodo no pode ser definido dentro de outro mtodo; Mtodos devem ter sua funo bem definida para promover a reutilizao de cdigo.

Classe e Objeto
Classe uma descrio de alguma coisa existente no domnio do problema. usada na criao de mltiplos objetos. Engloba dados e comportamento de um objeto. Objeto (Instncia de classe) uma entidade relevante ao domnio do problema. So dinmicos.

Operador new
O operador new cria um objeto da classe colocada sua direita e retorna uma referncia. Sintaxe:
Empregado emp;//Declarao da varivel emp do tipo Empregado emp = new Empregado();//A referncia atribuda a emp

Ou
Empregado emp = new Empregado();//2 passos numa nica linha

Uso de objetos
Uma vez criado o objeto, podemos usar suas propriedades (atributos) e mtodos atravs de sua referncia:

... emp.defineIdade(22); ... emp.idade = 66; emp.nome = Fernando Henrique; ...

Modificadores
Um modificador de acesso determina como ser a visibilidade de uma classe/ mtodo/ atributo a partir de outras classes. Existem vrios modificadores de acesso em Java. Modificadores de Acesso: public, protected, private; Modificadores de No Acesso: final e abstract;

Modificadores
public: O modificador public faz com que a classe/mtodo/atributo seja acessada por qualquer classe independente de estarem ou no no mesmo pacote. private: restringe o acesso do classe/mtodo/atributo somente classe que o definiu. protected: permite que um mtodo de uma classe A possa ser acessado por uma classe B, desde que a classe B estenda da classe A.. abstract: Um mtodo abstrato no implementa nenhuma funcionalidade, somente assina o mtodo e faz com que a primeira subclasse concreta seja obrigada a implementar o mtodo. Uma classe que possua um mtodo abstrato deve obrigatoriamente ser abstrata!

Modificadores
static: Um mtodo/atributo esttico define que esse pode ser executado sem que exista uma instncia da classe - um objeto. final - Aplicado a classes, mtodos e atributos. Mtodos: No podem ser sobrescritos

Construtores
So mtodos especiais que as classes possuem e que servem para inicializar seus objetos, alocando a memria de que eles precisaro. Devem obrigatoriamente ter o mesmo nome que a classe a qual pertencem e no possuem tipo de retorno.

Construtores
//Classe com dois construtores public class Empregado{ //Construtor padro. Neste caso deve existir //obrigatoriamente para no gerar um erro public Empregado() { } //Construtor para quando a classe receber um inteiro e //um String. public Empregado(int valor1, String valor2) { idade = valor1; nome = valor2; } ... }

Referncia this
Se refere ao objeto atual sobre o qual o mtodo foi chamado.

Obrigatrio quando:
o nome da varivel igual ao nome de um argumento formal passado pelo mtodo de instncia; for necessrio passar uma referncia ao objeto atual como parmetro para outro mtodo.

Exemplos de uso da referncia this


int idade; String nome; ... public Empregado(int idade, String nome) { this.idade = idade; this.nome = nome; } ... int idade; String nome; ... public Empregado(int idade, String nome) { this.idade = idade; this.nome = nome; } ...

Encapsulamento
A idia de encapsular esconder todos os membros de uma classe. utilizado para restringir o acesso as declaraes de uma classe e a prpria classe. Manter dentro da classe seus mtodos e propriedades. Em Java, a visibilidade padro de classes, atributos e mtodos est restrita a todos os membros que fazem parte de um mesmo pacote. Atravs dos modificadores de visibilidade temos como obter o encapsulamento.

Mtodos Set e Get


Utilizados para atribuir ou retornar os valores dos atributos da classe. Garante o formato de retorno e valida valores inseridos. Get, um mtodo que foi feito s com o intuito de retornar um valor de um atributo privado. Set, que nada mais que um mtodo com o intuito de alterar o valor de nosso atributo privado.

Mtodo toString()
As classes podem reescrever esse mtodo para mostrar uma mensagem, uma String, que o represente. Conta c = new Conta(); System.out.println(c.toString()); O mtodo toString retorna o nome da classe @ um nmero de identidade: Conta@34f5d74a Mas isso no interessante para ns. Ento podemos reescrev-lo:

Mtodo toString()
class Conta { private double saldo; // outros atributos... public Conta(double saldo) { this.saldo = saldo; } public String toString() { return "Uma conta com valor: " + this.saldo; } } Chamando o toString: Conta c = new Conta(100); System.out.println(c.toString()); //imprime: Uma conta com valor: 100.

Reviso if - else
A sintaxe do if no Java a seguinte: if (condicaoBooleana) { codigo; } Uma condio booleana qualquer expresso que retorne true ou false. Para isso, voc pode usar os operadores <, >, <=, >= e outros. Um exemplo: int idade = 15; if (idade < 18) { System.out.println("No pode entrar"); }

Reviso if - else
Alm disso, voc pode usar a clusula else para indicar o comportamento que deve ser executado no caso da expresso booleana ser falsa: int idade = 15; if (idade < 18) { System.out.println("No pode entrar"); } else { System.out.println("Pode entrar"); }

Reviso if - else
Voc pode concatenar expresses booleanas atravs dos operadores lgicos E e OU. O E representado pelo && e o OU representado pelo ||.

ArrayList add()
import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conter inteiros ArrayList<Integer> valores = new ArrayList<Integer>(); // adiciona itens na lista valores.add(34); valores.add(12); valores.add(8); valores.add(23); // exibe os valores da lista for(int i = 0; i < valores.size(); i++) System.out.println(valores.get(i)); } }

ArrayList remove()
/* Este exemplo mostra como remover a primeira ocorrncia de um elemento na ArrayList. Se o elemento no for encontrado, o retorno ser false. */ import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conter strings ArrayList<String> nomes = new ArrayList<String>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); nomes.add("Maria"); // Vamos remover o elemento "Osmar if(nomes.remove("Osmar")) System.out.println("O elemento foi removido com sucesso!"); else System.out.println("O elemento no foi encontrado!"); } }

ArrayList getindex()
/* Este exemplo mostra como usar o mtodo indexOf para verificar a existncia de um valor em uma ArrayList. Se o tem no for encontrado, sua posio (comeando em 0) retornada, do contrrio o valor retornado -1. */ import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conter strings ArrayList<String> nomes = new ArrayList<String>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); // Verifica se o valor "Osmar" existe na ArrayList int indice = nomes.indexOf("Osmar"); if(indice == -1) System.out.println("O valor pesquisado no foi encontrado."); else System.out.println("O valor foi encontrado no ndice: " + indice); } }

Relacionamento entre classes


Para a engenharia de software, assim como para a UML, h diferentes tipos e conceitos de relacionamento entre classes, incluindo associao, agregao,composio, dependncia, herana e realizao(implementao). Um diagrama de classes UML, tendo uma linha entre duas ou mais classes, pode-se considerar a existncia de um relacionamento.

Relacionamentos
Associao Associao simples Agregao Composio Generalizao Herana Implementao(realizao) Dependncia

Associao Simples
Representa a habilidade de uma instncia mandar uma mensagem para outra instncia.

Representao de Associao em UML

Representao de Associao em Java


A associao implementada por meio de um atributo tipo referncia na classe que contm a outra classe. Exemplo: class Pessoa{ private Endereco endereco; }

Continuao Trabalho
O custo para o consumidor de um carro ser a soma do custo de fbrica acrescido da percentagem do distribuidor e dos impostos(aplicados ao custo de fbrica). A percentagem do distribuidor ser de 28% e os impostos 45%.

Você também pode gostar