Trabalho de Programação Funcional Linguagem Scheme
|
|
|
- Marina di Castro Barroso
- 8 Há anos
- Visualizações:
Transcrição
1 Trabalho de Programação Funcional Linguagem Scheme Fábio Davanzo F. de Oliveira, Daniel C. Santos Bacharelado em Ciências da Computação quarta fase, 2002 Departamento de Informatica e Estatística (INE) Universidade Federal de Santa Catarina (UFSC), Brasil, Fone (48) , (48) [email protected], [email protected] Resumo Pretendemos com esse artigo demonstrar os principais tópicos da Programação Funcional e da linguagem Scheme descrevendo seus conceitos básicos, Estruturas dos programas, Expressões, Recursão, (Duplas (pares), listas e símbolos), Procedimentos Padrão e por fim demonstraremos alguns exemplos. Palavras-chave: Scheme, LISP, Expressões, Recursão e Linguagem Funcional. Abstract We pretended with this article demonstrate the main topics about Funcional Program and Scheme linguage describing its basics concepts, programm estrutures, expressions, (double(pair),lists and symbols), standard procedure, and finally some examples. Key-words: Scheme, LISP, Expressions, Recursion and Functional Linguage Introdução Scheme[1,2,3] é um linguagem funcional que foi criada a partir de LISP. Diferentemente de LISP, Scheme é mais simples e fácil de aprender por conter um pequeno grupo de regras e ter a possibilidade de fazer composições dessas regras. Diferentemente das outras linguagens, Scheme utiliza um inovado sistema de recursão denominado "cauda-recursão" o qual considera a recursão como apenas uma chamada de procedimentos sem retorno, passando apenas parâmetros; podendo utilizar uma única área de memória para isso. A linguagem foi inicialmente criada para fins industriais, uma vez que é fácil de aprender e extremamente poderosa. Neste artigo abordaremos os seguintes tópicos[1]: Historico, Conceitos básicos, Estruturas dos programas, Expressões, Recursão, (Duplas (pares), listas e símbolos), Procedimentos Padrão e Exemplos. Histórico 1975: A primeira descrição do Scheme, [Scheme 75]; 1978: Relatório revisado [Scheme 78], descrevendo a evolução da linguagem e posterior implementação a partir do inovado compilador [Rabbit] na MIT; 1981 a 1982: Três projetos distintos utilizando variações do Scheme para cursos na MIT [Rees82], Yale [MITScheme], Indiana University [Scheme311]; 1984 : Um livro texto de introdução a ciência da computação foi publicado [SICP]. Como o Scheme começou a se espalhar, dialetos locais começaram a surgir, havendo divergências de implementação entre um lugar e outro. Para sanar os problemas e padronizar a implementação do Scheme, os 50 representantes dos maiores implementações do Scheme fizeram uma conferência em outubro de : Relatório [RRRS] da conferência descrita acima foi publica na MIT e Indiana University; 1986: Outra revisão da linguagem [R3RS]; 1988: O relatório atual reflete revisões aceitas nos encontros que precederam conferencia de Lisp e programação funcional.
2 Conceitos Básicos Scheme como o Lisp utiliza os conceitos de notações pré-fixada e calculo lambda. Qualquer identificador que não é uma palavra chave sintática, pode ser usado como uma variável. Uma variável pode dar nome a uma locação onde um valor pode ser armazenado. Diferente da maioria dos outros dialetos de Lisp, exceto Common Lisp, Scheme é uma linguagem estendida estaticamente com blocos de estruturas. Qualquer valor em Scheme pode ser usado como um valor boolean para o propósito de um teste condicional. O armazenamento de variáveis e objetos tais como pairs, vetores e strings implicitamente denotam locações e seqüências de locações. Uma string, por exemplo, denota tantas locações quanto há caracteres na string. Um novo valor pode ser armazenado dentro de uma destas locações mas mesmo assim a string continua a denotar a mesma locação de antes. Estruturas dos Programas Definições de topo: No topo de um programa, uma definição (define <variável> <expressão>) tem essencialmente o mesmo efeito que a expressão de atribuição (set! <variável> <expressão>) se a variável esta associada. Se <variável> não esta associada, então a definição ira associa-la a uma nova localização antes de efetuar a atribuição. Ex.: ==> (define add3(lambda (x) (+ x 3))) ==> (add3 3) 6 Definições Internas: Algumas implementações Scheme permitem a ocorrência de definições no inicio de um <corpo> qualquer. Assim, todas as variáveis ai definidas são locais ao <corpo>. Dessa maneira, variáveis são definidas ao invés de serem associadas(com ambiente igual ao de todo o <corpo>). Ex.: ==> (let ((x 5)) (define foo (lambda (y) (bar x y))) (define bar (lambda (a b) (+ (* a b) a))) (foo (+ x 3))) 45 Expressões Uma expressão é uma construção que retorna um valor, sendo que o seu tipo pode ser categorizado como Primitivo ou Derivado. Expressões de tipo Primitivo incluem variáveis e chamadas de procedimentos, enquanto que tipos Derivados são construções de tipos Primitivos. As expressões do tipo Primitivo são: Referencias a variáveis, Expressões literais, Chamadas de procedimentos, Expressões Lambda, Condicionais, Atribuições. As expressões do tipo Derivada são: Condicionais, Construções de associação, Sequenciamento(de expressões), Iteração(de expressões), Execução Atrasada. Exemplos das principais Expressões e Procedimentos. Nomeando coisas com define: (define a 10) (define (dobro x) (* 2 x)) Neste exemplo, primeiro associamos a a (variável) o valor 10, depois associamos a função dobro, que recebe x como parâmetro, o resultado que corresponde a 2*x. Definindo procedimentos: (define (nome arg1 arg2...) corpo) Note que define é seguida do nome do procedimento e de seus argumentos (note também que o número de argumentos pode ser igual a zero!). O restante, o corpo do procedimento, especifica como o procedimento irá ser avaliado. Definições temporárias: let Observe a implementação da fórmula de Báskara: (define (square x) (* x x)) (define (raizes a b c) (display (/ (+ (- 0 b) (sqrt (- (square b) (* 4 a c)))) (* 2 a))) (newline) (display (/ (- (- 0 b) (sqrt (- (square b) (* 4 a c)))) (* 2 a))))> Não é preciso ser especialista em programação para perceber que (sqrt (- (square b) (* 4 a c)))) (* 2 a))) está sendo calculado igualmente duas vezes. Para contornar esse problema, podemos
3 utilizar a seguinte forma: (define (raizes a b c) (let ((raiz (sqrt (- (square b) (* 4 a c))))) (display (/ (+ (- 0 b) raiz)(* 2 a))) (newline) (display (/ (- (- 0 b) raiz) (* 2 a))))) Expressões condicionais. Expressão if: estrutura de uma expressão if é como segue: (if predicado conseqüência alternativa) Scheme primeiramente avalia o predicado. Se o resultado for #t (true), então ele avalia a expressão conseqüência e retorna seu valor como sendo o valor de toda a expressão if. Porém, se o resultado for #f (false), então ele avalia a expressão alternativa e retorna o seu valor. (define (duplica x)(* 2 x)) (if (= 1 1) 2 3) (if (negative? 4) (* 3 6) (/ 10 2)) (if 1 2 3) (if (= (+ 12 4)(duplica 8))(square 5)(square 7)) Estas expressões retornam 2, 5, 2 e 25, respectivamente. Lembre que square foi definido anteriormente. Recursão Um procedimento é dito recursivo se ele contém uma chamada a si mesmo. A recursão é um mecanismo poderoso que auxilia o programador de tal forma que procedimentos de difícil controle tornam-se praticamente automáticos. Em Scheme, além da recursão tradicional utilizada pelas linguagens imperativas, pode-se utilizar o conceito de tail recursion (recursão pela cauda). Não entraremos em grandes detalhes, mas, trocando em miúdos, tail recursion é um tipo de recursão onde, uma vez que a recursão chegou ao seu fim, não é necessário nenhum trabalho adicional para finalizar o procedimento: o resultado já está calculado. (define fatoriala x) (cond ((= x 0) 1) (else (* x (fatoriala (-1+ x)))))) (define fatorialb x) (aux x 1)) (define (aux cont result) (cond ((= cont 0) result) (else (aux (-1+ cont) (* cont result))))) O primeiro exemplo, fatoriala, utiliza recursão tradicional, já o segundo, fatorialb, utiliza tail recursion. Duplas (pares), listas e símbolos Duplas Informalmente, uma dupla (pair) é um objeto composto por duas partes, nas quais dois outros objetos são colados juntos. Duplas são criadas com a primitiva cons. (define dupla (cons 3 4)) O exemplo acima associa a dupla a dupla (3. 4). Observe os espaços antes e depois do ponto, pois essa é a diferença entre a notação de uma dupla e um número real. Para acessar o primeiro e o último elementos de uma dupla, usamos as primitivas car e cdr,respectivamente. (car dupla) 3 (cdr dupla) 4 Listas Essencialmente, uma lista é uma série de duplas ligadas juntas, terminada com o objeto especial nil. Isto significa que podemos (mas não devemos!) criar listas usando a primitiva cons sucessivamente: (defina lista (cons 1 (cons 2 (cons 3 nil)))) Note que não se trata de um método amigável. A melhor maneira de se definir uma lista é através da primitiva list. (define lista (list 1 2 3)) Veja como é possível inserir elementos no início de uma lista:
4 (cons x dupla) Insere o objeto x antes da lista dupla, criando uma nova lista. Para acessar o objeto x: (car dupla) Para acessar o primeiro elemento da lista original: (cdr dupla) Símbolos Uma forma de representar as strings é colocando a string desejada entre aspas duplas ("isso é uma string"). As strings geralmente são utilizadas em Scheme quando se deseja imprimir alguma mensagem na tela. Porém, quando se deseja comparar nomes, como por exemplo, "João" é igual a "Maria"?, utilizamos símbolos em vez de strings. Quando utilizamos símbolos (precedendo o símbolo com um apóstrofe '), estamos dizendo ao interpretador para não avaliar os objetos, por exemplo: (define a 10) a 10 'a A Neste exemplo, quando a foi digitado, dissemos ao interpretador que ele devia avaliar a, e obtemos como resposta 10. Porém, quando digitamos 'a, dissemos ao interpretador Scheme que ele não devia avaliar o seu valor, mas sim, simplesmente "exibir" o objeto. (car '(a b c)) O exemplo acima retorna o símbolo a. Procedimentos Padrão associados a procedimentos primitivos como abs, operador + e outros. Assim, vemos os seguintes grupos: Boolean Objeto padrão que assume valor #t ou #f que é usado em expressões condicionais. Predicados de Equivalência:O procedimento eqv? verifica se dois objetos são geralmente tratados como se fossem o mesmo objeto, retornando #t ou #f dependendo disso. Tuplas e Listas Uma lista é definida através de uma tupla onde se tem a cabeça e o rabo que podem ser adquiridos pelos procedimentos car e cdr e concatenados pelo procedimento cons. Existem demais operações com listas que não serão descritas. Símbolos Muito úteis por serem utilizados como identificadores, uma vez que dois símbolos são iguais apenas quando escritos da mesma maneira. O Scheme acaba utilizando símbolos para propósito interno também. Números Foram adotados os tipos number, complex, real, rational, integer. Existe um distinção entre um número exato e inexato. E demais grupos que não serão descritos, mas mencionados: Caracteres, Strings, Vectors, Control Features, Input and OutPut. Exemplos Fatorial (define fatorial (lambda (n) (if (zero? n) 1 (* n (fatorial (- n 1)))))) Calcula comprimento de uma lista (define comprimento (lambda (l) (if (null? l) 0 (+ 1 (comprimento (cdr l)))))) Retorna o n-ésimo termo de uma lista (define n-esimo (lambda (n l) (if (= n 1) (car l) (nesimo (- n 1) (cdr l))))) São procedimentos que já vem pronto quando se inializa Scheme e normalmente estão
5 Soma todos os elementos de uma lista (define soma (lambda (l a) (if (null? l) a (soma (cdr l) (+ a (car l)))))) MDC (Máximo Divisor Comum) (define mdc (lambda (a b) (cond ((zero? a) b) ((zero? b) a) ((>= a b) (mdc (- a b) b)) (else (mdc a (- b a)))))) Conclusão Com este artigo podemos nos familiarizar com scheme que demonstrou ser uma poderosa linguagem de programação funcional e não apresenta grande complexidade o que facilita sua aprendizagem. Referências [1] [2] [3]
Conceitos de Linguagem de Programação - 2
Conceitos de Linguagem de Programação - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilhéus, BA 1 de novembro de 2011 1 Revisão Natureza das linguagens de Programação
Linguagens de Programação Funcional
Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A
Introdução à Programação Funcional. Conteúdo
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck 1 Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao Common Lisp Funções Lambda e binding
Introdução à Programação Funcional
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck 1 Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao CLisp Funções Lambda e binding Funções
Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013
Linguagem Haskell Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação Tiago Carneiro 19 Agosto 2013 1 1 Linguagem Haskell Linguagem de programação funcional É um paradigma de programação
Fundamentos de Programação
Fundamentos de Programação Solução do Segundo Teste 23 de Janeiro de 2012 09:00 10:30 Nome: Número: 1. (1.0) Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação
ao paradigma imperativo
PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de
Conceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 09 Programação Funcional (Haskell) Edirlei Soares de Lima Programação Funcional A programação funcional modela um problema computacional
Programação Funcional. Programação Funcional LISP. Paradigma de programação baseado em Funções Matemáticas
Programação Funcional Programação Funcional Paradigma de programação baseado em Funções Matemáticas Essência de Programação: combinar funções para obter outras mais poderosas PLP 2009/1 Profa. Heloisa
ALGORITMOS E ESTRUTURA DE DADOS
ALGORITMOS E ESTRUTURA DE DADOS Algoritmos Tipos de Dados Prof. André Peixoto - Todo o trabalho realizado por um computador é baseado na manipulação dos dados/informações contidas em sua memória. Podemos
Layout. Módulos. Normalmente, cada módulo está armazenado num ficheiro com o mesmo nome do módulo. Exemplo.hs
Layout Ao contrário de quase todas as linguagens de programação, o Haskell não necessita de marcas para delimitar as diversas declarações que constituem um programa. Em Haskell a identação do texto (isto
Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa
Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo
Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }
Java e sua Sintaxe Java e sua Sintaxe Estrutura mínima de um programa em Java: public class Exemplo { } Como todo programa deve ter um início, convenciona-se que a primeira ação de um programa é a execução
Uma Aula Prática sobre LISP
MAC 5710 - Estruturas de Dados - 2008 Linguagem LISP Surgiu no final dos anos 50 - John McCarthy (MIT). Linguagem para processamento simbólico. Muito usada em aplicações em Inteligência Artificial. Outras
Variáveis Tipos de Dados. APROG (Civil) Aula 2
Variáveis Tipos de Dados APROG () Aula 2 Conteúdo Conceito de Variável Declaração de variáveis Tipos de Dados Operação de Atribuição Uso de Constantes 2 Variáveis Uma variável é uma localização de memória
Linguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Linguagens de Programação Aula 13
Linguagens de Programação Aula 13 Celso Olivete Júnior [email protected] Na aula passada Suporte para a programação orientada a objetos 2 Na aula de hoje Programação Funcional Linguagem Haskell 3 Roteiro
Aula prática 5. Funções Recursivas
Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário
Fundamentos de Programação
Fundamentos de Programação Primeiro Teste 16 de Abril de 2011 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 7 páginas com 9 perguntas. A cotação de cada pergunta está assinalada
Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas
Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas Pedro Adão, Fausto Almeida, Ana Cardoso-Cachopo, Pedro Amaro de Matos (editores) Departamento de Engenharia Informática Instituto
Estruturas de Dados em Python
Estruturas de Dados em Python Carlos Camarão de Março de 7 Introdução Na segunda parte do curso vamos aprender a programar com estruturas (ou coleções) de dados, em Python. Python é uma linguagem orientada
Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto
Programação Funcional Capítulo 5 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/63 1 Casamento de padrão 2 Expressão case 3 Definição
Introdução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.
SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais
Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto
Programação Funcional Capítulo 6 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.2 1/66 1 Casamento de padrão 2 Expressão case 3 Definição
Linguagem Haskell. Riocemar S. de Santana
Linguagem Haskell Riocemar S. de Santana Haskell, o que é? É uma linguagem de programação puramente funcional, de propósito geral. Nomeada em homenagem ao matemático americano Haskell B. Curry (1900 1982).
Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
Orientação a Objetos e Java
Orientação a Objetos e Java Daves Martins [email protected] Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de
Variáveis Tipos de Dados
Variáveis Tipos de Dados APROG () Aula 2 1 Conteúdo Conceito de Variável Declaração de variáveis Tipos de Dados Operação de Atribuição Uso de Constantes 2 2 Variáveis Uma variável é uma localização de
4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Compiladores - Análise Léxica
Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico
Fundamentos de Programação
Fundamentos de Programação Soluções do primeiro teste 13 de Novembro de 2004 9:00-10:30 Nota Número: 20 Nome: Turma: Escreva o seu número em todas as folhas do teste. O espaço das respostas deve ser limitado
Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli
Vetores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados,
Aula prática 14. Expressão Lambda
Programação Funcional UFOP DECOM 2014.1 Aula prática 14 Expressão Lambda Sumário Resumo Expressões lambdas são funções anônimas que podem ser usadas como qualquer outro valor de primeira classe. Nesta
Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto
Programação Funcional Capítulo 7 Expressões Lambda José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/64 1 Valores de primeira classe 2 Expressão lambda 3 Aplicação
Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo
Linguagem Java Introdução Rosemary Silveira Filgueiras Melo [email protected] 1 Tópicos abordados Histórico da Linguagem Caracterização da Linguagem Criação de Programa Java inicial Entrada e Saída
Programação imperativa
Capítulo 8 Programação imperativa 8.1 Exercícios de revisão 1. Distinga entre programação imperativa e programação funcional. 2. Explique a necessidade da introdução do operador de atribuição. 3. Diga
Pedro Vasconcelos DCC/FCUP. Programação Funcional 3 a Aula Definição de funções
Programação Funcional 3 a Aula Definição de funções Pedro Vasconcelos DCC/FCUP 2014 Definição de funções Podemos definir novas funções simples usando funções pré-definidas. minuscula :: Char -> Bool minuscula
Programação Introdução
PROGRAMAÇÃO Programação Introdução Prof. Dr. Adriano Mauro Cansian 1 Introdução Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas,
I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.
Capítulo 4 TESTES, ESCOLHAS E MALHAS DE REPETIÇÃO 1. INTRODUÇÃO Em muitos exemplos e exercícios realizados nos capítulos anteriores, não foram raras as vezes em que fizemos uso de elementos disponíveis
Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Identificadores Nome de variáveis, constantes, métodos, etc...
IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos Token genérico / Lei de formação bem definida Podem possuir limitações de tamanho e/ou valor Possuem valor semântico o token deve ser acompanhado
Lição 4 Fundamentos da programação
Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças
TÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Ambiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias
SCC 124 - Introdução à Programação para Engenharias Expressões Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes Aula de
Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.
Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens
Array em Java. Figura 1 - Exemplo de um array de inteiros
Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:
4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Programação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Programação Funcional
Programação Funcional Lucília Camarão de Figueiredo Universidade Federal de Ouro Preto [email protected] Aula 04: Definição de funções 1 DEFINIÇÃO DE FUNÇÕES f x1 x2...xn = E Define uma função f de tipo
Paradigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 21 de Junho de 2018 1 Listas 2 Listas Uma das principais estruturas em linguagens funcionais. Representa uma coleção de valores de um determinado tipo.
Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo
PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a
Descobrindo Lua. Sérgio Queiroz de Medeiros. Campus Party LabLua. Sérgio Queiroz de Medeiros Descobrindo Lua 1
Descobrindo Lua Sérgio Queiroz de Medeiros [email protected] LabLua Campus Party 2009 Sérgio Queiroz de Medeiros Descobrindo Lua 1 Instalando o Interpretador Para baixar o fonte: www.lua.org Para
Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada
Programação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto [email protected] [email protected] 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli
Vetores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados,
IV.2 Aspectos Léxicos Convencionais
IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos - Token genérico / Lei de formação bem definida - Limitações de tamanho e/ou valor - Possuem valor semântico o token deve ser acompanhado
Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28
Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28 Tipos de Dados Dados Numéricos Números Inteiros: Int/Long Ponto Flutuante: Float Números Complexos: Complex
Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores
Introdução à programação em PASCAL Aula de 22/10/2001 Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores Conteúdo Conceito de linguagem de programação O processo
Algoritmos Computacionais
Material produzido por professores da UFABC Objetivos Aprender a sintaxe e a semântica de instruções de saída e de entrada de dados na linguagem PORTUGOL Aprender alguns operadores pra uso na parte de
Expressão Condicional
Programação Funcional UFOP DECOM 2014.1 Aula prática 4 Expressão Condicional Resumo Expressões condicionais permitem a escolha entre duas alternativas na obtenção do valor da expressão, com base em uma
Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Programação com Acesso a BD. Programação com OO Acesso em Java
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.
Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);
3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701
Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701 www.decom.ufop.br/red AULA TEÓRICA 02 1 Prof. Marcelo Luiz Silva Red CONTEÚDOS DA AULA
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Common-Lisp (introdutório).
Common-Lisp (introdutório). Índice Conceitos Básicos Funções e predicados numéricos Funções sobre pares e listas Constantes, variáveis e atribuições Formas especiais Definição de funções Recursão Rastreio
