Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Construção de Algoritmos AULA 07
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Prof. Heloise Manica Paris Teixeira
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Políticas Curso de aprofundamento em linguagem C.
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
Linguagem C Estruturas de Controle de Fluxos
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Construção de Compiladores
Introdução à Programação
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Robson Godoi / Sandra Siebra
Revisão da Linguagem C.
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Linguagem de Programação II Parte IX
Conceitos de Linguagem de Programação
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 05 Aquiles Burlamaqui UERN
Linguagens Imperativas
Paradigmas e Ferramentas de Desenvolvimento de Software – Revisão da linguagem C++ Lúbia Vinhas DPI - INPE.
Introdução à Programação Orientada a Objetos com Java
Tipos de Dados Paradigmas de Programação
Estruturas de Controle entre Instruções
Estudo dos Conceitos e Paradigmas de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
DI UFPE Semântica de Java Java and the Java Virtual Machine - Definition, Verification, Validation Robert Stark, Joachim Schmid, and Egon Borger Wolfram.
Expressões e Instrução de Atribuição
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Paradigma Funcional Apresentação de LF1.
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal.
Linguagem de Expressões 2
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Centro de Informática
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Modelos de Paradigmas de programação
Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Programação Imperativa (e Ponteiros.
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Capítulo VIII Ambientes de Execução
PROGRAMAÇÃO ou LINGUAGEM C?
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
Programação I CH: 60h Créditos: 3 Prof Me. Tiago Araujo.
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
SISTEMAS OPERACIONAIS I
Aula 1 – Profª Danielle Costa
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Semântica de Linguagens de Programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Fundamentos de Programação
Construção de Algoritmos AULA 05
Estrutura de Dados II Alocação Dinâmica. Alocação de memória Ao ser executado, um programa carrega seu código executável para a memória; Uma parte da.
Profa. Maria Augusta Constante Puget
PARADIGMAS DE LINGUAGENS EXPRESSÕES E INSTRUÇÕES DE ATRIBUIÇÃO
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Linguagem de Programação
Visual C# (parte 2) Prof. Igor Conrado Alves de Lima – Operadores, estruturas de decisão, vetores (arrays), e estruturas de.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Transcrição da apresentação:

Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de Pernambuco

Explorando Conceitos Variáveis e memória Variáveis compostas Arrays Alocação dinâmica de memória Persistência Atribuição Composição colateral e paralela Comandos condicionais Comandos iterativos, Expressões com efeitos colaterais

Variáveis e Memória Uma memória é uma coleção de células, onde cada célula tem –status: alocada ou não –conteúdo: um valor armazenável ou undefined Uma variável –denota um valor, o qual pode ser inspecionado e atualizado –é implementada por uma ou mais células

Modelando Variáveis e Memória Memória abstrata: {x  5, y  9, z  ‘a’} (Id  Valor) Memória concreta: –Associações: {x  13, y  72, z  00} (Id  Ref) –Memória de fato: {00  ‘a’,...,13  5, (Ref  Valor) 72  9,...,99  undefined}

Avaliação de Variáveis A avaliação de variáveis é feita de forma diferente de acordo com a sua posição no comando de atribuição: –L-value o endereço da célula de memória que implementa a variável (referência) –R-value o valor armazenado na célula de memória que implementa a variável (conteúdo)

A atualização das variáveis compostas pode ser seletiva ou total São agrupamentos de variáveis componentes: Variáveis Compostas record de Pascal, struct de C arrays

Arrays Alternativas para a definição dos limites de um array: –estático, determinado em tempo de compilação –dinâmico, determinado no momento da criação (inicialização) da variável –flexível, não é determinado em nenhum momento

Alocação Estática de Memória Variáveis criadas por declarações: –locais, existem durante às execuções do bloco –globais e estáticas, existem durante a execução do programa

Alocação Dinâmica de Memória Variáveis da heap, criadas por comandos: –criadas e destruídas em qualquer parte do programa, por comandos especiais –anônimas, acessadas via ponteiros –referências pendentes

Persistência Arquivos são valores compostos como outros quaisquer Qualquer variável deveria poder ser –transitória –persistente Linguagens normalmente dividem os tipos em transitórios e persistentes

Comandos Um ponto de entrada, um ponto de saída Múltiplos pontos de entrada, múltiplos pontos de saída: –goto (de C), throw (de Java), continue e break (de C e Java)

Atribuição Forma geral –AcessoVariável := Expressão Atribuições múltiplas –AV := AV’ := AV’’ := Expressão Atribuições simultâneas –AV, AV’ := Expressão, Expressão’

Composição Colateral –os dois comandos são executados, em uma ordem qualquer –não determinismo Comando, Comando’

Composição Paralela –os dois comandos são executados, de maneira entrelaçada, em uma ordem qualquer –concorrência e não determinismo Comando || Comando’

Comandos Condicionais Não-determinísticos: if Expressão1 then Comando1 | Expressão2 then Comando2... | ExpressãoN then ComandoN end if Baseados em valores não booleanos: –case (de Pascal), switch (de C)

Comandos Iterativos Variam de acordo com o número de iterações: –definido, com variável e sequência de controle, for (de Pascal e C) –indefinido, while (de Pascal e C) A sequência de controle não tem que ser uma progressão aritmética, definida por constantes

Expressões com Efeitos Colaterais Expressões comandos: retornam valores e alteram os valores de variáveis –funções (de Pascal e C) –o.m()+o.m() diferente de 2*o.m() Linguagens orientadas a expressões: –nenhuma distinção entre expressões e comandos (C) –AV := (AV := Expressão)

Leitura Programming Language Concepts and Paradigms –Capítulo 3 (exceto a Seção 3.5.3)

Exercícios e Projetos Estenda a Linguagem Imperativa 1 com os seguintes recursos: –declaração de variável em qualquer ponto de um bloco, como em Java –comandos continue e goto de C –arrays e records de Pascal –ponteiros de Pascal –tratamento de exceções como em Java, mas passando para o throw uma string, não um objeto