Escolar Documentos
Profissional Documentos
Cultura Documentos
ESTRUTURAS DE DADOS
Ementa
Introduo Linguagem C.
Recursividade.
Alocao dinmica de memria.
Conceito de tipos abstratos de dados.
Listas
Pilhas
Filas
rvores.
Implementao de tipos abstratos de dados.
CONCEITOS BSICOS
Estruturas de dados:
Forma particular de armazenamento e
organizao dos dados em um computador de
modo que possam ser recuperados e usados
posteriormente de forma eficiente.
Alguns tipos de estruturas so adequadas a
diferentes tipos de aplicao, destinando-se a
tarefas especficas.
CONCEITOS BSICOS
CONCEITOS BSICOS
CONCEITOS BSICOS
Modelo de um computador:
Barramento externo
Dispositivos de E/S
Arquitetura interna
Disco Rgido
CPU
Processador
Processador
Monitor
Memria
Memria
Barramento
interno
Teclado
...
Cd/DVD
CONCEITOS BSICOS
ESTRUTURAS DE DADOS
Linguagem C
C uma linguagem de programao compilada,
estruturada, imperativa e de alto nvel.
uma das linguagens de programao mais
populares.
Oferece acesso a endereos de variveis.
CONCEITOS BSICOS
A linguagem C:
Linguagem convencional
CONCEITOS BSICOS
Pascal
Comentrios
{ comentario}
/* comentario */
Identificadores
No case sensitive
case sensitive
Definio de tipos
type
typedef
Declarao de inteiros
integer
int
Declarao de caracter
char
char
Boolean
Boolean tratado
como true ou false
No h tratado como
0 ou 1
Real
real
float ou double
Tipos enumerados
type a = (vermelho,
verde, azul)
enum a {vermelho,
verde, azul};
CONCEITOS BSICOS
Pascal
Vetores
Comea da posio 0 e
vai at n 1 (sendo n o
tamanho do vetor). Ex:
int a[10];
Strings
Tipo pr-definido
tratado internamente
como array.
O tipo string no
definido. Deve-se criar
um vetor de char.
Registros
record
struct
Atribuio
:=
CONCEITOS BSICOS
Pascal
Aritmticos
+, -, *, /, div, mod
+, -, *, /, %, ++, - -
Relacionais
Lgicos
&&, ||, !
Atribuies especiais
No h
CONCEITOS BSICOS
CONCEITOS BSICOS
C
#include <stdio.h>
int main(){
printf(Ol mundo!);
return 0;
}
CONCEITOS BSICOS
Valores constantes:
a = b + 13
a = b + 12.5;
a = b + 12.5f;
CONCEITOS BSICOS
Operadores:
Aritmticos:
adio (+) , subtrao (-) , multiplicao (*) , diviso (/), mdulo
(%);
A operao feita na preciso dos operandos. Ex: 5/2 = 2.
Atribuio:
simples (=) ,compostos (+=, -=, *=, /=, %=);
De incremento e decremento:
incremento (++), decremento (--);
Relacionais:
menor que (<), maior que(>), menor ou igual que (<=), maior ou
igual que (>=), igual (==), diferente (!=).
Lgicos:
e/and (&&), ou/or (||), negao/not (!)
CONCEITOS BSICOS
int a;
double b, c;
a = 3.5;
b = a / 2.0;
c = 1/3 + b;
Resposta: a = 3, b = 1.5, c = 1.5. Quando os operandos so distintos, o
valor do operando de menor expressividade (nesse caso, int) convertido
para o tipo de maior expressividade (nesse caso, double)
CONCEITOS BSICOS
a = 5;
y = x = 5;
x *= y + 1;
x = n++; x = ++n;
int c = 23, d = c + 4;
a = (c < 20) || (d > c); // armazena o valor 1 em a
b = (c < 20) && (d > c);
// armazena o valor 0 em b
CONCEITOS BSICOS
Operador sizeof
Retorna o nmero de bytes de um determinado
tipo.
Exemplo:
int x = sizeof(int);
printf("Nmero de bytes ocupado pelo inteiro tipo inteiro : %i \n", x);
...
sizeof(int) retorna 2 ou 4 dependendo do inteiro natural da
mquina
CONCEITOS BSICOS
Converso de tipos
Operador cast: operador de molde de tipo
Exemplo
int a;
a = (int) 3.5;
printf("a = %d", a);
CONCEITOS BSICOS
CONCEITOS BSICOS
Funo scanf:
Permite capturar valores fornecidos via teclado pelo
usurio do programa e armazen-los em variveis.
scanf(formato, lista de endereos das variveis);
Ex: int n;
scanf(%d, &n);
CONCEITOS BSICOS
Tomadas de deciso:
if(expr) {
if (expr){
OU
bloco de comandos 1
...
}
else {
bloco de comandos 1
bloco de comandos 2
...
ou
}
Operador condicional:
condicao ? expressao1 : expressao2;
CONCEITOS BSICOS
Controle de fluxo:
Construes com laos:
while (expr){
bloco de comandos
}
for (expr_inicial; expr_booleana; expr_de_incremento){
bloco de comandos
ou
CONCEITOS BSICOS
Controle de fluxo:
Construes com laos:
do{
bloco de comandos
} while (expr_booleana);
ou
CONCEITOS BSICOS
Controle de fluxo:
Interrupes com break:
Quando utilizado dentro de um lao, interrompe e
termina a execuo do mesmo.
CONCEITOS BSICOS
Controle de fluxo:
Seleo:
switch(expr){
case op1:
break;
case op2:
break;
default:
break;
}
ou
Executado quando expr for diferente de todos
os casos enumerados.
CONCEITOS BSICOS
Exerccios:
1) Implemente um programa que faz a converso
de um valor de temperatura na escala Celsius
para a Fahrenheit formula: F = C 1,8 + 32.
2) Faa um programa para calcular o ndice de
Massa Corporal (IMC) e, com base no resultado,
informar a categoria qual o indivduo pertence,
de acordo com a tabela mostrada abaixo. O IMC
definido como a relao entre o peso e a
altura ao quadrado. A altura deve ser dada em
metros e o peso em kg. O IMC calculado de
acordo com a frmula dada a seguir e as
categorias so definidas pelos limites abaixo:
CONCEITOS BSICOS
Exerccios:
CONCEITOS BSICOS
Funes
Funes o mecanismo adequado para codificar
tarefas especficas.
Vantagens:
Facilita a codificao: codificar diversas funes
pequenas mais fcil que codificar uma nica maior.
Funes especficas podem ser facilmente reutilizadas
em outros cdigos.
Tipo geral
tipo_retornado nome_da_funo (lista de parmetros...)
{
corpo da funo
}
CONCEITOS BSICOS
Funes
tipo_retornado nome_da_funo (lista de parmetros...)
{
corpo da funo
}
tipo_retornado = void
indica o no retorno de um valor
tipo_retornado = int, char, float,
retorna um valor do tipo
definido
tipo_retornado = int*, char*,
retorna um ponteiro para int, char,
OBS: Funes retornam um nico valor!
CONCEITOS BSICOS
Funes
tipo_retornado nome_da_funo (lista de parmetros...)
{
corpo da funo
}
nome_da_funo: identificador da funo no programa.
lista de parmetros: declaraes de variveis que sero usadas na
funo.
CONCEITOS BSICOS
Exemplos de funes
void imprimeMensagem() {
printf(Ola Mundo!);
}
float calculaMedia(float a, float b) {
float media = 0;
media = (a + b)/2;
return media;
}
CONCEITOS BSICOS
Funes
C exige que se coloque o prottipo da funo
antes de ela ser chamada.
Prottipo: consiste na repetio da linha de sua
definio seguida do caractere ;. No h
necessidade de indicar o nome dos parmetros,
s os tipos.
A transferncia de dados entre funes feita
com o uso de parmetros e do valor de retorno da
funo chamada.
CONCEITOS BSICOS
ESTRUTURAS DE DADOS
imprimeMensagem();
float a = 10.5;
float b = 13.5;
float c;
c = calculaMedia(a,b);
ESTRUTURAS DE DADOS
10.5
E0
3.5
E4
7
Retorna mdia
calculada
c=a
d=b
10.5
E250
3.5
E254
mdia 7
ESTRUTURAS DE DADOS
int main(void) {
int n = 5;
int f = 1, i;
int r;
r = fat(n);
f*=n;
return f;
system("pause");
return 0;
}
No final da funo fat, o parmetro n tem valor igual a zero. No entanto, a sada
do programa ser: Fatorial de 5 = 120. O valor da varivel n no mudou no
programa principal porque o valor de n passado atribudo ao parmetro da funo
chamada.
ESTRUTURAS DE DADOS
ESTRUTURAS DE DADOS
Ponteiros
Ponteiros so variveis que armazenam
valores de endereos de memria.
Declarao de varivel do tipo ponteiro :
tipo *nome;
tipo: tipo do valor armazenado no endereo de memria
nome: identificador do ponteiro
Ex:
int a;
int *p;
ESTRUTURAS DE DADOS
Ponteiros
Operador unrio * (contedo de)
Acessa o contedo do endereo de
memria armazenado pela varivel
ponteiro.
ESTRUTURAS DE DADOS
Ponteiros
Exemplos
int a; // varivel simples
int *p; // ponteiro para inteiro
Pilha de execuo
108
104
ESTRUTURAS DE DADOS
Ponteiros
Exemplos
int a; // varivel simples
int *p; // ponteiro para inteiro
a = 5;
p = &a;
*p = 6;
Pilha de execuo
104
6
-5
108
104
ESTRUTURAS DE DADOS
Ponteiros
Exemplos
Outra representao:
Podemos desenhar setas,
sinalizando que uma varivel
do tipo ponteiro aponta para
uma determinada rea de
memria, em vez de criar
valores fictcios para os
endereos de memria.
Pilha de execuo
p
a
ESTRUTURAS DE DADOS
Ponteiros
int main(){
int a, b, *p;
a = 2;
Erro: Varivel p no inicializada!
*p = 3;
b = a + (*p);
printf(%d, b);
return 0;
}
S podemos preencher o contedo de um ponteiro se ele tiver
sido devidamente inicializado (apontar para um espao de
memria para o qual j se prev o armazenamento de valores
do tipo em questo).
ESTRUTURAS DE DADOS
ESTRUTURAS DE DADOS
ESTRUTURAS DE DADOS
Variveis globais
Uma varivel global declarada fora do corpo
das funes e visvel a todas as funes
subseqntes.
As variveis globais no so armazenadas na
pilha de execuo e existem enquanto o
programa estiver sendo executado.
O uso de variveis globais deve ser feito com
critrio, pois podemos criar um alto grau de
interdependncia entre as funes.
ESTRUTURAS DE DADOS
Variveis estticas
As variveis estticas so armazenadas na rea de
memria esttica.
As variveis estticas continuam existindo mesmo
antes ou depois de a funo ser executada. Porm,
uma varivel esttica declarada dentro de uma funo
s visvel dentro dessa funo.
Para declarar uma varivel esttica basta colocar a
palavra chave static antes do tipo na declarao
Uma utilizao interessante quando se necessita recuperar
o valor de uma varivel atribuda na ltima vez em que a
funo foi executada.
ESTRUTURAS DE DADOS
Variveis estticas
Ex: Funo que recebe um n real e deve imprimlo. Ela imprime um nmero por vez, separando-os
por espao em branco e coloca, no mximo, 5
nmeros por linha.
void imprime (float a) {
static int n = 1;
printf( %f , a);
if((n%5) == 0)
printf(\n);
}
n++;
ESTRUTURAS DE DADOS
Variveis estticas
Variveis globais tambm podem ser declaradas
como estticas. Nesse caso, no podem ser
acessadas por funes definidas em outros
arquivos.
Funes tambm podem ser declaradas como
estticas, no podendo ser acessadas por funes
definidas em outros arquivos.