algoritmos e estruturas de dados prof. me. claudio benossi linguagem c vetores, matrizes, strings
Post on 22-Apr-2015
125 Views
Preview:
TRANSCRIPT
Algoritmos e Estruturas de Dados
Prof. Me. Claudio Benossi
Linguagem CLinguagem CVetores, Matrizes, Vetores, Matrizes,
StringsStrings
São um conjunto de variáveis São um conjunto de variáveis identificadas por um identificadas por um mesmo nomemesmo nome..
HomogêneasHomogêneas (vetores e matrizes) (vetores e matrizes)
HeterogêneasHeterogêneas (estruturas) (estruturas)
Variáveis CompostasVariáveis CompostasVariáveis CompostasVariáveis Compostas
6,1 2,3 9,4 5,1 8,9 9,8 10 7,0 6,3 4,4
0 1 2 3 4 5 6 7 8 9
Notas:
Posição:
Variáveis Compostas Variáveis Compostas HomogêneasHomogêneasVariáveis Compostas Variáveis Compostas HomogêneasHomogêneas
Correspondem a posições da memória:Correspondem a posições da memória: identificadas por um identificadas por um único nomeúnico nome
individualizadas por individualizadas por índicesíndices
cujo conteúdo é de um cujo conteúdo é de um mesmo tipomesmo tipo
Posição do livroPosição do livro
00 11 22 …… n-1n-1
00 788788 598598 265265 …… 156156
11 145145 258258 369369 …… 196196
22 989989 565565 345345 …… 526526
⋮⋮ ⋮⋮ ⋮⋮ ⋮⋮ ⋱⋱ ⋮⋮
m-m-11 845845 153153 564564 892892 210210
Pra
tele
ira
Pra
tele
ira
Variáveis Compostas Variáveis Compostas HomogêneasHomogêneas:: Exemplo:: ExemploVariáveis Compostas Variáveis Compostas HomogêneasHomogêneas:: Exemplo:: Exemplo
Utilizados para armazenar conjuntos de Utilizados para armazenar conjuntos de dados cujos elementos podem ser dados cujos elementos podem ser endereçados por endereçados por um único índiceum único índice..
Também são conhecidos como Também são conhecidos como vetoresvetores..
Arranjos unidimensionaisArranjos unidimensionaisArranjos unidimensionaisArranjos unidimensionais
Utilizados para armazenar conjuntos de Utilizados para armazenar conjuntos de dados cujos elementos necessitam ser dados cujos elementos necessitam ser endereçados por endereçados por mais de um índicemais de um índice..
Também são conhecidos comoTambém são conhecidos como arraysarrays ouou matrizesmatrizes..
Arranjos multidimensionaisArranjos multidimensionaisArranjos multidimensionaisArranjos multidimensionais
00 11 22 …… n-1n-1
00 788788 598598 265265 …… 156156
11 145145 258258 369369 …… 196196
22 989989 565565 345345 …… 526526
⋮⋮ ⋮⋮ ⋮⋮ ⋮⋮ ⋱⋱ ⋮⋮
m-m-11 845845 153153 564564 892892 210210
Arranjos de Arranjos de 22 dimensões dimensões
Arranjos multidimensionaisArranjos multidimensionais:: Exemplos:: ExemplosArranjos multidimensionaisArranjos multidimensionais:: Exemplos:: Exemplos
00 11 22 33
00
11
22
33
00
00 11 22 33
00
11
22
33
11
00 11 22 33
00
11
22
33
22
00 11 22 33
00
11
22
33
33
Arranjo de Arranjo de 33 dimensões dimensões
Arranjos multidimensionaisArranjos multidimensionais:: Exemplos:: ExemplosArranjos multidimensionaisArranjos multidimensionais:: Exemplos:: Exemplos
00 11 22 33
00
11
22
33
(0,0)(0,0)
00 11 22 33
00
11
22
33
(0,1)(0,1)
00 11 22 33
00
11
22
33
(0,2)(0,2)
00 11 22 33
00
11
22
33
(0,3)(0,3)
00 11 22 33
00
11
22
33
(1,0)(1,0)
00 11 22 33
00
11
22
33
(1,1)(1,1)
00 11 22 33
00
11
22
33
(1,2)(1,2)
00 11 22 33
00
11
22
33
(1,3)(1,3)
Arranjo de Arranjo de 44 dimensões dimensões
Arranjos multidimensionaisArranjos multidimensionais:: Exemplos:: ExemplosArranjos multidimensionaisArranjos multidimensionais:: Exemplos:: Exemplos
Como declarar:Como declarar:
Exemplos:Exemplos:
<tipo> <nome> [<tamanho1>][<tamanho2>]...;<tipo> <nome> [<tamanho1>][<tamanho2>]...;
float VetReais[100];int Vetor[5][9];char Nome_cliente[50];float cubo[20][12][7];
float VetReais[100];int Vetor[5][9];char Nome_cliente[50];float cubo[20][12][7];
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C
O compilador C aloca uma porção O compilador C aloca uma porção contígua contígua da da memória para armazenar os elementos das memória para armazenar os elementos das matrizes e vetores.matrizes e vetores.
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C
int VetInt[n];int VetInt[n];
...
Índices:Índices: 00 11 22 33 44 55 ...... n-1n-1
VetInt
Índice do Índice do primeiroprimeiro elemento: elemento: zerozeroÍndice doÍndice do últimoúltimo elemento: elemento: n – 1n – 1QuantidadeQuantidade de elementos: de elementos: nn
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C
00 11 22 33 44 55
Vetor[6]Vetor[6]X1X1 X2X2
Vetor[1] = 9;
Vetor[-1] = 2;
Vetor[6] = 8;
Vetor[1] = 9;
Vetor[-1] = 2;
Vetor[6] = 8;
2 89
37
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C
Índices fora dos limites podem causar Índices fora dos limites podem causar comportamento comportamento anômalo anômalo do código.do código.
int X1;
int Vetor[6];
int X2
int X1;
int Vetor[6];
int X2
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C
O tamanho de um vetor ou matriz é O tamanho de um vetor ou matriz é pré-pré-definidodefinido, ou seja, após a compilação, não , ou seja, após a compilação, não pode ser mudado.pode ser mudado.
Portanto, vetores e matrizes são Portanto, vetores e matrizes são chamadas chamadas estruturas de dados estáticasestruturas de dados estáticas, , pois mantém o pois mantém o mesmo tamanho mesmo tamanho ao longo ao longo de toda a execução do programa.de toda a execução do programa.
Atribuir valores na declaração do vetor:Atribuir valores na declaração do vetor:
Atribuir valores na declaração da matriz:Atribuir valores na declaração da matriz:
float matriz[2][3] = {{1,2,3},{4,5,6}};float matriz[2][3] = {{1,2,3},{4,5,6}};
int vetor[5] = {1,2,3,4,5};int vetor[5] = {1,2,3,4,5};
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: ExemplosVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos
Colocar os números de 1 a 5 num vetor:Colocar os números de 1 a 5 num vetor:
Colocar os números de 5 a 1 num vetor:Colocar os números de 5 a 1 num vetor:
for (i=0; i<5; i++) Vetor[i] = 5 - i;for (i=0; i<5; i++) Vetor[i] = 5 - i;
for (i=0; i<5; i++) Vetor[i] = i + 1;for (i=0; i<5; i++) Vetor[i] = i + 1;
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: ExemplosVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos
Preencher uma matriz n Preencher uma matriz n ×× m com zeros: m com zeros:
for (i=0; i < N; i++)
for (j=0; j < M; j++)
Matriz[i][j] = 0;
for (i=0; i < N; i++)
for (j=0; j < M; j++)
Matriz[i][j] = 0;
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: ExemplosVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos
Copiar dados de um vetor para outro:Copiar dados de um vetor para outro:
Boa prática de programação:Boa prática de programação: Definir o tamanho de vetores com Definir o tamanho de vetores com constantesconstantes
flexibiliza a manutenção do código.flexibiliza a manutenção do código.
#define TAM_MAX 10
double VetReais[TAM_MAX], VetCopia[TAM_MAX];
for (i=0; i<TAM_MAX; i++)
VetCopia[i] = VetReais[i];
#define TAM_MAX 10
double VetReais[TAM_MAX], VetCopia[TAM_MAX];
for (i=0; i<TAM_MAX; i++)
VetCopia[i] = VetReais[i];
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: ExemplosVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos
Leitura dos dados de um vetor:Leitura dos dados de um vetor:
for (i=0; i<TAM_MAX; i++) {
printf("Digite um número: "); scanf("%f", &Vet[i]);}
for (i=0; i<TAM_MAX; i++) {
printf("Digite um número: "); scanf("%f", &Vet[i]);}
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: ExemplosVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos
Determinar:Determinar:
1.1. M[3][0]M[3][0]
2.2. M[4][2]M[4][2]
3.3. M[1][3]M[1][3]
4.4. M[5][M[0][2]]M[5][M[0][2]]
5.5. M[M[3][1]][1]M[M[3][1]][1]
6.6. M[4][(M[1][2]+M[3][0])]M[4][(M[1][2]+M[3][0])]
00 11 22 33
00 11 22 33 44
11 55 -5-5 33 00
22 11 11 11 11
33 -3-3 22 00 00
44 00 00 11 11
55 -1-1 -1-1 -2-2 -2-2
1.1. -3-3
2.2. 11
3.3. 00
4.4. -2-2
5.5. 11
6.6. 00
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema AAVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema AA
Ler um elemento Ler um elemento KK..
Ler um vetor Ler um vetor AA de de NN elementos.elementos.
Verificar se o elemento Verificar se o elemento KK está presente no está presente no vetor:vetor: Se estiver, imprimir a posição onde ele foi Se estiver, imprimir a posição onde ele foi
encontrado.encontrado.
Caso contrário, imprimir mensagem "elemento Caso contrário, imprimir mensagem "elemento KK não encontrado". não encontrado".
37a
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema BBVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema BB
Ler Ler NN valores inteiros (N valores inteiros (N ≤≤ 100) até que 100) até que seja digitado o valor zero.seja digitado o valor zero.
A seguir, A seguir, inverter o vetorinverter o vetor, trocando o 1º , trocando o 1º elemento com o último, o 2º com o elemento com o último, o 2º com o penúltimo, e assim sucessivamente.penúltimo, e assim sucessivamente.
Ao final, Ao final, imprimirimprimir o vetor invertido. o vetor invertido.
38
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema CCVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema CC
Faça um programa que imprima uma matriz Faça um programa que imprima uma matriz quadrada de dimensão quadrada de dimensão NN contendo: contendo:
o número o número 11 nos elementos abaixo da diagonal nos elementos abaixo da diagonal principal principal
o número o número 0 0 nos demais elementosnos demais elementos
NN deve ser menor ou igual a deve ser menor ou igual a 2020..
39
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema DDVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema DD
BELÉMBELÉM 16111611 52985298 43974397 32503250 21002100 29332933
FORTALEZAFORTALEZA 16111611 57635763 48654865 28052805 13891389 31273127
MANAUSMANAUS 52985298 57635763 901901 43744374 50095009 39713971
PORTO VELHOPORTO VELHO 43974397 48654865 901901 34733473 40234023 30703070
RIO DE JANEIRORIO DE JANEIRO 32503250 28052805 43744374 34733473 16491649 429429
SALVADORSALVADOR 21002100 13891389 50095009 40234023 16491649 19621962
SÃO PAULOSÃO PAULO 29332933 31273127 39713971 30703070 429429 19621962
BELÉ
M
FOR
TA
LEZ
A
MA
NA
US
PO
RTO
V
ELH
O
RIO
DE
JAN
EIR
O
SA
LVA
DO
R
SÃ
O P
AU
LO
Fonte: DENIT
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EEVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE
1.1. Construir um algoritmo que leia a tabela Construir um algoritmo que leia a tabela anterior e informe ao usuário a distância entre anterior e informe ao usuário a distância entre duas cidades fornecidas por ele, até que ele duas cidades fornecidas por ele, até que ele forneça duas cidades iguais (origem e destino).forneça duas cidades iguais (origem e destino).
40
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EEVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE
2.2. Construir um algoritmo que permita ao usuário Construir um algoritmo que permita ao usuário informar várias cidades, até inserir “informar várias cidades, até inserir “xxxx”, e que ”, e que imprima a distância total para cumprir todo o imprima a distância total para cumprir todo o percurso especificado entre as cidades percurso especificado entre as cidades fornecidas.fornecidas.
41
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EEVetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE
Uma string é um vetor de caracteres, cujo final é Uma string é um vetor de caracteres, cujo final é indicado com um indicado com um caractere nulocaractere nulo (valor inteiro (valor inteiro zero).zero).
O terminador nulo também pode ser escrito O terminador nulo também pode ser escrito como como '\0‘.'\0‘.
Ao definir uma string, deve-se levar em Ao definir uma string, deve-se levar em consideração, além do número de caracteres da consideração, além do número de caracteres da string, o caractere nulo que termina a string.string, o caractere nulo que termina a string.
StringsStringsStringsStrings
Função Função gets()gets()
Lê string até o Lê string até o primeiro enterprimeiro enter
Função Função scanf()scanf()
Lê string até o Lê string até o primeiro espaço em brancoprimeiro espaço em branco
17
StringsStrings:: :: LeituraLeitura a partir do teclado a partir do tecladoStringsStrings:: :: LeituraLeitura a partir do teclado a partir do teclado
char curso[15] = "Engenharia"; // Valido somente na// declaracao!
char curso[15] = "Engenharia"; // Valido somente na// declaracao!
char curso[15];
strcpy(curso,"Engenharia"); // Requer biblioteca// string.h
char curso[15];
strcpy(curso,"Engenharia"); // Requer biblioteca// string.h
43
StringsStrings:: Atribuição de valores:: Atribuição de valoresStringsStrings:: Atribuição de valores:: Atribuição de valores
A Linguagem C possui algumas funções especiais A Linguagem C possui algumas funções especiais para análise e manipulação de caracteres.para análise e manipulação de caracteres.
Tais funções estão definidas na biblioteca Tais funções estão definidas na biblioteca ctype.hctype.h
A biblioteca A biblioteca ctype.hctype.h possibilita a possibilita a manipulação de manipulação de caracterescaracteres, não de strings inteiras., não de strings inteiras.
Manipulação de caracteresManipulação de caracteresManipulação de caracteresManipulação de caracteres
Função Função toupper
Converte seu argumento para uma letra Converte seu argumento para uma letra maiúsculamaiúscula::
Função Função tolower
Converte seu argumento para uma letra Converte seu argumento para uma letra minúsculaminúscula::
<var1> = toupper(var2);<var1> = toupper(var2);
<var1> = tolower(var2);<var1> = tolower(var2);
44
Manipulação de caracteresManipulação de caracteres:: Funções :: Funções tolowertolower e e touppertoupperManipulação de caracteresManipulação de caracteres:: Funções :: Funções tolowertolower e e touppertoupper
FunçãoFunção Testa se seu argumento é umTesta se seu argumento é um
isalnumisalnum caractere caractere alfanuméricoalfanumérico
isalphaisalpha caractere caractere alfabéticoalfabético
isasciiisascii caractere caractere ASCIIASCII (0 a 127) (0 a 127)
iscntrliscntrl caractere de controle (caractere de controle (0-0x1F0-0x1F ou ou 0x7F0x7F))
isgraphisgraph caractere imprimível na tela (caractere imprimível na tela (não levanão leva espaço em consideração)espaço em consideração)
isprintisprint caractere imprimível na tela (caractere imprimível na tela (levaleva espaço espaço em consideração)em consideração)
45
Manipulação de caracteresManipulação de caracteres:: Outras funções:: Outras funçõesManipulação de caracteresManipulação de caracteres:: Outras funções:: Outras funções
FunçãoFunção Testa se seu argumento é umTesta se seu argumento é um
islowerislower caractere caractere minúsculominúsculo
isupperisupper caractere maiúsculocaractere maiúsculo
ispunctispunct caractere de caractere de pontuaçãopontuação
isspaceisspace caractere de caractere de espaçoespaço, , tabulaçãotabulação
isdigitisdigit caractere numérico (caractere numérico (0-90-9))
isxdigitisxdigit dígito hexadecimal (dígito hexadecimal (0-90-9, , a-fa-f ou ou A-FA-F))
46
Manipulação de caracteresManipulação de caracteres:: Outras funções:: Outras funçõesManipulação de caracteresManipulação de caracteres:: Outras funções:: Outras funções
A Linguagem C possui funções especiais para A Linguagem C possui funções especiais para análise e manipulação de análise e manipulação de stringsstrings..
Tais funções estão definidas na biblioteca Tais funções estão definidas na biblioteca string.hstring.h..
A biblioteca A biblioteca string.hstring.h possibilita a manipulação possibilita a manipulação de strings completas (sem considerar caractere a de strings completas (sem considerar caractere a caractere).caractere).
Manipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.hManipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.h
strcat(str1, str2)strcat(str1, str2)
Concatena str2 ao final de str1Concatena str2 ao final de str1
int tam = strlen(str1);int tam = strlen(str1);
Retorna o tamanho de str1Retorna o tamanho de str1
Manipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.hManipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.h
int valor = strcmp(str1, str2);int valor = strcmp(str1, str2); valor = 0, se str1 e str2 são iguais;valor = 0, se str1 e str2 são iguais;
valor < 0, se str1 < str2;valor < 0, se str1 < str2;
valor > 0, se str1 > str2;valor > 0, se str1 > str2;
int valor = strcmpi(str1, str2);int valor = strcmpi(str1, str2);
Mesmo que Mesmo que strcmpstrcmp, mas não é sensível ao caso, mas não é sensível ao caso
47
Manipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.hManipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.h
strupr(str)strupr(str)Converte uma string para maiúsculas.Converte uma string para maiúsculas.
strlwr(str)strlwr(str)Converte uma string para minúsculas.Converte uma string para minúsculas.
strrev(str)strrev(str)Inverte o conteúdo de uma string.Inverte o conteúdo de uma string.
strset(str,char)strset(str,char)Substitui todos os caracteres de uma string pelo caractere Substitui todos os caracteres de uma string pelo caractere
especificado.especificado.
48
Manipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.hManipulação de stringsManipulação de strings:: Biblioteca :: Biblioteca string.hstring.h
A seguintes funções fazem parte da biblioteca A seguintes funções fazem parte da biblioteca stdlib.hstdlib.h
FunçãoFunção ConverteConverte
atoi(atoi(<str><str>)) String em intString em int
atof(atof(<str><str>)) String em floatString em float
itoa(itoa(<int><int>)) Int em stringInt em string
49
Manipulação de stringsManipulação de strings:: Conversão para números:: Conversão para númerosManipulação de stringsManipulação de strings:: Conversão para números:: Conversão para números
QuestõesQuestõesQuestõesQuestões
top related