ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO
|
|
|
- Matheus Henrique Filipe Ferreira
- 8 Há anos
- Visualizações:
Transcrição
1 ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO Adalberto Cajueiro ([email protected]) Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1
2 APRESENTAÇÃO DO CURSO Créditos: 4 Carga-horária: 60h Pré-requisitos: Programação II, Laboratório de Programação II, Teoria dos Grafos Dependências: OAC, LOAC, PLP, ATAL Linhas gerais: estudo preliminar sobre algoritmos e avançado sobre estruturas de dados. 2
3 APRESENTAÇÃO DO CURSO Página do curso de EDA: edaufcg Página do curso de LEDA: edaufcg/ Para cada disciplina existe um grupo associado (acessível através da página da disciplina) Solicitem para serem adicionados nos grupos URGENTE! Use seu no domínio ccc.ufcg.edu.br para acessar o TST (tst-eda.splab.ufcg.edu.br)! 3
4 DICAS PARA A DISCIPLINA (EDA) Acompanhar os avisos no grupo da disciplina e acompanhar o site da disciplina constantemente. Não deixar o assunto acumular. Fazer os exercícios recomendados. Estudar também pelas referências. Fazer uso da monitoria (aulas e horários de atendimento aos alunos). Revisar a matemática necessária. Evitar fazer reposições. Conversar com a turma anterior. 4
5 DICAS PARA A DISCIPLINA (LEDA) Acompanhar os avisos no grupo da disciplina e acompanhar o site da disciplina constantemente. Não deixar o assunto acumular. Fazer os exercícios recomendados. Estudar também pelas referências. Fazer uso da monitoria (aulas e horários de atendimento aos alunos). Revisar a matemática necessária. Evitar fazer reposições. Conversar com a turma anterior. Crie suas implementações! Não as pegue pronta com o alguem do semestre anterior. 5
6 AVALIAÇÃO (INFORMAÇÃO NO SITE) EDA 3 provas teóricas LEDA 3 provas práticas roteiros Nota combinada 6
7 INICIANDO A CONVERSA O que é um algoritmo? Como podemos descrever algoritmos? Como devemos avaliar algoritmos? O que é análise de algoritmos? 7
8 O QUE É UM ALGORITMO? Procedimento que recebe valores a serem manipulados (entradas) e produz algum valor (ou valores) como saída. Uma sequencia finita de passos/instruções que transformam um conjunto de valores em uma dada situação inicial em uma situação final que satisfaz condições específicas. 8
9 EXEMPLOS DE ALGORITMOS Receita de bolo Descrição de como trocar o pneu de um carro Algoritmo para resolver equações quadráticas Algoritmo para calcular o MDC, MMC, raiz quadrada Métodos ensinados a crianças para somar, subtrair, multiplicar e dividir inteiros 9
10 PROGRAMAS X ALGORITMOS Algoritmo Idéia usada para computar alguma coisa Expresso em diversas linguagens naturais Programa Texto que descreve um sistema computacional Expresso em notacoes projetadas para computadores 10
11 ESCRITA DE ALGORITMOS Linguagem natural? Linguagem de Programação (código)? Pseudo-código? Linguagem Humana pseudo-código Código 11
12 EXEMPLO Faça um programa que calcula as médias acumuladas de um vetor V com n inteiros. A média deve ser armazenada em um vetor M de n reais. 12
13 EXEMPLO double[] calculamedia(int[] V){ 1: for i = 1..n 2: soma = 0 3: for j = 1..i 4: soma = soma + V[j] 5: M[i] = soma/i 6: return M } Como avaliar o algoritmo? 13
14 CRITÉRIOS DE AVALIAÇÃO Corretude Se para toda entrada especificada a saída correta é produzida Simplicidade Facilmente entendido, implementado e mantido Eficiência Inversa da quantidade de recursos requeridos para seu funcionamento 14
15 DE VOLTA AO EXEMPLO double [] calculamedia(int[] V 1: for i = 1..n 2: soma = 0 3: for j = 1..i 4: soma = soma + V[j] 5: M[i] = soma/i 6: return M } É correto? É simples? É eficiente? 15
16 CORRETUDE Garantir que em qualquer possível execução, cada bloco faz exatamente o que esperamos que faça Ações relacionadas a corretude: Identificar o que deve ser feito por cada bloco Identificar o estado antes do bloco executar Avaliar o efeito do bloco sobre o estado Caracterizar o estado após a execucao do bloco Provar corretude de algoritmos não é fácil! 16
17 SIMPLICIDADE Voce teria dificuldade em implementá-lo? Voce teria dificuldades em encontrar erros em uma implementação de outra pessoa? 17
18 EFICIÊNCIA Não basta dizer apenas se é eficiente mas quão eficiente! Como algoritmo é idéia, como avaliar os recursos que uma idéia consome? Abstrair detalhes de implementação. Refletir apenas o que é intrinseco de cada algoritmo. Comparação com algoritmos que resolvem o mesmo problema ajudam muito na prática. 18
19 EFICIÊNCIA A eficiência de um algoritmo é relevante? 19
20 EFICIÊNCIA Por que estudar eficiência? Os algoritmos ajudam a estudar a escalabilidade A eficiência geralmente descreve a linha entre: Tratável, intratável, insolúvel É a moeda da computação Qual é o melhor algoritmo para a solução de um problema? Complexidade x Eficiência 20
21 EFICIÊNCIA Método experimental várias implementações completas um grande número de execuções controladas medição cautelosa das variáveis de interesse análise (estatística) dos resultados Método analítico idéia: construir um modelo matemático do algoritmo. comparar algoritmos com base nos modelos 21
22 ABORDAGEM EXPERIMENTAL Executar os dois algoritmos Medir o tempo public static int arraymax(int[] A) {.. } long antes = System.nanoTime(); int x = arraymax(new int [] {4,5,6,1}); long depois = System.nanoTime(); long tempo = depois antes; 22
23 ABORDAGEM EXPERIMENTAL t (ms) medições Algoritmo n Tamanho da entrada 23
24 Quais fatores influenciam? 24
25 ABORDAGEM EXPERIMENTAL Fatores que influenciam Tamanho da entrada (n) Hardware Processador Memória Software Sistema Operacional Linguagem de Programação Compilador C/C++ 25
26 ABORDAGEM EXPERIMENTAL Limitações: Os experimentos são realizados em um número limitado de testes. Os dados podem não indicar a tendência dos valores não testados Os dois algoritmos devem ser testados no mesmo ambiente (hardware e software) Para analisar o tempo de execução, precisamos executar o algoritmo 26
27 Qual o desafio para comparar algoritmos sem executa-los? 27
28 Propor uma metodologia para analisar o tempo de execução dos algoritmos 28
29 OBJETIVOS Considerar todas as entradas Abstrair detalhes: analisar algoritmos independentemente de hardware e software Análise feita em alto nível (pseudo-código) Avaliar sem precisar rodar experimentos public boolean XYZ(int n, ) { } Algoritmos Análises f(n) Matemática 29
30 CONSIDERAÇÕES O tempo de execução de cada operação primitiva depende do hardware e software, mas de todo modo é constante Hipótese O tempo de cada operação primitiva é praticamente o mesmo 30
31 OPERAÇÕES PRIMITIVAS Atribuição: a = x Operação aritmética: a+1 Comparação de números: a>b Indexar array: a[i] Retorno de método: return x; Custo unitário: custo(primitiva) = 1 ou Custo constante: custo(primitiva) = c 31
32 CUSTO DAS OPERAÇÕES Instruções Consecutivas If then else Cmd1; Cmd2; custo(cmd1) + custo(cmd2) if (teste) {... // CustoIf } else {... // CustoElse } custo(teste) + max[custo(if),custo(else)] 32
33 CUSTO DE OUTRAS OPERAÇÕES Laço for (...) {... // CustoFor } Número de Iterações n * custofor Aninhamento de Laços tempo do laço interno x tempo do laço externo Recursão Mais complexo Veremos dois métodos (iterativo e mestre) 33
34 EXERCÍCIO 1 Quais as primitivas do algoritmo a seguir? public int max(int x, int y) { if (x > y) return x; else return y; } 34
35 EXERCÍCIO 1 Quais as primitivas do algoritmo a seguir? public int max(int x, int y) { if (x > y) return x; else return y; } 35
36 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; } 36
37 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; } 37
38 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( ) long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; } 38
39 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; ) } 39
40 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; ) + return r; ) } custo ( ) + custo ( custo ( 40
41 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( custo ( long potencia(int n) { } c1 + for (int i=1; i<=n; i++) r=2*r; ) + return r; ) 41
42 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for (int i=1; i<=n; i++) + r=2*r; return r; n*custo ( ) + custo ( ) 42
43 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for ( c1 ; i<=n; i++) + r=2*r; return r; n*custo ( ) + custo ( ) 43
44 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for ( c1 ; c2*n; i++) + r=2*r; return r; n*custo ( ) + custo ( ) 44
45 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for ( c1 ; c2*n; c3*(n-1)) + r=2*r; return r; n*custo ( ) + custo ( ) 45
46 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + r=2*r; return r; n*custo ( ) + custo ( ) 46
47 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + n*c4 + ) return r; 47
48 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + n*c4 + c5 48
49 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + n*c4 + c5 custo = 2*c1 + c2*n + c3*(n-1) + n*c4 + c5 49
50 TIPOS DE ANÁLISES Pior caso 6 tempo de execução (ms) tamanho da entrada Tempo médio Melhor caso 50
51 MELHOR, PIOR E CASO MÉDIO Pior Caso Mais comum T(n) = tempo máximo para um algoritmo com qualquer entrada de tamanho n Fácil de calcular (sem probabilidade) Caso Médio T(n) = tempo esperado sobre todas as entradas de tamanho n Precisa de uma hipótese da distribuição estatística das entradas Melhor Caso Não acrescenta muita informação Raramente ocorre na prática Logo, não é uma boa medida 51
52 EXERCÍCIO 4 Qual a expressão do tempo de execução de cada algoritmo? boolean primo(int n) { if (n==2) return true; for (int i=2; i<n; i++) if (n%i==0) return false; return true; } boolean primo(int n) { if (n==2) return true; for (int i=2; i<=n/2; i++) if (n%i==0) return false; return true; } 52
53 COMPLEXIDADE X HARDWARE Computador 10 7 instruções/seg Supercomputador 10 9 instruções/seg 50nlog 10 (n) Algoritmo de Ordenação 2n 2 53
54 ANÁLISE Quem ordenará mais rápido com n=10 6? 10 7 instr/s 50nlog 10 (n) log / segundos 10 9 instr/s 2n /10 9 = 2000 segundos 54
55 É importante não só ter uma máquina boa, mas também um algoritmo (tecnologia) eficiente! 55
Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos?
Pra início de conversa... O que é um algoritmo? Como podemos descrever algoritmos? avaliar algoritmos? Introdução à Análise de Algoritmos Prof. Cláudio E. C. Campelo http://claudiocampelo.com Derivado
CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick
Complexidade de algoritmos Notação Big-O
Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema
Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática
Projeto e Análise de Algoritmos Introdução Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática Projeto e Análise de Algoritmos Eu penso que o projeto de algoritmos eficientes
Medida 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 Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo
Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo
Análise de Algoritmos
Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo
Aná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
Teoria da computabilidade Indecidíveis Decidíveis
Bacharelado em Ciência da Computação Disciplina: Algoritmos e Estruturas de Dados I Professor: Mário Luiz Rodrigues Oliveira Teoria da computabilidade Indecidíveis Decidíveis Teoria da complexidade Intratáveis:
Análise e Técnicas de Algoritmos
Análise e Técnicas de Algoritmos Prof. Jorge Figueiredo http://www.dsc.ufcg.edu.br/~abrantes/atal032.html Jorge Figueiredo Aula 1-1 Agenda Apresentação do curso Motivação Introdução informal Jorge Figueiredo
COMPLEXIDADE DE ALGORITMOS
COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um problema bem formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve
Aná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 [email protected]
Aula 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
CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo.
CES-11 Noções de complexidade de algoritmos Complexidade de algoritmos Avaliação do tempo de execução Razão de crescimento desse tempo Notação O Exercícios COMPLEXIDADE DE ALGORITMOS Importância de análise
Aula 1. Teoria da Computação III
Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável
Complexidade 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
Análise de Complexidade de Algoritmos. mario alexandre gazziro
Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso
Fundamentos de Programação
Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal
Técnicas de análise de algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
Programaçã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
2. 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.
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
Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (
Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite
01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II
01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir
Construção de Algoritmos II Aula 06
exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade
Introduçã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
Linguagem de Programação I Prof. Tiago Eugenio de Melo.
Linguagem de Programação I Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info 1 Sumário Introdução Conceitos preliminares Introdução Variáveis Comandos Condicionais 2 Por que aprender a
01 Análise de Algoritmos (parte 1) SCC201/501 - Introdução à Ciência de Computação II
01 Análise de Algoritmos (parte 1) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir
Medida 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
Introdução à Ciência da Computação II
Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça
Bioinformática. Ney Lemke. Departamento de Física e Biofísica. logo
Bioinformática Ney Lemke Departamento de Física e Biofísica 2009 Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos Outline 1 Bibliografia 2 Introdução
COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS
COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um prolema em formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve
ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS
1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)
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
Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional
Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número
Teoria da Computação Aula 8 Noções de Complexidade
Teoria da Computação Aula 8 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Motivação: Por que estudar algoritmos? Perguntas: - Por que estudar algoritmos se os computadores
Complexidade de Algoritmos
Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também
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
Té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
Introdução à Programação
INF1005: Programação 1 Introdução à Programação 08/03/10 (c) Paula Rodrigues 1 Tópicos Principais Modelo de um Computador Ciclo de Desenvolvimento 08/03/10 (c) Paula Rodrigues 2 Modelo de um Computador
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
Análise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Estruturas de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números
Teoria da Computação Aula 9 Noções de Complexidade
Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um
Introdução à Análise Algoritmos
Introdução à Análise Algoritmos Notas de aula da disciplina IME 4-182 Estruturas de Dados I Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/218 Ordenação por SELEÇÃO: Idéia: Dado um vetor
Aula 02: Custos de um algoritmo e funções de complexidade
MCTA028 Programação Estruturada Aula 02: Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco [email protected] 3Q-20106 1 Linguagem C: Tipos de dados 2 Linguagem C: Tipos
Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Else Switch Prof. Renato Pimentel 1 Operações relacionais Operações
Aula 02. Algoritmos e Pseudocódigo
Aula 02 Algoritmos e Pseudocódigo Tópicos Principais Definição de Algoritmo Formas de representação Condicionais Repetições Definição de Algoritmo Um algoritmo é uma sequência de ações que resolve um problema.
ALGORITMOS CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.
ALGORITMOS CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. [email protected] INTRODUÇÃO O computador é uma máquina que executa instruções que resolvem problemas; Para a forma como estas
Paradigmas de Linguagem de Programação. Paradigma Imperativo
Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;
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
Arquitetura de Computadores II
Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Arquitetura de Computadores II Prof. Flávio Rogério Uber Informações Úteis Professor: Flávio Rogério Uber Bloco C-56 Sala
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são
Fundamentos de Algoritmos (5175/31)
UEM/CTC Departamento de Informática Curso: Ciência da Computação Professor: Flávio Rogério Uber Fundamentos de Algoritmos (5175/31) Material Original: Prof. Yandre Maldonado e Gomes da Costa (UEM/DIN)
O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho
Ciência da Computação Arq. e Org. de Computadores Avaliando e Compreendendo o Desempenho O Que Veremos Avaliando e compreendendo o desempenho: Introdução Definindo desempenho Medindo o desempenho e seus
Fundamentos de Programação
Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação
Complexidade de Algoritmos
Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como
A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..
Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Introdução aos Algoritmos A única diferença entre o difícil e o impossível é que o último demora um pouco mais de
MC-102 Aula 01. Instituto de Computação Unicamp
MC-102 Aula 01 Introdução à Programação de Computadores Instituto de Computação Unicamp 2016 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: [email protected]
Comportamento 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
Lógica de Programação I
Gilson de Souza Carvalho [email protected] 1 Comandos de repetição combinados com comandos de condição A utilização de comandos de repetição combinados com comandos de condição permite resolver
Introdução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa [email protected] Universidade Federal Rural do Semiárido Bacharelado
Técnicas de Projeto de Algoritmos
UNIVERSIDADE NOVE DE JULHO - UNINOVE Pesquisa e Ordenação Técnicas de Projeto de Algoritmos Material disponível para download em: www.profvaniacristina.com Profa. Vânia Cristina de Souza Pereira 03 _ Material
Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes
Aula 08 Introdução à Algoritmos Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Introdução aos Algoritmos: Conceitos Iniciais; Programa
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi
a complexidade no desempenho de algoritmos
capítulo 1 introdução Os algoritmos são o cerne da computação. Este capítulo introdutório procura ressaltar a importância da complexidade e dos métodos de projeto e análise de algoritmos. Partindo da ideia
ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão
Luiz Leão [email protected] http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos
Análise de Complexidade de Algoritmos
Análise de Complexidade de Algoritmos Algoritmos e Estruturas de Dados 2009/2010 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Análise de algoritmos:
Disciplina de Algoritmos e Programação
Disciplina de Algoritmos e Programação Atividades Plano de ensino Conteúdos da disciplina, definição das datas, critérios de avaliação e bibliografias Início da matéria Conceito e definição de algoritmos
SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.
SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão
