2. Tipos Abstratos de Dados

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

Download "2. Tipos Abstratos de Dados"

Transcrição

1 2. Tipos Abstratos de Dados Um Tipo Abstrato de Dados especifica uma classe de dados definida pelo usuário em termos de suas propriedades abstratas Esta especificação do TAD descreve o comportamento de um objeto independentemente de sua implementação; unicamente através dessas propriedades abstratas Não há preocupação de como essas propriedades seriam implementadas numa linguagem de programação A forma usual de se especificar um tipo abstrato de dados é através de uma especificação algébrica, que em geral contém três partes: 1. Especificação sintática: define o nome do tipo, suas operações e o tipo dos argumentos das operações. Dizemos que define a assinatura ou interface do TAD 2. Especificação Semântica: contém um conjunto de equações algébricas, que descreve, independentemente de uma implementação específica, as propriedades das operações 3. Especificação das Restrições: estabelece as condições que devem ser satisfeitas antes e depois da aplicação das operações Vamos agora mostrar a especificação dos número naturais como um TAD. Definiremos os naturais Nat = {0, 1, 2, 3,...} com as operações teste de zero, soma e igualdade através da seguinte especificação ABSTRACT Nat sintaxe zero() Nat IsZero(Nat) Boolean Succ(Nat) Nat 1

2 4 Add(Nat, Nat) Nat 5 Eq(Nat, Nat) Boolean 6 semantic x, y Nat 6 IsZero(Zero)= true 7 IsZero(Succ(x))= false 8 Add(Zero, y)= y 9 Add(Succ(x),y)= Succ(Add(x, y)) 10 Eq(x, Zero)= if IsZero(x) then true else false 11 Eq(Zero, Succ(y))= false 12 Eq(Succ(x),Succ(y))= Eq(x, y) 13 restrictions end Zero é a função constante que significa não precisar de argumento de entrada e o seu resultado é o número natural zero, escrito Zero IsZero é a função booleana cujo resultado será verdadeiro ou falso, conforme o número do tipo Nat passado como parâmetro seja zero ou não Succ significa o sucessor do número passado como parâmetro Usando Zero e Succ podemos definir todos os números naturais como: 0 = Zero 1 = Succ(Zero) 2 = Succ(Succ(Zero)) 3 = Succ(Succ(Succ(Zero)))... As regras das linhas 8 e 9 nos mostram exatamente como funciona a operação de adição. Por exemplo, se queremos somar 2 com 3 teremos a seguinte seqüência de expressões: Add(Succ(Succ(Zero)),Succ(Succ(Succ(Zero)))) 2.2

3 que conforme a linha 9 será igual a Succ(Add(Succ(Zero),Succ(Succ(Succ(Zero))))) novamente, conforme a linha 9 será igual a Succ(Succ(Add(Zero, Succ(Succ(Succ(Zero)))))) e finalmente, conforme a linha 8 será igual a Succ(Succ(Succ(Succ(Succ(Zero))))) que corresponde ao natural 5. Obviamente que esta não é a maneira de implementar a adição e muito menos os naturais são definidos desta maneira numa linguagem de programação Na prática, representamos os naturais usando seqüências de bits que equivalem à estrutura de dados normalmente usada nos computadores (os bytes) O que deve ficar bem claro, contudo, é que a representação que escolhemos para um TAD na nossa linguagem de programação deve obedecer ao comportamento definido através da especificação algébrica 2.1. Representação de Tipos de Dados Vimos no Capítulo 1 um tipo como um conjunto de valores Esta visão é razoável para muitos propósitos, mas pode acarretar problemas quando se define um novo tipo em termos de tipos já existes Por exemplo, suponha que numa aplicação que estamos desenvolvendo precise de uma estrutura de dados com o comportamento de uma pilha. Seria interessante que a linguagem empregada suportasse um tipo predefinido chamado Pilha e que bastasse declarar uma variável deste tipo, do mesmo modo como fazemos quando declaramos um array. 2.3

4 Entretanto, a maioria das linguagem não oferece estas facilidades Para definir um novo tipo, em geral, usamos uma representação para seus valores, com base em valores de um tipo que já existe Muitas vezes esta representação tem propriedades não desejáveis! Exemplo: suponha que queremos definir um tipo cujos valores serão os números racionais, com operações aritméticas que são exatas. Na linguagem de programação ML, podemos escrever as seguintes declarações datatype rational = rat of (int * int); val zero = rat(0,1) and one = rat(1,1) fun op ++(rat(m 1,n 1 ): rational, rat(m 2,n 2 ): rational) = rat(m 1 *n 2 +m 2 *n 1,n 1 *n 2 ) Cada número racional é representado por um par de inteiros rotulado, onde o primeiro elemento é o numerador e o segundo o denominador 3 2 é representado por rat(3,2), mas também pode ser representado por rat(6,4), rat(9,6), rat(-3,-2), etc Os números racionais que estes pares rotulados supostamente representam são matematicamente iguais, mas os pares em si, são todos distintos Considere a seguinte comparação: if one ++ rat(1,2) = rat(6,4) then... else... mas rat(3,2) rat(6,4) Esta desigualdade é devida a representação escolhida, sendo uma propriedade (comportamento) indesejada, já que os números são matematicamente iguais!!! Outro comportamento indesejado é que não existe nada que previna um par rotulado como rat(0,0) ou rat(1,0), que não correspondem a qualquer número racional 2.4

5 O conjunto de valores do tipo definido anteriormente é Rational = { rat( m, n) m, n Integer} Idealmente queríamos definir o seguinte conjunto de valores { rat( m, n) m, n Integer; n>0; m e n sem fatores em comun } mas ML não tem um tipo com este conjunto de valores Deste modo, a definição dos números racionais em termos de um tipo existente é insatisfatório A seguir, mostraremos um resumo das dificuldades que podem surgir, em geral, quando nós representamos um tipo abstrato por outro tipo, o tipo concreto ou representacional: O tipo representacional pode ter valores que não correspondem a qualquer valor do tipo abstrato desejado O tipo representacional pode ter vários valores que correspondem a um mesmo valor no tipo abstrato desejado A menos que se use uma declaração de novo tipo, os valores do tipo abstrato desejado pode se confundir com valores do tipo representacional Deste modo, como implementar um TAD numa linguagem de programação, de modo que as propriedades indesejáveis do tipo representacional sejam suprimidas, com a implementação refletindo estritamente o comportamento do TAD? A chave para responder a esta pergunta será vista na seção seguinte 2.5

6 2.2. Independência de Representação Vimos que uma especificação abstrata (TAD) define o comportamento de um tipo de dado sem se preocupar com sua implementação Uma representação concreta (através de um tipo concreto ou representacional) nos diz como um TAD é implementado, como seus dados são colocados dentro do computador e como estes dados são manipulados por suas operações A chave para se conseguir verdadeiramente implementar tipos abstratos de dados é aplicar o conceito de Independência de Representação: Um programa deveria ser projetado de forma que a representação de um tipo de dado possa ser modificada sem que isto interfira no restante do programa A aplicação deste conceito é possível em linguagens de programação que suportem módulos Um módulo é qualquer unidade nomeada de um programa que pode ser implementada como uma entidade relativamente independente Tipicamente, um módulo é um grupo de vários componentes (tipos, variáveis, constantes, funções, procedimentos, etc) declarados com um propósito específico Dizemos que um módulo encapsula seus componentes Em geral, apenas uma pequena parte dos componentes de um módulo são visíveis externamente, são os componentes exportados pelo módulo Os demais componentes permanecem escondidos dentro do módulo, sendo usados apenas para ajudar na implementação dos componentes exportados Assim, um TAD pode ser implementado usando um módulo da seguinte maneira: 2.6

7 1. O nome do módulo é o nome do TAD 2. Apenas as operações da especificação abstrata são visíveis externamente ao módulo 3. A representação concreta do TAD e outros componentes auxiliares ficam ocultos dentro do módulo Uma característica importante da aplicação da independência da representação é que qualquer alteração na representação concreta, que não altere as propriedades abstratas do TAD definido, fica restrita à parte do módulo que é oculta, não afetando o resto do programa; De forma similar, uma mudança no programa, que usa as abstrações de dados, não afeta a exatidão do módulo que implementa o TAD 2.3. Exemplo de um TAD Vamos agora implementar os racionais como um TAD em ML abstype rational = rat of (int * int) with val zero = rat(0,1) and one = rat(1,1); fun op //(m: int, n: int) = if n <> 0 then rat(m, n) else (* error *) and op ++(rat(m 1,n 1 ): rational, rat(m 2,n 2 ): rational) = rat(m 1 *n 2 +m 2 *n 1,n 1 *n 2 ) end and op ==(rat(m 1,n 1 ): rational, rat(m 2,n 2 ): rational) = (m 1 *n 2 = m 2 *n 1 ) Esta declaração abstype implementa um TAD chamado rational através de um módulo que define os seguintes componentes: as constantes zero e one; as operações //, ++ e ==, que são os únicos componentes visíveis do módulo. 2.7

8 A representação concreta (pares de inteiros) escolhida para valores do novo tipo é oculta do usuário do tipo, bem como a implementação das funções O único meio para o usuário gerar valores do tipo rational é pela avaliação de expressões envolvendo as constantes zero e one e as funções //, ++. Estes valores só podem ser comparados chamando a função == Logo, o seguinte código trabalhará como deve: val h = 1//2;... if (one ++ h) == 6//4 then... else... Agora, não importa que um dado valor tenha várias representações possíveis, porque estas representações são ocultadas do usuário O que é importante é que apenas propriedades desejáveis dos valores são observáveis usando as operações associadas com o tipo abstrato Ex.: no exemplo anterior, a diferença entre as representações rat(3,2) e rat(6,4) não são observáveis, porque a função == as trata como iguais Em geral, uma implementação de um TAD deve prover operações de construção para compor (criar) valores do tipo abstrato e operações de destruição, para decompor estes valores No exemplo anterior, a função // é necessária para permitir que valores racionais sejam compostos. zero e one são também exemplos de operações de construção. Um possível destrutor seria fun float(rat(m, n): rational) = m/n; Implementações de TADs são similares aos tipos predefinidos, como os inteiros e booleanos. Por que? 2.8

Circuitos Aritméticos

Circuitos Aritméticos Circuitos Aritméticos Semi-Somador Quando queremos proceder à realização de uma soma em binário, utilizamos várias somas de dois bits para poderemos chegar ao resultado final da operação. Podemos, então,

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência a esse objeto. Os atributos são acessados pelo nome. No

Leia mais

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto; Módulo 7 UML Na disciplina de Estrutura de Sistemas de Informação, fizemos uma rápida passagem sobre a UML onde falamos da sua importância na modelagem dos sistemas de informação. Neste capítulo, nos aprofundaremos

Leia mais

ÁLGEBRA BOOLEANA- LÓGICA DIGITAL

ÁLGEBRA BOOLEANA- LÓGICA DIGITAL ÁLGEBRA BOOLEANA- LÓGICA DIGITAL LÓGICA DIGITAL Álgebra Booleana Fundamentação matemática para a lógica digital Portas Lógicas Bloco fundamental de construção de circuitos lógicos digitais Circuitos Combinatórios

Leia mais

Linguagens e Paradigmas de Programação

Linguagens e Paradigmas de Programação Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Linguagens e Paradigmas de Programação Professor: César Melo Slides baseados em materiais preparados pelo

Leia mais

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de Escola Secundária c/3º CE José Macedo Fragateiro Curso Profissional de Nível Secundário Componente Técnica Disciplina de Sistemas Digitais e Arquitectura de Computadores 2009/2010 Módulo 2: Álgebra e Lógica

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 6 Slide 1 Objetivos Descrever requisitos funcionais e não funcionais Explicar como os requisitos de software podem

Leia mais

Capítulo VI Circuitos Aritméticos

Capítulo VI Circuitos Aritméticos Capítulo VI Circuitos Aritméticos Introdução No capítulo anterior estudamos a soma e subtração de números binários. Neste capítulo estudaremos como as operações aritméticas de soma e subtração entre números

Leia mais

1.1. Definição do Problema

1.1. Definição do Problema 13 1 Introdução Uma das principais preocupações de área de engenharia de software diz respeito à reutilização [1]. Isso porque a reutilização no contexto de desenvolvimetno de software pode contribuir

Leia mais

POTENCIAÇÃO, RADICIAÇÃO E LOGARITMAÇÂO NOS NÚMEROS REAIS. Potenciação 1

POTENCIAÇÃO, RADICIAÇÃO E LOGARITMAÇÂO NOS NÚMEROS REAIS. Potenciação 1 POTENCIAÇÃO, RADICIAÇÃO E LOGARITMAÇÂO NOS NÚMEROS REAIS Potenciação 1 Neste texto, ao classificarmos diferentes casos de potenciação, vamos sempre supor que a base e o expoente sejam não nulos, pois já

Leia mais

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea BANCO DE DADOS Prof. Fabiano Taguchi http://fabianotaguchi.wordpress.com fabianotaguchi@hotmail.com SQL A Structed Query Language foi desenvolvida em 1974 nos laboratório da IBM em San José na Califórnia,

Leia mais

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I Variáveis Indexadas Pedro O.S. Vaz de Melo Por que índices são importantes? Como uma loja de sapatos artesanais deve guardar os seus produtos? 1 2 3 4 Tamanhos entre

Leia mais

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução Métodos de Programação I 2. 27 Ciclo com Contador : instrução for identificador downto for de variável := expressão to expressão do instrução UMA INSTRUÇÃO (SIMPLES OU COMPOSTA) Neste caso o ciclo é repetido

Leia mais

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA INFORMÁTICA BÁSICA Conceitos c++ Prof. Demétrios Coutinho C a m p u s P a u d o s F e r r o s D i s c i p l i n a d e O r g a n i z a ç ã o d e A l g o r i t m o s D e m e t r i o s. c o u t i n h o @

Leia mais

Sistemas Distribuídos Capítulo 4 - Aula 5

Sistemas Distribuídos Capítulo 4 - Aula 5 Sistemas Distribuídos Capítulo 4 - Aula 5 Aula Passada Clusters de Servidores Migração de Código Comunicação (Cap. 4) Aula de hoje Chamada de Procedimento Remoto - RPC Fundamentos 1 Chamada de Procedimento

Leia mais

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário! ALGORITMOS E ESTRUTURAS DE DADOS I DCC/UFMG Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário! Pedro O.S. Vaz de Melo May 29, 2013 1 DESCRIÇÃO DO PROBLEMA O objetivo deste trabalho

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS Material da Prof. Ana Eliza Dados e comandos, para serem processados, devem estar na memória do computador. Memória Definição:

Leia mais

Programação de Computadores I. Linguagem C Função

Programação de Computadores I. Linguagem C Função Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,

Leia mais

Processo de Desenvolvimento de Software

Processo de Desenvolvimento de Software Processo de Desenvolvimento de Software Programação Orientada a Objetos Prof. Francisco de Assis S. Santos, Dr. São José, 2015. Processo de Desenvolvimento de Software O desenvolvimento de software é uma

Leia mais

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Implementação de Processo e Threads O mecanismo básico para a criação de processos no UNIX é a chamada de sistema Fork(). A Figura a seguir ilustra como que o processo e implementado.

Leia mais

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo A UA UL LA Frações e números decimais Introdução Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos de um bolo se dividirmos esse bolo em cinco partes iguais e tomarmos

Leia mais

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão MC3305 Algoritmos e Estruturas de Dados II Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Custo de um algoritmo

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Programação Orientada a objetos Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do

Leia mais

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo A UA UL LA Frações e números decimais Introdução Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos de um bolo se dividirmos esse bolo em cinco partes iguais e tomarmos

Leia mais

Teste de Funções por Cobertura do Grafo de Fluxo de Controle

Teste de Funções por Cobertura do Grafo de Fluxo de Controle Teste de Funções por Cobertura do Grafo de Fluxo de Controle Programação II Universidade de Lisboa Faculdade de Ciências Departamento de Informática Licenciatura em Tecnologias da Informação Vasco Thudichum

Leia mais

Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?

Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro? Resumo. O uso de uma variável é necessário quando você não sabe ainda um valor ou uma função, ou seja, quando há uma situação de mudança que impede a determinação direta destes valores. Uma variável pode

Leia mais

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS MATEMÁTICA 8.º ANO PLANIFICAÇÃO GLOBAL 1. Representação, comparação e ordenação. Representar números racionais

Leia mais

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1 Paradigmas de Linguagens I 1 1.5.3.3. Tipos Abstratos de Dados Linguagens de programação modernas fornecem alguns tipos de dados elementares e várias maneiras de definir novos tipos a partir deles. A maneira

Leia mais

Tipos Abstratos de Dados (TAD)

Tipos Abstratos de Dados (TAD) Instituto de C Tipos Abstratos de Dados (TAD) Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Módulos e Compilação em separado

Leia mais

Qualidade de Produto. Maria Cláudia F. P. Emer

Qualidade de Produto. Maria Cláudia F. P. Emer Qualidade de Produto Maria Cláudia F. P. Emer Introdução Qualidade diretamente ligada ao produto final Controle de qualidade Adequação do produto nas fases finais no processo de produção Software Atividades

Leia mais

03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral.

03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral. 01. [Sebesta, 2000] Defina sintaxe e semântica. 02. [Sebesta, 2000] A quem se destinam as descrições de linguagem? 03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral. 04. [Sebesta,

Leia mais

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: fernandohs@ifsp.edu.br

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: fernandohs@ifsp.edu.br Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: fernandohs@ifsp.edu.br Sistemas de Arquivos- Parte 2 Pontos importantes de um sistema de arquivos Vários problemas importantes devem

Leia mais

CURSO DE MATEMÁTICA BÁSICA PROGRAMA DE EDUCAÇÃO TUTORIAL CENTRO DE ENGENHARIA DA MOBILIDADE

CURSO DE MATEMÁTICA BÁSICA PROGRAMA DE EDUCAÇÃO TUTORIAL CENTRO DE ENGENHARIA DA MOBILIDADE CURSO DE MATEMÁTICA BÁSICA Fatoração Equação do 1º Grau Equação do 2º Grau Aula 02: Fatoração Fatorar é transformar uma soma em um produto. Fator comum: Agrupamentos: Fatoração Quadrado Perfeito Fatoração

Leia mais

Estruturas de Repetição

Estruturas de Repetição Estruturas de Repetição Lista de Exercícios - 04 Algoritmos e Linguagens de Programação Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados

Leia mais

Curso de criação de componentes em Delphi

Curso de criação de componentes em Delphi Curso de criação de componentes em Delphi Unidade 2. Um pouco de Teoria Voltar ao índice Por Luis Roche O que são componentes? A biblioteca visual de componentes (VCL). Os componentes são a pedra angular

Leia mais

9. Tipos Abstratos de Dados

9. Tipos Abstratos de Dados 9. Tipos Abstratos de Dados R. Cerqueira, W. Celes e J.L. Rangel Neste capítulo, discutiremos uma importante técnica de programação baseada na definição de Tipos Abstratos de Dados (TAD). Veremos também

Leia mais

Módulo IV Programação Visual Basic. Programação

Módulo IV Programação Visual Basic. Programação Módulo IV Visual Basic 1 Vamos considerar os seguintes elementos e estruturas fundamentais que são habitualmente usados em programação: Tipos de Dados Operadores Atribuições Entrada e Saída de Dados Estruturas

Leia mais

Comandos de Desvio 1

Comandos de Desvio 1 Programação de Computadores I UFOP DECOM 2014 1 Aula prática 3 Comandos de Desvio 1 Sumário Resumo Nesta aula você irá resolver problemas que requerem uma decisão com base em um teste, ou condição. Para

Leia mais

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO SAD Sistemas de Apoio à Decisão 2011/02 Aula Cinco crishamawaki@yahoo.com.br Modelos de decisão Sistemas de

Leia mais

Em cada uma dessas frases, há uma quantidade indicada em forma de fração. Veja:

Em cada uma dessas frases, há uma quantidade indicada em forma de fração. Veja: MATEMÁTICA BÁSICA 4 Frações Leitura Três quartos da população do estado X recebe até um salário mínimo A herança será dividida, cabendo um sétimo do total a cada um dos herdeiros A parede será azulejada

Leia mais

Seqüências. George Darmiton da Cunha Cavalcanti CIn - UFPE

Seqüências. George Darmiton da Cunha Cavalcanti CIn - UFPE Seqüências George Darmiton da Cunha Cavalcanti CIn - UFPE Introdução Uma seqüência é uma estrutura discreta usada para representar listas ordenadas. Definição 1 Uma seqüência é uma função de um subconjunto

Leia mais

Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC 9126. Normas

Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC 9126. Normas Qualidade de Produto Maria Cláudia F.P. Emer Introdução z Qualidade diretamente ligada ao produto final z Controle de qualidade Adequação do produto nas fases finais no processo de produção z Software

Leia mais

Fundamentos de Arquitetura e Organização de Computadores

Fundamentos de Arquitetura e Organização de Computadores Fundamentos de Arquitetura e Organização de Computadores Dois conceitos fundamentais no estudo dos sistemas de computação são o de Arquitetura e Organização de computadores. O termo arquitetura refere-se

Leia mais

Potenciação e radiciação

Potenciação e radiciação Sequência didática para a sala de aula 6 MATEMÁTICA Unidade 1 Capítulo 6: (páginas 55 a 58 do livro) 1 Objetivos Associar a potenciação às situações que representam multiplicações de fatores iguais. Perceber

Leia mais

Gerenciamento de Integração. Prof. Anderson Valadares

Gerenciamento de Integração. Prof. Anderson Valadares Gerenciamento de Integração Prof. Anderson Valadares 1. Conceito A área de conhecimento em gerenciamento de integração do projeto inclui processos e as atividades necessárias para identificar, definir,

Leia mais

Montadores e Compiladores

Montadores e Compiladores Montadores e Compiladores Prof. Idevar Gonçalves de Souza Júnior Conteúdo Programático Resumido Revisão da Arquitetura de Computadores Introdução a Teoria das Linguagens Compilação e Interpretação Análise

Leia mais

EXERCÍCIOS PREPARATÓRIOS PARA AS DISCIPLINAS INTRODUTÓRIAS DA MATEMÁTICA

EXERCÍCIOS PREPARATÓRIOS PARA AS DISCIPLINAS INTRODUTÓRIAS DA MATEMÁTICA UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA UNIDADE ACADÊMICA DE MATEMÁTICA PROGRAMA DE EDUCAÇÃO TUTORIAL TUTOR: Prof. Dr. Daniel Cordeiro de Morais Filho BOLSISTA: Tiago Alves

Leia mais

FRAÇÃO Definição e Operações

FRAÇÃO Definição e Operações FRAÇÃO Definição e Operações DEFINIÇÃO: Fração é uma forma de se representar uma quantidade a partir de um valor, que é dividido por um determinado número de partes iguais. Como é que você representaria

Leia mais

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C 3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C 3.1. Compilação de um Programa C O compilador C realiza a compilação do código-fonte de um programa em cinco etapas: edição, pré-processamento, compilação,

Leia mais

TUTORIAL MATLAB Victor Breder 2016

TUTORIAL MATLAB Victor Breder 2016 TUTORIAL MATLAB Victor Breder 2016 1. INTERFACE A. Caminho de trabalho Mostra o caminho pasta raiz que será considerada para executar scripts e funções criados pelo usuário. B. Pasta de trabalho Mostra

Leia mais

PLANO DE ENSINO DE MATEMÁTICA 1ª SÉRIE DO ENSINO MÉDIO 1º BIMESTRE DIRETORIA DE ENSINO REGIÃO CAIEIRAS

PLANO DE ENSINO DE MATEMÁTICA 1ª SÉRIE DO ENSINO MÉDIO 1º BIMESTRE DIRETORIA DE ENSINO REGIÃO CAIEIRAS PLANO DE ENSINO DE MATEMÁTICA 1ª SÉRIE DO ENSINO MÉDIO 1º BIMESTRE 1-Conjuntos numéricos, regularidades numéricas e/ou geométricas ( conjuntos numéricos; seqüências numéricas e/ou geométricas; termo geral

Leia mais

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos Árvores Parte 1 Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos Árvores uma introdução As listas apresentadas na aula anterior formam um conjunto de TADs extremamente importante

Leia mais

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO ANO: 10.º Curso Profissional Técnico de Informática de Gestão Disciplina: Linguagens de Programação ANO LECTIVO: 2008/2009 p.1/13 Módulo 1 Algoritmia 1 - Introdução à Lógica de Programação Lógica Sequência

Leia mais

FRAÇÃO. Número de partes pintadas 3 e números de partes em foi dividida a figura 5

FRAÇÃO. Número de partes pintadas 3 e números de partes em foi dividida a figura 5 Termos de uma fração FRAÇÃO Para se representar uma fração através de figuras, devemos dividir a figura em partes iguais, em que o numerador representar a parte considera (pintada) e o denominador representar

Leia mais

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz Algoritmos e Programação : Conceitos e estruturas básicas Hudson Victoria Diniz Relembrando... Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar

Leia mais

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão Arquitetura TCP/IP Apresentado por: Ricardo Quintão Roteiro Conexões Inter-redes Serviço Universal Rede Virtual (inter-rede ou internet) Protocolos para ligação inter-redes (TCP/IP) Divisão em camadas

Leia mais

BANCO DE DADOS. Professor: André Dutton

BANCO DE DADOS. Professor: André Dutton BANCO DE DADOS Professor: André Dutton BASES TECNOLÓGICAS Conceito de bases de dados. Modelos conceituais de informações. Modelos de dados: relacional, de redes e hierárquicos. Introdução à teoria relacional:

Leia mais

Álgebra Linear AL. Luiza Amalia Pinto Cantão. Depto. de Engenharia Ambiental Universidade Estadual Paulista UNESP luiza@sorocaba.unesp.

Álgebra Linear AL. Luiza Amalia Pinto Cantão. Depto. de Engenharia Ambiental Universidade Estadual Paulista UNESP luiza@sorocaba.unesp. Álgebra Linear AL Luiza Amalia Pinto Cantão Depto. de Engenharia Ambiental Universidade Estadual Paulista UNESP luiza@sorocaba.unesp.br Sistemas Lienares 1 Sistemas e Matrizes 2 Operações Elementares e

Leia mais

Análise Léxica. Sumário

Análise Léxica. Sumário Análise Léxica Renato Ferreira Sumário Definição informal de Análise Léxica Identifica tokens numa string de entrada Alguns detalhes Lookahead Ambiguidade Especificação de Analisadores Léxicos Expressões

Leia mais

Algoritmos APRENDENDO A PROGRAMAR COM C#

Algoritmos APRENDENDO A PROGRAMAR COM C# Algoritmos APRENDENDO A PROGRAMAR COM C# Alô Mundo AULA 01 Conhecendo o ambiente O objetivo principal desse programa não é mostrar a mensagem Alo Mundo. O objetivo é apresentar o ambiente de desenvolvimento

Leia mais

Linguagens de Programação:

Linguagens de Programação: Capítulo I : Noções Gerais 11 Linguagens de Programação: Como comunicar com o computador? Linguagem Máquina: Conjunto básico de instruções, em código binário, características de cada computador, correspondentes

Leia mais

Determinantes. Matemática Prof. Mauricio José

Determinantes. Matemática Prof. Mauricio José Determinantes Matemática Prof. Mauricio José Determinantes Definição e Conceito Matriz de ordem 1 Dizemos que um determinante é um resultado (numérico) de operações que são realizadas em uma matriz quadrada.

Leia mais

BANCO DE DADOS I AULA 2. Willamys Araújo willamysaraujo7@gmail.com

BANCO DE DADOS I AULA 2. Willamys Araújo willamysaraujo7@gmail.com BANCO DE DADOS I AULA 2 Willamys Araújo willamysaraujo7@gmail.com Modelagem de Dados Modelagem de dados é o estudo das informações existentes em um contexto sob observação para a construção de um modelo

Leia mais

Variáveis Frequências Gráficos Medidas de Posição Medidas de Dispersão Medidas Complementares Inferência

Variáveis Frequências Gráficos Medidas de Posição Medidas de Dispersão Medidas Complementares Inferência Tipos de Variáveis Problema Motivador: Um pesquisador está interessado em fazer um levantamento sobre aspectos sócio-econômicos dos empregados da seção de orçamentos de uma companhia (vide tabela). Algumas

Leia mais

Análise de Sistemas de Controle no Espaço de Estados

Análise de Sistemas de Controle no Espaço de Estados Análise de Sistemas de Controle no Espaço de Estados 9.1 INTRODUÇÃO* (Capítulo 11 do Ogata) Um sistema moderno complexo pode ter muitas entradas e muitas saídas e elas podem ser interrelacionadas de maneira

Leia mais

Introdução a Funções

Introdução a Funções Introdução a Funções Funções Matemáticas função é uma relação de um ou vários valores de argumentos de entrada em um ÚNICO resultado de saída. y z Fig I f(x) = x 2 x = 2 f(x) = 4 x z = f(x,y) = x 2 +y

Leia mais

Método Simplex Revisado

Método Simplex Revisado Método Simplex Revisado Prof. Fernando Augusto Silva Marins Departamento de Produção Faculdade de Engenharia Campus de Guaratinguetá UNESP www.feg.unesp.br/~fmarins fmarins@feg.unesp.br Introdução Método

Leia mais

Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014

Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014 Sistemas Digitais II Interface com o mundo analógico Prof. Marlon Henrique Teixeira Abril/2014 Objetivos Compreender a teoria de funcionamento e as limitações dos circuitos de diversos tipos de conversores

Leia mais

Usando potências de 10

Usando potências de 10 Usando potências de 10 A UUL AL A Nesta aula, vamos ver que todo número positivo pode ser escrito como uma potência de base 10. Por exemplo, vamos aprender que o número 15 pode ser escrito como 10 1,176.

Leia mais

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela. 1. O que são classes? Dê exemplos. R.: Classe é um tipo abstrato de dados. Encapsula estrutura e comportamento. Ou seja: uma descrição de um conjunto de objetos que compartilham a mesma estrutura, os mesmos

Leia mais

Definição de determinantes de primeira e segunda ordens. Seja A uma matriz quadrada. Representa-se o determinante de A por det(a) ou A.

Definição de determinantes de primeira e segunda ordens. Seja A uma matriz quadrada. Representa-se o determinante de A por det(a) ou A. Determinantes A cada matriz quadrada de números reais, pode associar-se um número real, que se designa por determinante da matriz Definição de determinantes de primeira e segunda ordens Seja A uma matriz

Leia mais

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com Introdução à Programação Funções e Procedimentos Prof. José Honorato F. Nunes honoratonunes@gmail.com RESUMO DA AULA SUB-ROTINAS: Procedimentos Funções Escopo de variáveis Parâmetros Prof. José Honorato

Leia mais

Verificação e validação

Verificação e validação UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Verificação e validação Engenharia de Software 2o. Semestre de 2005

Leia mais

Algoritmo e Pseudo-código

Algoritmo e Pseudo-código Departamento de Sistemas de Computação Universidade de São Paulo Algoritmo e Pseudo-código Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br) Objetivos do Curso Desenvolver o Pensamento Computacional

Leia mais

Padrões de Projeto. Factory Method

Padrões de Projeto. Factory Method Padrões de Projeto Padrões de Criação Factory Method Prof. Eduardo N F Zagari Prof. Ivan Granja Factory Method Também conhecido como Construtor Virtual Em muitas aplicações OO, um objeto cliente precisa

Leia mais

TAD: Tipo Abstrato de Dados (parte 1)

TAD: Tipo Abstrato de Dados (parte 1) TAD: Tipo Abstrato de Dados (parte 1) SCC0502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo TADs e termos relacionados Termos relacionados, mas diferentes Tipo de dados Tipo abstrato de dados

Leia mais

=...= 1,0 = 1,00 = 1,000...

=...= 1,0 = 1,00 = 1,000... OPERAÇÕES COM NÚMEROS DECIMAIS EXATOS Os números decimais exatos correspondem a frações decimais. Por exemplo, o número 1,27 corresponde à fração127/100. 127 = 1,27 100 onde 1 representa a parte inteira

Leia mais

AF Não-determinísticos Equivalência entre AFND e AFD

AF Não-determinísticos Equivalência entre AFND e AFD AF Não-determinísticos Equivalência entre AFND e AFD 1 AF NÃO-Determinístico (AFND) Consideremos uma modificação no modelo do AFD para permitir zero, uma ou mais transições de um estado sobre o MESMO símbolo

Leia mais

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc. MANUAL DO USUÁRIO SIMPLEX Prof. Erico Fagundes Anicet Lisboa, M. Sc. erico@ericolisboa.eng.br Versão digital disponível na internet http://www.ericolisboa.eng.br RIO DE JANEIRO, RJ - BRASIL DEZEMBRO DE

Leia mais

OpenPDV: Sistema aberto para gerenciamento de restaurantes

OpenPDV: Sistema aberto para gerenciamento de restaurantes Universidade Federal de Santa Catarina Departamento de Informática e Estatística INE5638 Introdução a Projetos Orientador: José Eduardo de Lucca OpenPDV: Sistema aberto para gerenciamento de restaurantes

Leia mais

Avaliação e Desempenho Aula 1 - Simulação

Avaliação e Desempenho Aula 1 - Simulação Avaliação e Desempenho Aula 1 - Simulação Introdução à simulação Geração de números aleatórios Lei dos grandes números Geração de variáveis aleatórias O Ciclo de Modelagem Sistema real Criação do Modelo

Leia mais

As operações de adição, subtração e multiplicação são feitas de maneira natural, considerando-se o número complexo como um binômio.

As operações de adição, subtração e multiplicação são feitas de maneira natural, considerando-se o número complexo como um binômio. NÚMEROS COMPLEXOS Prof Eduardo Nagel. DEFINIÇÃO No conjunto dos números reais R, temos que a = a. a é sempre um número não negativo para todo a. Ou seja, não é possível extrair a rai quadrada de um número

Leia mais

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016 Aula 05 Instalação e Uso do Arcabouço Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016 Sumário Teste automatizado Instalação do arcabouço. Estrutura de diretórios do arcabouço. Como utilizar

Leia mais

Unidade 3 Função Afim

Unidade 3 Função Afim Unidade 3 Função Afim Definição Gráfico da Função Afim Tipos Especiais de Função Afim Valor e zero da Função Afim Gráfico definidos por uma ou mais sentenças Definição C ( x) = 10. x + Custo fixo 200 Custo

Leia mais

Planificação de Unidade TEMA II Introdução ao Cálculo Diferencial I. Funções Racionais. Taxa de Variação e Derivada.

Planificação de Unidade TEMA II Introdução ao Cálculo Diferencial I. Funções Racionais. Taxa de Variação e Derivada. Planificação Unida TEMA II Introdução ao Cálculo Diferencial I. Funções Racionais. Taxa Variação e Derivada. Conteúdos Objectivos Específicos Pré-Requisitos Avaliação Aulas Recursos - Estudo intuitivo

Leia mais

Compiladores II. Fabio Mascarenhas - 2016.2.

Compiladores II. Fabio Mascarenhas - 2016.2. Compiladores II Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/comp2 Objetivo Durante esse curso iremos revisitar as técnicas de implementação de linguagens de programação Veremos novas técnicas

Leia mais

Sistemas Digitais Ficha Prática Nº 7

Sistemas Digitais Ficha Prática Nº 7 Departamento de Sistemas Digitais Ficha Prática Nº 7 Implementação de um conversor analógico/ digital tipo Flash: com Codificador e com Descodificador Grupo: Turma: Elementos do Grupo: 1. Introdução Os

Leia mais

Seleção de Materiais. 1. Introdução. 1. Introdução

Seleção de Materiais. 1. Introdução. 1. Introdução Seleção Engenharia de Produção Faculdade de Engenharia de Bauru Grupo 8 Prof. Dr. Adilson Renófio 1. Introdução A SM é uma das principais tarefas do projeto, pois dela dependerá o sucesso do produto final

Leia mais

Vírgula flutuante Aula 6

Vírgula flutuante Aula 6 Vírgula flutuante Aula 6 17 de Março de 2005 1 Estrutura desta aula Números em vírgula flutuante Formatos dos números em vírgula fixa e em vírgula flutuante A norma IEEE 754 Normalizações, expoentes, zeros

Leia mais

Vamos imaginar que queremos projetar um jogo em que haja diferentes personagens:

Vamos imaginar que queremos projetar um jogo em que haja diferentes personagens: Interfaces Interfaces Interfaces padronizam como coisas, pessoas ou sistemas podem interagir Por exemplo, os controles de um rádio: interface entre o usuário e os componentes internos do rádio Interfaces

Leia mais

5 - Qual é a principal vantagem de desenvolvimento de código por pares:

5 - Qual é a principal vantagem de desenvolvimento de código por pares: 1 - Quais são os atributos essenciais de um bom software: a) Ser baseado numa boa linguagem de programação b) Fácil manutenção, segurança, eficiência e aceitabilidade c) Fácil manutenção e simplicidade

Leia mais

Projetando um Computador

Projetando um Computador Objetivo Projetando um Computador Parte II (2) Projetando um Computador Parte II Arquitetura do Processador BIP Apresentar as noções do funcionamento de um computador através da descrição da arquitetura

Leia mais

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float. 1 - Tipos de Dados em Java Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float. a. Boolean Um dado boolean poderá assumir somente dois valores: true

Leia mais

Exercícios: Vetores e Matrizes

Exercícios: Vetores e Matrizes Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Escreva um programa que leia 10 números

Leia mais

Objectos Gráficos 1. APROG (Civil) Aula 4. Friday, November 2, 12

Objectos Gráficos 1. APROG (Civil) Aula 4. Friday, November 2, 12 Objectos Gráficos 1 APROG () Aula 4 1 Objectos Gráficos Estes objectos são utilizados para construir interfaces gráficas permitindo uma interacção directa do macro com o utilizador. 2 2 Form Uma interface

Leia mais

Universidade dos Açores Curso de Especialização Tecnológica Gestão da Qualidade Matemática

Universidade dos Açores Curso de Especialização Tecnológica Gestão da Qualidade Matemática Universidade dos Açores Curso de Especialização Tecnológica Gestão da Qualidade Matemática Sinopse: Nesta disciplina são abordados conceitos básicos da teoria dos erros, funções e gráficos, derivadas,

Leia mais

Inversão de Matrizes

Inversão de Matrizes Inversão de Matrizes Prof. Márcio Nascimento Universidade Estadual Vale do Acaraú Centro de Ciências Exatas e Tecnologia Curso de Licenciatura em Matemática Disciplina: Álgebra Matricial - 2014.2 13 de

Leia mais

1 Teoria de conjuntos e lógica

1 Teoria de conjuntos e lógica 1 Teoria de conjuntos e lógica Estes breves apontamentos dizem respeito à parte do programa dedicada à teoria de conjuntos e à lógica matemática. Embora concebidos sem grandes formalismos e com poucas

Leia mais

Universidade Paulista

Universidade Paulista Universidade Paulista Ciência da Computação Sistemas de Informação Engenharia de Software Análise Estruturada Sergio Petersen 22/4/2012 Sumário 1. Técnicas de Análise 3 2. Principais Autores 3 3. Análise

Leia mais

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas. Introdução Software Básico Aula 3 Prof. Dr. Rogério Vargas http://rogerio.in Provocação Você já se perguntou como é que os programas que você escreve são traduzidos em instruções executáveis pelas estruturas

Leia mais