Você está na página 1de 14

Programao Estruturada

Linguagem C
Estrutura de Dados Homogneas

Prof. Luis Ncolas de Amorim Trigo


nicolas.trigo@ifsertao-pe.edu.br

Sumrio
Introduo
Exerccios

Introduo [ 1 3 ]
A manipulao de dados um dos objetivos da
criao de programas, que leva este a precisar de
dados e informaes para exercer as suas
funes.
Informaes simples atendem a uma pequena
parcela dos algoritmos.
A maioria utiliza uma grande carga de informaes
e estas, quando utilizadas com tipos primitivos,
precisam de inmeras variveis, tornando o
algoritmo um monstro carregado de repositrios,
j que um deste contm apenas uma informao.
3

Introduo [ 2 3 ]
A alternativa para atender a esta
demanda corresponde a criao de
novos repositrios que suportem
vrias informaes.
Utilizando os armrios como
demonstrao:
uma gaveta s pode conter um objeto,
uma varivel tem somente uma
informao, no tipo primitivo.
Quando se trata de tipos construdos, uma
gaveta, ou melhor, uma varivel pode
conter inmeras informaes.
4

Introduo [ 3 3 ]
Os tipos construdos so denominados de
Estrutura de Dados Composta, que consiste em
um conjunto de informaes armazenados em
um repositrio.
dividida em duas classificaes:
Estruturas de Dados Compostas Homogneas
Estruturas de Dados Compostas Heterogneas

Estrutura de Dados Compostas Homogneas

formado por variveis que aceitam um


nmero indeterminado de informaes a
partir de um mesmo tipo primitivo.
Ele dividido em duas partes:
Estruturas de Dados Compostas
Homogneas Unidimensionais, conhecido
como Vetor; e
Estruturas de Dados Compostas
Homogneas Compostas
Multidimensionais, conhecido como Matriz.
6

Vetor
Para entendermos um vetor
iremos utilizar o cenrio de um
edifcio. Digamos que um
edifcio contm apenas um
apartamento por andar.
Um edifcio corresponde a um
vetor e cada apartamento
corresponde a um elemento
deste vetor.
7

Sintaxe de Declarao de Vetor


tipo nome_var[tamanho];
Onde:
tipo

Refere-se ao tipo de dado(int, etc.).

nome_var
[tamanho]

Identifica o nome do vetor.


Quantidade de elementos que o vetor armazenar.

Exemplo:
float notas[4];
// vetor possui 4 posies (ndice de 0 a 3)
8

Sintaxe de Manipulao de Vetor


Atribuio completa do vetor
nome_var[tamanho] = {x,y,z};
Exemplo:
float notas[4];
notas[4] = {5.5,9,6,8};

Sintaxe de Manipulao de Vetor


Atribuio em uma posio do vetor
nome_var[i] = n;
Exemplo:
Float notas[4];
notas[2] = 6;

10

Sintaxe de Manipulao de Vetor


Inicializao de um vetor
float notas[4];
for(int i=0;i<4;i++){
//<X> varia conforme cada repetio

notas[i] = <X>;
}

11

Sintaxe de Manipulao de Vetor


Entrada de dados em um vetor
#include <stdio.h>
...
float notas[4];
for(int i=0;i<4;i++){
scanf(%f,&notas[i]);
}

12

Sintaxe de Manipulao de Vetor


Sada de dados em um vetor
#include <stdio.h>
float notas[4];
...
for(int i=0;i<4;i++){
printf(\nNota: %.2f,notas[i]);
}
Resultado:
Nota:
Nota:
Nota:
Nota:

5.50
9.00
6.00
8.00
13

Exemplo de Vetor
Elaborar um algoritmo que leia 3 salrios e, no final, imprima o maior.
#include <stdio.h>
#include <stdlib.h>
int main(){
float salario[3], maiorsalario;
for(int i=0;i<3;i++){
scanf(%f,&salario[i]);
if(i==0){
maiorsalario = salario[i];
}else{
if(salario[i] > maiorsalario){
maiorsalario = salario[i];
}
}
}
printf(Maior Salario eh R$ %.2f\n,maiorsalario);
system(pause);
}

14

Matriz
Vetor uma varivel composta homognea
unidimensional porque tem somente uma
dimenso, ou seja, cresce somente em um
sentido.
J uma matriz corresponde a uma varivel
composta homognea multidimensional, pois ela
pode crescer em vrios sentidos.
Ela pode variar de matriz bidimensional at
N-dimensional, ou seja, projeta de 2 ou mais
direes.
15

Matriz

16

Matriz
Para entendermos uma matriz
bidimensional (duas dimenses),
ser utilizado o cenrio de uma
platia de um teatro.
O teatro formado por um palco e
uma platia de 20 cadeiras.
Esta platia composta por cinco
fileiras de quatro cadeiras ou
quatro arquibancadas de cinco
cadeiras.

17

Matriz
Fazendo outra comparao para haver
uma melhor compreenso, iremos
utilizar novamente o cenrio de um
edifcio, s que, agora, cada andar ter
vrios apartamentos.
Digamos que um edifcio tenha trs
apartamentos por andar, sendo quatro
andares.
Neste caso, o edifcio corresponde a
uma matriz com quatro linhas e trs
colunas, conforme a figura ao lado.
As formas de declarao e manipulao a
seguir so de estruturas bidimensionais.

18

Sintaxe de Declarao de Matriz


tipo nome_var[linha][coluna];
Onde:
tipo

Refere-se ao tipo de dado(int, etc.).

nome_var
[linha][coluna]
linhas * colunas.

Identifica o nome da matriz.


Qtde. de elementos que a matriz armazenar.

Exemplo:
int num[2][3];
int num2[4][4]

Matriz Retangular
Matriz Quadrada

19

Sintaxe de Manipulao de Matriz


Atribuio completa da matriz
tipo nome_var[linha][coluna] =
{{x1,...,y1},{x2,...,y2},...{xn,...,yn}};
Exemplo:
int num[2][2] = {{5,9},{6,8}};
int num2[3][2] = {{4,7},{5,6},{1,0}};

20

10

Sintaxe de Manipulao de Matriz


Atribuio em uma posio da matriz
nome_var[linha][coluna] = n;
Exemplo:
int num[2][3];
num[1][0] = 87;
int num2[4][4];
num2[0][3] = 23;

21

Sintaxe de Manipulao de Matriz


Inicializao de uma matriz
int num[2][3];
for(int i=0;i<2;i++){ //i<=1
for(int j=0;j<3;j++){ //j<=2
//<X> varia conforme cada repetio

num[i][j] = <X>;
}
}

22

11

Sintaxe de Manipulao de Matriz


Entrada de dados em uma matriz
#include <stdio.h>
...
int num[2][3];
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
scanf(%d,&num[i][j]);
}
}
Sada de dados em uma matriz
#include <stdio.h>
...
int num[2][3];
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
printf(%d,num[i][j]);
}
}

23

Algumas consideraes de Matriz Quadrada


Se tratando de linha e coluna, refere-se ao ndice:

A Diagonal Principal corresponde linha igual coluna.


(Amarelo [67,12,51,87])

O Tringulo Principal Superior corresponde linha ser


sempre inferior coluna.
(Verde [92,2,10,48,76,23])

O Tringulo Principal Inferior corresponde linha ser


sempre superior coluna.
(Azul [43,54,28,99,7,33])

A Diagonal Secundria corresponde soma da linha e


coluna ser a ordem da matriz decrementando um.
(Laranja [33,54,2,23])

O Tringulo Secundrio Superior corresponde soma da


linha e coluna ser sempre menor do que ordem da matriz
decrementando um.
(bege [99,12,48,43,92,67])

O Tringulo Secundrio Inferior corresponde soma da


linha e coluna ser maior ou igual ordem.
(lils [7,51,76,28,10,87]).
24

12

Exemplo de Matriz
Elabore um algoritmo que leia a matriz da 3 linhas e 2 colunas. No final,
imprima o maior e o menor.
#include <stdio.h>
#include <stdlib.h>
int main(){
int num[3][2],maior,menor;
for(int i=0;i<3;i++){
for(int j=0;j<2;j++){
scanf("%d",&num[i][j]);
if((i==0)&&(j==0)){
maior = num[i][j];
menor = num[i][j];
}else{
if(num[i][j] > maior)
maior = num[i][j];
if(num[i][j] < menor)
menor = num[i][j];
}
}
}
printf("O maior eh %d\n",maior);
printf("O menor eh %d\n",menor);
system("pause");
}

25

Exerccio
1. Elabore um algoritmo que, dados dois vetores inteiros
de 10 posies, leia os dois vetores, some os valores
da mesma posio e armazene em um terceiro vetor
inteiro de 10 posies. No final imprima este terceiro
vetor.
2. Desenvolver um programa que armazene as alturas de
5 atletas em um vetor e, no final, verifique e mostre o
maior altura e menor altura.
3. Elabore um programa que leia 5 inteiros do teclado,
armazene em um vetor. No final, mostre os nmeros
mpares.
4. Elabore um algoritmo que leia 10 inteiros do teclado,
armazene em um vetor, calcule e, no final, mostre a
mdia dos nmeros mpares.
26

13

Exerccio
4.

5.

6.

Elabore um algoritmo que leia uma matriz


quadrada de ordem 5 e um inteiro. Apresente
os nmeros da linha indicada pelo nmero
inteiro fornecido pelo usurio.
Elabore um algoritmo que leia uma matriz
quadrada de ordem 5 e um inteiro. Apresente
os nmeros da coluna indicada pelo nmero
inteiro fornecido pelo usurio.
Elabore um algoritmo que receba uma matriz
inteira retangular 2x3, gere e imprima uma
matriz transposta. Esta gerada trocando a
linha pela coluna. Exemplificado na figura ao
lado.

num

num transposta

6
27

Exerccio
7.

Elabore um algoritmo que leia uma matriz inteira


quadrada de ordem 4, calcule e mostre no final:
a)
b)

A soma dos Tringulos Principais e Secundrios, tanto


superior, quanto inferior.
A mdia aritmtica da Diagonal Principal e da Diagonal
Secundria.

28

14