Buscar

2021 1_Estrutura_de_Dados_aula01

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

02/03/2021
1
ESTRUTURA DE DADOS EM C
Aula 01 – Apresentação da disciplina, recursos e 
conteúdo programático.
Revisão dos Agregados Homogêneos.
Conceitos de Agregados Heterogêneos.
Prof. Ronaldo Candido
ronaldo.candido@estacio.br 2021.1
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Conteúdo Programático
1. Apresentação do professor e da disciplina.
2. Conteúdo (plano de ensino e de aulas).
3. Material didático e ferramentas de desenvolvimento.
4. Avaliações e frequência.
5. Revisão de agregados homogêneos.
6. Conceitos de Agregados Heterogêneos.
Objetivos da aula
• Introduzir os conceitos de estruturas de dados, utilizando as linguagens C e C++
para ensinar a melhor aplicação de algoritmos, além de apresentar a motivação e
construção de agregados heterogêneos.
1
2
02/03/2021
2
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Apresentação do Professor e da Disciplina
• Prof. Ronaldo Candido - ronaldo.candido@estacio.br
• Docente/Desenvolvedor com larga experiência em cursos de programação, técnicos
e de graduação nas áreas de tecnologias Web e Mobile com Android, Java, PHP e
Python.
• Objetivo da disciplina: Desenvolver técnicas para representação de estruturas de
dados e as operações sobre as mesmas, de maneira que seja possível solucionar
problemas, escolhendo as estruturas de dados mais adequadas para representação e
manipulação dos dados em tarefas específicas.
• Requerimentos: Conhecimentos básicos de programação em linguagem C, uma boa
compreensão do idioma inglês, utilização da IDE Dev-C++ e leitura do livro didático
disponível no SAVA (WebAula) da disciplina.
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Roteiro de aulas para o aluno
• Frequentar no mínimo 75% das aulas (Máximo de 5 faltas não justificadas).
• Acessar previamente o ambiente SAVA para obter os planos de ensino e de aula,
incluindo os materiais disponibilizados.
• Desenvolver as tarefas e exercícios propostos para a correta percepção do
aprendizado.
• Realizar todas as atividades online disponíveis (Avaliando o aprendizado / Prepara /
Simulado AV1 / Nova chance, etc.) - <https://portal.estacio.br/reforcoacademico>
• Obter média final (MF) >=6 nas avaliações AV1 / AV2 / AV3, considerando apenas as
duas maiores notas (>=4 em pelo menos duas avaliações) e o conteúdo digital (AVD).
Exemplo:
AV1= 7,0 AV2= 3,0 AVD= 6,0 AV3= 5,0  MF= (7+6+5)/3 = 6,0 (Aprovado)
3
4
02/03/2021
3
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Ementa geral da Disciplina
• ESTRUTURAS DE DADOS HETEROGÊNEAS.
• MODULARIZAÇÃO.
• LISTAS, PILHAS E FILAS (CRÉDITO DIGITAL).
• ORDENAÇÃO.
• ÁRVORES.
ACESSE O 
SAVA 
ATRAVÉS DO 
S.I.A. !!!
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Situação-Problema
• Imagine que seria preciso criar algoritmos específicos para :
1) Manipular um conjunto de fichas de um fichário;
2) Organizar as pessoas que querem ser atendidas num guichê;
3) Organizar um conjunto de pratos que estão sendo lavados, um a um;
4) Visualizar o conjunto de pessoas que trabalham em uma empresa, tendo em
conta sua função.
• Qual seria a melhor solução para realizar operações em cada uma destas situações ?
5
6
02/03/2021
4
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
• Algoritmos - Sequência de instruções organizadas e sistematizadas utilizadas para
resolver um problema. Um algoritmo não representa, necessariamente, um
programa de computador, e sim os passos necessários para realizar uma tarefa.
Etapas de um projeto de algoritmo :
1. Definição do problema;
2. Análise de requisitos;
3. Método de desenvolvimento;
4. Projeto do algoritmo;
5. Validação;
6. Otimização;
7. Implementação.
Revisão de conceitos principais
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Estrutura de Dados (EDA)
• Retrata as relações lógicas existente entre os dados. É uma forma de organização
dada às informações de forma a permitir o acesso a elas por um algoritmo durante
as operações de manipulação que ocorrem na resolução de um problema.
• O estudo de EDA é necessariamente orientado para uma aplicação, ou seja é um
estudo bastante prático para :
 Programadores, que precisam de conhecimento profundo de técnicas de
programação;
 Usuários, que precisam reconhecer requisitos dos softwares nas áreas onde
atuam, e ter um conhecimento adequado de programação lhes permite tirar
proveito do acesso configurável que as aplicações oferecem.
7
8
02/03/2021
5
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Escolha de EDA
• De que forma essa estrutura de dados será utilizada ?
• Que métodos de manipulação essas estruturas nos oferecem ?
• Que tipo de alocação de memória ela utiliza ?
• A disciplina EDA estuda as possíveis alternativas que um programador pode ter na
hora de escolher a estrutura de dados adequada para determinada necessidade,
considerando um melhor gerenciamento de memória e o acesso mais rápido à
informação.
• Trata do armazenamento e manipulação de dados em memória principal.
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Tipos de Dados x Estruturas de Dados
• Tipo de dado simples = conjunto de valores (domínio) que uma variável pode
assumir, aliado ao conjunto de operações que podem ser aplicadas sobre ele. São
os tipos de dados básicos (tipos primitivos) :
 Inteiro, caractere, decimal, booleano, etc.
 Não é possível decompor um tipo primitivo em partes menores (eles são
indivisíveis).
 A idade de uma pessoa, o preço de
um produto, a letra do alfabeto, etc.
 Exemplos de tipos em linguagem C++ :
9
10
02/03/2021
6
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Tipos de Dados x Estruturas de Dados
• Tipos de dados estruturados :
 Uma variável que pode agregar mais de um valor.
 Agregados de valores de tipos primitivos.
 Exemplos: Vetores, matrizes, registros, etc.
• Tipos Abstratos de Dados (TAD) :
 Especificam conceitualmente os dados (sua organização física e lógica).
 Definem operações para manipulação da
estrutura;
 Exemplos: Lista, Fila, Pilha, Árvore, etc.
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Revisão dos agregados homogêneos
• Vetores e Matrizes :
 Uma matriz é uma coleção de variáveis de mesmo tipo (homogêneo),
acessíveis com um único nome e armazenados contiguamente na memória.
 Os vetores são matrizes de uma só dimensão (array).
 A individualização de cada variável de um vetor é feita através do uso de
índices.
 São alocados ESTATICAMENTE na memória (tamanho fixo pré-definido).
Matriz unidimensional
(vetor)
Matriz bidimensional Matriz tridimensional
11
12
02/03/2021
7
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Utilizando Matrizes em C++
• int vetor[5]; // declara um vetor de 5 posições
• int matriz[5][3]; // declara uma matriz de 5 linhas e 3 colunas
• Para encontrar um dado que está armazenado no vetor, basta informar a posição
(índice) onde se encontra o dado.
• Todo vetor em C++ começa na posição 0, então, se um vetor tem tamanho N, as
posições que dão acesso aos dados ficam no intervalo [0, N-1].
float preco[4] ;
//atribuindo valores
preco[0] = 9.99 ;
preco[1] = 8.5 ;
preco[2] = -3.75 ;
preco[3] = 0 ;
Valores  9.99 8.5 -3.75 0.0
índice  0 1 2 3
Vetor preco com casas decimais:
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Operações com vetores
• Um array pode ser iniciado por uma lista de valores:
char vogal [ ] = { 'a' , 'e' , 'i' , 'o' , 'u' } ; //array terá tamanho 5.
cout << "Segunda vogal: " << vogal [1]; //Segunda vogal: e
• Preenchimento de um vetor com um dado :
for(i=0; i<5; i++) //ou for(i=0; i<=4; i++)
vetor[i] = 30;
• Colocar os números de 1 a 5 :
for(i=0; i<5; i++)
vetor[i] = i+1;
• Colocar os números de 5 a 1 :
for(i=0; i<5; i++)
vetor[i] = 5-i;
13
14
02/03/2021
8
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Operações com vetores
• Uso de Constantes para definir o tamanho de um vetor :
#define TAM_MAX 10 //constante e valor
double vetReais[TAM_MAX];for(i=0; i<TAM_MAX; i++)
vetReais[i] = TAM_MAX - i; //armazena 10,9,8,7,6,5,4,3,2,1
• Copiar os dados de um vetor para outro :
#define TAM_MAX 10
double vetReais[TAM_MAX], vetCopia[TAM_MAX];
for(i=0; i<TAM_MAX; i++)
vetCopia[i] = vetReais[i]; //copia dados do vetor para outro
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Operações com vetores
• Leitura dos dados de um vetor :
double vet1[TAM_MAX];
for(i=0; i<TAM_MAX; i++)
cin >> vet1[i];
• Encontrar o maior valor dentro de um vetor :
double maior;
for(i=0; i<TAM_MAX; i++)
cin >> vet1[i]; //ler os dados
maior = vet1[0]; //assume que o primeiro é o maior
for(i=0; i<TAM_MAX; i++)
if (vet1[i] > maior)
maior = vet1[i];
cout << "O maior elemento é: " << maior << endl;
//Como imprimir a posição do dado dentro do vetor?
15
16
02/03/2021
9
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
• Exemplos :
#define NLIN 10
#define NCOL 10
int matriz[NLIN][NCOL];
• Preencher uma matriz com um dado :
for(i=0; i < NLIN; i++)
for(j=0; j < NCOL; j++)
matriz[i][j] = 30;
• Somar um número a uma linha/coluna de uma matriz :
void somaValor(int valor, int matriz[NLIN][NCOL], int coluna) {
for(i=0; i < NLIN; i++) // para cada linha de 'Coluna'
matriz[i][coluna] = matriz[i][coluna] + 30; }
Operações com matrizes
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Agregados heterogêneos
• Enquanto os agregados homogêneos somente poderiam ter dados do mesmo tipo,
como por exemplo, um vetor de números inteiros com idades, existem situações em
que precisamos na programação utilizar conjunto de dados estruturados de tipos
diferentes. São os Agregados Heterogêneos ou Registros. Exemplos :
 Uma ficha de cadastro de uma empresa tem todo tipo de informações sobre um
funcionário, necessárias para ela ;
 Um controle em um consultório médico possui alguns dados e características do
estado de saúde dos pacientes.
Nome
Idade
Salário
17
18
02/03/2021
10
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Fundamentos de registros 
• Tipos de dados heterogêneos:
 Tipos de dados cujos elementos podem ser de tipos diferentes.
• Variável composta por campos:
 Cada campo possui um nome e pode ser de um tipo diferente.
 Exemplo: registro de passagem de ônibus:
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Aplicação em Linguagem C++: Structs
• Coleção de variáveis referenciada por um único nome ;
• Maneira conveniente de se ter informações relacionadas agrupadas em uma
variável ;
• A definição de uma estrutura forma um modelo para criação de várias estruturas
com suas definições. Sintaxe em C++ :
struct <nome_estrutura> {
<tipo> nome_campo1;
<tipo> nome_campo2;
...
} ;
struct <nome_estrutura> nome_variável ; //usar nos comandos
19
20
02/03/2021
11
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Exemplificando uma Struct
• Registro de um cliente contendo seu nome, endereço, cidade, estado, CEP e idade :
struct cliente {
char nome[30];
char endereco[40];
char cidade[20];
char estado[2];
char cep[8];
unsigned int idade;
};
struct cliente novo_cliente ; //usar esta variável nos comandos
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
• Podemos acessar os elementos de uma estrutura via o operador de referência “.”
(ponto). Exemplo :
//guardar o nome na struct com char
novo_cliente.nome[0] = 'D' ;
novo_cliente.nome[1] = 'A' ;
novo_cliente.nome[2] = 'V' ;
novo_cliente.nome[3] = 'I' ;
cout << novo_cliente.nome ; //exibir o nome guardado
• Similar ao que ocorre com relação a variáveis atômicas, podemos atribuir uma
variável tipo estrutura a outra. Exemplo :
struct cliente c1, c2;
c1 = c2;
O Operador . (ponto)
21
22
02/03/2021
12
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Atribuindo valores a estruturas
• Ao atribuirmos uma estrutura a outra, todos os valores dos elementos da estrutura
serão copiados. Exemplo :
#include <iostream>
using namespace std;
int main() {
struct {
int a,b;
} x, y;
x.a = 10;
y = x;
cout << y.a; //o que vai exibir ???
return 0;
}
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Arrays e estruturas
• Podemos criar arrays de estruturas :
struct cliente lista_cliente[100];
cout << lista_cliente[79].endereco[0];
cout << lista_cliente[18].nome[1];
23
24
02/03/2021
13
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Prática de exemplos
Vamos praticar ? 
Download do software DEV C++. Disponível em : 
<https://sourceforge.net/projects/orwelldevcpp/> 
Acesso em 22 Fev. 2021.
Editor online de códigos. Disponível em: 
<onlinegdb.com> 
Acesso em 22 Fev. 2021.
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Atividade Verificadora de Aprendizagem
• Crie uma estrutura heterogênea para os dados de um funcionário.
• Realize as seguintes atividades :
1) Ano: 2014 / Banca: CESGRANRIO / Órgão: CEFET-RJ / Prova: Técnico de Laboratório de
Informática. Considere o seguinte algoritmo, descrito em pseudocódigo, que manipula um
vetor de oito posições, indexadas de 1 a 8 :
Ao final da execução, o conteúdo do vetor M será :
A) 10, 20, 30, 40, 50, 60, 70, 80
B) 40, 10, 80, 20, 70, 30, 60, 50
C) 40, 30, 20, 10, 80, 70, 60, 50
D) 50, 60, 70, 80, 10, 20, 30, 40
E) 80, 70, 60, 50, 40, 30, 20, 10
25
26
02/03/2021
14
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Atividade Verificadora de Aprendizagem
2) Ano: 2013 / Banca: CESPE / Órgão: SERPRO / Prova: Analista – Suporte Técnico. Segundo o
pseudocódigo abaixo, um vetor de 100 números é lido e, em seguida, é montado um
segundo vetor a partir dos valores do primeiro vetor multiplicados por 3.
início
VET1,VET2 : vetor [1..100] numérico
CONTADOR : numérico
para CONTADOR de 1 até 100 faça
leia "Digite um número: ",VET1[CONTADOR]
VET2[CONTADOR] = (VET1[CONTADOR] * 3)
fim-para
Fim.
R: ( ) Certo ( ) Errado
3) Crie um programa em C++ que peça 10 números, armazene eles em um vetor e diga qual
elemento é o maior, qual é o menor e quais são os seus valores.
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
Aprenda +
• Assistir o Video "Struct - Linguagem C". Disponível em:
<https://www.youtube.com/watch?v=Lktyz-vojCQ> Acesso em 22 Fev. 2021.
• Atividade Autônoma Aura :
Questão 1) Sobre algoritmos e estrutura
de dados, são estruturas de
dados clássicas:
I. Vetores.
II. Listas.
III. Filas.
Quais estão corretas ?
A) Apenas I.
B) Apenas II.
C) Apenas III.
D) Apenas I e II.
E) I, II e III.
Questão 2) Observe a definição de código a seguir:
tipo tipest {
int codigo;
char descricao;
float preco; };
De acordo com a definição, tipest é do tipo:
A) Variável composta homogênea.
B) Virtual.
C) Struct.
D) Vetor.
E) Matriz.
27
28
02/03/2021
15
AULA 01
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
1. ASCENCIO, Ana F. G.; ARAÚJO, Graziela S. de Estrutura de Dados: Algoritmos, Análise 
da Complexidade e implementações em Java e C/C++. São Paulo: Pearson Prentice 
Hall, 2010. Páginas 1-10. Disponível em: 
<https://plataforma.bvirtual.com.br/Leitor/Publicacao/1995/pdf/0?code=kRnYavNjC8
drJopBh3T7c5c+bJ2naG9zGv8ZUKvVy1PvHH4qoi5earv90M9JMN9/LHkPXxCXVRJwC4KctV
gx3Q==> Acesso em 22 Fev. 2021.
2. BALIEIRO, Ricardo. Estrutura de dados. Rio de Janeiro: Universidade Estácio de Sá, 
2015. Páginas 1-29. Disponível em: 
<http://repositorio.novatech.net.br/site/index.html#/objeto/detalhes/2D35A184-
BF64-4419-9DA9-D1ED12A97017> Acesso em 22 Fev. 2021.
3. MANZANO, José A. N. G. Algoritmos: Lógica para desenvolvimento de programação. 
29a ed. São Paulo: Érica, 2009. Disponível em: 
<https://integrada.minhabiblioteca.com.br/#/books/9788536531472/cfi/0!/4/4@0.00
:26.8> Acesso em 22 Fev. 2021.
Referências
ESTRUTURA DE DADOS EM C
Prof. Ronaldo Candido
ronaldo.candido@estacio.br
Dúvidas, sugestões ou análises ???
29
30

Outros materiais