Fundamentos da Programação
|
|
|
- Nathalia Avelar Pinho
- 8 Há anos
- Visualizações:
Transcrição
1 Fundamentos da Programação Segundo Teste 10 de Janeiro de :00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 12 perguntas. A cotação de cada pergunta está assinalada entre parêntesis. Escreva o seu número em todas as folhas da prova. O tamanho das respostas deve ser limitado ao espaço fornecido para cada questão. O corpo docente reserva-se o direito de não considerar a parte das respostas que excedam o espaço indicado. Pode responder usando lápis. Em cima da mesa devem apenas estar o enunciado, caneta ou lápis e borracha e cartão de aluno. Não é permitida a utilização de folhas de rascunho, telemóveis, calculadoras, etc. Boa sorte. Pergunta Cotação Nota Total 20.0
2 Número: Pág. 2 de 8 1. (1.0) Diga quais as fases por que passa o desenvolvimento de um programa e o que se faz em cada uma delas. Análise do problema. O programador, juntamente com o cliente, estuda o problema a resolver com o objectivo de determinar exactamente o que o programa deve fazer. Desenvolvimento de uma solução. Determinação de como vai ser resolvido o problema. Desenvolvimento de um algoritmo e definição abstracta dos tipos de informação usados. Deve usar-se a metodologia do topo para a base. Codificação da solução. Tradução do algoritmo para uma linguagem de programação, e implementação dos tipos de informação. Depuração, i.e., correcção de erros sintácticos e semânticos. Testes. Definição de uma bateria de testes com o objectivo de garantir" que o programa funciona correctamente em todas as situações possíveis. Manutenção. Fase que decorre depois do programa estar em funcionamento. A manutenção é necessária por dois tipos de razões: a descoberta de erros ou a necessidade de introduzir modificações e actualizações nas especificações do programa. 2. (1.0) Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação da informação e anonimato da representação. A abstracção de dados consiste em separar a o modo como os dados são utilizados do modo como os dados são representados. Para isso definem-se camadas conceptuais lidando com cada um destes aspectos estando estas camadas separadas por "barreiras de abstracção" que definem o modo como os programas acima da barreira podem comunicar com os programas que se encontram abaixo da barreira. Idealmente, os programas que se encontram a um dado nível de abstracção contêm toda a informação necessária para lidar com um certo tipo de dados, a informação está "encapsulada" dentro desta camada conceptual, e escondem das restantes partes do programa o modo como a informação está representada, o que é conhecido por "anonimato da representação". 3. O Python permite a utilização de três paradigmas de programação, a programação imperativa, a programação por objectos e a programação funcional. Apresente de uma forma sucinta as características principais de cada um destes paradigmas. (a) (0.5) Programação imperativa. Em programação imperativa, um programa é constituido por uma série de ordens dadas ao computador. A programação imperativa depende da instrução de atribuição e da utilização de ciclos. (b) (0.5) Programação por objectos. A programação por objectos baseia-se na utilização de objectos, entidades com estado interno associados a um conjunto de métodos que manipulam esse estado. (c) (0.5) Programação funcional. A programação funcional baseia-se na utilização de funções que devolvem valores que são utilizados por outras funções. Em programação funcional as operações de atribuição e os ciclos podem não existir.
3 Número: Pág. 3 de 8 4. (1.0) Considere as estruturas de informação cujo comportamento é caracterizado por LIFO e FIFO. Explique o significado destes termos e diga quais as estruturas de informação a que estão associados. LIFO significa "Last In First Out" e está associado ao tipo pilha. FIFO significa "First In First Out" e está associado ao tipo fila. 5. (1.5) Escreva uma função recursiva chamada soma_quadrados_digitos que recebe como argumento um número inteiro não negativo n, e devolve a soma dos quadrados dos dígitos de n. A sua função não tem que verificar a correcção do argumento. Por exemplo, >>> soma_quadrados_digitos(322) 17 def soma_quadrados_digitos(num): if num == 0: return 0 digito = num % 10 return digito * digito +\ soma_quadrados_digitos(num // 10) 6. (1.5) Escreva uma função recursiva, numero_ocorrencias_lista, que recebe uma lista e um inteiro, e devolve o número de vezes que esse inteiro ocorre na lista e nas suas sublistas, se existirem. A sua função não tem que verificar a correcção dos argumentos. Por exemplo, >>> numero_ocorrencias_lista([4, 5, 6], 5) 1 >>> numero_ocorrencias_lista([3, [[3], 5], 7, 3, [2, 3]], 3) 4 def numero_ocorrencias_lista2(lst, num): if lst == []: return 0 elif lst[0] == num: return 1 + numero_ocorrencias_lista2(lst[1:], num) elif isinstance(lst[0], list): return (numero_ocorrencias_lista2(lst[0], num) + numero_ocorrencias_lista2(lst[1:], num)) return numero_ocorrencias_lista2(lst[1:], num) 7. (1.5) Escreva uma função todos_lista que recebe uma lista e um predicado unário, e devolve verdadeiro caso todos os elementos da lista satisfaçam o predicado e falso no caso contrário. A sua função não tem que verificar a correcção dos argumentos. Por exemplo,
4 Número: Pág. 4 de 8 >>> todos_lista([4, 5, 6], lambda x: x > 5) False >>> todos_lista([4, 5, 6], lambda x: x >= 4) True def todos_lista(lst, pred): for el in lst: if not(pred(el)): return False return True 8. Escreva uma função soma_divisores que recebe um número inteiro não negativo n, e devolve a soma de todos os divisores de n. No caso de n ser 0 deverá devolver 0. A sua função não tem que verificar a correcção do argumento. Por exemplo, >>> soma_divisores(20) 42 >>> soma-divisores(13) 14 (a) (1.0) Usando recursão com operações adiadas. def soma_divisores(n): def soma_aux(n, d): if d == 0: return 0 elif n % d == 0: return d + soma_aux(n, d - 1) return soma_aux(n, d - 1) return soma_aux(n, n) (b) (1.0) Usando recursão sem operações adiadas ou de cauda. def soma_divisores(n): def soma_aux(n, d, soma): if d == 0: return soma elif n % d == 0: return soma_aux(n, d - 1, soma + d) return soma_aux(n, d - 1, soma) return soma_aux(n, n, 0) (c) (1.0) Usando um processo iterativo e um ciclo while.
5 Número: Pág. 5 de 8 def soma_divisores(n): soma = 0 d = n while d > 0: if n % d == 0: soma = soma + d d = d - 1 return soma 9. (1.5) Escreva uma função, cujo argumento é o nome de um ficheiro de texto, que devolve o número de emoticons :-)" que existem no ficheiro que é seu argumento. As linhas do ficheiro podem conter mais do que um emoticon. Por exemplo, se tst1.txt corresponder ao ficheiro: Teste com alguns destes emoticons :-) :-) :-) numa :-) linha e outro :-) na linha seguinte e se tst2.txt corresponder ao ficheiro: Teste com alguns destes emoticons :-) :-) :-) numa :- ) linha e outro :-) na linha seguinte Podemos obter a interacção: >>> emoticons( tst1.txt ) 5 >>> emoticons( tst2.txt ) 4 A sua função deverá abrir o ficheiro (não é necessário usar encoding) e fechá-lo antes de terminar. def emoticons(ficheiro): cont=0 entrada = open(ficheiro, r ) linha = entrada.readline() while (linha!= ): i=0 l=len(linha) while i < l-3: if linha[i] == : and \ linha[i+1] == - and \ linha[i+2] == ) : cont = cont+1 i=i+1 linha = entrada.readline() entrada.close() return cont
6 Número: Pág. 6 de (2.0) Crie a classe garrafa cujo construtor recebe a capacidade da garrafa em litros. A garrafa inicialmente será criada vazia. Os outros métodos suportados pela classe são: capacidade, que devolve a capacidade total da garrafa; nivel, que devolve o volume de líquido presente na garrafa; despeja, que recebe a quantidade de líquido a remover da garrafa, em litros. Se a quantidade exceder o volume presente na garrafa, o volume presente na garrafa passa a ser 0. enche, que recebe a quantidade de líquido a colocar na garrafa. Se a quantidade de líquido a colocar na garrafa fizer com que esta ultrapasse a sua capacidade, o volume presente na garrafa passa a ser igual à sua capacidade. Por exemplo, >>> g1 = garrafa(1.5) >>> g1.nivel() 0 >>> g1.capacidade() 1.5 >>> g1.despeja(2) >>> g1.nivel() 0 class garrafa: def init (self, capacidade): if isinstance(capacidade, (int, float)) and \ capacidade > 0: self.nivel_actual = 0 self.volume_total = capacidade raise ValueError( garrafa: capacidade deve ser numero positivo ) def nivel(self): return self.nivel_actual def capacidade(self): return self.volume_total def despeja(self, volume): if volume > self.nivel_actual: self.nivel_actual = 0 self.nivel_actual = self.nivel_actual - volume def enche(self, volume): if self.nivel_actual + volume > self.volume_total: self.nivel_actual = self.volume_total self.nivel_actual = self.nivel_actual + volume
7 Número: Pág. 7 de Considere que tem disponíveis as operações básicas do tipo abstracto árvore: nova_arv, cria_arv, raiz, arv_esq, arv_dir, arv_vazia, arv_iguais, escreve_arv. (a) (1.5) Escreva a função conta_nos que recebe como argumento uma árvore e devolve o número total de nós que esta contém. def conta_nos(a): if arv_vazia(a): return 0 return 1 + conta_nos(arv_esq(a)) + conta_nos(arv_dir(a)) (b) (1.5) Uma árvore binária diz-se equilibrada se e só se, para cada uma das suas sub-árvores a diferença entre o número de nós da árvore esquerda e o número de nós da árvore direita nunca é superior a um. A arvore vazia é, por definição, equilibrada. Usando a função conta_nos da alínea anterior, escreva o predicado equilibrada que recebe como argumento uma árvore e devolve verdadeiro apenas se a árvore é equilibrada. def equilibrada(a): if arv_vazia(a): return True ne = conta_nos(arv_esq(a)) nd = conta_nos(arv_dir(a)) if -1 <= ne-nd <= 1: return equilibrada(arv_esq(a)) and equilibrada(arv_dir(a)) return False 12. (1.5) Considerando a existência do tipo pilha, realizada através de funções, com as operações nova_pilha, topo, tira e empurra, escreva um predicado com o nome parenteses_balanceados que recebe uma cadeia de caracteres correspondente a uma expressão aritmética (não verificando a correcção da entrada) e que determina se os seus parêntesis estão balanceados, ou seja cada parênteses que é aberto tem um parênteses fechado correspondente e os pares de parêntesis estão correctamente encadeados. Considere apenas os parêntesis curvos, rectos e as chavetas. Por exemplo, >>> balanceados( 2 * [(5 + 7) * a + b] ) True >>> balanceados( 3) ) False >>> balanceados( ({)} ) False >>> balanceados( ({[[()]]}()) ) True
8 Número: Pág. 8 de 8 def balanceados (exp): balanc = True pars = nova_pilha() for c in exp: if c in [ (, [, { ]: pars = empurra(pars, c) elif c in [ ), ], } ]: if not pilha_vazia(pars): outro = topo(pars) if (c == ) and outro == ( ) or \ (c == ] and outro == [ ) or \ (c == } and outro == { ) : pars = tira(pars) return False return False return pilha_vazia(pars)
Fundamentos da Programação
Fundamentos da Programação Solução do segundo exame 29 de Janeiro de 2016 18:30 20:30 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta.
Fundamentos da Programação
Fundamentos da Programação Solução do Primeiro Teste 26 de Outubro de 2013 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo
Estrutura de Dados. Diego Silveira Costa Nascimento
Estrutura de Dados Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte [email protected] 31 de agosto de 2017 Ementa do Curso 1 Introdução
Estruturas lineares. Capítulo 13. Para os exercícios deste capítulo, considere definidos os tipos:
Capítulo 13 Estruturas lineares Para os exercícios deste capítulo, considere definidos os tipos: pilha implementado como a classe pilha com os métodos pilha, empurra, topo, tira, pilha_vazia e repr fila
Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE
Recibo do Exame de 1ª Época de Introdução à Programação (IGE e ETI), 2003/02/25 1º semestre de 2002/2003, ISCTE Nome do aluno:... Número do aluno:... Assinatura do docente:... Notas: Exame de 1ª Época
TCC 00308: Programação de Computadores I Introdução
TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento
Funções. Capítulo (2) Considere a seguinte interacção em Python: >>> def f1(x):... return x * x... >>> f1(5) 25 >>> f2 = f1 >>>
Capítulo 3 Funções 1. (2) Considere a seguinte interacção em Python: def f1(x): return x * x f1(5) 25 f2 = f1 (a) Qual o valor retornado pela chamada f2(5)? Justifique a sua resposta. (b) Suponha que agora
Introdução à Programação Aula 3 Primeiros programas
Introdução à Programação Aula 3 Primeiros programas Pedro Vasconcelos DCC/FCUP 2015 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 3 Primeiros programas 2015 1 / 23 Nesta aula... 1 Tipos básicos
Revisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira [email protected] Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.
Variáveis e Entrada de Dados Marco André Lopes Mendes [email protected] [email protected] marcoandre.googlepages.com Algoritmos é a base Primeiro programa Este programa possui apenas uma
Algoritmos e Estrutura de Dados Aula 08 Pilhas
Algoritmos e Estrutura de Dados Aula 08 Pilhas Profa. Alana Oliveira e Prof. Davi Viana [email protected] e [email protected] Se não entender, pergunte! Dados e Tipos de Dados Um dado é uma informação
Á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ó
8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38
8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados
8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38
8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados
1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?
P1 Conceitos (2,4 valores) 1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível? (0.8v) 1.b) Indique três vantagens de criar um programa
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
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
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
1 Expressões, valores e tipos 1. 2 Variáveis e atribuições 5. cálculo de expressões segue a estrutura de parênteses e as prioridades dos operadores
Nesta aula... Conteúdo 1 Expressões, valores e tipos 1 2 Variáveis e atribuições 5 1 Expressões, valores e tipos Expressões e valores Tipos programas calculam expressões para produzir valores cálculo de
Introdução à Programação. Vanessa Braganholo
Introdução à Programação Vanessa Braganholo [email protected] Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos
Introdução à Programação
Introdução à Programação Leonardo Gresta Paulino Murta [email protected] Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas
Nesta aula... Iteração indefinida. 1 Decisões em Python. 2 Funções lógicas. 3 Recursão. 4 Iteração. 5 Ciclo for ou while?
Nesta aula... 1 2 3 4 indefinida 5 Valores lógicos: booleanos Tipo do Python para guardar os valores lógicos, verdadeiro e falso: booleano (George Bool, matemático inglês) Valores lógicos podem ter apenas
Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:
Lista de Figuras Figura 1 1: Diagrama de Funcionamento do Laço while 34 Figura 1 2: Diagrama de Funcionamento do Laço do-while 35 Figura 1 3: Diagrama de Funcionamento do Laço for 36 Figura 1 4: Diagrama
Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO
Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados
Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin
Introdução a Programação Curso: Sistemas de Informação Programação I José R. Merlin Programas Programas são instruções para o computador executar uma tarefa Estas instruções seguem uma lógica Lógica: modo
Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Primeira Parte 1. Nim
Fundamentos da Programação Ano lectivo 2013-14, 2 o Semestre Projecto Primeira Parte 1 Nim Nim é um jogo de estratégia matemática, que pode ser jogado casualmente usando um conjunto de objectos dispostos
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
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
Estruturação de Procedimentos
Capítulo 4 Estruturação de Procedimentos 4. Exercícios de revisão. Diga o que entende por linguagem estruturada em blocos. Descreva a regra associada a esta estrutura, e diga qual a sua importância. 2.
Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler
Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser
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
S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas
ESTRUTURA DE DADOS DEBORAH FERREIRA S U M Á R I O Definição de Estrutura de Dados 1 Vetores 2 Listas Ligadas 4 Pilhas 6 Filas 8 D E F I N I Ç Ã O D E E S T R U T U R A D E D A D O S Estruturas de dados
1. Listas sequenciais versus listas ligadas. Lista sequencial
Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista
Inteligência Artificial
Inteligência Artificial Segundo Teste 16 de Janeiro de 2013 17:00-18:30 Este teste é composto por 12 páginas contendo 7 perguntas. Identifique já todas as folhas do teste com o seu nome e número. Na mesa
PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015
PRIMEIROS PASSOS COM PYTHON Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON 02/47 O QUE É PYTHON? Python é uma linguagem de propósito geral, de alto nível e interpretada Python será
Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de
CAP Exame de Admissão 16/12/2013. Instruções Gerais (leia atentamente)
CAP 2014 Exame de Admissão 16/12/2013 Nome do Candidato: Identidade: Instruções Gerais (leia atentamente) O tempo total de duração do exame será de 2 horas. Você receberá uma Folha de Respostas junto com
Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura
Árvores B Prof. Márcio Bueno [email protected] / [email protected] Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes
ALGORITMOS E ESTRUTURAS DE DADOS CES-11
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos
Programação Funcional Aulas 5 & 6
Programação Funcional Aulas 5 & 6 Sandra Alves DCC/FCUP 2016/17 Definições usando outras funções Podemos definir funções usando outras previamente definidas (por exemplo: do prelúdio-padrão). Exemplo:
Variáveis, Tipos de Dados e Operadores
! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: [email protected]) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória
Linguagens de Programação Princípios e Paradigmas
Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Linguagens e Ambientes de Programação 2002-2003 Linguagens de Programação Princípios e Paradigmas Gladys Castillo
5. Expressões aritméticas
5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis
Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call
Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Introdução a Programação
Introdução a Programação Prof. André Gustavo Duarte de Almeida [email protected] docente.ifrn.edu.br/andrealmeida Aula 02 Primeiro Programa Roteiro Primeiros Passos Variáveis Expressões Comandos
Uma Questão de Estilo Elementos de Estilo Java
Uma Questão de Estilo Elementos de Estilo Java Vasco. T. Vasconcelos 9 Setembro 2004 Escrevemos programas para serem lidos por humanos. Pelos outros, mas também por nós, daqui a uma semana. As linguagens
Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode
Pilhas e Filas Pilhas Uma pilha é uma estrutura linear de dados que pode ser acessada somente por uma de suas extremidades. Uma pilha é uma lista LIFO (do inglês last-in-first out) o último a entrar é
INTELIGÊNCIA ARTIFICIAL 2008/09
INTELIGÊNI RTIFIIL 2008/09 PROUR 1) onsidere o problema da torre de Hanoi com discos. Neste problema, existem três pinos, e e discos de diâmetros diferentes, estando no início todos os discos colocados
Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.
Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção
Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio
Computação e Programação Textos de apoio às aulas práticas Jaime Ramos, Francisco Miguel Dionísio DMIST, Dezembro de 2010 Parte I MATLAB 1 Capítulo 1 Exercícios preliminares 1. Defina a função conta divisores
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
Estruturas de Dados Encadeadas
CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos
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
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
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
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
Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO
Principais paradigmas de programação Programação imperativa Programação funcional Programação lógica Programação OO Programação Imperativa É o paradigma mais usado. Programas são definidos através de sequências
Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1
2006/2007 Trabalho prático nº 1 Trabalho realizado por: Pedro Oliveira (501062444) Rui Costa (501062452) Turma: TP1 1 - Introdução O objectivo deste trabalho era implementar um simulador de Autómatos Finitos
Operadores. Tipo de operadores. Aritméticos. Relacionais. Lógicos. Bit a bit. Cálculos aritméticos: soma, subtracção, multiplicação, divisão, etc.
Operadores Tipo de operadores Aritméticos Cálculos aritméticos: soma, subtracção, multiplicação, divisão, etc. Relacionais Comparação entre entidades. Lógicos Bit a bit 1 Operadores Aritméticos Operadores
EAD PILHA - DEFINIÇÃO
EAD PILHA - DEFINIÇÃO Os seus elementos são processados pela ordem inversa à ordem de chegada: - o último elemento a entrar na Pilha é o primeiro a sair (LIFO Last In First Out ). Qualquer operação que
AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO
AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO PROGRAMA DE PÓS- GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 01. Toda arvore binária possui as seguintes propriedades: I. Todos os nós de uma sub- árvore direita são maiores
Capítulo 2 Operadores. A função scanf()
Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(
Árvores Binárias. 16/11 Representação e Implementação: Encadeada Dinâmica O TAD
Árvores Binárias 16/11 Representação e Implementação: Encadeada Dinâmica O TAD ED AB, encadeada dinâmica Para qualquer árvore, cada nó é do tipo info esq dir typedef int elem; typedef struct arv *Arv;
Exercícios de Excel com Programação em VBA. Luís Vieira Lobo
Exercícios de Excel com Programação em VBA Luís Vieira Lobo Enunciados 1) Considere o seguinte livro Excel constituído pelas folhas de cálculo Pauta e Exame (ver Fig. 1 e Fig. 2). Fig. 1 Folha de cálculo
Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.
Programação Folha Prática 5 Lab. 5 Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved. 1. Revisão. 2. Objectivos. 3. Exercícios LAB. 5 5ª semana ESTRUTURAS
Compiladores - Gramáticas
Compiladores - Gramáticas Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa
Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas
Programação Funcional 5 a Aula Definições recursivas Pedro Vasconcelos DCC/FCUP 2014 Definições usando outras funções Podemos definir funções usando outras previamente definidas (e.g. do prelúdio-padrão).
Lógica de Programação
Lógica de Programação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra!! do Gr. logiké, arte de raciocinar!! s. f., ciência que tem por objecto o estudo dos métodos e princípios que
Árvores Binárias. 9/11 e 11/11 Conceitos Representação e Implementação
Árvores Binárias 9/11 e 11/11 Conceitos Representação e Implementação Árvore Binárias (AB) Uma Árvore Binária (AB) T é um conjunto finito de elementos, denominados nós ou vértices, tal que: (i) Se T =,
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
MAC2166 Introdução à Computação
Departamento de Ciência da Computação IME USP MAC2166 Introdução à Computação Escola Politécnica Primeiro Semestre de 2015 Prova Substitutiva QUESTÃO 1 Esta questão consiste na implementação de duas funções
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 é
Tratamento dos Erros de Sintaxe. Adriano Maranhão
Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores
Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
