Trabalho de Desenho de Linguagens de Programação e de Compiladores. Mini Pascal

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

Download "Trabalho de Desenho de Linguagens de Programação e de Compiladores. Mini Pascal"

Transcrição

1 Trabalho de Desenho de Linguagens de Programação e de Compiladores Mini Pascal (cod ) Departamento de Informática Universidade da Beira Interior Ano lectivo 2015/ Introdução Este trabalho é parte constituinte da avaliação prática da Unidade Curricular de código designada por Desenho de Linguagens de Programação e de Compiladores, na sua edição de O trabalho visa o exercício dos conceitos e das técnicas básicas de desenho de linguagens de programação e de compiladores expostos nas aulas da presente UC. Com tal este trabalho é estruturado nas várias fases que constituem um projecto desta natureza (espelhado pela própria estrutura lectiva da UC). Estas diferentes fases visam ilustrar a utilização de técnicas (e ferramentas computacionais associadas) de desenho de compiladores. Em particular as técnicas de analises semântica, produção de código máquina e optimização de código. 2 Descrição geral do trabalho O objectivo geral é a definição/extensão formal de uma pequena linguagem de programação, a linguagem Mini-Pascal (da autoria do François Pottier), 1

2 e a construção do compilador correspondente, tendo por alvo a arquitectura x Este trabalho está assim estruturado em duas fases. A primeira fase consiste em entender a linguagem de base Mini-Pascal (cuja sintaxe abstracta e semântica a está descrito em anexo deste enunciado) e estendê-la. Esta fase dará lugar a primeira entrega dia 31 de Março de A segunda fase consiste em desenhar e implementar o compilador para a extensão definida da linguagem. O trabalho completo, concluído com a execução da segunda fase, deverá ser entregue no dia 26 de Maio 2016, e as defesas terão lugar nos primeiros dias da semana seguinte em calendário por definir e afixar na página da UC. A entrega deverá respeitar as modalidades de entrega descritas na secção 4. 3 Trabalho Requerido Como intregável para a primeira fase do trabalho, requer-se um documento que apresenta a linguagem do ponto de vista da sua sintaxe abstracta, o seu sistema de tipo e a sua semântica. Como entregável para a segunda fase, um compilador completo escrito em OCaml/menhir para a linguagem Mini-Pascal extendida (cujo núcleo de base de partida está descrita em anexo). Impreterivelmente, a arquitectura alvo considerada é a arquitetura x86-64 apresentada nas aulas. O grupo de trabalho deverá considerar extensões que achar apropriadas e documentadas no relatório final. Estas extensões deverão ser discutidas com o regente da UC. Em jeito de sugestão, as extensões sugeridas são: novos tipos primitivos (float, character, string, etc,); mecanismos de definição de estruturas; mecanismos de definição de tipos soma; mecanismos de definição de tipos polimórficos; mecanismos de declaração de tipos definidos pelo programador; 2

3 mecanismos de declaração e utilização de apontadores/memória dinâmica; introdução de novos modos de passagem de parâmetros; introdução de novas primitivas; tec. É esperado igualmente que o grupo reporte atempadamente à equipa docente os eventuais entregáveis preliminares (a conclusão incremental das fases de geração código, como introduzido nas aulas) mas igualmente as dificuldades ou questões encontradas. 4 Entrega do trabalho O trabalho deve ser entregue num arquivo tar comprimido (nome.tgz) em que nome é o identificador do vosso grupo. este arquivo deve conter todos os ficheiros fontes necessários à compilação assim como um Makefile completo (as entradas all e clean devem estar presentes). Este arquivo deverá igualmente conter o relatório que descreve o trabalho feito, as escolhas (de desenho, etc.) tomadas, a documentação do código e o manual do utilizador. É igualmente esperada que seja preparada uma apresentação para a respectiva defesa. 5 Documentos auxiliares Anexa-se a este enunciado os documentos que definam a linguagem alvo por compilar: a descrição da sintaxe abstracta e da semântica do core da linguagem Mini-Pascal. estes documentos são adaptações directas dos documentos fornecidos pelo François Pottier na sua UC de Desenho de Linguagens de Programação e Compilação. A Sintaxe abstracta de Mini-Pascal Nas seguintes definições, a variável b percorre o conjunto dos booleanos, ou seja {true, f alse}. A variável n contempla os inteiros com sinal representados 3

4 com 32 bits (i.e. [ ]). A variável x percorre o conjunto (numerável) dos identificadores de variável, a variável f percorre o conjunto (numerável) dos identificadores de funções e procedimentos. Os tipos primitivos considerados são os tipos integer, boolean, array of τ onde τ é ele próprio um tipo - que descreve os elementos do vector definido. τ ::= tipos integer inteiros boolean booleanos array of τ vectores As constantes são booleanos ou inteiros. Não há constantes de tipo vector : os vectores são alocados dinamicamente. k ::= constantes n constante inteira b constante booleana Os operadores unários e binários que aparecem na sintaxe das expressões são as seguintes. Todas produzem um resultado de tipo integer, coma excepção dos operadores de comparação que produzem um resultado de tipo boolean. uop ::= operador unário negação bop ::= operador binário + adição subtracção multiplicação / divisão < > = comparação As operações primitivas, isto é, procedimentos e funções predefinidas são as seguintes. π ::= operações primitivas write escrita de um inteiro writeln escrita de um inteiro com mudança de linha readln leitura de um inteiro 4

5 O alvo de uma chamada de um procedimento ou função é ou uma operação primitiva ou um procedimento/função definido pelo utilizador, a qual é designada pelo seu nome. φ ::= alvo de uma chamada π operação primitiva f procedimento ou função definida pelo utilizador A sintaxe das expressões, condições e instruções é a seguinte. e ::= expressões k constante x variável uop e aplicação de um operador unário e bop e aplicação de um operador binário φ(e...e) chamada de função e[e] acesso a um elemento de vector new array of τ [e] alocação de um vector c ::= condições e expressões (com retorno de tipo boolean) not c negação c and c conjunção c or c disjunção i ::= instruções φ(e...e) chamada de procedimento x := e atribuição e[e] := e escrita num vector if c then i else i condicional while c do i ciclo i... i sequência Uma definição de procedimento ou de função é composta por um cabeçalho, por uma série de declarações de variáveis locais e de um corpo. O cabeçalho define o nome do procedimento ou da função, declara os seus parâmetros formais, se se trata de uma função, indica qual o tipo do seu resultado. A notação τ? indica um tipo opcional. 5

6 d ::= definição de procedimentos/funções f(x : τ...x : τ) : τ? cabeçalho var x : τ... x : τ variáveis locais i corpo Um programa é composto de uma (eventual) sequência de declaração de variáveis globais, de uma (eventual) sequência de declaração de procedimentos/funções e de um corpo. p ::= programa var x : τ... x : τ variáveis globais d.. d definições de procedimentos/funções i corpo B Semântica formal de Mini-Pascal Esta secção introduz uma semântica operacional big-step B.1 Valores Os valores manipulados durante a execução são booleanos, inteiros (com representação sobre 32 bits), endereços de vectores e igualmente a contante nil. Um vector é representado pelo seu endereço em memória e não pela sequência dos seus elementos. Esta distinção tem a sua importância : ela significa, por exemplo, que é possível para duas variáveis distintas de tipo array of τ serem um alias uma da outra, isto é, conter o mesmo endereço e logo apontar para o mesmo vector. Significa igualmente que o conteúdo de uma variável de tipo vector pode ser guardada nos registos, porque se trata de um endereço e não do vector em si. O vector será arquivado na heap. O valor nil é o valor atribuido a vectores sem inicialização. cv ::= valores b constante booleana n constante inteira l endereço de vector nil endereço inválido No Mini-Pascal, quando declaramos uma variável, damos o seu tipo τ, mas não indicamos o seu valor inicial. Nalgumas linguagens, como a linguagem 6

7 C, o valor inicial da variável está então indefinida : é prohibido aceder ao conteúdo desta variável antes de uma inicialização. Noutras linguagens, como em Java, as variáveis são inicializadas com um valor por omissão (que depende do tipo). Esta será a abordagem seguida no Mini-Pascal. Assim define-se uma função default que atribuí a cada tipo o valor por omissão que lhe corresponde. default (boolean) = false default (integer) = 0 default (array of τ) = nil O último caso justifica a existência do valor nil. B.2 Operadores A semântica dos operadores unários é dada por uma função. que associa a todo o operador uop (recorde-se, este operador é pura sintaxe, é um nome) uma função parcial uop dos valores para os valores. Por exemplo, a semântica do operador de negação é dada definindo como sendo a função que a toda a constante inteira n associa a contante inteira n normalizada no intervalo É importante notar que a função não está definida para outros valores do que os valores inteiros : não se pode aplicar esta função sobre valores booleanos, nem a um endereço, nem ao valor nil. A semântica de um programa que aplicaria o operador da negação sobre um vector, por exemplo, está então sem definição. Um tal programa é felizmente excluído pelo sistema de tipos do Mini-Pascal, visto que o tipo inteiro é incompatível com o tipo array of τ. De forma semelhante, a semântica de operadores binários é dada por uma função. que a todo o operador bop associa uma função binária parcial uop dos pares de valores para os valores. A definição exacta de cada um dos operadores é deixada em exercício (por este não oferecer dificuldades particulares). B.3 Juízos O conteúdo das variáveis globais é dada por um ambiente G que associa às variáveis os valores que lhes correspondem. De igual forma, o conteúdo das variáveis locais é dado por um ambiente E. Finalmente o heap H associa aos endereços sequências finitas de valores. 7

8 A semântica de Mini-Pascal é definida por juízos. A avaliação de uma expressão, de uma condição, de uma instrução pode modificar as variáveis globais, as variáveis locais, assim como a heap. Os juízos que descrevem a avaliação mencionam assim o estado inicial G, H, E e o estado resultante G, H, E. No caso das expressões e das condições, estes juízos mencionam também um valor, que representa o resultado da avaliação. Os juízos são assim da forma G, H, E/e G, H, E /v G, H, E/c G, H, E /b G, H, E/i G, H, E O primeiro caso destes juízo lê-se : no estado descrito por G, H, E, a avaliação da expressão e conduz ao estado descrito por G, H, E e produz o valor v. O segundo e o terceiro caso lêem-se de forma semelhante. Damo-nos a liberdade de escrever S para representar G, H, E. Este estilo de semântica, como vismos nas aulas, é designada de semântica operacional de passos grandes (big-step). É assim designada porque estes juízos ligam directamente as expressões e os seus resultados sem contemplar os eventuais passos intermédios do calculo inerente. A semântica das expressões é dada na figura 1. esta contém um conjunto de regras que definam o juízo G, H, E/e G, H, E /v. Da mesma forma, os juízos que descrevem das condições e das instruções estão definidos nas figuras 2 e 3. Na forma implícita de abuso de notação, todas as regras estão implicitamente parametrizadas por uma série de definições de funções e procedimentos que são consultadas pelas duas regras que descrevem a chamada de funções e a chamada de procedimentos definidos pelo utilizador. Estas definições de funções e de procedimentos estão definidas aquando a exploração de um programa p particular. A semântica de um programa p particular é definida por um juízo da forma p Este juízo p lê-se o programa p executa-se sem erro e termina. A sua definição é dada na figura 4. 8

9 Figura 1: Figura 2: 9

10 Figura 3: Figura 4: 10

Trabalho de Linguagens Formais e Compilação

Trabalho de Linguagens Formais e Compilação Trabalho de Linguagens Formais e Compilação Desenho de uma linguagem simples e do seu compilador para MIPS. (cod. 5387) Departamento de Informática Universidade da Beira Interior Ano lectivo 2012/2013

Leia mais

TÉCNICO DE INFORMÁTICA - SISTEMAS

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

Leia mais

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 3ª Parte Prof. Sandra Pais Soares Fundamentos de Programação 1. Palavras Reservadas 2.

Leia mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Constantes class Exemplo { static void Main() { float fahr, celsius; int lower, upper, step; lower = 0; /* limite inferior da tabela de temperaturas */ upper = 300; /* limite superior */ step = 20; /*

Leia mais

4. Constantes. Constantes pré-definidas

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.

Leia mais

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 4 EXPRESSÕES BOOLEANAS O tipo primitivo boolean É um tipo de dados primitivo em Java que possui

Leia mais

Geração de Código para LALG

Geração de Código para LALG Geração de Código para LALG Ambiente de execução para LALG Máquina hipotética Repertório de instruções Prof. Thiago A. S. Pardo 1 Geração de código para LALG Código-alvo será um código de montagem Portanto,

Leia mais

Programação Introdução

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,

Leia mais

Aulas Anteriores. Detalhes da linguagem de programação

Aulas Anteriores. Detalhes da linguagem de programação Aulas Anteriores Detalhes da linguagem de programação Elementos básicos (identificadores, constantes, símbolos gráficos) Estrutura básica de um programa (cabeçalho, parte declarativa, parte de execução)

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos

Leia mais

Compilador de LP3 para C3E e P3

Compilador de LP3 para C3E e P3 Compilador de LP3 para C3E e P3 Luís Gil 1 13 de Junho de 2005 1 estudante de Ciências Informáticas no Instituto Superior Técnico 1 Introdução Este relatório descreve a sintaxe e a semântica da Linguagem

Leia mais

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por

Leia mais

Computação e Programação

Computação e Programação Computação e Programação MEMec, LEAN - º Semestre 205-206 Expressões Relacionais Estruturas de Selecção Simples Genéricas Aula Teórica 5 D.E.M. Área Científica de Controlo Automação e Informática Industrial

Leia mais

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM. Teoria da Computação e Algoritmos Introdução à Linguagem Pascal 1 Estrutura de um programa INÍCIO FIM. PROGRAM END.

Leia mais

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Aula teórica 7. Preparado por eng.tatiana Kovalenko Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana

Leia mais

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

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

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

JavaScript (Elementos de Programação e Programação Básica)

JavaScript (Elementos de Programação e Programação Básica) Linguagem de Programação para Web JavaScript (Elementos de Programação e Programação Básica) Prof. Mauro Lopes 1 Objetivos Iniciaremos aqui o nosso estudo sobre a Linguagem de Programação JavaScript. Apresentaremos

Leia mais

Sintaxe da linguagem Java

Sintaxe da linguagem Java Sintaxe da linguagem Java (PG) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Uma classe pública com nome A tem

Leia mais

Introdução à Computação

Introdução à Computação Conteúdo de hoje... Your Logo Here Prof. Lucas Amorim lucas@ic.ufal.br Tipos de dados Dados numéricos Inteiro Real Dados literais Dados lógicos Variáveis Introdução à Computação Tipos de dados, variáveis

Leia mais

Introdução à Computação

Introdução à Computação Your Logo Here Prof. Bruno de Jesus bruno.jesus@ic.ufal.br Introdução à Computação Tipos de dados, variáveis e expressões Conteúdo de hoje... Tipos de dados Dados numéricos Inteiro Real Dados literais

Leia mais

Modelo de plano analitico

Modelo de plano analitico Modelo de pla analitico Disciplina: Algoritmização e Programação Curso: Licenciatura em Ensi de Informática A/Semestre: 1º A/2º Semestre Carga horária: 4 h/semana; Docente: Célio Sengo Introdução A linguagem

Leia mais

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis Variável, na Matemática, é um termo utilizado em substituição de outro, normalmente, desconhecido. É utilizado para representar um número ou um conjunto. No contexto da programação de computadores, uma

Leia mais

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema ALGORITMIA Resolução De Problemas Em Informática Docente: Ana Paula Afonso 2000-2001 Resolução de Problemas 1. Analisar o problema Conhecer o bem o problema Descrever o problema: subdividir, detalhar 2.

Leia mais

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

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

Leia mais

A linguagem algorítmica utiliza o português para a definição dos comandos e tem as seguintes característica:

A linguagem algorítmica utiliza o português para a definição dos comandos e tem as seguintes característica: 1 de 16 08/02/2012 14:08 Linguagem Linguagem Algorítmica A linguagem algorítmica utiliza o português para a definição dos comandos e tem as seguintes característica: 1 - A linguagem não á sensível á capitulação

Leia mais

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos

Leia mais

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

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

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Linguagem Computacional

Linguagem Computacional Informática II Linguagem Computacional Algoritmos e Programação Parte 2 Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves 1 Sumário Tipos de Dados Variáveis Modelo esquemático Características e Regras

Leia mais

Aula Teórica 8. Preparado por eng.tatiana Kovalenko

Aula Teórica 8. Preparado por eng.tatiana Kovalenko Aula Teórica 8 Tema 8. Tipos de Dados básicos Ø Representação de números inteiros Ø Representação de números decimais Ø Representação de caracteres Ø Representação de valores lógicos Ø Expressões Ø Classe

Leia mais

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa; Linguagem Pascal Prof. Sérgio Rodrigues Introdução Algoritmo É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa; Programa é a formalização de um algoritmo

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Professor: Diego Oliveira Conteúdo 05: Linguagem Java Conteúdo da Aula Linguagem Java Tipos Primitivos Operadores Aritiméticos Operadores Lógicos Precedência de Operadores

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para

Leia mais

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos

Leia mais

PLANO DE UNIDADE DIDÁTICA- PUD

PLANO DE UNIDADE DIDÁTICA- PUD Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de

Leia mais

Linguagem Pascal. Prof. Jonatas Bastos Site:

Linguagem Pascal. Prof. Jonatas Bastos   Site: Linguagem Pascal Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Linguagem Pascal Foi desenvolvida pelo prof. Niklaus Wirth como uma linguagem simples

Leia mais

Expressões e sentença de atribuição

Expressões e sentença de atribuição Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos

Leia mais

Lição 4 Fundamentos da programação

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

Leia mais

Geração de Código para LALG

Geração de Código para LALG Geração de Código para LALG Ambiente de execução para LALG Máquina hipotética Repertório de instruções Prof. Thiago A. S. Pardo 1 Geração de código para LALG Código-alvo será um código de montagem Portanto,

Leia mais

Análise Semântica e Representação Intermédia

Análise Semântica e Representação Intermédia Análise Semântica e Representação Intermédia Compiladores, Aula Nº 22 João M. P. Cardoso 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo

Leia mais

Revisão C++ - Parte 1

Revisão C++ - Parte 1 Revisão C++ - Parte 1 Prof. Gustavo Leitão Campus Natal Central Disciplina Programação para Ambiente de Redes 5/3/2010 Objetivo da Aula 5/3/2010 5/3/2010 OBJETIVO DA AULA Revisar os principais comandos

Leia mais

SEBENTA INTRODUÇÃO Á ALGORITMIA

SEBENTA INTRODUÇÃO Á ALGORITMIA SEBENTA INTRODUÇÃO Á ALGORITMIA O desenvolvimento de programas para computador está sempre baseado na tarefa de programar um computador para seja resolvido um problema ou executada uma função e assim dar

Leia mais

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é

Leia mais

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program

Leia mais

PLANIFICAÇÃO ANUAL. 1. Introdução à Programação e Algoritmia. Tempos letivos previstos (45) Período escolar

PLANIFICAÇÃO ANUAL. 1. Introdução à Programação e Algoritmia. Tempos letivos previstos (45) Período escolar PLANIFICAÇÃO ANUAL DEPARTAMENTO: MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS ÁREA DISCIPLINAR: 550 - INFORMÁTICA DISCIPLINA: Programação e Sistemas de Informação CURSO PROFISSIONAL: Téc. de Gestão e Programação

Leia mais

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Paradigmas de Linguagem de Programação. Paradigma Imperativo Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;

Leia mais

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO 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: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Computação e Programação

Computação e Programação Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 Aula Teórica 22 Introdução a linguagem compilada C (2) Structs Ponteiros Arrays D.E.M. Área Científica de Controlo Automação e Informática Industrial

Leia mais

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 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

Leia mais

Primeiros programas.

Primeiros programas. Primeiros programas. David Déharbe 1 1 Objetivos da aula Revisar as atividades "edição", "compilação", ("correção" e) "execução". Revisar os primeiros elementos de linguagem C já vistos. Aprender a escrever

Leia mais

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18 ÍNDICE MÓDULO 1 INTRODUÇÃO À ALGORITMIA 11 1.1 PROGRAMAS E ALGORITMOS 12 Fases da programação 12 Algoritmos e algoritmia 13 Algoritmos em linguagem informal, pseudocódigo e fluxogramas 14 Símbolos utilizados

Leia mais

Linguagens de Programação. Marco A L Barbosa

Linguagens de Programação. Marco A L Barbosa Expressões e sentença de atribuição Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

Leia mais

Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado?

Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado? Computação I Introdução ao Pascal Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Linguagens de Programação DEL-Poli/UFRJ Níveis de Linguagens de Programação Linguagens declarativas Linguagens

Leia mais

Computação I. Prof. Miguel Elias Mitre Campista.

Computação I. Prof. Miguel Elias Mitre Campista. Computação I Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Linguagens de Programação DEL-Poli/UFRJ Introdução ao Pascal Níveis de Linguagens de Programação Linguagens declarativas Linguagens

Leia mais

Métodos para a construção de algoritmo

Métodos para a construção de algoritmo Métodos para a construção de algoritmo Compreender o problema Identificar os dados de entrada e objetos desse cenário-problema Definir o processamento Identificar/definir os dados de saída Construir o

Leia mais

Introdução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo

Introdução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo Introdução Lógica e programação Aula 02 Introdução à Programação Pascal Formalização de algoritmos na Exercícios Sky Informática Ltda. 1 2 Algoritmo: É uma maneira formal de expressar o raciocínio. O grau

Leia mais

Instituto Superior de Engenharia de Lisboa

Instituto Superior de Engenharia de Lisboa Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)

Leia mais

Linguagem de programação: Pascal

Linguagem de programação: Pascal Aula 04 Linguagem de programação: Pascal Prof. Tecgº Flávio Murilo 26/03/2013 1 Pascal Introdução Pascal é uma linguagem de programação estruturada, criada em 1970 pelo suíço Niklaus Wirth, dando este

Leia mais

Expressões e Instruções de Atribuição. George Darmiton da Cunha Cavalcanti

Expressões e Instruções de Atribuição. George Darmiton da Cunha Cavalcanti Expressões e Instruções de Atribuição George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução Expressões Aritméticas Operadores Sobrecarregados Conversões de Tipo Expressões Relacionais

Leia mais

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

2.2.5 EXPRESSÕES - Regras para o cálculo de valores Métodos de Programação I Departamento de Matemática, FCTUC 30 2.2.5 EXPRESSÕES - Regras para o cálculo de valores As expressões fornecidas ao computador, quer tenham variáveis, constantes ou apenas literais,

Leia mais

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza Algoritmos: Conceitos Fundamentais Slides de autoria de Rosely Sanches e Simone Senger de Souza DADOS E EXPRESSÕES Uso da Informação Computador manipula informações contidas em sua memória. Classificadas

Leia mais

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise

Leia mais

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça Introdução Universidade Federal de Uberlândia Programação Orientada a Objetos Prof. Fabiano Dorça Introdução Definições iniciais: classe, objeto, métodos, atributos. Introdução Ao escrever um programa

Leia mais

Análise Semântica e Tratamento de Erros Dependentes de Contexto

Análise Semântica e Tratamento de Erros Dependentes de Contexto Análise Semântica e Tratamento de Erros Dependentes de Contexto O componente Semântico de uma LP Tarefas da Análise Semântica Implementação da Tabelas de Símbolos Ações Semânticas em Compiladores Dirigidos

Leia mais

Puca Huachi Vaz Penna

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

Leia mais

APONTAMENTOS DE PASCAL

APONTAMENTOS DE PASCAL APONTAMENTOS DE PASCAL PROGRAMAÇÃO DE COMPUTADORES 1º ANO DA LICENCIATURA EM ENGENHARIA MECÂNICA 2000 Luisa Costa Sousa 1 ÍNDICE: 1 INTRODUÇÃO 3 1.1 A estrutura do algoritmo e do respectivo programa 4

Leia mais

Programação com Acesso a BD. Programação com OO Acesso em Java

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

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1 CIT 2015.2 Aula 02 Variáveis e Estruturas de desvio condicional Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1 Variáveis Uma variável nada mais é que um nome que damos a uma determinada posição

Leia mais

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

Programação de Computadores I. Professor Ilaim Costa Junior Programação de Computadores I Professor Ilaim Costa Junior ilaim@ic.uff.br Roteiro da Aula de Hoje ariável Tipos básicos Declaração Expressões Aritméticas Lógicas Atribuição 2 ariável Representa uma região

Leia mais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

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

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

Leia mais

Estruturas condicionais

Estruturas condicionais Estruturas condicionais David Déharbe 1 1 Objetivos da aula Revisar os primeiros elementos de linguagem C já vistos. Condicionais simples Condicionais compostas Operadores lógicos 2 2 Objetivos da aula

Leia mais

PLANO DE ENSINO. Súmula:

PLANO DE ENSINO. Súmula: INF01211 NOME DA DISCIPLINA: Algoritmos e Programação Semestre: 2009/2 Carga horária: 4 h Créditos: 4 Professor: Luis de França G. Ferreira Súmula: Formulação de problemas, construção de algoritmos e implementação

Leia mais

Introdução à Linguagem C++

Introdução à Linguagem C++ Introdução à Linguagem C++ C++: Definição C++ C A Linguagem de Programação C++ pode ser definida como uma extensão da Linguagem C; Todo código de programação em Linguagem C pode a priori ser compilado

Leia mais

Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos

Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos Instituto Politécnico de Setúbal Escola Superior de Tecnologia Departamento de Sistemas e Informática Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos Disciplina de Introdução à

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:

Leia mais

Folha 4.2 Análise sintática ascendente

Folha 4.2 Análise sintática ascendente Folha 4.2 Análise sintática ascendente 1. Considere a gramática G = (S, T, P, S) que representa o cabeçalho de métodos na linguagem Java (sem os modificadores de acesso), onde T = {S, Type, Param, Exception,

Leia mais

Compiladores. Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal. S. Melo de Sousa Compiladores

Compiladores. Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal. S. Melo de Sousa Compiladores Compiladores Verificação e inferência dos Tipos Simão Melo de Sousa Computer Science Department University of Beira Interior, Portugal Problema Permitir evitar declarar o tipo das variáveis, das assinaturas

Leia mais

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se

Leia mais

Análise Semântica e Representação Intermédia

Análise Semântica e Representação Intermédia Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo do then e nó

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

Planificação Anual da disciplina de Programação e Sistemas de Informação 10º 1PI

Planificação Anual da disciplina de Programação e Sistemas de Informação 10º 1PI Res e M ó d u l o 1 - I n t r o d u ç ã o à P r o g r a m a ç ã o e A l g o r i t m i a 1. Introdução à Lógica de Programação 1.1. Lógica 1.2 Sequência Lógica 1.3 Instruções 1.4 Algoritmos 2. Desenvolvimento

Leia mais

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito

Leia mais

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Linguagem de Programação I Prof. Tiago Eugenio de Melo. Linguagem de Programação I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info 1 Sumário Introdução Conceitos preliminares Introdução Variáveis Comandos Condicionais 2 Por que aprender a

Leia mais

= = = = = = = = = = = = = = = =

= = = = = = = = = = = = = = = = Página 1 de 7 A Linguagem PASCAL = = = = = = = = = = = = = = = = 1) ALFABETO: são os símbolos (ié, caracteres ) permitidos na linguagem. São as letras (maiúsculas e minúsculas), os algarismos (ou dígitos)

Leia mais

Algoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018

Algoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018 Algoritmos e Modelação Computacional Paulo Mateus MEBiom LMAC 2018 Objetivos Edição e compilação de programas Tipos e expressões Declaração de variáveis Atribuição, composição sequencial, iterativa e alternativa

Leia mais

Variáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Variáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Variáveis alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Variáveis Uma vez que o programador tenha entendido o uso de variáveis, ele entendeu a essência da programação.

Leia mais

Introdução à Ciência da Computação

Introdução à Ciência da Computação Introdução à Ciência da Computação Variáveis Conceitos Básicos Variáveis x Constantes a = x + 5 a, x e 5 são variáveis ou constantes? Variáveis As variáveis são recipientes de valores É um espaço reservado

Leia mais

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site   (autor: desconhecido). Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site http://www.portaldaprogramacao.com (autor: desconhecido). Leitura indicada: Notas de Aula de Algoritmos e Programação

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 14 de Junho de 2018 1 λ-cálculo 2 Computabilidade Computabilidade é uma área de estudo central da Ciência da Computação. Ela estuda a possibilidade

Leia mais

1 Lógica de primeira ordem

1 Lógica de primeira ordem 1 Lógica de primeira ordem 1.1 Sintaxe Para definir uma linguagem de primeira ordem é necessário dispor de um alfabeto. Este alfabeto introduz os símbolos à custa dos quais são construídos os termos e

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2 Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais