Aula 16 Tratamento de Exceções. Eiji Adachi Barbosa LES / DI / PUC-Rio Outubro / 2013
|
|
- Marcelo Carmona Castelhano
- 8 Há anos
- Visualizações:
Transcrição
1 Aula 16 Tratamento de Exceções Eiji Adachi Barbosa LES / DI / PUC-Rio Outubro / 2013
2 Avisos Na aula do dia 23/10 (quarta-feira) os alunos que ainda não viram a prova, poderão ver em sala após a aula Na aula do dia dias 28/10 haverá exercício valendo nota 28/10 (Segunda-Feira) Exercício sobre tratamento de exceções 1
3 Sumário Definições básicas O que é função? Por que / para que usar funções? Como se encerram as funções? Problema: e quando funções não encerram corretamente? Tratamento de exceções Tipos de tratadores Caso de insucesso Como tratar exceções Em C Em linguagens de programação contemporâneas 2
4 Definições básicas O que é uma função? Função é uma porção auto-contida de código que: possui um nome que pode ser chamado (ativado) de diversos lugares pode retornar zero ou mais valores pode depender de e alterar zero ou mais parâmetros pode alterar zero ou mais valores do estado do módulo variáveis internas variáveis globais pode criar, ler e destruir arquivos, etc... TIPO_RETORNO NOME_FUNCAO ( LISTA_PARAMETROS) { CORPO_FUNCAO 3
5 Definições básicas Por que / para que usar funções? Princípio dividir para conquistar Dividir sistema em módulos ß à Dividir algoritmo em funções Evitar códigos monolíticos Reuso e manutenibilidade 4
6 Definições básicas Encerrando a execução de uma função: Chegar ao fim de uma função void O comando return <VALUE> Encerra a execução de uma função imediatamente Se um valor de retorno é informado, a função chamada (callee) retorna este valor para a função chamadora (caller) A transferência de controle é local, i.e., após o return o controle do fluxo de execução passa da função chamada para a função chamadora O comando exit(int) Encerra a execução do programa 1. Executa em ordem reversa todas as funções registradas pela função int atexit( void (*func)(void) ) 2. Todos streams são fechados, todos arquivos temporários são apagados 3. O controle de execução retorna ao ambiente-hospedeiro (host enviornment) o valor inteiro passado como argumento 5
7 Problema E o que fazer quando uma exceção impede que uma função encerre sua execução corretamente? Exemplos: Não há memória disponível quando você tenta alocar memória dinamicamente Um parâmetro de entrada ocasiona uma divisão por zero Hardware para de funcionar corretamente 6
8 Tratamento de exceções Sistemas atuais são cada vez maiores e mais complexos Condições excepcionais podem surgir por diversos motivos e serem até mesmo imprevisíveis Sistemas robustos e confiáveis devem prover seus serviços mesmo sob condições excepcionais Sistemas críticos: Sistemas bancários Controladores de redes elétricas, vôo, usinas nucleares... Sistemas embarcados em aviões, submarinos, foguetes... O tratamento de exceções é parte central do desenvolvimento de sistemas robustos e confiáveis 7
9 Tratamento de exceções Por que é importante tratar exceções? Você pode irritar o seu usuário 8
10 Tratamento de exceções Por que é importante tratar exceções? Você pode irritar o seu usuário 9
11 Tratamento de exceções Por que é importante tratar exceções? Os usuários podem perder a confiança no seu produto... e você pode passar uma tremenda vergonha! 10
12 Tratamento de exceções Vídeo do Bill Gates: 11
13 Tratamento de exceções Por que é importante tratar exceções? Pode custar milhões de dólares/reais/euros Ou até mesmo vidas 12
14 Tratamento de exceções Vídeo do Ariane 5: 13
15 Tratamento de exceções - Caso de insucesso Em outubro de 1996 o foguete francês Ariane 501 se autodestruiu 5 minutos após decolar Motivo: cálculo errado do ângulo de ataque Causa: O Ariane 5 reutilizou um módulo do Ariane 4 para calcular o Alinhamento Interno, elemento relacionado com a componente horizontal da velocidade O valor gerado pelo módulo do Ariane 4 foi muito maior do que o esperado pelo módulo do Ariane 5, pois a trajetória do Ariane 5 difere da trajetória do Ariane 4 O módulo do Ariane 5 tentou converter o valor do Alinhamento Interno de um número de 64 bits em ponto flutuante para um inteiro de 16 bits com sinal Valor em ponto flutuante era maior do que poderia ser representado por um inteiro Operação de conversão não estava protegida e ocasionou Overflow Exception 14
16 Tratamento de exceções - Terminologia Exceção: Uma exceção é um evento que ocorre durante a execução de um programa (ou módulo) e que impede a sua execução normal Uma exceção indica que o estado interno do sistema está inconsistente e, por isso, não é possível prosseguir com sua execução normal Para restaurar a consistência interna do sistema, é necessário tomar ações corretivas, ou remediadoras Tratador: Um tratador é um conjunto de ações que visam corrigir ou remediar a ocorrência de uma exceção Mecanismo de tratamento de exceções: Um mecanismo de tratamento de exceções é um modelo que permite a desenvolvedores: Indicar a ocorrência de uma exceção Detectar a ocorrência de uma exceção Estruturar ações de tratamento de exceções 15
17 Tratamento de exceções Exemplos de tratadores: Armazenamento de erro: cria um registro da exceção e de informações adicionais em arquivo especial (log). Notificação ao usuário: notifica o usuário a ocorrência da exceção, com possibilidade de pedir novo input, caso seja possível. Reconfiguração: reconfigura o estado do sistema com outros valores. Nova tentativa: a mesma função, ou uma diferente implementação, é invocada novamente. Liberação de recursos: assegura a liberação de recursos alocados, como memória alocada dinamicamente, arquivos e conexões abertos, etc. Recuperação por retrocesso: desfaz modificações no estado do sistema a fim de restaurá-lo a um estado válido. Comumente usado em sistemas de bancos de dados. Delegação de controle: delega o controle da execução para outro trecho do sistema mais apto a lidar com a exceção. 16
18 Tratamento de exceções Exemplos de tratadores: Re-sinaliza a exceção: identifica um tipo de exceção e reporta para a função chamadora outro tipo de exceção. Geralmente é usada para preservar o acoplamento. Ignora a exceção: identifica a ocorrência de uma exceção e não toma nenhuma ação corretiva. Má prática e deve ser evitada. Preparação para desligar: prepara o sistema para terminar sem causar efeitos colaterais. Geralmente é usada em situações extremas. É necessário liberar todos os recursos alocados e reverter o sistema para um estado em que os dados estão consistentes. 17
19 Como tratar exceções? A linguagem C não traz suporte específico para tratamento de exceções Fica sob responsabilidade do programador desenvolver uma forma de identificar e tratar exceções da aplicação Existem várias formas de realizar esta tarefa, cada um com seus prós e contras A fim de padronizar a identificação e o tratamento de exceções em C, usaremos nesta disciplina um idioma de tratamento de exceções: Usando o código de retorno das funções e elementos enum para indicar sob qual condição a função encerrou sua execução Modificando / testando variáveis globais ou parâmetros passados por referência 18
20 Usando o código de retorno das funções Este é o método mais comum e mais simples de tratamento de exceções em linguagem C Neste método, as funções tem duas responsabilidades: A função chamada deve usar o comando return para indicar sob qual condição (normal excepcional) sua execução encerrou A função chamadora deve testar o código retornado pela função chamada a fim de tomar ações corretivas, caso necessário Preferencialmente, as condições de retorno devem ser declaradas como um elemento enum 19
21 Usando o código de retorno das funções typedef enum { LIS_CondRetOK, /* Concluiu corretamente */ LIS_CondRetListaVazia, /* A lista não contém elementos */ LIS_CondRetFimLista, /* Foi atingido o fim de lista */ LIS_tpCondRet LIS_InserirElementoAntes ( LIS_tppLista plista, void * pvalor ) { tpelemlista * pelem ; pelem = CriarElemento( plista, pvalor ) ; if ( pelem == NULL ) { return LIS_CondRetFaltouMemoria ; /* if */ LIS_CondRetNaoAchou, /* Não encontrou o valor procurado */ LIS_CondRetFaltouMemoria /* Faltou memória ao tentar criar um elemento de lista */ LIS_tpCondRet ;... return LIS_CondRetOK ; /* Fim função: LIS &Excluir elemento */ 20
22 Usando o código de retorno das funções int main(void){... LIS_tpCondRet condret = InserirElementoAntes( lista, pvalor ); switch( condret ) { case LIS_CondRetFaltouMemoria:... case LIS_CondRetOK:... default : printf( Condição de retorno inesperada ); 21
23 Usando o código de retorno das funções Problemas Uma função pode usar uma condição de retorno excepcional cujo valor reside dentro do intervalo de valores válidos calculados pela função. O problema é que a função chamadora não sabe se o valor retornado é um valor válido ou uma condição excepcional 22
24 Usando o código de retorno das funções Problemas: Chamadas encadeadas de funções podem resultar em uma estrutura muito aninhada que é difícil de compreender, testar e fazer a manutenção ARQ_tpCondRet learquivo(){ condret = OK; abrearquivo(); se( arquivoaberto() ){ determinetamanhoarquivo(); se( determinoutamanho() ){ aloquememoria(); se( alocoumemoria() ){ copiedados(); se(! copioudados() ){ condret = ERRO_COPIAR_DADOS; senão { condret = ERRO_ALOCAR_MEM; senão { condret = ERRO_DET_TAM; fechearquivo(); se(! fechouarquivo() ){ condret = ERRO_FECHAR_ARQ; senão { condret = ERRO_ABRIR_ARQ; 23
25 Usando variáveis globais ou parâmetros Este método é complementar ao método de condições de retorno Bastante usado na GLIBC, biblioteca padrão do sistema GNU/ Linux Neste método, as funções tem as seguintes responsabilidades: A função chamada deve modificar variáveis globais ou parâmetros passados por referência para indicar sob qual condição (normal excepcional) sua execução encerrou A função chamadora deve testar a variável global, ou o parâmetro passado por referência, a fim de tomar ações corretivas, caso necessário 24
26 Usando parâmetro passado por referência LIS_tpCondRet LIS_InserirElementoAntes ( LIS_tppLista plista, void * pvalor, char ** errormsg ) { tpelemlista * pelem ; pelem = CriarElemento( plista, pvalor ) ; if ( pelem == NULL ) { char str[] = Não foi possível alocar memória para um novo elemento ; int size = strlen( str ) + 1; (*errormsg) = (char*)malloc( sizeof(char) * size ); memcpy( (*errormsg), str, size ); return LIS_CondRetFaltouMemoria ; /* if */... Usar uma variável global, seria análogo... return LIS_CondRetOK ; /* Fim função: LIS &Excluir elemento */ 25
27 Usando parâmetro passado por referência int main(void){... char *errormsg; LIS_tpCondRet condret = InserirElementoAntes( lista, pvalor, &errormsg ); switch( condret ) { case LIS_CondRetFaltouMemoria: printf( %s, errormsg ); case LIS_CondRetOK:... default : printf( Condição de retorno inesperada ); Usar uma variável global, seria análogo... 26
28 Limitações de C A sinalização de uma exceção não é explícita Usa-se o comando return, parâmetros passados por referência ou variáveis globais Não há distinção entre encerramento sob condição normal ou excepcional Nem sempre é possível retornar um elemento enumerado como condição de retorno Ex.: Implemente uma função que receba os três parâmetros (Nome, Estado Civil, Idade) e retorne por referência a estrutura preenchida. Como prover mais informações a respeito do problema / exceção? Ex.: Qual a severidade? Que condições levaram a esta ocorrência? 27
29 Limitações de C Há um overhead na criação de tipos enumerados para cada módulo Para cada módulo é definido um tipo enumerado, mesmo que representem a mesma condição (EX.: Falta de memória) A associação entre as exceções descritas nos tipos enumerados e quais exceções que podem ser levantadas por uma função depende exclusivamente da especificação da função Difícil entender o acoplamento excepcional entre funções: quais exceções devem ser tratadas? Não há separação textual do código de tratamento de exceção Código torna-se rapidamente extenso, complexo e pouco compreensível 28
30 Linguagens contemporâneas Linguagens como Java, JavaScript, C++, C#, Python... provêem mecanismos de tratamento de exceções implementados na própria linguagem Elementos sintáticos específicos para tratamento de exceções: TRY define uma região protegida contra a ocorrência de exceções CATCH define um tratador, i.e., um trecho de código que implementa um conjunto de ações de recuperação FINALLY define um trecho de código que sempre será executado, mesmo quando exceções ocorrerem THROW sinaliza a ocorrência de uma exceção THROWS especifica na interface de um módulo / função quais as possíveis exceções que podem ser ocasionadas durante a execução daquele módulo / função 29
31 Acoplamento excepcional explícito Cláusula throws indica quais exceções podem ocorrer durante a execução de uma função void escrevearquivo(arquivo) throws FileNotFoundException, CharCodingException, PermissionException; 30
32 Sinalização explícita de exceções Cláusula throw sinaliza a ocorrência de uma exceção static void escrevearquivo(arquivo a) throws FileNotFoundException, CharCodingException, PermissionException { Buffer bf = buscaarquivo( a ); if( bf == null ) throw new FileNotFoundException(); 31
33 Melhor separação textual ARQ_tpCondRet learquivo(){ condret = OK; abrearquivo(); se( arquivoaberto() ){ determinetamanhoarquivo(); se( determinoutamanho() ){ aloquememoria(); se( alocoumemoria() ){ copiedados(); se(! copioudados() ){ condret = ERRO_COPIAR_DADOS; senão { condret = ERRO_ALOCAR_MEM; senão { condret = ERRO_DET_TAM; fechearquivo(); se(! fechouarquivo() ){ condret = ERRO_FECHAR_ARQ; senão { condret = ERRO_ABRIR_ARQ; learquivo(){ try{ abrearquivo(); determinetamanhoarquivo(); aloquememoria(); copiedados(); catch( abrirerro ){... catch( determinartamanhoerro ) {... catch( alocarmemoriaerro ) {... catch( copiardadoserro ) {... finally { try{ fechearquivo(); catch( fechararquivoerro ){... 32
34 Mecanismo para código de limpeza O código definido no bloco finally sempre será executado, seja após a terminação normal, ou após a terminação excepcional, de um bloco try Usado especialmente para liberação de recursos, como memória, arquivos abertos, conexões abertas, etc learquivo(){ try{ abrearquivo(); determinetamanhoarquivo(); aloquememoria(); copiedados(); catch( abrirerro ){... catch( determinartamanhoerro ) {... catch( alocarmemoriaerro ) {... catch( copiardadoserro ) {... finally { try{ fechearquivo(); catch( fechararquivoerro ){... 33
35 Linguagens contemporâneas Principais vantagens em relação a C: Redução do aninhamento de estruturas if-then-else Melhor separação textual entre o código que implementa a lógica da aplicação e o código que implementa o tratamento de exceções Também há uma clara distinção entre o encerramento normal de uma função ( comando return ) e o encerramento excepcional ( comando throw ) Tipos de exceção podem ser reutilizadas entre diferentes módulos Mecanismos que garantem a execução de determinados trechos de código tanto em situações normais, quanto em situações excepcionais Blocos finally Liberação de recursos 34
36 Linguagens contemporâneas Mesmo com os mecanismos de tratamento de exceções providos na própria linguagem, código de tratamento de exceções ainda é fonte de erros: Dificuldade em modificar métodos que tratam exceções Tratadores vazios (catch block vazio) Exceções não tratadas Erros no código de tratamento de exceções são de difícil diagnose Código pouco executado e pouco testado Implementar tratamento de exceções não é trivial e requer esforço extra dos desenvolvedores 35
37 Referência Cap. 8 do livro Programação Modular Leitura complementar: Tutorial sobre tratamento de exceções em Java exceptions/index.html Artigos Discovering Faults in Idiom-Based Exception Handling, Bruntink, M., van Deursen, A. and Tourwé, T. In Proceedings of 28th ICSE, Exception handling: a field study in Java and.net, Cabral, B. and Marques, P. In Proceedings of 21th ECOOP,
38 FIM
Aula 22 Tratamento de Exceções
Aula 22 Tratamento de Exceções Alessandro Garcia LES / DI / PUC-Rio Junho / 2016 Avisos Trabalho T4 enunciado completo está disponível: devem estar em andamento: conclusão da implementação do jogo agora:
Leia maisAula 17 Tratamento de Exceções e Assertivas
Aula 17 Tratamento de Exceções e Assertivas Alessandro Garcia LES / DI / PUC-Rio Novembro / 2016 Sumário Definições básicas Como se encerram as funções? Problema: e quando funções não encerram corretamente?
Leia maisEspecialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares
Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e
Leia mais1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br
PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisProgramação Estruturada e Orientada a Objetos. Tratamento de Exceções
Programação Estruturada e Orientada a Objetos Tratamento de Exceções 2013 O que veremos hoje? Introdução Tratamento de exceções Exercícios Transparências baseadas no material do Prof. Gilbert Azevedo Referencias
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisGuia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Leia maisSISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA
SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisAula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014
Aula 06 Introdução à Teste de Módulos II e Exercícios Alessandro Garcia LES/DI/PUC-Rio Março 2014 Princípios Discutidos até aqui Cada módulo deveria implementar uma única abstração similarmente: cada função
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisAplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:
Tratamento de Exceções Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Exceções Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Leia maisLP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br
LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Leia maisProf.: Roberto Franciscatto. Capítulo 1.1 Introdução
Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.1 Introdução Tipos de Sistemas Operacionais Sistemas Monoprogramáveis / Monotarefa Voltados tipicamente para a execução de um único programa.
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisCONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa
CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs
Leia maisINTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita
Leia maisIFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira
IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários
Leia maisManual do Desenvolvedor Criptografia de Arquivos do WebTA
Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2
Leia maisJava Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp
Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisO que é uma Exceção? Call Stack. Java Tratamento de Exceção. de métodos que foram usados até chegar na presente instrução.
Java Tratamento de Exceção O que é uma Exceção? n Uma exceção é um evento que ocorre durante a execução do programa que interrompe o fluxo normal de instruções. n Quando um erro acontece em um método,
Leia mais2 Diagrama de Caso de Uso
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa
Leia maisAlgoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 1 Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Linguagem a ser Utilizada? Nossa disciplina é de Algoritmos e Estrutura de Dados, e não de linguagem
Leia maisEscola Superior de Gestão e Tecnologia. Tratamento de Exceções
Escola Superior de Gestão e Tecnologia Tratamento de Exceções Objetivos Compreender como o tratamento de exceção e de erro funciona. Como u4lizar try, throw e catch para detectar, indicar e tratar exceções,
Leia maisOrientação a Objetos
Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.
Leia mais2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10
1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...
Leia maisSISTEMA GERENCIADOR DE BANCO DE DADOS
BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br SISTEMA GERENCIADOR
Leia maisNotas da Aula 15 - Fundamentos de Sistemas Operacionais
Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos
Leia maisMárcio Leandro Moraes Rodrigues. Frame Relay
Márcio Leandro Moraes Rodrigues Frame Relay Introdução O frame relay é uma tecnologia de chaveamento baseada em pacotes que foi desenvolvida visando exclusivamente a velocidade. Embora não confiável, principalmente
Leia mais9 Comandos condicionais
9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em
Leia maisLinguagens de Programação Aula 10
Linguagens de Programação Aula 10 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada As sentenças de controle das LP imperativas ocorrem em diversas categorias: seleção, seleção múltipla, iteração
Leia maisIntrodução a POO. Introdução a Linguagem C++ e POO
Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes
Leia maisTipos de Dados, Tipos Abstratos de Dados Estruturas de Dados
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação
Leia maisJava 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
Leia maisAnálises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Leia maisAcesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel
Acesso a Banco Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel As conexões em Java são feitas através de uma ponte que implementa todas as funcionalidades que um banco de dados padrão deve
Leia maisEngenharia de Software III
Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,
Leia maisDocumentação Usando o Javadoc
Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão 2.1 Última Atualização: 04/2005 1 Comentários e Documentação Comentários em Java Existem três tipos de comentários
Leia maisBANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando
Leia maisAspectos de Segurança em Programação com Java
Aspectos de Segurança em Programação com Java Marcos Alexandre de Melo Medeiros Paulo Sérgio Motta Pires Departamento de Engenharia de Computação e Automação DCA UFRN marcosam@info.ufrn.br, pmotta@dca.ufrn.br
Leia maisAs principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:
SGBD Características do Emprego de Bancos de Dados As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: Natureza autodescritiva
Leia maisMC102 Algoritmos e programação de computadores Aula 3: Variáveis
MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisUNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO
UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO Santa Maria, 01 de Novembro de 2013. Revisão aula passada Projeto de Arquitetura Decisões de projeto de Arquitetura
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Leia maisINF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15
INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números
Leia maisCONVENÇÃO DE CÓDIGO JAVA
CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2
Leia maisSISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as
Leia maisHoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.
BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Hoje é
Leia maisProcessamento da Informação Teoria. Algoritmos e Tipos de dados
Processamento da Informação Teoria Algoritmos e Tipos de dados Semana 01 Prof. Jesús P. Mena-Chalco 24/04/2013 (*) Slides adaptados das aulas do Prof. Harlen Costa Batagelo Algumas definições de algoritmo
Leia maisArquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Processo Profº Antonio Carlos dos S. Souza Estrutura do Processo Contexto de Software Contexto de Hardware Programa Espaço
Leia maisLinguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação
Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada
Leia mais2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}
2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II Exercício : Construtores são métodos especiais sem tipo de retorno (nem mesmo void) e de mesmo nome que a classe que são invocados quando da criação
Leia maisPrograma ConsoleRPN. PUC-Rio CIV 2802 - Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira
Programa ConsoleRPN Programa criado com o Visual Studio Community 2013 para efetuar operações algébricas entre números, uma calculadora funcionando com console usando RPN PUC-Rio CIV 2802 - Sistemas Gráficos
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente
Leia maisINTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO
INTRODUÇÃO 12. DOCUMENTAÇÃO Na plataforma Java SE 7, há cerca de 4000 classes e interfaces disponíveis para utilizarmos em nossas aplicações Podemos visualizar a documentação dessas classes e interfaces
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia mais15 a Aula Subprogramação /Subalgoritmos Função e Procedimento
FISP 1/6 15 a Aula Subprogramação /Subalgoritmos Função e Procedimento Objetivo: Simplificação e racionalização na elaboração de algoritmos mais complexos Recursos: Estruturação de algoritmos e modularização
Leia maisEstruturas de entrada e saída
capa Estruturas de entrada e saída - A linguagem C utiliza de algumas funções para tratamento de entrada e saída de dados. - A maioria dessas funções estão presentes na biblioteca . - As funções
Leia maisIntrodução a Computação
Introdução a Computação Aula 02 Introdução a Linguagem C Edirlei Soares de Lima Lógica de Programação Lógica de Programação é a técnica de criar sequências lógicas de ações para
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Leia maisAula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.
Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso
Leia maisUso do iptables como ferramenta de firewall.
Uso do iptables como ferramenta de firewall. Rafael Rodrigues de Souza rafael@tinfo.zzn.com Administração em Redes Linux Universidade Federal de Lavra UFLA RESUMO O artigo pretende abordar o uso de firewalls
Leia maisATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Leia maisRecursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.
Um recurso é ou um dispositivo físico (dedicado) do hardware, ou um conjunto de informações, que deve ser exclusivamente usado. A impressora é um recurso, pois é um dispositivo dedicado, devido ao fato
Leia maisProgramação Concorrente em java - Exercícios Práticos Abril 2004
Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente
Leia mais20 Caracteres - Tipo char
0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,
Leia maisIntroduçã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 maisProf. Esp. Adriano Carvalho
Prof. Esp. Adriano Carvalho O que é um Programa? Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais
Leia maisEspecificação do 3º Trabalho
Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,
Leia maisOs objetivos indicados aplicam-se a duas linguagens de programação: C e PHP
AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de
Leia maisMaterial de Apoio. SEB - Contas a Pagar. Versão Data Responsável Contato 1 05/12/2011 Paula Fidalgo paulaf@systemsadvisers.com
Material de Apoio SEB - Contas a Pagar Versão Data Responsável Contato 1 05/12/2011 Paula Fidalgo paulaf@systemsadvisers.com Conteúdo CONFIGURAÇÃO... 3 Cadastro de Fornecedores... 3 Métodos de Pagamento...
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Arquitetura Sistemas Operacionais Andreza Leite andreza.leite@univasf.edu.br Plano de Aula Sistemas monolíticos Sistemas em camadas Sistemas micro-núcleo Modelo Cliente-Servidor Máquinas
Leia maisGuia de Especificação de Caso de Uso Metodologia CELEPAR
Guia de Especificação de Caso de Uso Metodologia CELEPAR Agosto 2009 Sumário de Informações do Documento Documento: guiaespecificacaocasouso.odt Número de páginas: 10 Versão Data Mudanças Autor 1.0 09/10/2007
Leia mais4 Estrutura do Sistema Operacional. 4.1 - Kernel
1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,
Leia maisPython Funções. Introdução à Programação SI1
Python Funções Introdução à Programação SI1 Conteúdo Funções Conceitos Objetivos Modularização Exemplos Exercícios 2 Funções O que são? Qual a função de uma função? 3 Imagine o código 4 Imagine o código
Leia maisSistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes. www.edeyson.com.br
Sistemas Operacionais Estruturas de SO Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Estrutura do SO Chamadas ao Sistema Sistemas Monolíticos Sistemas em Camadas Sistemas Cliente-Servidor 2
Leia maisAlgoritmos e Linguagem de Programação I
Algoritmos e Linguagem de Programação I Roberto Ferreira roberto.ferreira@lapa.ifbaiano.edu.br 2014.1 Módulo I Aula 4 Introdução ao C Linguagem de Programação É um conjunto de regras sintáticas e semânticas
Leia maisReuso com Herança a e Composiçã
Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:
Leia maisSistemas Operacionais Gerência de Dispositivos
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com Introdução A gerência
Leia maisManual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:...
0 Conteúdo Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:... 4 1.2 Acesso através do teclado (digitando a matrícula):...
Leia mais4 Plano de Recuperação
4 Plano de Recuperação Como pode ser observado na Seção 3.2, um projeto de um middleware para TVD deve considerar o fato que ele será embarcado em plataformas diversas e, portanto, que fará uso de diversas
Leia maisPROGRAMANDO EM C# ORIENTADO A OBJETOS
PROGRAMANDO EM C# ORIENTADO A OBJETOS AGENDA MÓDULO 2 Domínio e Aplicação Objetos, Atributos e Métodos Classes em C# Criando Objetos em C# Referências em C# Manipulando Atributos Valores Padrão Exercícios
Leia maisProf. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.
Leia maisPONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:
Leia maisGeração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
Leia mais