Você está na página 1de 33

Laboratório de

Programação
Vetores e Matrizes
Profa. Rayanne Silveira
Conteúdo

1 Vetores

2 Matrizes

3 String

Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 2/34
Introdução

 Um ARRANJO ( VETOR, MATRIZ ou STRING) é uma coleção de


variáveis do mesmo tipo que é referenciada por um nome comum.

 Um elemento específico em um ARRANJO é acessado por meio de


um ÍNDICE.

3
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 3/34
Introdução
 VETORES e STRINGS são ARRANJOS unidimensionais. Isto é,
precisamos de apenas um ÍNDICE para acessar um elemento.

 MATRIZES são ARRANJOS multidimensionais. Ou seja, dois ou


mais ÍNDICES são necessários para acessar um elemento de uma
MATRIZ.

4
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 4/34
Introdução
 Em C, ARRAJOS são armazenados em posições de memória
contíguas. O endereço mais baixo corresponde ao primeiro elemento e
o mais alto, ao último elemento.

 Todo vetor ou matriz são ponteiros de memória (determinam uma


maneira de acessar a memória alocada)

5
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 5/34
Vetor
 Sintaxe:
 Tipo nome [numero_de_elementos] = { INICIALIZAÇÃO};
 INICIALIZAÇÃO é opcional.

 Exemplos:
 int vet[10];
 char strings[20];
 float novo [5] = {1,2,3,4,5}; //com inicialização
 int vetor []={4,4,4}; //com inicialização
 Int vec[5] = {0}; //inicializa todos os elementos com 0
6
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 6/34
Acesso ao conteúdo (Índices)
 Em ARRANJOS, o acesso ao conteúdo é feito através dos ÍNDICES.

 Índices começam em 0 e vão até (TAMANHO – 1):


 vetor[0] - primeiro elemento
 vetor[1] - segundo elemento ...
 vetor[TAMANHO - 1] - último elemento

7
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 7/34
Acesso ao conteúdo (Índices)
 Exemplo:

 int vetor [3] = {1,2,3}


1 2 3
[0] [1] [2]

 vetor [0] = 1
 vetor [1] = 2
 vetor [2] = 3

8
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 8/34
Acesso ao conteúdo (Índices)

 Para percorrer um arranjo usamos laços:

 Exemplo: Preencher um vetor com o mesmo dado:

 for(int i=0; i<5; i++)                 


        vetor[i] = 10;

9
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 9/34
Vetor

 Exemplo 1 - Imprimindo um vetor de tamanho 50:

#include <stdio.h>
int main(){
int vec [50];
int i;
for (i=0;i<50; i++){
vec[i]=i;
printf("%d", vec[i]);
}
return 0;
}

10
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 10/34
Vetor
#include<stdio.h>
 Exemplo 2 - Inicialize um vetor int main (){
de 5 posições ( via teclado): int vetor[5] , i;
for ( i=0; i<5; i++ ) {
printf ("\nElemento[%d]= ", i);
scanf ("%d", &vetor[ i ]);
}
printf ("\n*******Imprimindo*********\n");
for (i=0;i<5; i++){
printf("%d", vetor[i]);
}
return 0;
}

11
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 11/34
Matrizes
 Matrizes são vetores multidimensionais;
 Sintaxe:
 Tipo nome [tamanho1][tamanho2]... [tamanhoN] =
{ INICIALIZAÇÃO};

 Exemplos:
 int vetor [3][2];
 char strings[3][3];
 float novo [2][2] = {1,2,3,4}; //com inicialização
12
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 12/34
Acesso ao conteúdo (Índices)
 Índices começam em 0 e vão até (TAMANHO – 1):

 matriz[0][0] - primeiro elemento

 matriz[tamanho1-1] [tamanho2-1] - último elemento

13
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 13/34
Matrizes

14
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 14/34
Matrizes #include<stdio.h>
int main (){
int matriz[2][2] , linha, coluna;
 Exemplo 3: Inicialize e printf ("Digite os elementos da matriz:\n");
for ( linha=0; linha<2; linha++ )
imprima uma matriz 2x2: for ( coluna=0; coluna<2; coluna++ ) {
printf ("\nElemento[%d][%d] = ", linha, coluna);
scanf ("%d", &matriz[ linha ][ coluna ]);
}
printf("\n***** Imprimindo ******** \n");
for ( linha=0; linha<2; linha++ )
for ( coluna=0; coluna<2; coluna++ ) {
printf ("Elemento[%d][%d] = %d\n", linha,
coluna,matriz[ linha ][ coluna ]);
}
return 0;
}
15
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 15/34
Strings
 Strings são vetores de caracteres
 Terminam com um nulo: ”\0”

 Exemplos:
 char teste[4]=”ola” ;
 char teste[]=”ola” ;
 char teste []={‘o’,’l’,’a’};

16
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 16/34
Strings
 Funções para escrever strings:
char vetorNome[20]=“programacao”;

 Função printf()
 printf(“Nome: %s”,vetorNome);

 Função puts()
 puts(vetorNome); //já inclui o \n

17
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 17/34
Strings

 Funções para ler strings:

 Função scanf()

 scanf(“%s”, nome_string); //OBS: não precisa do &

 A função scanf() vai ler até encontrar um espaço em branco, tab ou


enter.
 scanf ( "%[^\n]", str); //variação para ler até um ENTER
18
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 18/34
Strings
 Exemplo scanf():

#include<stdio.h>
int main(void) {
char nome[50];
printf("Digite seu nome: ");
scanf("%s",nome);
printf("O nome armazenado foi: %s", nome);
return 0;
}
19
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 19/34
Strings
 Funções para ler strings:

 Função gets()
 gets(nome_string)

 A função gets() armazena tudo que foi digitado, inclusive os


espaços, até que a tecla ENTER seja pressionada

20
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 20/34
Strings
 Exemplo gets():
#include<stdio.h>
int main(void) {
char nome[50];
printf("Digite seu nome: ");
gets(nome);
printf("O nome armazenado foi: %s", nome);
return 0;
}
21
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 21/34
Strings
 Funções para ler strings:

 Função fgets() //mais segura


 fgets(nome_string, tamanho_string, stdin)

 fgets() recebe três parametros: a string que vai armazenar o que vai ser
digitado, o tamanho da string e de onde vai ler (ela pode ler de um arquivo de
texto, por exemplo). Para ler do teclado, utiliza-se stdin.

22
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 22/34
Strings
 Exemplo fgets():

#include<stdio.h>
int main(void) {
char nome[50];
printf("Digite seu nome: ");
fgets(nome, 50 , stdin );
printf("O nome armazenado foi: %s", nome);
return 0;
}
23
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 23/34
Strings
 Header: <string.h>

24
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 24/34
Strings
 Exemplo 4: uso de algumas funções de strings:

#include<stdio.h>
#include<string.h>
int main () {
char nome1[80],nome2[80];
printf("Digite o primeiro nome:");
scanf("%s",nome1);
printf("Digite o segundo nome:");
scanf("%s",nome2);
printf("O tamanho da string %s é %d\n", nome1,strlen(nome1));
printf("O tamanho da string %s é %d", nome2,strlen(nome2));
return 0;
}

25
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 25/34
Arranjos
 Observações:

 Podemos usar constantes para definir o tamanho do arranjo.

 Uma constante é usada para armazenar valores que não podem ser
modificados durante a execução de um programa.

26
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 26/34
Constantes

 Duas formas:

 Palavra reservada const


 diretiva de pré-processador #define

 OBS:
 A declaração deve ser feita fora de todas as funções do progama

27
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 27/34
Constantes

 Palavra reservada const:

 const nome_da_constante = valor;

 Exemplo:
const int num=10;
int vetor[num];

28
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 28/34
Constantes

 diretiva de pré-processador #define

 Sintaxe:
#define nome_da_constante valor (não tem ; )

 OBS:
 É recomendável utilizar letras maiúsculas

29
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 29/34
Constantes

 Exemplo:

 #define TAM 5

int vetor[TAM];
for(i=0; i<TAM; i++)
       vetor[i] = TAM - i;

30
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 30/34
Arranjos
 Observações:

 Fique atento aos limites dos índices: isso é responsabilidade do


programador.

31
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 31/34
Exercícios
 1. Escreva um programa que leia uma palavra e imprima a quantidade
de vogais presentes nessa palavra.

 2. Escreva um programa que receba uma matriz 2x2 , calcule e


imprima o maior elemento da matriz e sua respectiva posição, ou seja,
linha e coluna que o elemento ocupa.

32
Laboratório de Programação – ECP – Universidade Federal do Maranhão | Profa. Rayanne Silveira 32/34
Dúvidas?

Você também pode gostar