Meta-Programação com. Julia Lima. Agosto 2010
|
|
|
- Thalita Micaela Arruda Faro
- 9 Há anos
- Visualizações:
Transcrição
1 Meta-Programação com Templates Julia Lima Agosto 2010
2 O que é Meta-programação Desenvolver um programa que gera um outro programa Meta-programas A linguagem usada para criar um metaprograma permite a manipulação dos elementos simbólicos da linguagem na qual o programa resultante será descrito.
3 Meta-programação por Templates Meta-programação por Templates (Template Meta-programming, ou TMP) é o conjunto de técnicas de programação que utilizam o mecanismo de instanciação de templates com o objetivo de prover capacidade de metaprogramação a uma linguagem de programação. C++ é a principal linguagem de desenvolvimento de TMP
4 Os primórdios Todd Veldhuizen lançou as bases para aplicações práticas utilizando TMP e demonstrou que o mecanismo de instanciação de templates da linguagem C++ é uma linguagem de poder computacional equivalente a qualquer outra linguagem de programação de uso geral.
5 Padronização de TMP Algumas técnicas de TMP estão sendo consideradas pelo comitê de padronização ISO/IEC para as próximas versões da biblioteca padrão de C++
6 Um exemplo clássico #include <iostream> using namespace std; template<int N> struct Fact { enum { value = N * Fact<N-1>::value }; }; template<> struct Fact<1> { enum { value = 1 }; }; int main() { int result = Fact<3>::value; cout << "Resultado: " << result << endl; } int Example = Fact<3>::value; int Example = 3 * Fact<2>::value; int Example = 3 * 2 * Fact<1>::value; int Example = 3 * 2 * 1; int Example = 6;
7 Características da TMP Um meta-programa é avaliado em tempo de compilação Um meta-programa é composto basicamente de elementos estáticos da linguagem como definições de tipos (class, struct, union, typedef, enum), funções livres, funções e variáveis membro estáticas.
8 Características da TMP Programação Funcional o conceito de mudança de estado no qual a programação imperativa se baseia não é compatível com a natureza estática da TMP na programação funcional, um programa é concebido como um grupo de declarações, que relacionam entradas às saídas específicas as técnicas e algoritmos usados em TMP são baseados principalmente em técnicas e algoritmos usados em linguagens funcionais.
9 Características da TMP Code Bloat (ou código inchado) cada instância de um template gera um tipo de dados, com sua implementação diferente de outras instâncias do mesmo template Para prevenir ou reduzir o Code Bloat, as estruturas usadas em TMP devem ser desprovidas de conteúdo dinâmico, o quanto possível, contendo somente elementos que não geram código executável ou consomem espaço de armazenamento em tempo de execução Exs: tipos definidos (typedef), enumerações (enum) e funções inline
10 Características da TMP Dependência do Compilador Técnicas de TMP tendem a levar o compilador ao limite e podem não ser suportadas por compiladores com baixo grau de aderência ao padrão.
11 Recursos da Linguagem usados em TMP Templates Referência para Parâmetro de Template Especialização de Templates Funções Inline
12 Técnicas de TMP: Bases Base É um template que armazena referências para seus parâmetros, criando uma entidade identificável dentro do meta-programa, capaz de armazenar informações para uso futuro. template<typename T> struct Type { typedef T type; }; template<typename T, T V> struct Value { enum { value = V }; }; template<int V> struct Int : Value<int,V> {};
13 Técnicas de TMP: Bases Sem TMP: enum Tasks { A, B, C }; void foo(tasks t) { switch(t) { case A: /* Tarefa A */; break; case B: /* Tarefa B */; break; case C: /* Tarefa C */; break; } }; foo(a); Usando TMP: void foo(value<tasks, A>) { /* Tarefa A */ }; void foo(value<tasks, B>) { /* Tarefa B */ }; void foo(value<tasks, C>) { /* Tarefa C */ }; foo(value<tasks, A>());
14 Técnicas de TMP: Meta-Funções Meta-funções Meta-funções são templates contendo expressões e construções que são avaliadas durante o processo de instanciação e cujo resultado é guardado em uma Base template<int V> struct Times2 : Int<2*V> {}; template<int V> struct Times2 { enum { value = 2 * V }; };
15 Técnicas de TMP: Wrappers Wrappers Bases e meta-funções que encapsulam dados nativos e suas operações typedef Value<bool,true> True; typedef Value<bool,false> False; template<typename B> struct Not : Value<bool,!B::value> {}; template<typename LHS, typename RHS> struct And : Value<bool, LHS::value && RHS::value> {}; template<typename LHS, typename RHS> struct Or : Value<bool, LHS::value RHS::value> {};
16 Técnicas de TMP: Type Traits Type Traits Obter e manipular informações sobre um tipo Usa especialização de templates template<typename T> struct IsNil : False {}; template<> struct IsNil<Nil> : True {}; template<typename T1, typename T2> struct IsEq : False {}; template<typename T> struct IsEq<T,T> : True {}; template<typename T> struct IsConst : False, Type<T> {}; template<typename T> struct IsConst<const T> : True {}; template<typename T> struct IsPtr : False, Type<T> {}; template<typename T> struct IsPtr<T*> : True, Type<T> {};
17 Técnicas de TMP: Meta Ifs Meta Ifs Uso de seleções do tipo if-then-else em metaprogramas. Usa especialização parcial de templates template<bool B, typename Then, typename Else> struct If : Type<Then> {}; template<typename Then, typename Else> struct If<false,Then,Else> : Type<Else> {};
18 Técnicas de TMP: Meta Ifs template<typename T> struct DeepCopy { static inline void apply(container<t>& src, Container<T>& dst) {...} }; template<typename T> struct ShallowCopy { static inline void apply(container<t>& src, Container<T>& dst) {...} }; template<typename T> class Container {... void copy(container<t>& that) { If< And< IsConst<T>, Or< IsPtr<T>, IsRef<T> > >::value, ShalowCopy, DeepCopy >::type::apply(that, *this); }... };
19 Técnicas de TMP: Lista Encadeada Lista Encadeada estrutura de dados do tipo lista encadeada para tipos template<typename T, typename N=Nil> struct LI : Type<T> { } typedef N next; typedef LI<signed char, LI<short, LI<long > > > Integers
20 Técnicas de TMP: Lista Encadeada Sem TMP: void foo() { TimeLog::begin(); Module1::exec(); TimeLog::end(); TimeLog::begin(); Module2::exec(); TimeLog::end(); //... TimeLog::begin(); ModuleN::exec(); TimeLog::end(); };
21 Técnicas de TMP: Lista Encadeada Com TMP: template<typename T> struct Foo { static inline void exec() { TimeLog::begin(); T::type::exec(); TimeLog::end(); Foo<typename T::next>::exec(); }; }; template<> struct Foo<Nil> { static inline void exec() {}; }; typedef Foo< LI<Module1, LI<Module2,... LI<ModuleN>...> > > myfoo; myfoo::exec()
22 Conclusões TMP é um recurso poderoso Eficiência Flexibilidade Menor quantidade de linha de código Não é simples! Exige um nível de abstração do compilador Estilo de programação funcional Difícil de entender
ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes
ITENS FUNDAMENTAIS Profª Angélica da Silva Nunes CONCEITOS BÁSICOS Hardware - é a parte física do computador, tais como: teclado, monitor de vídeo, etc. Software - são os programas e aplicativos que permitem
Introdução à Programação com Classes em C++
1 FEUP/LEEC/AED/2001-2002 Introdução à Programação com Classes em C++ João Pascoal Faria http://www.fe.up.pt/~jpf FEUP/LEEC/AED/ 2000-2001 Conceito de classe em C++ 2 Classe em sentido lato: tipo de dados
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática
INTRODUÇÃ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
Templates. Introdução. Motivação. Thiago Rosso Adams
Templates Thiago Rosso Adams http://www.thradams.com [email protected] Introdução Apesar de toda biblioteca padrão usar templates, muitas pessoas ainda têm uma visão muito superficial sobre este assunto,
INFORMÁTICA E COMPUTAÇÃO CMP 1060 CONTROLE DE FLUXO ESTRUTURA CONDICIONAL 1
INFORMÁTICA E COMPUTAÇÃO CMP 1060 CONTROLE DE FLUXO ESTRUTURA CONDICIONAL 1 Os programas que vimos até agora têm a seguinte estrutura: main( ) declarações instrução 1 instrução 2 instrução 3... instrução
Prof. Jhonatan Fernando
Prof. Jhonatan Fernando Métodos Programação OO Instâncias de variáveis (objetos) Mensagens Classes Herança Polimorfismo Encapsulamento Abstração Programação Estruturada Procedimentos e funções Variáveis
Algoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti
O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados
Aula 1 Tipo Abstrato de Dados O que é um algoritmo? Luiz Chaimowicz e Raquel O. Prates Livro Projeto de Algoritmos Capítulo 1 O que é um programa? 2009-1 Algoritmos Sequência de ações executáveis para
Tipo de Dados em Linguagem C
Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa
Programação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 4 Aluno que não sabe programar int main() { cout
Fundamentos de Programação Linguagem C++ Entrada e saída com arquivos
Fundamentos de Programação Linguagem C++ Entrada e saída com arquivos Prof.: Bruno E. G. Gomes IFRN 1 Introdução Entrada e saída de dados pode ser feita: Para dispositivo de entrada/saída (monitor, impressora,
Tipo Abstrato de Dados
Tipo Abstrato de Dados David Menotti Algoritmos e Estruturas de Dados II DInf - UFPR Qual a diferença entre um algoritmo e um programa? Algoritmos e Estruturas de Dados Algoritmo: Sequência de ações executáveis
Programação Estruturada I
Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 [email protected] 2 [email protected] Última Atualização:
Computação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,
Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider
Aula 8- Standard Template Library Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider STL Motivação... int int_array = 5; char **vetor = new char*[int_array]; for(int
Linguagem 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
Programando em C++ Histórico da Linguagem C
Programando em C++ Joaquim Quinteiro Uchôa [email protected] DCC-UFLA, 2002 Programando em C++ p.1/38 Histórico da Linguagem C Linguagem C: 1972 - Laboratório Bells, por Dennis Ritchie, a partir da linguagem
INTRODUÇÃO À LINGUAGEM C++
INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano 2012-1
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano 2012-1 Objetivos Entender o mecanismo de um programa em C/C++ Apresentar e estrutura da Linguagem C/C++
Algoritmo e Técnica de Programação - Linguagem C
Algoritmo e Técnica de Programação Linguagem C Gilbran Silva de Andrade 5 de junho de 2008 Introdução A liguagem C foi inventada e implementada por Dennis Ritchie em um DEC PDP-11 que utilizava o sistema
O COMPUTADOR. Introdução à Computação
O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:
Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java
Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java 1 Objetivo: O aluno deverá adquirir capacidades e habilidades
Linguagem 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
Algoritmos e Técnicas de
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Algoritmos e Técnicas de Programação Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected]
Estruturas de Dados Aula 15: Árvores 17/05/2011
Estruturas de Dados Aula 15: Árvores 17/05/2011 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo
Princípios de programação em Linguagem C++
Universidade Federal de Santa Maria Departamento de Eletrônica e Computação Prof. Cesar Tadeu Pozzer Princípios de programação em Linguagem C++ 1 Introdução A Linguagem C++ é uma extensão da linguagem
Trabalho 3: Agenda de Tarefas
INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO
Curso: Engenharia de Computação e Ciência da Computação Data: 10/09/2013 Disciplina: Programação Estruturada Valor: 3,0 pontos Professor: Henrique Monteiro Cristovão Nota: Aluno: Prova resolvida 4ª Prova
CONCEITOS 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
cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).
Cast (conversão) Um tipo de dado pode ser convertido momentaneamente em outro tipo com um cast. Em linguagem C a sintaxe usada é formada pelo tipo desejado entre parênteses precedendo a expressão a ser
Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador
Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor
Conceito de classe em C++
Introdução à Programação com Classes em C++ Ana Paula Rocha, Luís Paulo Reis, João Pascoal Faria FEUP - MIEEC Programação 2-2008/2009 Conceito de classe em C++ Classe em sentido lato: tipo de dados definido
Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo [email protected].
Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo [email protected] Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração
Programação de Computadores Primeiros Passos Práticos em C++
Programação de Computadores Primeiros Passos Práticos em C++ Alan de Freitas! Marco Antonio Carvalho Compilação de Programas O compilador é o responsável por transformar nosso código em um programa propriamente
Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto
Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B,
Introdução à Programação. Programação Imperativa (Registros X Classes e Métodos Nativos )
Introdução à Programação Programação Imperativa (Registros X Classes e Métodos Nativos ) Tópicos da Aula Hoje aprenderemos como podemos modelar algo parecido com classes em linguagens imperativas Tipos
9 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
GERADOR DE DOCUMENTAÇÃO PARA LINGUAGEM C, UTILIZANDO TEMPLATES. Acadêmico: Vilmar Orsi Orientadora: Joyce Martins
GERADOR DE DOCUMENTAÇÃO PARA LINGUAGEM C, UTILIZANDO TEMPLATES Acadêmico: Vilmar Orsi Orientadora: Joyce Martins Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento do trabalho
Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.
Programação Funcional Aula 5 Funções Recursivas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/39 1 Funções recursivas 2 Recursividade mútua 3 Recursividade
/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/
========================TDA.H #include "info.h" #define TRUE 1 #define FALSE 0 #define INI_LISTA 1 #define OK 1; #define NOK -1; typedef struct nolista{ info dados; struct nolista *prox; struct nolista
Variáveis e Comandos de Atribuição
BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l
Introduçã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
Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEE UFPB
Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEFINIDOS PELO USUÁRIO Prof. Protásio DEE UFPB 1 Estruturas É uma coleção de variáveis que são referenciadas sob um único nome. Uma estrutura fornece
LINGUAGEM C. Estrutura básica de um programa
LINGUAGEM C Estrutura básica de um programa Um programa em linguagem C é constituído por uma sequência de funções (módulos) que em conjunto irão permitir resolver o problema proposto. Estas funções contêm
Programação: Estruturas de seleção
Programação de Computadores I Aula 07 Programação: Estruturas de seleção José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/53 Valores booleanos Os valores booleanos
2. Constantes e Variáveis
2. Constantes e Variáveis Neste capitulo veremos como os dados constantes e variáveis são manipulados pela linguagem C. O que são constantes inteiras, reais, caracteres e strings. Quais são as regras de
Introdução à linguagem de programação C++ Tulio Marcus R. Calixto Centro de Informática de Ribeirão Preto
Introdução à linguagem de programação C++ Tulio Marcus R. Calixto Centro de Informática de Ribeirão Preto Estrutura de um programa // my first program in C++ #include using namespace std; int
String em C++ Verificando o tamanho da string
String em C++ Uma das formas de se manipular cadeias de caracteres, também chamadas de strings em C+ + é armazená-las como vetores de char. Esta é a forma tradicional utilizada pela linguagem C. Então,
Hashing (Tabela de Dispersão)
Hashing (Tabela de Dispersão) Motivação! Os métodos de pesquisa vistos até agora buscam informações armazenadas com base na comparação de suas chaves.! Para obtermos algoritmos eficientes, armazenamos
Manual do Usuário - JIDOSHA
Manual do Usuário - JIDOSHA Biblioteca de Software para Reconhecimento Automático de Placas Veiculares Versão 1.5.18 Última atualização: 2015/07 1 Visão Geral 1.1 Condições Gerais 1.2 Licença de software
Pilhas. Profa Morganna Diniz
Pilhas Profa Morganna Diniz Pilhas Geralmente pilhas são úteis em situações em que dados devem ser recuperados em ordem inversa a do armazenamento É uma estrutura de dados linear que permite acesso por
Linguagem de Programação C
ICMC USP Linguagem de Programação C Aula: Funções em C Prof Alneu de Andrade Lopes MODULARIZAÇÃO Um problema complexo é melhor abordado se for dividido primeiramente em vários subproblemas MODULARIZAÇÃO
Sumário. Parte I Filosofia e Modelagem Orientada a Objetos... 23
Sumário Prefácio... 17 Sobre o livro... 18 Como fazer download dos arquivos-fonte... 19 Como ler este livro... 19 Experiência do autor... 21 Parte I Filosofia e Modelagem Orientada a Objetos... 23 Capítulo
Tipos 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
Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.
Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java
Aula 1 Tipo Abstrato de Dados
Aula 1 Tipo Abstrato de Dados Luiz Chaimowicz e Raquel O. Prates Livro Projeto de Algoritmos Capítulo 1 2009-1 O que é um algoritmo? O que é um programa? Algoritmos Sequência de ações executáveis para
Programação Orientada a Objetos C++
Programação Orientada a Objetos em C++ Sumário Histórico Comparação com Java Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Histórico Desenvolvido por Bjarne Stroustrup dos Bell Labs
Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:
Estruturas de Dados Pilhas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: disponíveis em http://ww3.datastructures.net/ cedidos
MC102 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,
10/02/2015. Introdução. Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Algoritmos e Lógica de Programação
Introdução Algoritmos e Lógica de Programação Tipos de dados Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Informações a serem processadas pelo computador. Consideremos
Linguagens de Programação
68 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas instruem o computador a realizar
AULA 1: PARADIGMAS DE PROGRAMAÇÃO
1 AULA 1: PARADIGMAS DE PROGRAMAÇÃO Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Ementa 2 Programação Imperativa. Programação Paralela e Concorrente. Programação Lógica. Programação Funcional.
ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.
Plano de estudo: -. - Atribuindo valores às variáveis. - Expressões Na maioria das vezes, precisamos armazenar dados para manipulá-los. Por exemplo, em um escritório de contabilidade, armazenamos os dados
Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN
Fundamentos de Programação Linguagem C++ Introdução, identificadores, tipos de dados Prof. Bruno E. G. Gomes IFRN 1 Linguagem de Programação Constituída por símbolos e por regras para combinar esses símbolos
Estrutura Condicional C++
Estrutura Condicional C++ Resumo3 Profª. Ivre Marjorie R. Machado Estrutura Condicional Na estrutura sequencial, todos os comandos são executados independente de qualquer coisa/condição Usando a estrutura
Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora
Guia de Consulta Rápida C++ STL Joel Saade Novatec Editora Guia de Consulta Rápida C++ STL de Joel Saade Copyright 2006 da Novatec Editora Ltda. Todos os direitos reservados. É proibida a reprodução desta
E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética
2 PARADIGMA IMPERATIVO 2.1 CONCEITO As linguagens que pertencem ao paradigma imperativo tomam por base a perspectiva da máquina. Ou seja, no modo como o computador executa programas em linguagem de máquina.
Linguagem de Programação III
Clique para editar o estilo do subtítulo mestre Linguagem de Programação III Histórico Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Comparação com Java Histórico Desenvolvido por
INF 1007 Programação II
INF 1007 Programação II Aula 08 Busca em Vetor Edirlei Soares de Lima Busca em Vetor Problema: Entrada: vetor v com n elementos; elemento d a procurar; Saída: m se o elemento procurado
ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.
PROGRAMAÇÃ ÇÃO COM OBJECTOS TUDO É UM OBJECTO Programação com Objectos ÍNDICE Introdução aos objectos Polimorfismo TUDO É UM OBJECTO Interface e classes internas Instruções de controlo Guardar os objectos
Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3
Algoritmos e Estruturas de Dados I Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Laboratório de AEDS 1 Aula 01 Linguagens de Programação Cada linguagem de programação obedece
Operadores unários de incremento/decremento. Ciclo for
Sumário Operadores unários de incremento/decremento Ciclo for Fernando Mira da Silva 1 Operadores unários de incremento/decremento O incremento/decremento unitário de uma variável é uma operação tão frequente
Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I
Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento
Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações
Algoritmo Iterativo Fernando Cardeal Parece com o processo de seguir uma estrada: Como chegar à estrada? Como se manter na estrada? Como saber que chegou ao destino para sair da estrada? Como fazer tudo
Programação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2 Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante Memória do computador
Programação em C++: Introdução
Programação em C++: Introdução J. Barbosa J. Tavares Visualização Científica Conceitos básicos de programação Algoritmo Conjunto finito de regras sobre as quais se pode dar execução a um dado processo
Introdução à Programação Orientada a Objetos com C++ Antonio Mendes da Silva Filho
Introdução à Programação Orientada a Objetos com C++ Antonio Mendes da Silva Filho introd_00.indd 1 12/4/2010 10:30:04 Preencha a ficha de cadastro no final deste livro e receba gratuitamente informações
Estrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como
Simulado de Algoritmos - Respostas
Simulado de Algoritmos - Respostas 1. Descreva o processo de criação de programas, desde o entendimento do problema até a obtenção do resultado esperado, por meio de sua execução, citando os passos a serem
Programação: Tipos, Variáveis e Expressões
Programação de Computadores I Aula 05 Programação: Tipos, Variáveis e Expressões José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/56 Valores Valor é uma entidade
Linguagem C Funções definidas pelo usuário. Lógica de Programação
Linguagem C Funções definidas pelo usuário Lógica de Programação Caro(a) aluno(a), Trabalharemos agora com as funções criadas por vocês na Linguagem C. Bom trabalho!!! Funções C permite que o programador
Linguagem de Programação I. Orientação a Objetos em Java
Linguagem de Programação I Orientação a Objetos em Java Roteiro Introdução Classes e Objetos Declaração de Classes e Instanciação de um Objeto de uma Classe Declarando métodos com parâmetros Atributos,
Um Exemplo de Refatoração. Prof. Alberto Costa Neto DComp/UFS [email protected]
Um Exemplo de Refatoração Prof. Alberto Costa Neto DComp/UFS [email protected] Exemplo Programa para calcular e imprimir o valor devido por um cliente de uma vídeo locadora Filme códigopreço:int 1 * * 1 Locação
Registros. Técnicas de Programação. Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes
Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes Registros Técnicas de Programação Baseado no material do Prof. Rafael Vargas Mesquita Conceito de Registro (Struct) Vetores e Matrizes
INF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um
Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case
Estrutura switch. O comando if-else e o comando switch são os dois comandos de tomada de decisão. Sem dúvida alguma o mais importante dos dois é o if, mas o comando switch tem aplicações valiosas. Sua
Filas: conceitos e implementações
Estrutura de Dados I Filas: conceitos e implementações Cesar Rocha [email protected] 1 Objetivos Explorar os conceitos fundamentais acerca do uso de filas utilizando a linguagem C Organização e implementação,
GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios
CURSO - TADS TURMA 2008.1 2 PERÍODO 3 MÓDULO AVALIAÇÃO MP2 DATA 02/10/2008 SISTEMAS OPERACIONAIS 2008/2 GABARITO COMENTADO SISTEMAS OPERACIONAIS PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida,
Estruturas compostas
Estruturas compostas Estruturas são um tipo de dados definido pelo programador, capaz de armazenar, sob um msmo nome de variável, diversos dados inter-relacionados e possivelmente de tipos diferentes.
Técnicas de Programação I
Técnicas de Programação I Conceitos básicos C/C++ Material baseado nas aulas da Profa. Isabel Harb Manssour http://www.inf.pucrs.br/~manssour/laproi, entre outros materias Registros e Arquivos Conceito
Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.
Resumo da última aula Compiladores Análise semântica Verificação de tipos 1 Implementação: Esquemas S-atribuídos: Mecanismo bottom-up direto Esquemas L-atribuídos: Mecanismo top-down: Necessita gramática
A linguagem C oferece quatro estruturas de decisão: if, if-else, switch e o operador condicional.
Capítulo 3 Comandos de Decisão A linguagem C oferece quatro estruturas de decisão: if, if-, switch e o operador condicional. O comando if O comando if instrui o computador a tomar uma decisão simples.
Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença
C++ Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença Primeiro Programa //Primeiro Programa C++ #include int main() { std::cout
Tipos de Dados Simples
Programação 11543: Engenharia Informática 6638: Tecnologias e Sistemas de Informação Cap. 3 Tipos de Dados Simples Tipos de Dados Simples Objectivos: Hierarquia de tipos de dados Tipos de dados simples
