Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br ProgramaProgramaçção Estruturadaão Estruturada Linguagem C Estrutura de Dados Homogêneas 2 SumSumááriorio • Introdução • Exercícios 2 3 IntroduIntroduçção [ 1 ão [ 1 –– 3 ]3 ] • A manipulação de dados é um dos objetivos da criação de programas, que leva este a precisar de dados e informações para exercer as suas funções. • Informações simples atendem a uma pequena parcela dos algoritmos. • A maioria utiliza uma grande carga de informações e estas, quando utilizadas com tipos primitivos, precisam de inúmeras variáveis, tornando o algoritmo um monstro carregado de repositórios, já que um deste contém apenas uma informação. 4 IntroduIntroduçção [ 2 ão [ 2 –– 3 ]3 ] • A alternativa para atender a esta demanda corresponde a criação de novos repositórios que suportem várias informações. • Utilizando os armários como demonstração: – uma gaveta só pode conter um objeto, uma variável tem somente uma informação, no tipo primitivo. – Quando se trata de tipos construídos, uma gaveta, ou melhor, uma variável pode conter inúmeras informações. 3 5 IntroduIntroduçção [ 3 ão [ 3 –– 3 ]3 ] • Os tipos construídos são denominados de Estrutura de Dados Composta, que consiste em um conjunto de informações armazenados em um repositório. • É dividida em duas classificações: – Estruturas de Dados Compostas Homogêneas – Estruturas de Dados Compostas Heterogêneas 6 Estrutura de Dados Compostas HomogêneasEstrutura de Dados Compostas Homogêneas • É formado por variáveis que aceitam um número indeterminado de informações a partir de um mesmo tipo primitivo. • Ele é dividido em duas partes: – Estruturas de Dados Compostas Homogêneas Unidimensionais, conhecido como Vetor; e – Estruturas de Dados Compostas Homogêneas Compostas Multidimensionais, conhecido como Matriz. 4 7 VetorVetor • Para entendermos um vetor iremos utilizar o cenário de um edifício. Digamos que um edifício contém apenas um apartamento por andar. • Um edifício corresponde a um vetor e cada apartamento corresponde a um elemento deste vetor. 8 Sintaxe de DeclaraSintaxe de Declaraçção de Vetorão de Vetor tipo nome_var[tamanho]; • Onde: – tipo � Refere-se ao tipo de dado(int, etc.). – nome_var � Identifica o nome do vetor. – [tamanho] � Quantidade de elementos que o vetor armazenará. • Exemplo: float notas[4]; // vetor possui 4 posições (índice de 0 a 3) 5 9 Sintaxe de ManipulaSintaxe de Manipulaçção de Vetorão de Vetor • Atribuição completa do vetor nome_var[tamanho] = {x,y,z}; • Exemplo: float notas[4]; notas[4] = {5.5,9,6,8}; 10 Sintaxe de ManipulaSintaxe de Manipulaçção de Vetorão de Vetor • Atribuição em uma posição do vetor nome_var[i] = n; • Exemplo: Float notas[4]; notas[2] = 6; Nicolas Realce Nicolas Nota tipo nome_var[tamanho] = {x,y,z};nullnullnullnullfloat notas[4] = {5.5,9,6,8}; 6 11 Sintaxe de ManipulaSintaxe de Manipulaçção de Vetorão de Vetor • Inicialização de um vetor float notas[4]; for(int i=0;i<4;i++){ //<X> varia conforme cada repetição notas[i] = <X>; } 12 Sintaxe de ManipulaSintaxe de Manipulaçção de Vetorão de Vetor • Entrada de dados em um vetor #include <stdio.h> ... float notas[4]; for(int i=0;i<4;i++){ scanf(“%f”,¬as[i]); } 7 13 Sintaxe de ManipulaSintaxe de Manipulaçção de Vetorão de Vetor • Saída 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: 5.50 Nota: 9.00 Nota: 6.00 Nota: 8.00 14 Exemplo de VetorExemplo de Vetor #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”); } Elaborar um algoritmo que leia 3 salários e, no final, imprima o maior. 8 15 MatrizMatriz • Vetor é uma variável composta homogênea unidimensional porque tem somente uma dimensão, ou seja, cresce somente em um sentido. • Já uma matriz corresponde a uma variável composta homogênea multidimensional, pois ela pode crescer em vários sentidos. • Ela pode variar de matriz bidimensional até N-dimensional, ou seja, projeta de 2 ou mais direções. 16 MatrizMatriz 9 17 MatrizMatriz • Para entendermos uma matriz bidimensional (duas dimensões), será utilizado o cenário de uma platéia de um teatro. • O teatro é formado por um palco e uma platéia de 20 cadeiras. • Esta platéia é composta por cinco fileiras de quatro cadeiras ou quatro arquibancadas de cinco cadeiras. 18 MatrizMatriz • Fazendo outra comparação para haver uma melhor compreensão, iremos utilizar novamente o cenário de um edifício, só que, agora, cada andar terá vários apartamentos. • Digamos que um edifício tenha três apartamentos por andar, sendo quatro andares. • Neste caso, o edifício corresponde a uma matriz com quatro linhas e três colunas, conforme a figura ao lado. As formas de declaração e manipulação a seguir são de estruturas bidimensionais. 10 19 Sintaxe de DeclaraSintaxe de Declaraçção de Matrizão de Matriz tipo nome_var[linha][coluna]; • Onde: – tipo � Refere-se ao tipo de dado(int, etc.). – nome_var � Identifica o nome da matriz. – [linha][coluna] � Qtde. de elementos que a matriz armazenará. linhas * colunas. • Exemplo: int num[2][3]; int num2[4][4] Matriz Retangular Matriz Quadrada 20 Sintaxe de ManipulaSintaxe de Manipulaçção de Matrizão de Matriz • Atribuição 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}}; 11 21 Sintaxe de ManipulaSintaxe de Manipulaçção de Matrizão de Matriz • Atribuição em uma posição da matriz nome_var[linha][coluna] = n; • Exemplo: int num[2][3]; num[1][0] = 87; int num2[4][4]; num2[0][3] = 23; 22 Sintaxe de ManipulaSintaxe de Manipulaçção de Matrizão de Matriz • Inicialização 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 repetição num[i][j] = <X>; } } 12 23 Sintaxe de ManipulaSintaxe de Manipulaçção de Matrizão 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]); } } • Saída 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]); } } 24 Algumas consideraAlgumas consideraçções de Matriz Quadradaões 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 Triângulo Principal Superior corresponde à linha ser sempre inferior à coluna. (Verde [92,2,10,48,76,23]) • O Triângulo Principal Inferior corresponde à linha ser sempre superior à coluna. (Azul [43,54,28,99,7,33]) • A Diagonal Secundária corresponde à soma da linha e coluna ser a ordem da matriz decrementando um. (Laranja [33,54,2,23]) • O Triângulo Secundário 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 Triângulo Secundário Inferior corresponde à soma da linha e coluna ser maior ou igual à ordem. (lilás [7,51,76,28,10,87]). 13 25 Exemplo de MatrizExemplo de Matriz #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"); } Elabore um algoritmo que leia a matriz da 3 linhas e 2 colunas. No final, imprima o maior e o menor. 26 ExercExercííciocio 1. Elabore um algoritmo que, dados dois vetores inteiros de 10 posições, leia os dois vetores, some os valores da mesma posição e armazene em um terceiro vetor inteiro de 10 posições. 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 números ímpares. 4. Elabore um algoritmo que leia 10 inteiros do teclado, armazene em um vetor, calcule e, no final, mostre a média dos números ímpares. 14 27 ExercExercííciocio 4. Elabore um algoritmo que leia uma matriz quadrada de ordem 5 e um inteiro. Apresente os números da linha indicada pelo número inteiro fornecido pelo usuário. 5. Elabore um algoritmo que leia uma matriz quadrada de ordem 5 e um inteiro. Apresente os números da coluna indicada pelo número inteiro fornecido pelo usuário. 6. 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. 63 52 41 num transposta 654 321 num 28 ExercExercííciocio 7. Elabore um algoritmo que leia uma matriz inteira quadrada de ordem 4, calcule e mostre no final: a) A soma dos Triângulos Principais e Secundários, tanto superior, quanto inferior. b) A média aritmética da Diagonal Principal e da Diagonal Secundária.
Compartilhar