Exercícios da cadeira de Introdução à Programação
|
|
|
- Isabel Borges Batista
- 8 Há anos
- Visualizações:
Transcrição
1 Exercícios da cadeira de Introdução à Programação Cláudia Antunes Ana Cardoso Cachopo João Cachopo Francisco Couto António Leitão Inês Lynce César Pimentel H. Sofia Pinto Ano Lectivo 2002/2003 Parte II
2 CONTEÚDO 1 Conteúdo 1 Noções básicas 2 2 Procedimentos compostos 4 3 Processos gerados por procedimentos 10 4 Procedimentos de ordem superior 13 5 Tipos Abstractos de Informação 20 6 O Desenvolvimento de programas 35 7 Programação imperativa 36 8 Avaliação baseada em ambientes 40 9 Estruturas mutáveis Programação com objectos 46
3 7 PROGRAMAÇÃO IMPERATIVA 36 7 Programação imperativa Exercício 7.1 Diga o que é impresso pelo interpretador de Scheme ao avaliar cada uma das seguintes expressões. Suponha que as expressões são avaliadas pela ordem apresentada. Assinale e explique os erros detectados. ( ) (first (+ (sqrt 5) 4)) odd? (define x 5) (set! x "ip") (set! b 2) (list x b 5 (* 3 2)) (define a 3) (set! a "ola") (+ a 1) (begin (let ((a 5)) (+ a (* )) (sqrt (length (1 a b "bom dia" (2 5) 3)))) (display a) a) Exercício 7.2 Escreva um procedimento chamado cria-multiplicador que recebe um número e retorna um procedimento que recebe outro número e o multiplica pelo primeiro. Por exemplo, > (define mult5 (cria-multiplicador 5)) > (mult5 2) 10 Exercício 7.3 (Livro 3.1) Um acumulador é um procedimento que é chamado repetidamente com apenas um argumento numérico e acumula os seus argumentos numa soma. De cada vez que é chamado, retorna a soma acumulada até ao momento. Escreva um procedimento make-accumulator que gera acumuladores, cada um dos quais mantendo uma soma independente. O valor de entrada para o procedimento make-accumulator deve especificar o valor inicial da soma. Por exemplo,
4 7 PROGRAMAÇÃO IMPERATIVA 37 (define A (make-accumulator 5)) (A 10) 15 (A 10) 25 Exercício 7.4 (Livro 3.2) Em aplicações para testar software, é útil ser capaz de contar o número de vezes que um procedimento é chamado durante o decurso de uma computação. Escreva um procedimento make-monitored que recebe um procedimento f como argumento, que por sua vez é um procedimento de um argumento. O resultado retornado pelo procedimento make-monitored é um terceiro procedimento mf que mantém um registo do número de vezes que foi chamado através de um contador interno. Se o valor de entrada para mf for o símbolo how-many-calls?, então mf deve retornar o valor do contador. Se o valor de entrada for o símbolo reset-count, então mf deve inicializar o contador a zero. Para qualquer outro valor de entrada, mf retorna o valor de aplicar f a esse valor e incrementa o contador. Por exemplo, podemos criar uma versão monitorizada do procedimento sqrt: (define s (make-monitored sqrt)) (s 100) 10 (s how-many-calls?) 1 Exercício 7.5 (Livro 3.27) Como foi discutido nas aulas teóricas, o seguinte procedimento para calcular os números de Fibonacci não é eficiente porque calcula múltiplas vezes o mesmo valor: (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1))(fib (- n 2)))))) Para evitar a repetição de cálculos, podemos imaginar um procedimento com estado interno que vai "aprendendo"e memorizando os números de Fibonacci, à medida que estes são calculados pelo procedimento. Este procedimento mantém uma lista com os valores dos números de Fibonacci que já memorizou, por exemplo ((0. 0)(1. 1)(2. 1)). Sempre que tem de calcular um número de Fibonacci, começa por ver se já sabe o seu valor, e se não souber calcula-o e memoriza-o. Escreva um procedimento em Scheme para calcular os números de Fibonacci de acordo com esta técnica. Exercício 7.6 Defina um procedimento vector-search que recebe um número e um vector e devolve a posição no vector onde esse número ocorre, ou o valor lógico falso no caso de o número não existir no vector.
5 7 PROGRAMAÇÃO IMPERATIVA 38 > (vector-search 1 #( )) 0 > (vector-search 3 #( )) 2 > (vector-search 8 #( )) #f Exercício 7.7 Defina um procedimento vector-map que corresponde ao procedimento map, mas para vectores: recebe um procedimento de um argumento e um vector e retorna um vector com os resultados produzidos ao aplicar o procedimento a cada elemento do vector recebido. > (vector-map abs #( )) #( ) > (define v #(1 2 3)) > (vector-map (lambda (x) (* x x)) v) #(1 4 9) > v #(1 2 3) Exercício 7.8 Defina um procedimento vector-map-into!, semelhante ao procedimento vector-map do exercício anterior, mas que altera destrutivamente o vector recebido subtituindo os elementos do vector pelo resultado de lhes aplicar o procedimento recebido. > (vector-map-into! abs #( )) #( ) > (define v #(1 2 3)) > (vector-map-into! (lambda (x) (* x x)) v) #(1 4 9) > v #(1 4 9) Exercício 7.9 Defina um procedimento vector-reverse! que recebe um vector e inverte esse vector, modificando-o destrutivamente. > (vector-reverse! #( )) #( ) > (define v #(1 2 3)) > (vector-reverse! v) #(3 2 1) > v #(3 2 1)
6 7 PROGRAMAÇÃO IMPERATIVA 39 Exercício 7.10 O procedimento vector-search do exercício 7.6 tem que percorrer todos os elementos do vector no caso de estar a procurar um elemento que não existe no vector. 1. No caso de o elemento a procurar existir no vector, quantos elementos do vector, em média, serão percorridos? 2. Supondo que o vector está ordenado por ordem crescente, defina um nova versão do procedimento vector-search que efectua uma procura sequencial mas que não tenha que percorrer todos os elementos do vector quando o elemento a procurar não existe no vector. 3. Em média, quantos elementos do vector são percorridos quando o número não existe no vector? E quando existe? Exercício 7.11 Sabendo que o vector está ordenado por ordem crescente, é possível realizar uma procura binária, que é mais eficiente que a procura sequencial do exercício anterior. Esta procura baseia-se no facto de que se compararmos o elemento a procurar com o elemento do meio do vector podemos obter um de três resultados diferentes: Os dois elementos são iguais, o que significa que encontrámos o elemento que procurávamos. O elemento do meio é menor, o que significa que o elemento que procuramos, se existir, estará na metade do vector com índices maiores. O elemento do meio é maior, o que significa que o elemento que procuramos, se existir, estará na metade do vector com índices menores. Defina o procedimento vector-binary-search que realiza uma procura binária num vector. Qual a ordem de crescimento deste procedimento?
7 8 AVALIAÇÃO BASEADA EM AMBIENTES 40 8 Avaliação baseada em ambientes Exercício 8.1 Desenhe o diagrama de ambientes criado pela seguinte interacção: (define x 63) (define square (lambda (x) (* x x))) (define sum-sq (lambda (x y) (+ (square x) (square y)))) (sum-sq 3 4) Exercício 8.2 Desenhe o diagrama de ambientes criado pela seguinte interacção: > (define (conjuncao p1 p2) (lambda (x)(and (p1 x)(p2 x)))) > (define par? even?) > (define par>3? (conjuncao par? (lambda (x)(> x 3)))) > (par>3? 4) #t > (par>3? 2) #f > (par>3? 5) #f Exercício 8.3 Desenhe o diagrama de ambientes criado pela seguinte interacção: > (define (cria-acumulador valor) (lambda (increm) (set! valor (+ valor increm)) valor)) > (define ac1 (cria-acumulador 0)) > (ac1 5) 5 > (ac1 5) 10
8 8 AVALIAÇÃO BASEADA EM AMBIENTES 41 Exercício 8.4 Desenhe o diagrama de ambientes criado pela seguinte interacção: > (define (cria-acumulador vi) (let ((valor vi)) (lambda (x) (set! valor (+ valor x))))) > (define A (cria-acumulador 0)) > (A 5) Exercício 8.5 Desenhe o diagrama de ambientes criado pela seguinte interacção: > (define (cria-multiplicador n) (lambda (x) (* x n))) > (define mult3 (cria-multiplicador 3)) > (define mult5 (cria-multiplicador 5)) > (mult3 2) 6 > (mult5 7) 35 Exercício 8.6 Considere os seguintes exemplos de código: Exemplo A: Exemplo B: > (define (proca1 x y) > (define (procb1 x y) (define (proca2 x) (define (procb2 x) (define (proca3 y) (procb3 x)) (+ x y)) (define (procb3 y) (proca3 x)) (+ x y)) (proca2 y)) (procb2 y)) > (proca1 2 3) > (procb1 2 3) Desenhe os diagramas de ambientes criados por cada um e mostre de forma clara o resultado final produzido. Exercício 8.7 Desenhe o diagrama de ambientes criados pela seguinte interacção:
9 8 AVALIAÇÃO BASEADA EM AMBIENTES 42 (define (make-adder n) (lambda (x) (+ x n))) (define addthree (make-adder 3)) (define addfive (make-adder 5)) (addfive 7) (addthree 7) Exercício 8.8 Usando os diagramas de ambientes explique a diferença existente entre as duas expressões: Ex. A Ex. B (let ((x 1) (let ((x 1) (y 2)) (y 2)) (let ((x 4) (let ((x 4) (z (+ x 4))) (z (+ x 4))) (set! y (+ x z)) (define y (+ x z)) (display (+ x y z))) (display (+ x y z))) (+ x y)) (+ x y)) Exercício 8.9 Os ambientes permitem-nos perceber como é que podemos usar procedimentos como representações para tipos abstractos de dados. Por exemplo, podemos criar rectângulos da seguinte forma: (define (make-rect w h) (define (dispatch op) (cond ((eq? op width) w) ((eq? op height) h) ((eq? op area) (* w h)) ((eq? op perimeter) (* 2 (+ w h))) (else (error "rectangle: non-existent operation" op)))) dispatch) (define r1 (make-rect 5 30)) (r1 height) Desenhe o diagrama de ambientes criados pelo código acima.
10 9 ESTRUTURAS MUTÁVEIS 43 9 Estruturas mutáveis Exercício 9.1 Diga qual o resultado produzido pelo avaliador de Scheme quando as seguintes expressões são avaliadas sequencialmente. Desenhe o diagrama de caixas e ponteiros correspondentes. Identifique o lixo que é recolhido pelo mecanismo de garbage collection. 1. (define a (cons 3 ())) (set! a (cons 4 (cons 5 ()))) (define a (cons 1 (cons 2 ()))) (define b (cons (cons 3 ())(cons 4 (cons 5 ())))) (define c (cons a (cdr b))) (set-car! b a) (equal? b c) (eq? b c) 2. (define c (cons 1 (cons 2 (cons 3 ())))) (define d (cons 4 (cons 5 (cons 6 ())))) (define w (cons c d)) (eq? (car w) c) (set-cdr! c d) w Exercício Defina o procedimento append, de modo a que gere um processo recursivo. 2. Defina o procedimento append!, que se distingue do anterior pelo facto de não fazer cópia de estruturas. (Sugestão: comece por definir o procedimento last-pair.) 3. Qual o resultado / diagrama de caixas e ponteiros produzido pela avaliação das seguintes expressões? (define c (cons 1 (cons 2 (cons 3 ())))) (define d (cons 4 (cons 5 (cons 6 ())))) (define u (cons c (cons d ()))) u (define x (append c d)) (set-cdr! c (7)) (set-cdr! d (8)) x (define y (append! c d)) y u Exercício 9.3 Desenhe o diagrama de ambientes (com caixas e ponteiros) criado pelo código que se segue:
11 9 ESTRUTURAS MUTÁVEIS 44 (let ((x (list 1 2 3))) (let ((y (list 4 5 6))) (let ((z (cons x y))) (set-cdr! x y) z))) Exercício 9.4 Defina o procedimento map!, que tem um comportamento semelhante ao procedimento map, mas altera destrutivamente a lista recebida como argumento. > (define l (list 1 2 3)) > (map add1 l) (2 3 4) > l (1 2 3) > (map! add1 l) (2 3 4) > l (2 3 4) Exercício 9.5 Desenhe o diagrama de caixas e ponteiros produzido pela avaliação do código que se segue: (let ((x (cons 1 1))) (set-car! x x) (set-cdr! x x) x) Qual o valor devolvido pela avaliação da expressão? Exercício 9.6 Explique o que acontece com a avaliação do código que se segue: (define (mistery x) (let ((b (last-pair x))) (set-cdr! b x) x)) (define answer (mistery (list 1 2 3))) (print-elements answer) Considere que o procedimento print-elements está definido do seguinte modo:
12 9 ESTRUTURAS MUTÁVEIS 45 (define (print-elements l) (if (null? l) (print) (begin (print (first l)) (print-elements (rest l))))) Sugira soluções para este problema.
13 10 PROGRAMAÇÃO COM OBJECTOS Programação com objectos Exercício 10.1 Um contador é um procedimento com estado interno que mantém um valor de contagem, e que recebe como argumento um dos seguinte símbolos: incrementa, decrementa, valor-actual, poe-a-zero. O valor retornado pelo contador corresponde ao valor de contagem depois de efectuada a operação pedida: incremetar ou decrementar de uma unidade, devolver o valor actual sem o modificar e colocar o valor a zero, respectivamente. Se o argumento recebido não for nenhum destes símbolos, o contador assinala um erro. Escreva um procedimento que recebe o valor inicial de contagem de um contador e cria o contador correspondente. Por exemplo, > (define c1 (cria-contador 5)) > (c1 incrementa) 6 > (define c2 (cria-contador 10)) > (c2 decrementa) 9 > (c1 poe-a-zero) 0 > (c2 valor-actual) 9 Exercício 10.2 Escreva um procedimento em Scheme chamado cria-estacionamento que simula o funcionamento de um parque de estacionamento. O procedimento recebe um inteiro que determina a lotação do parque e devolve um procedimento que pode receber como argumentos entra-carro, sai-carro e num-lugares. Por exemplo, > (define estacionamento-ist (cria-estacionamento 15)) > (estacionamento-ist entra-carro) > (estacionamento-ist entra-carro) > (estacionamento-ist num-lugares) 13 > (estacionamento-ist sai-carro) > (estacionamento-ist num-lugares) 14 Exercício 10.3 Escreva um procedimento chamado faz-lanca-notas que devolve um procedimento com estado interno que permite simular o lançamento de notas para um aluno a uma determinada cadeira. Este procedimento pode receber como argumento um inteiro ou um símbolo. Dependendo do argumento, tem o seguinte comportamento: Inteiro - atribui nota à cadeira (considere que este valor é sempre introduzido correctamente entre 0 e 20); no limite só podem ser lançadas duas notas positivas; nota - devolve a nota lançada (a melhor nota no caso de ter feito melhoria);
14 10 PROGRAMAÇÃO COM OBJECTOS 47 passou-cadeira? - devolve um valor lógico consoante o aluno tenha passado ou não à cadeira. fez-melhoria? - devolve um valor lógico consoante o aluno tenha feito ou não melhoria de nota. Considera-se que um aluno fez melhoria de nota se já foram lançadas duas notas positivas. Por exemplo, > (define Aluno99999 (faz-lanca-notas)) > (Aluno99999 passou-cadeira?) #f > (Aluno ) > (Aluno99999 nota) 14 > (Aluno ) > (Aluno99999 fez-melhoria?) #t > (Aluno ) "Lancamentos de nota esgotados" Exercício 10.4 Defina uma classe que corresponde a uma urna de uma votação. A sua classe deve receber a lista dos possíveis candidatos e manter como estado interno o número de votantes em cada candidato. Esta classe pode receber um voto num dos possíveis candidatos, aumentando o número de votos desse candidato em um. Deve também permitir apresentar os resultados da votação. Por exemplo, > (define urna (cria-urna (A B C))) > (urna resultados) c:0 b:0 a:0 > (urna A) > (urna C) > (urna A) > (urna B) > (urna C) > (urna A) > (urna resultados) c:2 b:1 a:3 Nota: Para apresenta os resultados, use o comando display.
Exercícios da cadeira de Introdução à Programação. Ana Cardoso Cachopo João Cachopo António Leitão
Exercícios da cadeira de Introdução à Programação Ana Cardoso Cachopo João Cachopo António Leitão Ano Lectivo 2000/2001 1 Prefácio Este documento reúne os exercícios propostos nas aulas práticas da cadeira
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.
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
PROGRAMAÇÃO EM SCHEME:
Exercícios para PROGRAMAÇÃO EM SCHEME: Introdução à Programação Utilizando Múltiplos Paradigmas Departamento de Engenharia Informática Instituto Superior Técnico Universidade Técnica de Lisboa 2 Conteúdo
A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?
23 Algoritmos com Repetição Nos exemplos e exercícios vistos até agora, sempre foi possível resolver os problemas com uma sequência de instruções que eram executadas apenas uma vez. Existem três estruturas
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
Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006)
Aula Prática 3 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se que os alunos: consolidem os conceitos de expressão, tipo e redução; compreendam a
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
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
Listas em Haskell. Listas. Linguagem Haskell. Maria Adriana Vidigal de Lima. Faculdade de Computação - UFU. Setembro
em Haskell Linguagem Haskell Faculdade de Computação - UFU Setembro - 2009 em Haskell 1 em Haskell Noções sobre Construção de por Compreensão Funções Sobre Processamento de Fundamentos em Haskell Noções
UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO
UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Resumos e Soluções para os Exercícios para as Aulas Práticas da Disciplina de Fundamentos da Programação Ana Cardoso Cachopo Ano Lectivo 2006/2007
;(define conta-folhas ; (lambda ( ) ; (cond ; ( ( ) ) ; ( (and ) ) ; ( else ; ) ) ))
; ICC 00.2 PROVA 3 ; Gabarito ; QUESTAO 1 (1 ponto) (árvores binárias) ; Complete os espaços em branco na definição abaixo de maneira que ; a função receba uma Árvore Binária de números e retorne o número
LINGUAGEM C: COMANDOS DE REPETIÇÃO
LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições
Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias
SCC 124 - Introdução à Programação para Engenharias Comandos Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de
SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.
LINGUAGEM SQL SQL CREATE DATABASE MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. SQL CREATE TABLE SQL NOT NULL O valor NOT NULL obriga que o campo contenha sempre
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
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
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
Pragmática das Linguagens de
Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Primeiro Exame/Segundo Teste 17/12/2004 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das
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
1ª LISTA DE EXERCÍCIOS
UNIVERSIDADE SALGADO DE OLIVEIRA CURSO DE SISTEMAS DE INFORMAÇÃO DISCIPLINA: TEORIA DA COMPUTAÇÃO E ALGORITMOS PROF: GIULIANO PRADO DE MORAIS GIGLIO 1ª LISTA DE EXERCÍCIOS 1) Sobre variáveis, responda
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
Trabalho de Programação Funcional Linguagem Scheme
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)
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
Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre
Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros
Conceitos Básicos de Algoritmos
Conceitos Básicos de Algoritmos 35 TIPOS PRIMITIVOS Palavra-reservada: inteiro - define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais Palavra-reservada: real - define variáveis numéricas
Pedro Vasconcelos DCC/FCUP. Programação Funcional 8 a Aula Listas infinitas
Programação Funcional 8 a Aula Listas infinitas Pedro Vasconcelos DCC/FCUP 2014 Listas infinitas Podemos usar listas para sequências finitas, por ex.: [1,2,3,4] = 1:2:3:4:[] Nesta aula vamos ver que podemos
Linguagem C. Programação Estruturada. Estruturas de Controle. Prof. Luis Nícolas de Amorim Trigo
Programação Estruturada Linguagem C Estruturas de Controle Prof. Luis Nícolas de Amorim Trigo [email protected] Sumário Introdução Tipos de Estruturas de Controle Estruturas de Seleção Simples
LISTA DE ATIVIDADES ...
LISTA DE ATIVIDADES - Apresentar os quadrados dos números inteiros de 0 a 50. 2- Apresentar o resultado de uma tabuada de um número qualquer. 3- Elaborar um diagrama que apresente o somatório dos valores
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
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
Computação 1 - Python Aula 9 - Teórica: Interferindo no fluxo de repetição: Break e Continue Laços Aninhados
Computação 1 - Python Aula 9 - Teórica: Interferindo no fluxo de repetição: Break e Continue Laços Aninhados 1/ 14 break e continue : Comandos que permitem alterar o fluxo da estrutura de repetição. #
a) Defina uma função para obter o máximo entre dois números
IP, Resoluções comentadas, Semana 2 jrg, vs 002, Out-2012 a) Defina uma função para obter o máximo entre dois números A versão mais imediata talvez seja esta: public static int maior ( int a, int b ) {
Lista de Exercícios sobre Recursividade
Lista de Exercícios sobre Recursividade 1) Dado os algoritmos recursivos abaixo, apresente suas funções de complexidade de tempo. a) void Pesquisa(int n) if (n > 1) Inspecione n*n*n elementos; // custo
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
Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos
Programação Funcional 13 a Aula Definição de tipos Pedro Vasconcelos DCC/FCUP 2014 Declarações de sinónimos Podemos dar um nome novo a um tipo existente usando uma declaração de sinónimo. Exemplo (do prelúdio-padrão):
Introdução à Programação Orientada a Objetos em C++
Introdução à Programação Orientada a Objetos em C++ Disciplina de Programação Científica II Aula 12 de 18 24/05/2013 Professor Giovani Gracioli [email protected] Objetivos Os objetivos dessa aula são:
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
BCC201 Introdução à Programação ( ) Prof. Reinaldo Silva Fortes. Prática 05 Modularização
BCC Introdução à Programação (4-) Prof. Reinaldo Silva Fortes Funções: Passagem de parâmetros. Prática 5 Modularização ) Escreva uma função que receba um número inteiro e imprima o mês correspondente ao
Vetores, Matrizes e Gráficos
Programação de Computadores I UFOP DECOM 2013 2 Aula prática 3 Vetores, Matrizes e Gráficos Resumo Nesta aula você irá utilizar vetores para resolver diversos tipos de problemas. Para expressar a solução
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 03 Programas (Monolítico e Iterativo) Prof.ª Danielle Casillo Programas, Máquinas e Computações Diferentes
Algoritmos e Programação
Algoritmos e Programação Aula 5 Estruturas de Repetição Profa. Marina Gomes [email protected] 26/04/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje Estrutura de repetição Comando for
Aula 4 Estruturas de Controle
UNIP Universidade Paulista Ciência da Computação Aula 4 Estruturas de Controle Prof. Célio Ricardo Castelano 1 Tópicos Abordados 1) Instruções de seleção em Java: 2) Instruções de repetição em Java: 2
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
Aula Anterior. Decomposição algorítmica (continuação)
Aula Anterior Decomposição algorítmica (continuação) Degenerescência da decomposição básica da solução em três etapas Método de decomposição modificado à entrada Associação de diferentes valores de entrada
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
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Exercícios: Funções 1. Crie uma função que recebe como parâmetro um número
Universidade Federal de Uberlândia Faculdade de Computação. Estruturas de repetição
Universidade Federal de Uberlândia Faculdade de Computação Estruturas de repetição Prof. Renato Pimentel 1 Estruturas de repetição Utilização: Trecho de um algoritmo precisa ser executado mais de uma vez:
Conceitos básicos de algoritmos
Conceitos básicos de algoritmos Operadores Aritméticos Unários: +, - Exemplos: +1-5.9... var a: inteiro... a
Programação de Computadores:
Instituto de C Programação de Computadores: Pseudocódigo e Estruturas Básicas de Controle Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Roteiro
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
Resolução de 8-Puzzle com A* em LISP
Resolução de 8-Puzzle com A* em LISP Léo Willian Kölln 13 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro
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
Noções de algoritmos - Aula 1
Noções de algoritmos - Aula 1 Departamento de Física UFPel Definição de algoritmo Sequência ordenada e finita de operações para a realização de uma tarefa. Tarefa: Experimento de Física I. Passo 1: Reunir
Estruturas de Repetição WHILE e DO- WHILE
Universidade Federal do Pampa UNIPAMPA Campus Itaqui RS Engenharia de Agrimensura Introdução à Programação (prof. Dr. Rogério Vargas) Lista 2 (entrega: 1 de junho de 2015) Instruções: Trabalhos iguais
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
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
Lista de Exercícios 06 Modularização (Procedimentos e Funções)
Lista de Exercícios 06 Modularização (Procedimentos e Funções) Procedimentos: Passagem de parâmetros. 1) Escreva um procedimento que receba um número inteiro e imprima o mês correspondente ao número. Por
6. Pesquisa e Ordenação
6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação
Exercícios: Comandos de Repetição
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Comandos de Repetição 1. Faça um programa que determine o mostre os
Capítulo 6: Arquivos
Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de
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
ESTRUTURAS DE REPETIÇÃO - PARTE 1
AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a
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
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
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
LINGUAGENS DE PROGRAMAÇÃO
LINGUAGENS DE PROGRAMAÇÃO Caderno de Exercícios - 2002 Engenharia Informática Engenharia Electrotécnica Informática de Gestão Paulo Gouveia Nuno Dinis M. João Barros Halestino Pimentel Escola Superior
Aula Prática 2. Paradigmas da Programação I / Programação Funcional
Aula Prática 2 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se introduzir os conceitos seguintes: valores e expressões; tipos básicos e tipos compostos;
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
3 a Lista de Exercícios
Universidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Ciências da Computação INE 5406 - Sistemas Digitais - semestre 2010/2 Prof. José Luís Güntzel [email protected]
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
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias
LINGUAGEM C: VARIÁVEIS E EXPRESSÕES
LINGUAGEM C: VARIÁVEIS E EXPRESSÕES Prof. André Backes LINGUAGENS DE PROGRAMAÇÃO Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve
Programação de Computadores III
Programação de Computadores III Pseudocódigo e Estruturas Básicas de Controle Professor Hugo de Oliveira Barbalho [email protected] Material produzido pelo professor: Leandro Augusto Frata Fernandes
Computação e Programação
Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 Aula Teórica 10 Exemplo de desenvolvimento de Programa Modular: Máquina de venda de bilhetes D.E.M. Área Científica de Controlo Automação e
Estruturas de Repetição. Vanessa Braganholo
Estruturas de Repetição Vanessa Braganholo [email protected] Estruturas de Repetição } Permitem que um bloco de comandos seja executado diversas vezes } Repetição condicional: executa um bloco de código
BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores
BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores 1- Faça um programa que preencha um vetor com seis elementos numéricos inteiros, calcule e mostre: a.
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).
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
DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR
SQL Structured Query Language, ou Linguagem de Consulta Estruturada, foi desenvolvida pela IBM nos anos 70 para demonstrar a viabilidade do modelo relacional para bancos de dados. No final dos anos 80
Exercícios da cadeira de Introdução à Programação
Exercícios da cadeira de Introdução à Programação Cláudia Antunes Ana Cardoso Cachopo João Cachopo Francisco Couto António Leitão Inês Lynce César Pimentel H. Sofia Pinto Ano Lectivo 2002/2003 Parte I
Estruturas Condicionais e de Repetição
Estruturas Condicionais e de Repetição Prof. Wylliams Barbosa Santos [email protected] Introdução à Programação Crédito de conteúdo: Professora Ceça Moraes Conteúdo Comando de Decisão Comandos de Repetição
Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler
Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma
BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade
BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade Prof. Jesús P. Mena-Chalco 1Q-2016 1 Sobre a Lista 01 2 Lista 01 Solve me first Simple Array Sum A Very Big Sum Diagonal Difference
