Um guia de defesa pessoal para programadores inteligentes. Gibeon Aquino

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

Download "Um guia de defesa pessoal para programadores inteligentes. Gibeon Aquino"

Transcrição

1 Um guia de defesa pessoal para programadores inteligentes Gibeon Aquino

2 Como Pessoas NORMAIS se defendem no dia a dia? *Pessoa NORMAL = Toda ser humano que Não precisa lidar com código de programação de computadores

3

4

5

6 MAS essas técnicas não funcionam durante a programação

7 Programação Defensiva é a solução

8 O que é PD? Programação defensiva é um conjunto de técnicas de projeto e programação objetivando a estabilidade e a segurança de um software independentemente de seu imprevisível. A idéia pode ser vista como forma de reduzir ou eliminar a hipótese das Leis de Murphy terem efeito. Defensive_programming

9 Se defenda contra o inesperado

10 Quase uma Paranóia

11 Qual o problema com esse código? int risky_programming(char *input){ char str[1000+1]; // one more for the null character //... strcpy(str, input); // copy input //... }

12 Qual o problema com esse código? int risky_programming(char *input){ char str[1000+1]; // one more for the null character //... strcpy(str, input); // copy input //... } E se a entrada for maior que 1000 caracteres??

13 Solução mais segura... int secure_programming(char *input){ char str[1000]; //... strncpy(str, input, sizeof(str)); // copy input without exceeding the length of the destination str[sizeof(str) - 1] = '\0'; // if strlen(input) == sizeof(str) then strncpy won't NUL terminate } //...

14 Técnicas de PD bem conhecidas: Se proteja de entradas inválidas Programas problemáticos não mentem Use Assertivas Faça Design by contract Aplique técnicas de manipulação de erros Use Exceções corretamente Faça barricadas contra propagação de erros...

15 #Se proteja de entradas inválidas

16 Verifique os valores de todos os dados vindos de fontes externas Fontes externas: Arquivos, Rede, Entrada do usuário, etc. Verifique: Intervalos, tipos de dados, tamanho dos dados, caracteres válidos, expressões válidas, etc. Erros comuns: Buffer Overflow, overflow de inteiros, Injeção de SQL, HTML, JavaScript, etc.

17 Verifique os valores de todos os parâmetros de uma rotina Trate os valores dos parâmetros como dados vindos de fontes externas int sumfirstelements(int *values, int qtd){ int sum = 0; for (int i= 0; i < qtd; i++){ sum += values[i]; } return sum; Qual(is) o(s) problema(s) com este código?? } Decida o que fazer com as entradas inválidas Aplique técnicas de manipulação de erros Será visto em detalhes mais à frente

18 #Programas mortos não mentem

19 Programadores pragmáticos pensam assim: Se em algum momento o programa apresentou um comportamento inesperado, há algo muito muito errado no código Se um arquivo não pode ser aberto, ele não deve ter sido fechado corretamente em outro ponto do programa Se não foi possível alocar memória, o programa não deve estar liberando bem a memória não usada...

20 Programadores pragmáticos pensam assim: Nunca ignore os erros, melhor... tente ao máximo fazê-los acontecer o mais cedo possível E reporte o máximo de informações sobre o mesmo (Em que ponto do programa, quais os valores das variáveis, dos parâmetros, etc.) Linguagens como Java ou C# possuem mecanismos nativos para reportar a fonte do erro Uso de macros em C, por exemplo, pode ser uma alternativa para obter o mesmo resultado

21 #Faça Desig-by-contract Técnica que foca na documentação e verificação dos direitos e deveres de cada módulo de software Pré-condições Pós-condições Invariantes

22 Pré-condições O que deve ser verdadeiro para a rotina poder ser chamada (Requisitos mínimos da rotina) Pós-condições O que deve ser verdadeiro após a rotina executar Invariantes Condições que devem sempre ser verdade, antes, durante e após a execução da rotina

23 DBC na prática Existem várias bibliotecas e ferramentas que dão suporte a DBC em C, C++ e Java Alguns exemplos: Design-by-Contract-in-C jw-0216-cooltools.html settsep2011.html

24 #Use Assertivas Uma assertiva (do inglês assertion ) é um código que é usado durante o desenvolvimento para confirmar que o programa está executando como esperado

25 Se algo não pode acontecer, use assertivas para garantir que não vão! Pragmatic Programmer Book Java já possui palavra reservada para o uso de assertivas public class Teste { private static int contarmaiores(int[] elementos, int valor) { assert elementos!= null : "Parâmetro inválido. Um vetor com valores deve ser passado!"; int maiores = 0; for (int i = 0; i < elementos.length; i++) { if (elementos[i] > valor) { maiores++; } } return maiores; } public static void main(string[] args) { int[] vetor1 = { 10, 12, 34, 5, 7, 43, 21, 99 }; int[] vetor2 = null; } } contarmaiores(vetor1, 30); contarmaiores(vetor2, 30);

26 Assert em Java Surgiram no Java 1.4 Por default, são desabilitadas em Runtime Podem ser ativadas por parâmetro da JVM java -enableassertions pacote.classe

27 Dicas de uso de Assertivas Use código de tratamento de erros para situações que você espera acontecer. Use assertivas SOMENTE para situações que nunca devem acontecer 1 // Fig. 13.9: AssertTest.java 2 // Demonstrates the assert statement 3 import java.util.scanner; 4 5 public class AssertTest 6 { 7 public static void main( String args[] ) 8 { 9 Scanner input = new Scanner( System.in ); System.out.print( "Enter a number between 0 and 10: " ); 12 int number = input.nextint(); // assert that the absolute value is >= 0 15 assert ( number >= 0 && number <= 10 ) : "bad number: " + number; System.out.printf( "You entered %d\n", number ); 18 } // end main 19 } // end class AssertTest

28 Dicas de uso de Assertivas Evite colocar código executável (útil para o programa final) nas assertivas... assert(performaction())... Use assertivas para documentar e verificar pré-condições e pós-condições

29 #Aplique técnicas de manipulação de erros

30 Assertivas servem para manipular erros que nunca devem acontecer! E para aqueles que você espera acontecer??? Retornar um valor padrão Substituir pelo próximo dado válido Mostrar uma tela de erro Retornar um código de erro Registrar um log de erro em um arquivo

31 Assertivas servem para manipular erros que nunca devem acontecer! E para aqueles que você espera acontecer??? Depende da situação!!! Retornar um valor padrão Abortar Mostrar uma tela de erro Retornar um código de erro Registrar um log de erro em um arquivo

32 Técnicas de manipulação de erros comuns Retorne um valor padrão (neutro) Ex. Operação sobre string retorna uma string vazia Substitua pelo próximo dado válido Ao ler um dado inválido de um stream de vídeo continue lendo e retorne o próximo dado válido Retorne a última resposta válida Um GPS pode não retornar uma informação válida, nesse caso a última posição lida é retornada

33 Substitua por um valor válido mais próximo Ao ler um valor negativo de um velocímetro, retorne 0 (valor mais próximo válido) Registre um log em um arquivo Registre o erro em um arquivo de log e continue operando Retorne um código de erro Se o erro não for tratado localmente, retorne códigos de erros pra indicar o erro à quem o chamou

34 Chame uma rotina de processamento de erro Centralize todos os tratamentos de erros em uma rotina Trate os erros localmente Qualquer erro deve ser tratado na rotina que produziu o erro Mostre uma mensagem de erro Se for uma aplicação interativa (interage com o usuário), uma tela de erro pode ser apresentada Aborte o programa Aborte o programa se um erro severo ocorreu

35 Próximo passo... Continue aprendendo sobre o assunto lendo: Capítulo 8 do livro Code Complete. Ou Digite no Google a palavra Programação Defensiva ou Defensive Programming"

36 Obrigado! Gibeon Aquino

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) String String é uma classe contida no pacote java.lang e que descende da classe java.lang.object. De forma conceitual podemos dizer que é uma sequência de caracteres usada

Leia mais

O AMBIENTE DE DESENVOLVIMENTO

O AMBIENTE DE DESENVOLVIMENTO Módulo 9 O AMBIENTE DE DESENVOLVIMENTO P S I 1 1 - C P T G P S I SUMÁRIO Instalação do Java JDK - Kit de Desenvolvimento Java Download do JDK Instalação do JDK Configuração da Variável de ambiente (Path)

Leia mais

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano Linguagem de Programação 1 Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano Objetivo: Apresentar a composição lógica em estruturas de decisão e as

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos

Leia mais

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO Estruturas de repetição Estrutura de repetição nada mais é que laços de repetições. Laços de repetições permitem que um conjunto de instruções seja repetido

Leia mais

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

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida Programação Orientada a Objetos II Java Segunda aula 1 Programação Orientada a Objeto II Tipos de Dados e Variáveis Operadores Operadores aritméticos Operadores relacionais Operadores lógicos Operadores

Leia mais

Tratamento de Exceções

Tratamento de Exceções Fundamentos de Programação Tratamento de Exceções Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br O que é??? É um evento que interrompe o fluxo normal de

Leia mais

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira Tratamento de Erros Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:

Leia mais

JAVA. Professor: Bruno Toledo

JAVA. Professor: Bruno Toledo JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código

Leia mais

CETEC Centro Paula Souza

CETEC Centro Paula Souza Atualização da Competição Maratona de Programação 2018 2º Semestre Finalidade Este documento tem por finalidade informar aos professores responsáveis pelos times das unidades participantes da Maratona

Leia mais

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos - Programação Orientada a Objetos Aula 4 Programação Orientada a Objetos Entrada e Saída de Dados 1 O exemplo abaixo emprega o pacote Swing (javax.swing), que emprega componentes gráficos Java. //AloMundo

Leia mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro

Leia mais

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Programação Orientada a Objetos Aula 4 Programação Orientada a Objetos Entrada e Saída de Dados GUI em Java: pacote Swing O exemplo abaixo emprega o pacote Swing (javax.swing), que emprega componentes

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Aula de PG Novembro de 2013, LT14D e LT11D - Sobre o Tipo String do Java

Aula de PG Novembro de 2013, LT14D e LT11D - Sobre o Tipo String do Java Aula de PG Novembro de 2013, LT14D e LT11D - Sobre o Tipo String do Java O tipo String é uma classe da linguagem Java onde se definem muitos métodos que podemos e devemos usar para manipular cadeiras de

Leia mais

private static Ascii ascii = new Ascii(); static List<Character> asciinumber = ascii.getasciitable(); Scanner input = new Scanner(System.

private static Ascii ascii = new Ascii(); static List<Character> asciinumber = ascii.getasciitable(); Scanner input = new Scanner(System. import java.util.arraylist; import java.util.list; import java.util.scanner; import cifravalida.ascii; public class Main { private static Ascii ascii = new Ascii(); static List asciinumber =

Leia mais

Linguagem de programação Java

Linguagem de programação Java Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Java Professor: Saulo Henrique Cabral Silva ENTENDENDO O JAVA 2 Entendendo o Java executando... A instância da JVM irá iniciar

Leia mais

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO AO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 2 3 4 5 6 Estrutura de Programa Java Elementos Básicos do Java Controle de Fluxo

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Aula de Hoje Abstração de Dados Classes e Objetos Definição de Métodos Métodos com parâmetro Abstração de Dados Processo mental através do qual

Leia mais

ALOCAÇÃO DINÂMICA DE MEMÓRIA

ALOCAÇÃO DINÂMICA DE MEMÓRIA INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador

Leia mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro

Leia mais

public class ExecScanner1 { public static void main(string[] args) { // TODO code application logic here

public class ExecScanner1 { public static void main(string[] args) { // TODO code application logic here public class ExecScanner1 { public static void main(string[] args) { // TODO code application logic here } } import java.util.scanner; public class ExecScanner1 { public static void main(string[] args)

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas 1 Programa Capítulo 9 Tratamento

Leia mais

Fundamentos da programação Parte - 1

Fundamentos da programação Parte - 1 Fundamentos da programação Parte - 1 1. Objetivos Nesta lição discutiremos as partes básicas de um programa em Java. Começaremos explicando as partes do programa Hello.java mostrado na última lição. Discutiremos

Leia mais

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA II

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA II PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA II Prof. Dr. Daniel Caetano 2017-1 Objetivos Recordar as estruturas condicionais switch~case e de repetição while, for e do~while Conhecer os tipos não nativos:

Leia mais

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA I

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA I PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA I Prof. Dr. Daniel Caetano 2017-1 Objetivos Conhecer os tipos de dados, constantes e como declarar variáveis Conhecer os operadores e expressões Conhecer e

Leia mais

ptraux = dynamic_cast <PacoteNoite *> (vetor[i]); if (ptraux) auxiliar += vetor[i]->calculacusto();

ptraux = dynamic_cast <PacoteNoite *> (vetor[i]); if (ptraux) auxiliar += vetor[i]->calculacusto(); 429 //conteúdo do arquivo principalpacote.cpp... "5 - Imprimir o custo total apenas dos pacotes que serao entregues a noite;"

Leia mais

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo Tratamento de Exceções LPG II Java Tratamento de Exceções Introdução Princípios do tratamento de exceções em Java Cláusula try Cláusula catch Cláusula finally Hierarquia de exceções em Java Considerações

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas Programa Capítulo

Leia mais

Desenvolvendo aplicações Java

Desenvolvendo aplicações Java José Roberto Madureira Junior Adaní Cusin Sacilotti Adriana Rodrigues Reginaldo Sacilotti Desenvolvendo aplicações Java Primeira Edição São Paulo 2017 Sumário 1 INTRODUÇÃO AO JAVA... 1 1.1 A PLATAFORMA

Leia mais

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Arrays em Java. Introdução à Programação. Bruno Cartaxo Arrays em Java Introdução à Programação Bruno Cartaxo http://sites.google.com/site/brunocartaxo bruno.cartaxo@olinda.ifpe.edu.br Tópicos a serem discutidos na disciplina Introdução a computadores e algoritmos

Leia mais

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

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java Linguagem Java Objetivos????? ADAPTAR O TEXTO ABAIXO????? Aprender a sintaxe da Estrutura de Repetição ENQUANTO-FAÇA na linguagem PORTUGOL Aprender a resolver problemas que requeiram o uso de ESTRUTURAS

Leia mais

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr 5COP088 Laboratório de Programação Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Manipulação de Exceções; 1) Try e Catch 2) Finally 3) Propagação (Throw e Throws) 2) Erros e Exceções Comuns;

Leia mais

Programação de Computadores II TCC /Turma A 1

Programação de Computadores II TCC /Turma A 1 Programação de Computadores II TCC 00.174/Turma A 1 Professor Leandro A. F. Fernandes http://www.ic.uff.br/~laffernandes Conteúdo: Tratamento de exceções Material elaborado pelos profs. Anselmo Montenegro

Leia mais

Tratamento de Exceções. Profa. Thienne Johnson EACH/USP

Tratamento de Exceções. Profa. Thienne Johnson EACH/USP Tratamento de Exceções Profa. Thienne Johnson EACH/USP Java, como programar Deitel & Deitel Capítulo 14 Uma exceção é uma indicação de um problema que ocorre durante a execução de um programa O tratamento

Leia mais

Lógica de Programação. Lógica de Programação com Java

Lógica de Programação. Lógica de Programação com Java Lógica de Programação Lógica de Programação com Java Sumário Lógica de programação 1. Algoritmos 2. Comentários no código 3. Tipos de dados 4. Constantes e Variáveis 5. O que devemos saber para começar

Leia mais

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa AULA 2: INTRODUÇÃO A PYTHON Luís Feliphe Silva Costa Sumário Variáveis simples Entrada e Saída de dados Operadores Estruturas Condicionais Estruturas de repetição Funções Tratamento de erros Variáveis

Leia mais

Tipos de dados e comandos POO

Tipos de dados e comandos POO Tipos de dados e comandos POO Prof. Marcio Delamaro 1/46 Objetivo Vamos ver quais são os tipo de dados primitivos da linguagem Vamos ver quais são os principais comandos 2/46 Tipos Tipo Tamanho int 4 bytes

Leia mais

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

1. Estude e implemente a classe Exemplo1 apresentada abaixo: P. Fazendeiro & P. Prata POO FP09/1 Exceções Uma exceção (Exception) é um sinal gerado pela máquina virtual de Java em tempo de execução indicando uma situação de erro da qual é possível recuperar. O objectivo

Leia mais

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes Aula 08 Estruturas de Condição Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Entrada de Dados; Estruturas de Controle: Estrutura de Sequência;

Leia mais

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

Seleção Múltipla Laços (while, do-while, for) AULA 05 Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Seleção Múltipla Laços (while, do-while, for) AULA 05 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Até aqui...

Leia mais

Vetores Unimensionais

Vetores Unimensionais Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Acessar elementos de um

Leia mais

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior. Programação de Computadores I Aula - Vetores Professor Ilaim Costa Junior www.ic.uff.br/~ilaim Vetores Estruturas de dados composta Permitem a uma variável armazenar múltiplos valores de um mesmo tipo

Leia mais

Introdução. Por que desenvolver ALGORITMO?

Introdução. Por que desenvolver ALGORITMO? Introdução Programa Computacional busca da necessidade de solução de um problema particular: a geração automática de documentos, o controle de um equipamento eletrodoméstico, a transmissão de informações

Leia mais

Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves

Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves Linguagens de Programação Programação Funcional e Haskell Programação Interativa Thiago Alves 1 Introdução Vimos como Haskell pode ser usado para escrever programas batch que recebem todas suas entradas

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Introdução à linguagem C++

Introdução à linguagem C++ Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas

Leia mais

Estruturas de controle Parte 1

Estruturas de controle Parte 1 1. Objetivos Estruturas de controle Parte 1 Nas lições anteriores, foram mostrados programas seqüenciais, onde as instruções foram executadas uma após a outra de forma fixa. Nesta lição, discutiremos estruturas

Leia mais

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

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão

Leia mais

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 5 Programação Estruturada: Funções Conteúdo: 5.1 Programação estruturada ou modular... 66 5.2 Funções... 67 5.3 Passagem de parâmetros...

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1 Modularização Facilita a

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real: Introdução a Orientação a Objetos com Java Autor: Professor Victor Augusto Zago Menegusso. Orientação a Objetos É um paradigma de programação que define a estrutura de um programa baseado nos conceitos

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 04 Arrays Edirlei Soares de Lima Arrays Array é um mecanismo que nos permite armazenar um conjunto de valores na memória do computador. Em Java,

Leia mais

Algoritmia e Programação APROG. Vetores. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/32

Algoritmia e Programação APROG. Vetores. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/32 APROG Algoritmia e Programação Vetores Algoritmia e Java Nelson Freire (ISEP DEI-APROG 2012/13) 1/32 Arrays Introdução Enquadramento Interesse Noção Tipos Vetor Matriz Vetores Noções Básicas Interesse

Leia mais

Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano

Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano Linguagem de Programação 1 Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano Objetivo: Desenvolver a habilidade de comentar código adequadamente INTRODUÇÃO Até o momento

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO FOZ DO IGUAÇU 2013 LISTA

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais

Array em Java. Figura 1 - Exemplo de um array de inteiros

Array em Java. Figura 1 - Exemplo de um array de inteiros Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:

Leia mais

Working 05 : Modularização

Working 05 : Modularização Universidade Federal do Espírito Santo Centro Tecnólogico Working 05 : Modularização Objetivos: Entender como é estruturada uma função em C e lembrar como é feita a comunicação entre funções; Praticar

Leia mais

03/10/14. Testes. Testar Depurar. Técnicas básicas. Exemplo: Teste o código em seus limites. Simplificando

03/10/14. Testes. Testar Depurar. Técnicas básicas. Exemplo: Teste o código em seus limites. Simplificando Testes Prof. Dr. Alfredo Goldman Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME / USP Testar Depurar Simplificando Depurar - o que se faz quando se sabe que o programa não funciona; Teste

Leia mais

Tratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE)

Tratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE) DCC / ICEx / UFMG Tratamento de Exceção Tratamento de Exceções Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Uma exceção é uma indicação de problema na execução do programa Exceção foge ao fluxo

Leia mais

Aula 7 Modularização. Processamento da Informação. Universidade Federal do ABC

Aula 7 Modularização. Processamento da Informação. Universidade Federal do ABC Aula 7 Modularização Processamento da Informação Universidade Federal do ABC Funções (= métodos em Java) Já usamos algumas funções sem nos darmos conta: System.out.println Math.random, Math.sqrt,... scanner.nextint(),

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização

Leia mais

Lição 4 Fundamentos da programação

Lição 4 Fundamentos da programação Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças

Leia mais

CONTEÚDO 04 VETORES. Disciplina: Algoritmos e POO Professora: Alba Lopes.

CONTEÚDO 04 VETORES. Disciplina: Algoritmos e POO Professora: Alba Lopes. CONTEÚDO 04 VETORES Disciplina: Algoritmos e POO Professora: Alba Lopes alba.lopes@ifrn.edu.br http://docente.ifrn.edu.br/albalopes INTRODUÇÃO Variável Analogia: uma caixa, na qual você pode dar o nome

Leia mais

Módulo 1. Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Módulo 1. Introdução. Programação Orientada a Objetos I Java (Rone Ilídio) Módulo 1 Introdução Programação Orientada a Objetos I Java (Rone Ilídio) Dados Importantes E-mail: rone@ufsj.edu.br Página: www.ronepage.com Deitel, H. M., Deitel, T. J., Java, editora Bookman, 6ª edição

Leia mais

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

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { } Java e sua Sintaxe Java e sua Sintaxe Estrutura mínima de um programa em Java: public class Exemplo { } Como todo programa deve ter um início, convenciona-se que a primeira ação de um programa é a execução

Leia mais

Instituto de Informática Estrutura de Dados II

Instituto de Informática Estrutura de Dados II Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores

Leia mais

Linguagem de Programação JAVA. Tiago Alves de Oliveira

Linguagem de Programação JAVA. Tiago Alves de Oliveira Linguagem de Programação JAVA Tiago Alves de Oliveira Agenda Exercícios sobre Operadores Exercícios sobre String Exercícios sobre a Biblioteca Math Exercícios de Leitura e JOPTIONPANE Trabalho Operadores

Leia mais

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Classes o Objetos. Classes, objetos, métodos e variáveis de instância Classes o Objetos Um recurso comum de cada aplicativo feito até agora é que todas as instruções que realizavam tarefas localizavam-se no método main. Se você tornar parte de uma equipe de desenvolvimento

Leia mais

Introdução à Programação

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

Leia mais

Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples.

Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples. O que é Java Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/ 1 Objetivos Responder o

Leia mais

I.1 Introdução BitSet I.2 Manipulação de bits e os operadores de bits E sobre bits & OU inclusivo sobre bits OU exclusivo sobre bits

I.1 Introdução BitSet I.2 Manipulação de bits e os operadores de bits E sobre bits & OU inclusivo sobre bits OU exclusivo sobre bits I Manipulação de bits I.1 Introdução Este apêndice apresenta uma extensa discussão sobre os operadores de manipulação de bits e também sobre a classe BitSet que permite a criação de objetos do tipo array

Leia mais

Curso: Análise e Desenvolvimento de Sistemas. (Introdução a disciplina Algoritmos e Programação)

Curso: Análise e Desenvolvimento de Sistemas. (Introdução a disciplina Algoritmos e Programação) Curso: Análise e Desenvolvimento de Sistemas Disciplina Algoritmos e Programação (Introdução a disciplina Algoritmos e Programação) Prof. Wagner Santos C. de Jesus wsantoscj@gmail.com Conceito de Lógica

Leia mais

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 2º PERÍODO - 4º MÓDULO AVALIAÇÃO MP1 DATA 06/11/2008 PROGRAMAÇÃO Dados de identificação do Acadêmico: Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO

Leia mais

Idiomas de Programação

Idiomas de Programação DCC / ICEx / UFMG Idiomas de Programação Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Definição de Idiomas Idiomas são padrões de baixo nível específicos de uma linguagem de programação Cada idioma

Leia mais

Persistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Persistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Persistência alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Retrospectiva Quanto ao Tempo de Vida Variáveis Estáticas Variáveis Stack-Dinâmicas Variáveis Heap-Dinâmicas

Leia mais

INTRODUÇÃO A LINGUAGEM JAVA

INTRODUÇÃO A LINGUAGEM JAVA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A LINGUAGEM JAVA Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso Técnico

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Métodos. Utilizados para dividir o programa em subprogramas

Métodos. Utilizados para dividir o programa em subprogramas Métodos Isidro Métodos Utilizados para dividir o programa em subprogramas Métodos Porque é importante o uso de métodos? Evita retrabalho Diminui o tamanho do código Aumenta a clareza Dividir e Conquistar

Leia mais

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1 INE5603 Introdução à POO Prof. A. G. Silva 13 de novembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de 2017 1 / 1 Introdução à manipulação de arquivos Prof. A. G. Silva INE5603

Leia mais

1 Da aula teórica ao Java

1 Da aula teórica ao Java Universidade Federal do ABC Bacharelado em Ciência da Computação Processamento da Informação - Prof. Fabrício Olivetti de França Guia de tradução entre Java e outras linguagens 1 Da aula teórica ao Java

Leia mais

Programação Orientada a Objetos II

Programação Orientada a Objetos II Programação Orientada a Objetos II Introdução Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Introdução ao Desenvolvimento

Leia mais

Um Modelo Semântico para a Linguagem Java Jorge Henrique Cabral Fernandes CIC-UnB Junho de Introdução

Um Modelo Semântico para a Linguagem Java Jorge Henrique Cabral Fernandes CIC-UnB Junho de Introdução Um Modelo Semântico para a Linguagem Java Jorge Henrique Cabral Fernandes CIC-UnB Junho de 2004 Introdução Este texto apresenta um modelo semântico inicial para um subconjunto da linguagem Java. A Figura

Leia mais

Disciplina de Algoritmos e Programação

Disciplina de Algoritmos e Programação Disciplina de Algoritmos e Programação Último Conteúdo Estruturas de condição Estrutura condicional simples Utilização da estrutura de condição if com expressões lógicas simples Utilização do comando if

Leia mais

1/5 : 29/06/2004. (marque com um "X"): Custódio Dirceu Marcus Vinícius ! " # $ % & ' PARTE TEÓRICA

1/5 : 29/06/2004. (marque com um X): Custódio Dirceu Marcus Vinícius !  # $ % & ' PARTE TEÓRICA Duração: minutos. consulta. Não esqueça de assinalar o seu nome, a sua turma e o nome do seu professor ao lado. Parte teórica (total: pontos) Cada questão tem apenas resposta certa. Cada resposta certa

Leia mais

Métodos em Java. Prof. Esp. André Aparecido da Silva (Aulas 31 a 33) Disponível em:

Métodos em Java. Prof. Esp. André Aparecido da Silva (Aulas 31 a 33) Disponível em: Métodos em Java Prof. Esp. André Aparecido da Silva (Aulas 31 a 33) Disponível em: http://www.oxnar.com.br/aulas/java/ Os métodos são conhecidos como funções, ações de execuções ou procedimentos, sendo

Leia mais

ESQUEMA AULA PRÁTICA 1

ESQUEMA AULA PRÁTICA 1 P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente JBuilder Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado JBuilder. Start

Leia mais

Tratamento de Exceções. Julio Cesar Nardi

Tratamento de Exceções. Julio Cesar Nardi Tratamento de Exceções Julio Cesar Nardi Tratamento de Exceções Objetivos: Identificar os tipos de erros em programas Java; Compreender o mecanismo de controle de exceções; Agenda Controle de Exceções

Leia mais

Universidade Federal de Goiás Instituto de Informática 1ª Prova de Introdução a Programação 06/04/11

Universidade Federal de Goiás Instituto de Informática 1ª Prova de Introdução a Programação 06/04/11 Universidade Federal de Goiás Instituto de Informática 1ª Prova de Introdução a Programação 06/04/11 Instruções: 1. A prova deve ser realizada individualmente e sem consultas. 2. As respostas deverão ser

Leia mais

Exercícios Resolvidos. Java Básico

Exercícios Resolvidos. Java Básico Exercícios Resolvidos Java Básico 1. Escrever um programa java que receba dois números e exiba o resultado da sua soma. // Programa de adição que permite a soma de dois números // Programa utiliza a classe

Leia mais

Desenvolvimento Modular de Procedimentos

Desenvolvimento Modular de Procedimentos Desenvolvimento Modular de Procedimentos Em Java os Procedimentos implementam-se com Métodos Desenho Modular de Procedimentos A melhor metodologia para o desenvolvimento de procedimentos com alguma dimensão

Leia mais