31
1 Apresentação e exercícios básicos MCTA001 Algoritmos e Estruturas de Dados I Prof. Jesús P. Mena-Chalco 1Q-2019

Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

1

Apresentação e exercícios básicos

MCTA001Algoritmos e Estruturas de Dados I

Prof. Jesús P. Mena-Chalco

1Q-2019

Page 2: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

2

Apresentação

Professor:Jesús P. Mena-Chalco (CMCC)

Formação: - Engenheiro da Computação.- Mestre e Doutor em Ciência da Computação.Instituto de Matemática e Estatística da USP.

Sala 517-A, torre 2, 5º Andar.

Áreas de pesquisa:- Reconhecimento de padrões, Cientometria.

Page 3: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

3https://xkcd.com/

2019 1400

Page 4: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

4

Page 5: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

5

Programar?

Programar auxilia a desenvolver o pensamento lógico. Programar lhe torna mais independente.

Page 6: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

6

You Should Learn to Program: Christian Genco at TEDxSMUhttps://www.youtube.com/watch?v=xfBWk4nw440

Page 7: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

7

Sobre a disciplina

Page 8: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

8

Pré-requisitos

Precisa ter cursado Processamento de Informação.Precisa ter cursado Programação Estruturada.

Deve ser capaz de escrever um programa “simples” na linguagem C.

Obs: → A disciplina usa a linguagem c. → A disciplina é focada nos algoritmos por trás dos programas.

Page 9: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

9

Questões de eficiências

Queremos programas eficientes (rápidos).→ Não se trata de usar truques que acelerem um programa (nesse nasso a aceleração é modesta)

A eficiencia pode ser obtida através de boas estruturas de dados e bons algoritmos.

Page 10: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

10

Exemplo: Imagine dois programas

P1: Desenvolvido em um computador Y.P2: Mesmo algoritmo de P1 mas em um computador mais lento.

n tamanhoda instância de

entrada

Tempo de Processamento

De P1

Page 11: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

11

Exemplo: Um terceiro programa

Page 12: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

12

Exemplo: Um terceiro programa10 30 50 70 90 110

130

150

170

190

210

230

250

270

290

310

330

350

370

390

410

430

450

470

490

510

530

550

570

590

0

100

200

300

400

500

600

700

P1 = n

P2 = n/2

P3 = log(n)*20

Page 13: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

13

Exemplo: Um terceiro programa10

020

030

040

050

060

070

080

090

010

0011

0012

0013

0014

0015

0016

0017

0018

0019

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

0030

0031

0032

0033

0034

0035

0036

0037

0038

0039

0040

0041

0042

0043

0044

0045

0046

0047

0048

0049

0050

0051

0052

0053

0054

0055

0056

0057

0058

0059

0060

00

0

1000

2000

3000

4000

5000

6000

7000

P1 = n P2 = n/2

P3 = log(n)*20

Page 14: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

14

Algoritmos e Estruturas de Dados I

Ementa:

Breve introdução à linguagem C.

Noções básicas de análise de complexidade de tempo de

algoritmos.

Estruturas lineares.

Árvores de busca.

Árvores balanceadas.

Busca e ordenação.

Page 15: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

15

Algoritmos e Estruturas de Dados I

Algoritmos sofisticados, geralmente, são mais eficientes

Page 16: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

16

Futuro: Algoritmos e Estruturas de Dados II

Hashing.

Introdução a arquivos: Arquivos seqüenciais. Arquivos indexados. Arquivos de acesso direto.

Prática de programação dos arquivos e das funções primitivas na resolução de problemas.

Compressão de arquivos

Page 17: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

17

Bibliografia

P. Feofiloff.Algoritmos em Linguagem C. 1ª Edição, Editora Campos, 2008. Veja também o site deste livro.

T. Cormen et al. Algoritmos: Teoria e Prática. Rio de Janeiro: Editora Campus, 2ª edição, 2002.

N. Ziviani. Projeto de Algoritmos com implementação em Java e C++. São Paulo: Editora Thomson, 1a edição, 2007.

Page 18: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

18

Alguns livros importantes para a carreira

Page 19: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

19

Turmas A3-A4 (Matutino e Noturno)

Matutino

1 12/fev LAB Introdução à linguagem C1 14/fev TEO Apres. da disciplina. Ponteiros e estruturas2 19/fev LAB Ponteiros e estruturas2 21/fev TEO Ponteiros e estruturas lineares3 26/fev LAB Estruturas lineares (pilhas e filas)3 28/fev TEO Custos de algoritmos4 05/marLAB Feriado (carnaval)4 07/marTEO Algoritmos de busca. Árvores de Busca5 12/marLAB Árvores de busca5 14/marTEO Revisão de exercícios6 19/marLAB Prova 1 (no laboratório: Teoria+Lab)6 21/marTEO Árvores de busca balanceadas7 26/marLAB Árvores de busca balanceadas7 28/marTEO Árvores de busca balanceadas8 02/abr LAB Árvores de busca balanceadas8 04/abr TEO Árvores de busca balanceadas9 09/abr LAB Árvores de busca balanceadas9 11/abr TEO Algoritmos simples de ordenação10 16/abr LAB Algoritmos simples de ordenação10 18/abr TEO Algoritmos de ordenação eficientes11 23/abr LAB Algoritmos de ordenação eficientes11 25/abr TEO Revisão de exercícios12 30/abr LAB Prova 2 (no laboratório: Teoria+Lab)12 02/mai TEO Prova substitutiva13 08/mai LAB Prova de recuperação

Noturno

1 12/fev TEO Apresentação da disciplina1 14/fev LAB Introdução à linguagem C2 19/fev TEO Ponteiros e estruturas2 21/fev LAB Ponteiros e estruturas3 26/fev TEO Ponteiros e estruturas lineares3 28/fev LAB Estruturas lineares (pilhas e filas)4 05/marTEO Feriado (carnaval)4 07/marLAB Custos de algoritmos5 12/marTEO Algoritmos de busca. Árvores de Busca5 14/marLAB Árvores de busca6 19/marTEO Revisão de exercícios6 21/marLAB Prova 1 (no laboratório: Teoria+Lab)7 26/marTEO Árvores de busca balanceadas7 28/marLAB Árvores de busca balanceadas8 02/abr TEO Árvores de busca balanceadas8 04/abr LAB Árvores de busca balanceadas9 09/abr TEO Árvores de busca balanceadas9 11/abr LAB Árvores de busca balanceadas10 16/abr TEO Algoritmos simples de ordenação10 18/abr LAB Algoritmos simples de ordenação11 23/abr TEO Algoritmos de ordenação eficientes11 25/abr LAB Algoritmos de ordenação eficientes12 30/abr TEO Revisão de exercícios12 02/mai LAB Prova 2 (no laboratório: Teoria+Lab)13 08/mai TEO Prova substitutiva

Page 20: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

20

Sobre as avaliações

Nota Período regular:0,35 * (P1 + P2) + 0,3 * Lab + Bônus

Recuperação: 0,7 * REC + 0,3 * Lab + Bônus

Atribuição de conceitos:A: nota ≥ 9B: 7,5 ≤ nota < 9C: 6 ≤ nota < 7,5D: 5,0 ≤ nota < 6F: nota < 5,0

Page 21: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

21

Página web

http://professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/

Page 22: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

22

Exercícios de programação

Page 23: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

23

Exercício 1

Escreva uma função, na linguagem C, em que dados dois números inteiros a e b, com a<=b, devolva a somatória dos números no intervalo [a, b].Obs: Use um laço

Page 24: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

24

Exercício 1

Escreva uma função, na linguagem C, em que dados dois números inteiros a e b, com a<=b, devolva a somatória dos números no intervalo [a, b].Obs: Use um laço

Page 25: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

25

Exercício 1

Escreva uma função, na linguagem C, em que dados dois números inteiros a e b, com a<=b, devolva a somatória dos números no intervalo [a, b].Obs: Use um laço

Page 26: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

26

Exercício 2

Escreva uma função recursiva, na linguagem C, em que dados dois números inteiros a e b, com a<=b, devolva a somatória dos números no intervalo [a, b].

Page 27: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

27

Exercício 2

Escreva uma função recursiva, na linguagem C, em que dados dois números inteiros a e b, com a<=b, devolva a somatória dos números no intervalo [a, b].

https://goo.gl/RWXugK

#include <stdio.h>

int FSRec(int a, int b) {

if (a<=b) return a + FSRec(a+1,b); return 0;

}

int main(void) { printf("%d\n", FSRec(50, 80)); return 0;}

Page 28: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

28

Exercício 3

Dado um vetor de inteiros, v[0..n-1], crie uma função para determinar se a sequência de números corresponde a um palíndromo.

→ [1,2,3,4,3,2,1]: vetor palíndromo, devolve 1.→ [1,2,3,4,5,6,7]: não é vetor palíndromo, devolve 0.

Qual é o número mínimo de comparações necessárias para verificar se um vetor de tamanho n é ou não palíndromo?

Page 29: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

29

Exercício 3

Page 30: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

30

Exercício 3 (uma versão “elegante”)

Page 31: Apresentação e exercícios básicosprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/AED1-00.pdf · 3 26/fev LAB Estruturas lineares (pilhas e filas) 3 28/fev TEO Custos de

31

Exercício 3 (uma versão recursiva)