Buscar

Linguagem C - Matrizes e Strings

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 8 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 8 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

Prévia do material em texto

www.professorferlin.blogspot.com 1
Linguagem C (Matrizes e Strings)
Prof. Edson Pedro Ferlin
1
Definições
 Uma matriz é uma coleção de variáveis do mesmo tipo que são referenciadas por um nome em comum. 
 Observações :
1. Em C, todas as matrizes consistem em localizaçõescontíguas de memória.
2. O menor endereço corresponde ao primeiro elementoe o maior ao último elemento.
3. As matrizes podem ter de uma a N dimensões.
4. Cada elemento de uma matriz é identificado pelo seu índice, e zero é o índice do primeiro elemento.
2
by Prof. Edson Pedro Ferlin
www.professorferlin.blogspot.com 2
Matrizes de uma dimensão
Parte 1 – Forma Geral
 Forma geral: tipo var_nome[tamanho]; 
 onde tipo declara o tipo base da matriz e tamanho define quantos elementos a matriz armazenará.
 int mat[100]; /* o índice varia de 0 à 99 */
 float A[200] , B[50] , C[6];
 char s[80]; /* o índice varia de 0 à 79 */
 N_total_Bytes = Tamanho_tipo_base * número_elementos
3
by Prof. Edson Pedro Ferlin
O compilador C não faz verificação de limites em matrizes; nada impede que seja ultrapassado o fim de uma matriz. Se isso ocorrer durante uma operação de atribuição, estaremos neste caso atribuindo algo a outra variável ou até mesmo para uma parte do código do programa
Matrizes de uma dimensão
Parte 2 – Exemplo
main(){ int x[10];int i;for ( i=0 ; i<10 ; i++ ) x[i] = i;}
4
by Prof. Edson Pedro Ferlin
www.professorferlin.blogspot.com 3
Strings
 Consiste em uma matriz de caracteres terminada em zero;
 Um zero é especificado como ‘\0’;
 Declarar as matrizes de caracteres como sendo um caractere maior que a maior string que elas contenham;
 Exemplo: para uma matriz que conterá uma string de 10 caracteres, ter-se-á: char str[11].
5
by Prof. Edson Pedro Ferlin
StringsExemplo
char str[8];main(){ int i;for ( i=0 ; i<7 ; i++ ) str [i] = 'A' + i ;}
Matrizes Unidimensionais São Listas
6
str[0] str[1] str[2] str[3] str[4] str[5] str[6]
A B C D E F G
by Prof. Edson Pedro Ferlin
www.professorferlin.blogspot.com 4
Strings
gets() – insere string via teclado
#include "stdio.h"main(){ char str [80];printf("informe uma string : ");gets(str); /* Lê a string do teclado */printf("%s", str);}
 A função gets( ) continuará lendo caracteres até que seja pressionado o ENTER.
7
by Prof. Edson Pedro Ferlin
Stringsstrcpy() - copia o conteúdo
#include "stdio.h"#include "string.h“main(){ char str[80];strcpy(str , "Meu primeiro exemplo");printf("%s", str);}
 A função strcpy( para, de); é usada para copiar o conteúdo da string de para a string para.
8
by Prof. Edson Pedro Ferlin
www.professorferlin.blogspot.com 5
Stringsstrcat() – anexa strings
#include "stdio.h"#include "string.h"main(){ char str_1[20] , str_2[15];strcpy(str_1 , "Meu ");strcpy(str_2 , "primeiro exemplo");strcat(str_1 , str_2);printf("%s", str_1);printf("%s", str_2);}
 A função strcat( str_1 , str_2 ); anexa str_1 em str_2; str_2 não é modificada.
9
by Prof. Edson Pedro Ferlin
Stringsstrcmp() – compara duas strings
#include "stdio.h"#include "string.h“
senha(){ char s[80] ;printf("Qual a senha ? "); gets(s);if( strcmp(s, "xxyyzz") ){ printf("Senha inválida\n");return 0; }return 1; }
10
by Prof. Edson Pedro Ferlin
A função strcmp(str_1, str_2); compara duas strings str_1 e str_2 e retorna zero se elas forem iguais. Se str_1 é lexicograficamente maior que str_2, então um número positivo é retornado; se for menor que str_2, um número negativo é retornado.
www.professorferlin.blogspot.com 6
Stringsstrlen() – comprimento da string
#include "stdio.h"#include "string.h"main(){ char str[80];printf("Digite uma string : ");gets(str);printf(" A string possui %d caracteres ", strlen(str) );}
 A função strlen( str ); retorna o tamanho de str. Todos os caracteres são contados (brancos, ....) exceto o terminador nulo.
11
by Prof. Edson Pedro Ferlin
Stringstoupper() – converte p/ maiúscula
/* Converter uma string para letras maiusculas*/#include "stdio.h"#include "string.h"#include "ctype.h“
main(){ char str[80];int i;strcpy(str,“converte para maiuscula");for ( i=0 ; str[i] ; i++ ) str[i] = toupper(str[i]);printf("%s", str);}
 O teste de str[i] no for é realizado porque um valor verdadeiro é qualquer valor diferente de zero. Portanto, o laço é executado até que encontre o zero (terminador nulo).
12
by Prof. Edson Pedro Ferlin
www.professorferlin.blogspot.com 7
MatrizesBidimensionais
 Uma matriz bidimensional é uma lista de matrizes unidimensionais.
tipo nome_matriz[num_linhas][num_colunas];
int x[10][10], y[6][8];char str[100][80];
 As matrizes bidimensionais são armazenadas em uma matriz de linha e coluna, onde o primeiro índice indica a linha e o segundo, a coluna. Os índices iniciam sempre em zero.
 No caso de matrizes strings o acesso a cada string pode ser feito por exemplo utilizando somente o índice das linhas, isto é: 
gets(mat_str[2][0]) é equivalente a gets(mat_str[2]).
13
by Prof. Edson Pedro Ferlin
MatrizesMultidimensionais
 A forma geral é : 
tipo nome[tam_1][tam_2]...[tam_n];
 O uso de matrizes de três ou mais dimensões implica diretamente na quantidade de memória requerida para armazená-las, pois são alocadas permanentemente durante a execução do programa.
int mat[10][50][10]; /* alocara 10000 Bytes para mat */double A[10][10][10]; /* alocara 8000 Bytes para A */
14
by Prof. Edson Pedro Ferlin
www.professorferlin.blogspot.com 8
MatrizesInicialização (1)
int mat[10] = { 1, 3, 6, 7, 11, 12, 34, 566, 7, -60 };float X[5] = { 12.98 , -89.9, -90 , 87 , 655.99 } ;
char str [7] = “MATRIZ"; equivale a char str[7] = { ‘M', ‘A', ‘T' , ‘R', ‘I', ‘Z','\0'};
int a[3][4] = { 3 , 8 , 9 , 1 , 3 , 5 , 77 , 6 , 5 , 55 , 2 , 6 }; ouint a[3][4] = { 3 , 8 , 9 , ou int a[ ][4] = { 3 , 8 , 9 ,1 , 3 , 5 , 1 , 3 , 5 ,77 , 6 , 5 , 77 , 6 , 5 ,55 , 2 , 6 55 , 2 , 6}; };
15
by Prof. Edson Pedro Ferlin
MatrizesInicialização (2)
char s1[20] = "informação inválida\n";equivale a : char s1[ ] = "informação inválida\n";
 Quando não especificado o tamanho da matriz, como em :s1[ ] e a[ ][4]
 neste caso, o dimensionamento da matriz será automático.
 Se, em uma declaração de Inicialização de matriz, o tamanho não é especificado, o compilador criará uma matriz grande o suficiente para armazenar todos os inicializadores presentes.
 A vantagem dessa declaração sobre a versão com especificação de tamanho é que a tabela pode ser aumentada ou diminuída sem mudar as dimensões da matriz.
16
by Prof. Edson Pedro Ferlin

Continue navegando