Enunciado do problema: Calcule o valor de e, base dos logaritmos neplerianos, usando a série infinita abaixo
|
|
- Rafael Lancastre Garrau
- 7 Há anos
- Visualizações:
Transcrição
1 Mais alguns exercícios em pseudocódigo Enunciado do problema: Calcule o valor de e, base dos logaritmos neplerianos, usando a série infinita abaixo e 1 =1+ 1 1! + 1 2! + 1 3! + 1 4! + 1 5! + = 1 i=0 i!. Imprima passo a passo da soma e compare com o valor obtido com o uso de uma calculadora. Descrição do problema: Aqui faremos uso do pseudocódigo que fizemos anteriormente. Formalmente isto é um exemplo muito simples do que é chamado de reutilização de código. No entanto, observe que usaremos o cálculo do fatorial como parte do que foi solicitado. O conceito que exercitaremos aqui é o de uso de uma variável acumuladora, ou seja, uma variável que terá seu valor alterado de maneira sistemática por adição de valores. Uma questão importante: em geral as linguagens de programação não se preocupam em limpar as posições de memória para as quais reserva (ou aloca) espaço para as variáveis. Portanto, antes de usar uma variável é bom que a ela seja atribuído um valor que faça sentido no uso que ela terá. Voltando ao problema! Observe que o somatório acima é infinito. Obviamente teremos que determinar um número máximo de elementos do somatório se queremos um resultado numérico. No pseudocódigo abaixo denominaremos como ntermos este valor máximo. Como temos um somatório, usaremos aqui a letra s para simbolizar este valor. Usaremos ainda as mesmas variáveis que foram necessárias para o cálculo do fatorial. Observe ainda que será necessário que tenamos um contador de número de termos da série definida acima. Dito isto, o pseudocódigo fica assim PROGRAMA e INTEIROS i, j, n, ntermos REAIS fat, s ntermos 15 s 1 j 1 ENQUANTO (j <= ntermos) FAÇA fat 1 n j i 1 ENQUANTO (i <= n) FAÇA fat fat * i i i + 1 FIM ENQUANTO s s + 1.0/fat j j + 1 FIM ENQUANTO IMPRIMA O valor de e com, n, termos =, s PARE FIM
2 Comentários sobre o pseudocódigo: Observe que aqui a variável fat foi definida como REAL, ou seja, um número de ponto flutuante pois ela será empregada para gerar uma aproximação de um número real que é a base dos logaritmos neplerianos. Observe também que tomei a liberdade de inicializar s como 1 pois nosso algoritmo de fatorial não gera naturalmente o fatorial de zero. Enunciado do problema: Dado dois vetores de ponto flutuante (REAL em FORTRAN, float em C, etc.) de n posições, determine o produto escalar dos mesmos. Descrição do problema: Observe que este é um exercício de uso da estrutura de dados denominada vetor, que é um caso especial de arranjo homogêneo. Isto significa que teremos um arranjo de informações de mesmo tipo. No caso desde problema serão todos do tipo ponto flutuante. Em inglês é comum o uso da palavra array para arranjo homogêneo. O que chamaremos vetor aqui será a estrutura de dados e não o vetor matemático. Assim, necessitamos especificar o tamanho do vetor, ou seja, o número de elementos que pediremos ao sistema operacional para reservar para nosso programa para que façamos o que desejamos. Cada um dos elementos do vetor será acessado por um índice como é comum na notação matemática. No entanto, este índice será expresso de forma diferente. Em FORTRAN temos a equivalência abaixo v i = 9 e v(i) = 9. No problema apresentado nós propositalmente confundiremos os termos mas observe que, no entanto, podemos ter a estrutura de dados vetor com tipo caractere que não tem o menor sentido sob o ponto de vista matemático mas tem sentido como estrutura de dados. Da matemática se temos dois vetores de dimensão n, o produto escalar destes vetores é dado por n u v= u i v i. 1 Observe que o cálculo é efetivamente um somatório o que faz deste exercício uma variação do anterior. Para não complicar muito o uso e análise do pseudocódigo, faremos a atribuição de valores no próprio corpo do mesmo. Aqui também introduziremos um outro comando de pseudocódigo denominada FAÇA. Este comando é muito comum nas mais variadas produz um esquema de geração de uma contagem onde especificamos o início e fim da contagem de forma mais limitada que o DOWHILE. No entanto, este tipo de contagem é tão útil que foi a primeira estrutura de repetição criada no FORTRAN de continua existindo, de diferentes formas, em outras linguagens. Para ilustrar, mostraremos dois trechos de pseudocódigo equivalentes usando um pedaço do pseudocódigo do fatorial como exemplo: i 1 ENQUANTO (i <= n) FAÇA fat fat * i i i + 1 FIM ENQUANTO é equivalente a FAÇA i 1 ATÉ n fat fat * i Observe que a escrita é mais sintética, embora mais limitada pois a condição lógica do
3 ENQUANTO permite que se componha testes adicionais, coisa que o FAÇA não permite. Além disto, em geral, em FORTRAN e algumas outras linguagens este comando só permite uso de INTEIROS. A estrutura no pseudocódigo é a que se segue: PROGRAMA prod_escalar INTEIROS i, n REAL v(4), u(4), prodesc n 3 v(1) 1.0 v(2) 2.0 v(3) -1.0 u(1) 1.0 u(2) -3.0 u(3) 1.0 prodesc 0.0 FAÇA i 1 ATÉ n prodesc prodesc + v(i) * u(i) IMPRIMA O produto escalar dos vetores dados =, prodesc PARE FIM Algumas observações: Aqui chamaremos pela primeira vez uma questão importante sobre ao uso de algoritmos que é o custo computacional. De maneira ainda pouco precisa, chamaremos de custo computacional de o número de operações que um algoritmo faz para chegar ao resultado final. O motivo de escrevermos que esta definição é imprecisa ficará evidente em breve quando virmos que um algoritmo pode ter um número mínimo e um número máximo de operações dependendo da massa de dados de entrada. No caso deste nosso exemplo, produto escalar, observe que o número de operações que fazemos é proporcional ao número de elementos dos vetores. Basta seguir o programa para ver que faremos n somas e n multiplicações se estivermos fazendo o produto escalar de vetores de dimensão n. Diremos que o número de operações é precisamente este n somas e multiplicações. Mais a frente usaremos uma notação mais comum chamada O (se pronuncia notação o grande). Nela escreveremos que este algoritmo é de ordem O(n).
4 Enunciado do problema: Dado um vetor de inteiros de n posições, determine o maior valor do vetor. Descrição do problema: Observe que este é um exercício um pouco mais complexo de uso de vetores. A intenção é exercitar um procedimento muito comum no desenvolvimento de programas, ou seja, fazer comparações entre os elementos de uma massa de dados de forma a criarmos alguma forma de hierarquia que seja útil a nós. O caso da ordenação é bem óbvia pela quantidade de artefatos que temos em nossa vida de informações colocadas em alguma ordem, como dicionários, numeração de documentos, numeração de prédios em ruas, apartamentos em prédios, etc. A ordenação facilita a recuperação de informações. Aqui faremos uma versão bem simples para entender alguns dos elementos que envolvem alguns algoritmos de ordenação. Seja o vetor dado pelos elementos Conteúdo Observe que temos duas informações apresentadas acima: o índice do vetor e o conteúdo do vetor. Para nós ambas as informações são importantes pois só podemos acessar e/ou manipular a informação contida no vetor pela referência desta informação dada pelo índice. Claro que você olhou para o vetor acima e soube rapidamente qual é o maior valor mas como você faz isto? Lembre-se que você, via pseudocódigo (ou melhor, via um programa em uma linguagem de programação) vai instruir um computador (que não tem olhos) como determinar o maior valor entre os apresentados. Mas o que você faz? A resposta é bem simples: você faz comparações partindo do conhecimento que você tem dos números. Mas o computador não conhece números, apenas os manipula segundo regras que foram colocados na elaboração de seu hardware e seu software, que é constituído pelo sistema operacional, convenções industriais e as linguagens de programação que elaboram, por sua vez, vários aplicativos. Os comandos do pseudocódigo representam estruturas pré-desenvolvidas pelos criadores das linguagens de programação e são feitos como são para facilitar a implementação de algoritmos. Mas nos voltemos ao nosso problema. Uma forma de determinar o maior valor é eleger que um seja o maior e, partindo disto, comparar com os demais até termos o maior valor. No entanto, vimos que no pseudocódigo existem comandos que permitem gerarmos números sequencialmente e que isto é fácil de se fazer. Para aproveitarmos esta facilidade diremos que inicialmente o valor contido no primeiro elemento do vetor é o maior e chamaremos a variável que a contem de maior. É claro que não é no nosso exemplo mas isto permite que façamos comparações. Observe que não tem muito sentido compararmos com a partir do primeiro elemento, já que esta comparação não nos leva a nada, embora computacionalmente não faça a muita diferença: apenas faremos uma comparação a mais e desnecessária. Se comparamos maior com o o conteúdo da segunda posição do vetor, observe que em comparação com este elemento, o valor em maior não tem que ser trocado. No entanto o compararmos com o conteúdo da terceira posição teremos de trocar o valor de maior pelo conteúdo desta posição pois ela vale 4. A ideia é seguir sequencialmente pelo vetor de forma que ao final teremos o maior valor na variável maior. Claro, temos que ter uma referência, ou seja, uma variável, que indique o tamanho do vetor para que possamos parar o algoritmo. No caso chamaremos de n esta variável. Claramente necessitaremos de um contador e faremos uso do comando do pseudocódigo FAÇA. Para facilitar a compreensão colocaremos os valores dos vetores diretamente e não por meio de alguma leitura. O pseudocódigo abaixo materializa esta ideia
5 PROGRAMA Maior INTEIROS i, n, v(9), maior n 8 v(1) 3 v(2) 1 v(3) -4 v(4) 1 v(5) -7 v(6) 8 v(7) -5 v(8) 2 maior v(1) FAÇA i 2 ATÉ n SE (v(i) > maior) ENTÃO maior v(i) FIM SE IMPRIMA O maior elemento do vetor =, maior PARE FIM Algumas observações: Observe que foi alocado 9 espaços de memória para inteiros para o vetor v enquanto o vetor tem n = 8 posições. A priori, não há problema em alocar mais espaço que o usado, principalmente nestes programas que usam pouquíssima memória. No entanto, devemos tomar cuidado com este procedimento quando usamos quantidades próximas ao limite da máquina na qual estivermos trabalhando. Enunciado do problema: Dado um vetor de inteiros de n posições ordene-o em ordem decrescente. Descrição do problema: O que faremos aqui será novamente o reuso de um conhecimento recémadquirido. No caso usaremos o que vimos logo acima quando criamos o pseudocódigo para determinar o maior valor de um vetor. A ideia aqui está em sistematizar o procedimento de achar o maior para uma nova função. Observe que se determinamos o maior elemento do vetor, este seria o primeiro elemento num processo de ordenação decrescente. Mas se apenas colocamos o maior valor na primeira posição, destruímos o valor que estava lá. E não queremos isto, queremos ordenar os elementos do vetor. É claro que existe uma maneira de fazer isto: basta trocar o conteúdo dos elementos. Mas como faremos isto num computador? Para ilustrar, suporemos que queremos trocar o conteúdo de duas variáveis a e b. Para isto usaremos uma variável auxiliar que denominaremos aux. Abaixo vai um fragmento de um pseudocódigo
6 ... a 3 b 4 aux a a b b aux Observe que ao final do procedimento a terá o valor 4 enquanto b terá o valor 3. Voltado ao nosso problema, sabemos determinar o maior elemento e sabemos agora trocar os valores de duas variáveis. Mas para colocar o maior valor na primeira posição e colocar o valor que estava contido na primeira posição na posição que era do maior valor, é necessário que guardemos também a posição anterior do maior valor. Feito isto, conseguimos colocar o maior valor na primeira posição. E agora? Parece que a solução é fácil: basta achar qual é o maior valor dos elementos restantes e trocar este valor com o contido na segunda posição. Feito isto, partimos para o restante dos elementos até que acabe todos eles. Assim, nosso pseudocódigo fica como abaixo onde reaproveitaremos o pseudocódigo anterior.
7 PROGRAMA Ordena INTEIROS i, j, n, v(9), maior, imaior, aux n 8 v(1) 3 v(2) 1 v(3) -4 v(4) 1 v(5) -7 v(6) 8 v(7) -5 v(8) 2 FAÇA j 1 ATÉ n-1 maior v(j) imaior j FAÇA i j+1 ATÉ n SE (v(i) > maior) ENTÃO imaior i maior v(i) FIM SE aux v(j) v(j) v(imaior) v(imaior) aux FAÇA i 1 ATÉ n IMPRIMA v(i) PARE FIM Algumas observações: Qual é o custo computacional deste algoritmo? Observe que as operações que fazemos são de duas naturezas: comparação e troca. O número de comparações é fácil de estimar. Na determinação do primeiro elemento fazemos n 1 comparações, na determinação do segundo elemento n 2 e assim até ao final fazermos 1 única comparação. Assim, o número de comparações será mas sabemos que (n 1)+(n 2)+( n 3) n= n(n+1) 2 então como no nosso caso o último elemento da soma de operações é n 1, termos o resultado de número de operações
8 n 1= (n 1)n 2 ou seja, o número de operações cresce com o quadrado do número de elementos comparados. Pode ser demonstrado que no pior caso o número de trocas também será proporcional ao quadrado do número de elementos do vetor. Na notação O grande escreveríamos que este algoritmo tem custo computacional O(n 2 ). Repare que se o vetor inicial estiver ordenado ele fará todas as comparações! Ou seja, o algoritmo é insensível ao estado de ordenação do vetor dado. Claramente este não é um algoritmo muito inteligente. No entanto, é um bom exemplo de reaproveitamento de código e é bom didaticamente. Observe ainda como foi feita a impressão dos valores finais do vetor ordenado.
9 Enunciado do problema: Dado um vetor de inteiros de n posições ordene-o em ordem decrescente usando o algoritmo da bolha. No endereço há uma animação que ilustra o algoritmo. Como está em inglês, o nome é Bubble Sort. Para ilustrar aqui, olhe o vetor abaixo que chamaremos de v(i) Conteúdo Este é uma versão encurtada do vetor que estamos usando em nossos exemplos sobre vetores. A ideia consiste em você ir varrendo (ou seja, ir do primeiro elemento até o último) o vetor comparando os elementos colocados em sequência. No nosso caso, estamos ordenando em ordem decrescente e toda a vez que encontrarmos que o elemento de índice i+1 for maior que o elemento de índice i, trocamos o conteúdo do vetor. Observe a sequência abaixo i) comparamos v(1) com v(2). Como v(1) é maior que v(2), nada faremos Conteúdo ii) comparamos agora v(2) com v(3). Como v(3) é maior que v(2), trocamos os conteúdos do vetor Conteúdo iii) comparamos v(3) com v(4). Como v(4) é igual a v(3), nada faremos. Conteúdo É óbvio que o vetor não está ordenado. Novamente varreremos o vetor recomeçando as comparações. i) comparamos v(1) com v(2). Como v(2) é maior que v(1), trocamos os conteúdos do vetor Conteúdo ii) comparamos agora v(2) com v(3). Como v(3) é maior que v(2), nada faremos Conteúdo
10 iii) comparamos v(3) com v(4). Como v(4) é igual a v(3), nada faremos. Conteúdo Agora o vetor está ordenado. Pode ser demonstrado que no pior caso seria necessário mais uma varredura do vetor para termos a ordenação. Ou seja, para um vetor de tamanho n teremos que fazer no pior caso n-1 varreduras(por simplicidade faremos o pseudocódigo para o pior caso e depois mostraremos como torná-lo mais eficiente. ). Creio quer você já percebeu que serão necessários dos laços de repetição e um teste para conseguirmos escrever o pseudocódigo que queremos. PROGRAMA Ordena INTEIROS i, j, n, v(9), aux n 8 v(1) 3 v(2) 1 v(3) -4 v(4) 1 v(5) -7 v(6) 8 v(7) -5 v(8) 2 FAÇA j 1 ATÉ n-1 FAÇA i j+1 ATÉ n - 1 SE (v(i+1) > v(i)) ENTÃO aux v(i) v(i) v(i+1) v(i+1) aux FIM SE PARE FIM O curioso é que este método de ordenação tem um pseudocódigo mais simples que o anterior, embora seja um pouco mais difícil de entender como funciona. O custo computacional deste algoritmo tem particularidades. O pior caso é O(n 2 ) como o anterior mas este algoritmo é sensível ao estado de ordenação do vetor inicial, coisa que o anterior não é quanto ao número de comparações. No melhor caso o algoritmo é O(n), ou seja, ele pode ser consideravelmente mais rápido que o anterior em circunstâncias especiais. Mesmo assim, este não é um bom algoritmo se a quantidade de dados é muito grande (da ordem de bilhões de itens, o que é bem comum em algumas aplicações).
Programação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Estrutura de dados: listas Manipulando listas Vetores como listas
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisAlguns exercícios em pseudocódigo
Alguns exercícios em pseudocódigo Enunciado do problema: Escreva um programa em pseudocódigo que determine as raízes de um polinômio do segundo grau dado por a x 2 +b x+c usando o algoritmo de Báskara.
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Fluxograma e pseudocódigo Elementos de um fluxograma Pseudocódigo
Leia maisComputação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br
Computação Eletrônica Vetores e Matrizes Prof: Luciano Barbosa Recapitulando: Funções 2 Recapitulando: Função Void 3 Recapitulando: Escopo das Variáveis Referência à variável global A variável de escopo
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Módulos: math random Funções definidas pelo usuário Mais sobre notações
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisVETORES Motivação AULA 19
AULA 19 VETORES 19.1 Motivação Considere o problema de calcular a média aritmética das notas de 5 alunos de uma disciplina e determinar e escrever o número de alunos que obtiveram nota superior à média
Leia maisAula 10: Introdução a Vetores e Matrizes
Aula 10: Introdução a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Vetores e Matrizes Programação de Computadores IV 1 / 50 Agenda
Leia maisMétodo BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza
Método BubbleSort Estrutura de Dados II Prof Jairo Francisco de Souza Introdução Ordenar corresponde ao processo de reorganizar um conjunto de objetos em uma ordem ascendente ou descendente Consiste em
Leia maisComportamento assintótico
ANÁLISE DE ALGORITMOS: PARTE 2 Prof. André Backes 2 Na última aula, vimos que o custo para o algoritmo abaixo é dado pela função f(n) = 4n + 3 1 3 Essa é a função de complexidade de tempo Nos dá uma ideia
Leia maisAnálise de Algoritmos Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
Leia maisUniversidade Veiga de Almeida Algoritmos e Linguagem I
Aula 10 Conteúdo: 14. Estruturas de dados homogêneas 14.1. Matrizes de uma dimensão Vetores 14.2. Matrizes com mais de uma dimensão 14. Estruturas de Dados Homogêneas As estruturas de dados homogêneas
Leia maisDepartamento de Engenharia Rural Centro de Ciências Agrárias. Programação I
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Exercícios e implementação de algoritmos: Número capicua Constante
Leia maisMétodos de Ordenação Parte I
Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar
Leia maisAnálise de algoritmos
Análise de algoritmos SCE-181 Introdução à Ciência da Computação II Alneu Lopes Thiago A. S. Pardo 1 Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado
Leia maisLINGUAGEM C: ARRAY: VETORES E MATRIZES
LINGUAGEM C: ARRAY: VETORES E MATRIZES Prof. André Backes POR QUE USAR ARRAY? As variáveis declaradas até agora são capazes de armazenar um único valor por vez. Sempre que tentamos armazenar um novo valor
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Mais um tipo numérico print() formatado: clássico pythônico Tuplas
Leia maisAlgoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo
Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of
Leia maisAnálise de algoritmos. Parte I
Análise de algoritmos Parte I 1 Recursos usados por um algoritmo Uma vez que um procedimento está pronto/disponível, é importante determinar os recursos necessários para sua execução Tempo Memória Qual
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo temático Sistemas de Equações Lineares. Métodos diretos Conteúdo
Leia maisESTRUTURAS 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
Leia maisMarcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia
Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina
Leia maisAula 11: Modularização
Aula 11: Modularização Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Modularização Programação de Computadores IV 1 / 37 Agenda 1 Revisão e Contexto
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa
ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisCONCEITOS DE ALGORITMOS
CONCEITOS DE ALGORITMOS Fundamentos da Programação de Computadores - 3ª Ed. 2012 Editora Prentice Hall ISBN 9788564574168 Ana Fernanda Gomes Ascênsio Edilene Aparecida Veneruchi de Campos Algoritmos são
Leia maisUNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo
UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO Matrizes Prof. Alex Camargo alexcamargoweb@gmail.com Definição Matriz é uma variável composta homogênea multidimensional. Conjunto de
Leia maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo específico Sistemas de Equações Lineares Métodos Iterativos
Leia maisAlgoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva
Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br Introdução Uma das aplicações mais estudadas e realizadas sobre arranjos
Leia maisMATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21
AULA 21 MATRIZES - PARTE 1 21.1 Definição e Manipulação de Matrizes Sabemos como definir variáveis de um novo tipo de dados, denominado vetor, que representam seqüências de valores de um mesmo tipo. Por
Leia maisProf. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68
INE5231 Computação Científica I Prof. A. G. Silva 25 de abril de 2017 Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de 2017 1 / 68 Conteúdo programático O computador - [3 horas-aula] Representação
Leia maisAnálise de algoritmos. Parte I
Análise de algoritmos Parte I 1 Procedimento X Algoritmo Procedimento: sequência finita de instruções, que são operações claramente descritas, e que podem ser executadas mecanicamente, em tempo finito.
Leia maisALGORITMOS DE ORDENAÇÃO
ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,
Leia maisListas e Tuplas. Vanessa Braganholo
Listas e Tuplas Vanessa Braganholo vanessa@ic.uff.br Exemplo Motivacional } Programa para auxiliar a escrever Parabéns! nas melhores provas de uma disciplina com 3 alunos } Ler os nomes e as notas de 3
Leia maisAnálise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Mestrado em Ciência da Computação Prof. Dr. Aparecido Nilceu Marana Faculdade de Ciências I think the design of efficient algorithms is somehow the core of computer science.
Leia maisOs métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:
ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros
Leia maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Erros e Aproximações Numéricas Sistemas de Equações Lineares.
Leia maisAlgoritmos. 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 maisMÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1
MÉTODOS DE ORDENAÇÃO Introdução à Programação SI1 2 Conteúdo Conceitos básicos Classificação por troca Classificação por inserção Classificação por seleção 3 Conceitos Básicos Ordenar: processo de rearranjar
Leia maisMétodos de Ordenação
Métodos de Ordenação Conceitos básicos sobre ordenação Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem específica. Objetivo da ordenação: facilitar a recuperação posterior
Leia maisMedida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então
Leia maisO mais leve e o mais pesado Algoritmos de Ordenação
Atividade 7 O mais leve e o mais pesado Algoritmos de Ordenação Sumário Os computadores são muitas vezes utilizados para colocar listas em algum tipo de ordem, por exemplo, nomes em ordem alfabética, compromissos
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 12: Ordenação: Bubble, Selection e Insertion Sort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes
Leia mais2. Complexidade de Algoritmos
Introdução à Computação II 5952011 2. Complexidade de Algoritmos Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2.1. Introdução 2.1.1. Revisão de Pseudo-Código 2.1.2.
Leia maisAula 3: Algoritmos: Formalização e Construção
Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de
Leia maisAula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta
Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Direta Prof. Gustavo Callou gustavo.callou@ufrpe.br gcallou@gmail.com Classificação por Inserção Métodos de Classificação em Memória
Leia maisLógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo
Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo Este guia irá lhe ajudar a entender o laço de repetição
Leia maisInformática I. Aula 14. Aula 14-10/10/2007 1
Informática I Aula 14 http://www.ic.uff.br/~bianca/informatica1/ Aula 14-10/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript
Leia maisVetores. Vanessa Braganholo
Vetores Vanessa Braganholo vanessa@ic.uff.br Exemplo Motivacional } Programa para auxiliar a escrever Parabéns! nas melhores provas de uma disciplina com 3 alunos } Ler os nomes e as notas de 3 alunos
Leia maisMé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
Leia maisAula 18 Algoritmos básicos de busca e classificação
Aula 18 Algoritmos básicos de busca e classificação Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas e classificação de tabelas estão entre os mais usados. Considere por exemplo
Leia mais15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -
Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções 1 Um algoritmo pode ser visto como uma sequência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema.
Leia maisDCC001 - Programação de Computadores. Lista de Exercícios 02 - Estruturas de Dados Homogêneas (Vetores).
DCC-UFMG 1 semestre de 2007 DCC001 - Programação de Computadores Prof. Martín Gómez Ravetti Lista de Exercícios 02 - Estruturas de Dados Homogêneas (Vetores). Valor: 5 pontos 1. Escreva um algoritmo em
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 06 Notação O humberto@bcc.unifal-mg.edu.br Tempo de execução (ms) Última aula teórica Análise experimental 45 40 35 30 25 20 15 10 5
Leia maisMÉTODOS DE ORDENAÇÃO DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza
MÉTODOS DE ORDENAÇÃO DE DADOS EM MEMÓRIA PRIMÁRIA Material da Prof. Ana Eliza Métodos de Ordenação em Memória Primária Métodos Elementares Classificação por Inserção Método da Inserção Direta Classificação
Leia maisLógica e Linguagem de Programação Aula 04 - Estruturas de Repetição - GABARITO Repetição com Variável de Controle - Para Professor: Danilo Giacobo
Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição - GABARITO Repetição com Variável de Controle - Para Professor: Danilo Giacobo Este guia irá lhe ajudar a entender o laço de repetição
Leia maisLinguagem e Técnicas em Programação. Gilson de Souza Carvalho
Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade
Leia maisProgramação de Computadores Ordenação de Arranjos
Programação de Computadores Ordenação de Arranjos Notação O Alan de Freitas Classes de algoritmos Busca em arranjo Busca sequencial Busca binária On) Olog n) Ordenação de Arranjos Ordenação de Arranjos
Leia maisTÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados
TÉCNICAS DE PROGRAMAÇÃO Estrutura de dados O que são estrutura de dados? É a forma como os armazenamos tipos de dados, vistos dia a dia, ou seja, nada mais são do que a transformação de uma forma de armazenamento
Leia maisMini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016
Mini apostila de Python - Oficina de Vestibulandos PET Computação - UFPR September 2016 1 Sumário 1 Introdução 3 2 Obtenção e Instalação 3 3 Variáveis 3 4 Operações Matemáticas 5 5 Entrada de Dados 6 6
Leia maisPROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:
Leia maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo temático Sistemas de Equações Lineares. Métodos diretos Conteúdo
Leia maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo específico Sistemas de Equações Lineares. Métodos Iterativos
Leia maisProgramaçã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 maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Erros e Aproximações Numéricas Sistemas de Equações Lineares
Leia maisLista de exercícios sobre contagem de operações Prof. João B. Oliveira
Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.
Leia maisCœlum Australe. Jornal Pessoal de Astronomia, Física e Matemática - Produzido por Irineu Gomes Varella
Cœlum Australe Jornal Pessoal de Astronomia, Física e Matemática - Produzido por Irineu Gomes Varella Criado em 1995 Retomado em Junho de 2012 Ano III Nº 023 - Agosto de 2012 MÉTODOS DE ORDENAÇÃO Prof.
Leia maisMC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
Leia maisIntrodução a Algoritmos Parte 09
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 09 (Baseado no Material do Prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br
Leia maisComportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)
Comportamento Assintótico Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Até Agora Falamos de complexidade de algoritmos com base no número de passos Vamos generalizar
Leia maisProgramação Estruturada
Algoritmos e Técnicas - Estruturas de Controle de Fluxo - Programação Estruturada Programação estruturada é a técnica de construir e formular algoritmos de uma forma sistemática. Utilizada para apresentar
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Leia maisLINGUAGEM 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
Leia maisMÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2
MÉTODOS DE ORDENAÇÃO Introdução à Programação SI2 2 Conteúdo Conceitos básicos Classificação por troca Classificação por inserção Classificação por seleção 3 Conceitos Básicos Ordenar: processo de rearranjar
Leia maisINF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática
Leia maisARQUITETURA DE COMPUTADORES
Representação de Dados Professor: Airton Ribeiro de Sousa E-mail: airton.ribeiro@faciplac.edu.br 1 Ao longo dos anos, muitos padrões e convenções foram estabelecidas para determinar certos aspectos da
Leia maisALGORITMOS 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 maisIntrodução aos Métodos Numéricos. Instituto de Computação UFF
Introdução aos Métodos Numéricos Instituto de Computação UFF Conteúdo Erros e Aproximações Numéricas Sistemas de Equações Lineares. Métodos diretos Interpolação Ajuste de Curvas Zeros de Função Sistemas
Leia maisLógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Início Enquanto - GABARITO Professor: Danilo Giacobo
Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Início Enquanto - GABARITO Professor: Danilo Giacobo Este guia irá lhe ajudar a entender o laço de repetição enquanto.
Leia mais24/09/2014. Prof. André Backes
Prof. André Backes 1 Por que usar listas? As variáveis declaradas até agora são capazes de armazenar um único valor por vez. Sempre que tentamos armazenar um novo valor dentro de uma variável, o valor
Leia maisIntrodução aos Métodos Numéricos
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo da disciplina Erros em Aproximações Numéricas Sistemas de Equações
Leia maisLinguagem de Maquina II. Visão Geral
Linguagem de Maquina II Visão Geral Revisão A linguagem de máquina é composta de seqüências binárias (1's e 0's) São interpretadas como instruções pelo hardware A linguagem de montagem e a linguagem de
Leia mais1. Noções de Programação
1. Noções de Programação O objetivo deste capítulo é fornecer ao aluno noções básicas de programação aplicadas à Engenharia Química; assim sendo, apenas estruturas fundamentais e exemplos simples serão
Leia maisEntrada: M ind
Ordenação O objetivo deste capítulo é o de estudar algoritmos de ordenação (ou classificação) de uma sequência de números, em ordem crescente, ou decrescente. De um modo geral tal sequência pode ser uma
Leia maisLista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013
Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void
Leia maisOficina de Python Prof. Me. José Carlos Perini
Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação
Leia maisAnálise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Análise e Projeto de Algoritmos junho - 2018 1 / 40 Este material é preparado
Leia maisIntrodução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Introdução à Programação Operadores, Expressões Aritméticas e Entrada/Saída de Dados Programa em C #include int main main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius
Leia maisIntrodução à Ciência da Computação II
Introdução à Ciência da Computação II Análise de Algoritmos: Parte I Prof. Ricardo J. G. B. Campello Este material consiste de adaptações e extensões de slides disponíveis em http://ww3.datastructures.net
Leia maisPrimeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP
Primeiro Exercício programa: Como o Google ordena páginas MAP-2121 para EPUSP 1 Instruções gerais Os exercícios computacionais pedidos na disciplina Cálculo Numérico têm por objetivo fundamental familiarizar
Leia maisComplexidade de Tempo e Espaço
Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando
Leia maisTécnicas de Programação
Técnicas de Programação Algoritmos Anderson Gomes Eleutério Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir
Leia mais