Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade

Documentos relacionados
PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Variáveis primitivas e Controle de fluxo

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Tipos Primitivos, estruturas de iteração e decisão.

Programação Estruturada e Orientada a Objetos

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Lição 4 Fundamentos da programação

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Programação Orientada a Objetos

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Ambientação com a Sintaxe de Java: parte 1

Programação Estruturada

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Conceitos básicos de programação

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }

Algoritmos II prof. Daniel Oliveira

Linguagens de Programação

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos

Introdução à Linguagem C++

Linguagem de programação Java

Sintaxe Básica do Java. João Paulo Q. dos Santos

Linguagem Java - Introdução

RESUMO DE CONCEITOS BÁSICOS DE C

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Análise de Programação

4. Constantes. Constantes pré-definidas

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Conceitos Básicos Linguagem C

Estrutura do programa

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

3. Linguagem de Programação C

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

3. Linguagem de Programação C

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Linguagens de Programação I

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Algoritmos I Aula 13 Linguagem de Programação Java

Laboratório de Programação II

Introdução à Ciência da Computação scc-120

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Desenvolvimento de Aplicações Desktop

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Working 03 : Conceitos Básicos II

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo

Introdução à Computação MAC0110

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Princípios de Desenvolvimento de Algoritmos MAC122

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Linguagem de Programação I. Aula 06 Linguagem C: Tipos de Dados

Linguagem C Princípios Básicos (parte 1)

Linguagem C: Introdução

Algoritmos: Conceitos Fundamentais

Aula 4: Introdução à Linguagem C++

Algoritmos e Programação

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Instituto Superior de Engenharia de Lisboa

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Programação II. Aula 3

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

Orientação a Objetos e a Linguagem Java

Aula 4 - Operadores. Prof. Laura Silva de Assis. Engenharia de Computação 2 o Período

Disciplina: Introdução à Engenharia da Computação

Linguagem de Programação III

Engenharia Elétrica AAM. Professor: Marco Shawn Meireles Machado

Universidade Federal do Espírito Santo. Programação II. CT IX - Sala 206 Departamento de Informática Centro Tecnológico

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Seleção Múltipla Laços (while, do-while, for) AULA 05

Algoritmos e Técnicas de

Slides trabalhados durante a quinta aula

PHP: <?php echo("hello World");?> Printa Hello World na página do navegador, mais fácil do que no Java.

Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Prof. Alessandro Zimmer Introdução à Linguagem C

Oficina de Python Prof. Me. José Carlos Perini

Working 03 : Conceitos Básicos II

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Linguagem Java: Sintaxe Java

Programação com Acesso a BD. Programação com OO Acesso em Java

Revisão C++ - Parte 1

MsC. João Maria MsC. Liviane Melo

Elementos Básicos. C# - Elementos básicos. Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Introdução à Programação

Linguagem C Operadores

Variáveis e Operadores em C

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

Transcrição:

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade Disciplina: PEOO Professor: Eberton da Silva Marinho e-mail: ebertonsm@gmail.com Data: 25/02/2019 Data de entrega: Exercícios Objetivos: Variáveis Tipos de Dados Java Operadores Processo lógico de programação Estruturas de desvio condicional Variáveis É inerente às linguagens de programação a necessidade de armazenar e manipular valores, e no caso das orientadas a objetos, objetos. Uma variável é um endereço de uma posição na memória onde podemos armazenar informação. Por conveniência, utilizamos apelidos, um nome, para as variáveis. Assim, nós podemos entender mais facilmente qual a finalidade de cada uma. Java é uma linguagem fortemente tipada. Isso quer dizer que todas as variáveis têm tipos, conjunto de valores que ela pode assumir, bem definidos e a conversão entre tipos é restrita. De outra forma, a manipulação de dados se dá com o conhecimento da faixa de valores e de seus possíveis estados já na especificação dos programas. Tipos de dados são modelos que representam conjuntos de valores que podemos utilizar ou manipular. Antes de utilizar uma variável, temos de declará-la juntamente com o seu tipo. Abaixo temos alguns exemplos de declaração de variáveis. int i; char letra1, letra2; float num1; double salario; Os nomes das variáveis devem seguir uma regra para que o compilador possa identifica-las corretamente. Elas devem iniciar com uma letra, cifrão ($) ou sublinhado/underscore (_). Após o primeiro caractere podem ter qualquer combinação de letras, caracteres e números sem limite de tamanho. O compilador possui algumas palavras que são específicas que possuem significado em sua interpretação de código chamadas de palavras reservadas. Elas não podem ser utilizadas como identificadores no código, pelo motivo obvio que o compilador não saberia quando a mesma teria a finalidade função de uma variável ou a implementação inicial do compilador. Identificadores são case-sensitive isto é, sensíveis a maiúscula ou minúscula, logo, Nome e nome são identificadores diferentes. A Figura 1 abaixo mostra uma lista de palavras reservadas que não podem ser utilizadas como identificadores.

Figura 1. Palavras reservadas em Java. Algumas convenções são adotadas pelos programadores Java para facilitar o entendimento do código. Algumas delas são: Classes e interfaces: A primeira letra deve ser maiúscula e, caso o nome seja formado por mais de uma palavra, as demais palavras devem ter sua primeira letra maiúscula também (exemplo: PrimeiroProgramaJava); Métodos: A primeira letra deve ser minúscula e após devemos usar a primeira letra maiúscula para cada palavra (exemplo: primeiravariaveljava); Variáveis: Da mesma forma que métodos; Constantes: Todas as letras do nome devem ser maiúsculas e caso seja formada por mais de uma palavra separada por underscore. A Tabela 1 abaixo mostra exemplos de alguns identificadores válidos adotando a convenção citada anteriormente. Tabela 1. Exemplos de identificadores Java. Tipos de Dados Java Em Java temos duas classificações de tipos de dados, os tipos primitivos, e os tipos definidos pelo usuário. Os tipos primitivos são especificações que a própria linguagem trás para manipular dados como inteiros, ponto flutuante, caracter, etc. Já os tipos definidos pelo usuário são as classes que o programador cria. Abaixo, na Tabela 1, há a os tipos primitivos na linguagem Java, a descrição de cada um e os valores permitidos para cada tipo.

Tabela 2. Tipos primitivos em Java. Tipo Descrição Mínimo Máximo boolean Ocupa 1 bit. Assume os valores true ou false. char Caractere em notação Unicode de 16 bits. Serve para armazenar dados alfanuméricos. Também pode ser usado como um dado inteiro. 0 65535 byte Inteiro de 8 bits em notação de complemento de dois. -128 127 short Inteiro de 16 bits em notação de complemento de dois. -32768 32767 int Inteiro de 32 bits em notação de complemento de dois. 2147483648 2147483647 long Inteiro de 64 bits em notação de complemento de dois. -2 63 2 63-1 float Representa números em notação de ponto flutuante normalizada em precisão simples de 32 bits em conformidade com a norma IEEE 754-1985. 4 bytes de tamanho e 23 dígitos binários de precisão. 1.40239846e- 46 3.40282347e+3 8 double Representa números em notação de ponto flutuante normalizada em precisão dupla de 64 bits em conformidade com a norma IEEE 754-1985. 8 bytes de tamanho e 52 dígitos binários de precisão. 4.940656458 41246544e- 324 1.79769313486 23157e+308 Apesar de Java ser uma linguagem fortemente tipada, alguns tipos primitivos diferentes podem ser manipulados e convertidos entre si sem perda de informação. A Figura 1 mostra uma ilustração de quais conversões são permitidas na linguagem Java, seguindo a seta azul. Um byte pode ser convertido em um short, int, long, float ou double Um short pode ser convertido em um int, long, float ou double Um char pode ser convertido em um int, long, float ou double Um int pode ser convertido em um long, float ou double Um long pode ser convertido em um float ou double Um float pode ser convertido em um double Figura 2.

Após a declaração, podemos utilizar as variáveis para armazenar informação, para isso, o atributo de atribuição = indica ao compilador qual valor colocar na variável. Abaixo temos alguns exemplos de como fazer a atribuição a variáveis. int x; x = 1; int contador = 0; double salario1 = 2000.0, salario2 = 3500.0; int a = b = c = d = 0; O tipo char permite a representação de caracteres individuais no formato UNICODE. Alguns caracteres são considerados especiais e não possuem representação visual, sendo a maioria caracteres de controle cujo uso é reservado pela linguagem. Tais caracteres podem ser especificados dentro dos programas como indicado na Tabela 1 abaixo, ou seja, precedidos do \. Tabela 3. Caracteres especiais em Java. Representação Significado \n Pula linha \r Retorno de carro \b Retrocesso \t Tabulação \f Nova página \ Apóstrofo \ Aspas \\ Barra invertida Criar programas é uma tarefa artesanal e por isso, a solução de um problema pode ser encontrada de várias formas. Essa variedade de formatos que cada programador pode desenvolver dificulta o entendimento do código. Para isso, existe na maioria das linguagens de programação a possibilidade de se colocar comentários no próprio código que explicam o que representam os identificadores, o que ele faz e como faz. Em Java os comentários são expressos através de duas barras (//) e barras com asteriscos (/*... */). Geralmente o comentário de documentação é posicionado imediatamente antes do elemento a ser documentado. Abaixo temos alguns exemplos: // Comentário de uma linha // Tudo após as duas barras é considerado comentário /* comentário de múltiplas linhas */ /** comentário de documentação

/* que também pode ser de múltiplas linhas */ Operadores A linguagem Java possui um conjunto amplo de operadores que podem ser utilizados destinados a operações aritméticas, lógicas, relacionais e de atribuição. A Tabela 4, 5 e 6 mostram respectivamente os operadores aritméticos, relacionais e lógicos Java. Tabela 4. Operadores aritméticos Java. Operador Significado Exemplo + Adição a + b - Subtração a b * Multiplicação a * b / Divisão a / b % Resto da divisão inteira a % b - Sinal negativo -a + Sinal positivo +a ++ Incremento unitário ++a ou a++ -- Decremento unitário --a ou a-- += Soma a variável a += b a = a + b -= Subtrai da variável a -= b a = a - b *= Multiplica a variável a *= b a = a * b /= Divide da variável a /= b a = a / b Tabela 5. Operadores Relacionais Java. Operador Significado Exemplo == Igual a == b!= Diferente a!= b

> Maior que a > b >= Maior ou igual a >= b < Menor que a < b <= Menor ou igual a a <= b Tabela 6. Operadores Lógicos. Operador Significado Exemplo && E lógico (and) a && b Ou Lógico (or) a b! Negação (not)!a Assim como na matemática, os operadores possuem uma ordem de precedência, o que determina a ordem de avaliação dos mesmos em uma expressão. A Tabela 7 mostra a ordem de precedência de operadores da maior precedência para a menor. Tabela 7.Ordem de precedência dos operadores Java. Nível Operadores Nível Operadores 1. (seletor) [ ] ( ) 8 & 2 ++ -- ~ instanceof new clone (unário) 9 ^ 3 * / % 10 4 + - 11 && 5 << >> >>> 12 6 < > <= >= 13? : 7 ==!= 14 = 15, Processo Lógico de Programação O processo de resolver um problema através de uma solução computacional, um programa, envolve diversas habilidades necessárias para se atingir o objetivo. Antes mesmo de sentarmos em

frente ao computador para escrever o código que possivelmente irá resolver nosso problema, temos que organizar o raciocínio para desenvolver uma solução que cubra todas as possibilidades de resposta a partir das entradas, inclusive as erradas. O programa deve ser robusto o suficiente para prever casos errados e informar ao usuário sobre o erro. Para organizarmos nossa lógica de criação de programas, sugiro que você siga o algoritmo abaixo que consiste em: 1. Ler e entender o problema: É obvio que antes de resolver um problema, devemos entendêlo e buscar na literatura no que consiste e como resolvê-lo sem uma ferramenta computacional; 2. Definir as entradas e as saídas do programa: Tendo entendido o problema, defina as entradas e saídas do programa e o tipo de cada uma; 3. Dadas as entradas, resolver o problema em um ambiente fora da programação. Neste momento também são definidas as variáveis necessárias no processo de resolução; 4. Escolher um caso de teste e solucione o problema sem o computador. Encontre os valores de saída com base nas entradas teste; 5. Traduzir a solução do problema em código. A tradução deve ser: 1. Declarar todas as variáveis do programa 2. Inicializar TODAS as variáveis 3. Escrever o código que solucione o problema 4. Escrever o código que imprimir a saída do programa 6. Executar o programa com o caso de teste como entrada e verificar se a saída é igual ao do item 4. Exemplo: Estudo de caso: Você foi escolhido para criar um programa que solucione uma equação do segundo grau na forma: ax 2 + bx + c = 0. 1 - A primeira coisa que temos que fazer é entender qual o problema. Entendido o é pedido no problema, vamos ao segundo passo. 2 As entrada para o programa são três valores que representam a, b e c na equação do segundo grau. 3 - A resolução de uma equação do segundo grau pode ser realizada pela fórmula de Bhaskara que tem as seguintes definições: delta = 4 Se delta >= 0 x1 = x2 = Se delta < 0, não existem raízes reais Variáveis utilizadas na resolução: delta, x1 e x2 4 O caso de teste escolhido foi dadas Entradas: a = 1, b = 5 e c = 4 Saídas: x1 = -1 e x2 = -4

5 Implementar a solução do problema em código Java 1. Declarar todas as variáveis do programa 2. Inicializar TODAS as variáveis 3. Escrever o código que solucione o problema 4. Escrever o código que imprima a saída do programa 6 - Executar o programa com o caso de teste do item 4 e comparar as saídas. Como resultado temos o programa abaixo:

Código 1. Programa ProgEquacao2Grau. public class ProgEquacao2Grau { public static void main(string args[]){ // Entradas da equação // ax^2 + bx + c = 0 int a, b, c; // delta = (b*b - 4 * a * c) int delta; // x1 = (-b + Math.sqrt(delta)) / (2 * a) // x2 = (-b - Math.sqrt(delta)) / (2 * a) double x1, x2; // Inicialização das variáveis a = 1; b = 5; c = 4; // Calculo de Delta, usando o método de Bhaskara delta = (b*b - 4 * a * c); if(delta >= 0 ){ x1 = (-b + Math.sqrt(delta)) / (2 * a); x2 = (-b - Math.sqrt(delta)) / (2 * a); // Saída do programa caso haja raízes reais System.out.println(x1); System.out.println(x2); else{ System.out.println("Para as dadas entradas, não existe raízes reais."); Estruturas de Controle Até agora vimos comandos para criar algoritmos em Java que segue uma sequência linear, porém a maioria dos programas que faremos não segue uma estrutura linear, eles serão cheios de desvios ou repetições que dependerão de escolhas de usuário ou de variáveis outras que estejam

especificadas no programa. Java permite utilizar duas estruturas de controle mediante uma certa condição, são elas o desvio condicional ou repetição. Além dessas estruturas existem ainda mecanismos de modularização e estruturas de controle de erros. Estruturas de modularização são aqueles que nos permitem a construção de funções e procedimentos (dentro do paradigma procedural) ou métodos (dentro do paradigma de orientação a objetos). Já estruturas de controle de erros constituem uma importante contribuição a programação pois simplifica bastante a inclusão e construção de rotinas de tratamento de erros dentro do código. Estrutura de Desvio Condicional O Java dispôs de duas estruturas de desvio conforme a avaliação de uma expressão, são elas if e switch. A estrutura if é de propósito geral e avalia uma expressão que sempre terá como resultado um valor verdadeiro (true) ou falso (false). Se a expressão for verdadeira, os comandos dentro do bloco if serão executados, e ao término do bloco, a próxima instrução executada estará depois da instrução if. Caso a expressão seja falsa, será avaliada a próxima instrução, se houver. Já a instrução switch é de propósito mais específico e só pode ser utilizado para avaliação de expressões que retornam um número inteiro. Instrução de desvio condicional if A Figura 3 mostra uma o fluxo da instrução if. Se a expressão avaliada for verdadeira, o fluxo do programa deve seguir a esquerda, caso contrário, a expressão é falsa, a direita. Figura 3. Ilustração do fluxo da instrução if. comandos comandos

Há algumas formas de escrever a estrutura if. Abaixo há algumas: 1 2 3 if(expressão) comando1; comando2; if(expressão){ comando1; comando2; if(expressão){ comando1; else{ comando2; Bloco de comandos 4 if(expressão1){ comando1; else if(expressão2){ comando2; else{ comando3; Cada caixa na ilustração acima indica o escopo de um bloco de comandos. Há 4 exemplos de código usando o if. A primeira forma eu não recomendo que seja utilizada, apesar de ser permitida ela pode causar confusões de interpretação, isso porque, apenas o comando1 é executado na expressão if. O comando2 é executado independente da avaliação. Recomento utilizar a segunda forma, mesmo que haja apenas um comando. A primeira e segunda forma possuem apenas uma instrução if. Na terceira forma, além do if, há o seu complemento, o else. O bloco de comandos em else é obrigatoriamente executado se a expressão for falsa. No quarto trecho de código, temos um comando else if, que só será avaliado se a expressão1 for falsa, e o else só será executado se a expressão1 e a expressão2 forem falsas. A instrução if também pode ser aninhada com outros if, ou seja, podemos colocar um bloco if dentro de outro bloco if. A instrução if interna ao bloco if só será avaliada se a mais externa for verdadeira. O código abaixo ilustra o aninhamento de ifs. if(expressão1){ comando1; if(expressão2){ comando2; else if(expressão3){ comando3; if(expressão4){ comando4; Estruturas ifs aninhadas Estrutura de desvio condicional switch O switch é usado para casos onde temos valores inteiros bem definidos. A expressão a ser avaliada retorna um valor inteiro que é comparado com os valores nas declarações case. Caso o valor

da expressão corresponda a um dos cases, os comandos deste bloco são executados até que se encontre a palavra reservada break. Um erro de programação é esquecer de declarar a palavra break. Isso faz com que as outras declarações case sejam executadas, mesmo sem a devida correspondência. Ao final das declarações case, podemos colocar a declaração default, que funciona com o else da instrução if, ou seja, ela só será executada se nenhum das declarações case tiver sido. Abaixo há um exemplo de instrução switch. switch(expressao){ case valor1: comandos1; break; O comando break impede que os outros cases sejam executados após a primeira confirmação. case valor2: comandos2; break; case valor2: comandos3; default: break; comandos4; O comando default funciona com o else da estrutura if. Operador (? : ) O operador condicional utiliza três operandos. O operador pode ter um de dois valores baseados em uma condição. A sintaxe é: condição? valor1 : valor2. Se condição for verdadeira, o operador terá o valor de valor1. Caso contrário, terá o valor de valor2. Você pode utilizar o operador condicional em qualquer lugar onde utilizaria um operador padrão. Por exemplo: se o valor da variável a for maior que a de b, o valor 50 será atribuído a variável x, senão o valor 100; int x = (a > b? 50: 100); Complementos No site da disciplina há um arquivo TiposPrimitivos.java para baixar. Execute-o e estude o código com ajuda dos comentários. O que você aprendeu? Dicas do dia Defina variáveis com nomes sugestivos, e que indiquem o que a variável se destina armazenar. Evite nomes muito curtos ou muito abreviados que dificultem o entendimento do código. Quando usar estruturas de desvio de fluxo, verifique se as condições cobrem todo o escopo do que se deseja cobrir, e não há sobreposição de faixa de valores.

Exercícios 1. O que é uma variável?. 2. O que significa dizer que Java é fortemente tipada?. 3. Quais os tipos de dados Java? Qual o perigo de utilizarmos operações entre tipos de dados diferentes, um tipo de dados double em um int, por exemplo?. 4. Por que devemos comentar o código de programação?. 5. Qual a diferença entre as declarações ++a e a++? Cite um exemplo.. 6. Quais as formas de desvio condicional em Java e quais as diferenças entre elas?.