Algoritmos e Programação Linguagem C - Início — UNIVASF...

31
Algoritmos e Programação Eliane Pozzebon Linguagem C Linguagem C Vetores, Matrizes, Strings Vetores, Matrizes, Strings

Transcript of Algoritmos e Programação Linguagem C - Início — UNIVASF...

Page 1: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

Algoritmos e Programação

Eliane Pozzebon

Linguagem CLinguagem CVetores, Matrizes, StringsVetores, Matrizes, Strings

Page 2: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��São um conjunto de variSão um conjunto de variááveis identificadas por veis identificadas por um um mesmo nomemesmo nome..

�� HomogêneasHomogêneas (vetores e matrizes)(vetores e matrizes)

�� HeterogêneasHeterogêneas (estruturas)(estruturas)

Variáveis CompostasVariáveis Compostas

Page 3: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

4,46,37,0109,88,95,19,42,36,1

9876543210

Notas:

Posição:

Variáveis Compostas HomogêneasVariáveis Compostas Homogêneas

�� Correspondem a posiCorrespondem a posiçções da memões da memóória:ria:

�� identificadas por um identificadas por um úúnico nomenico nome

�� individualizadas por individualizadas por ííndicesndices

�� cujo contecujo conteúúdo do éé de um de um mesmo tipomesmo tipo

Page 4: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

PosiPosiçção do livroão do livro

mm--11

⋮⋮

22

11

00

nn--11……221100

210210892892564564153153845845

⋮⋮⋱⋱⋮⋮⋮⋮⋮⋮

526526……345345565565989989

196196……369369258258145145

156156……265265598598788788

Prat

eleira

Prat

eleira

Variáveis Compostas Homogêneas:: ExemploVariáveis Compostas Homogêneas:: Exemplo

Page 5: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��Utilizados para armazenar conjuntos de dados Utilizados para armazenar conjuntos de dados cujos elementos podem ser enderecujos elementos podem ser endereççados por ados por um um úúnico nico ííndicendice..

��TambTambéém são conhecidos como m são conhecidos como vetoresvetores..

Arranjos unidimensionaisArranjos unidimensionais

Page 6: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��Utilizados para armazenar conjuntos de dados Utilizados para armazenar conjuntos de dados cujos elementos necessitam ser enderecujos elementos necessitam ser endereççados ados por por mais de um mais de um ííndicendice..

��TambTambéém são conhecidos comom são conhecidos como arraysarrays ououmatrizesmatrizes..

Arranjos multidimensionaisArranjos multidimensionais

Page 7: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

mm--11

⋮⋮

22

11

00

nn--11……221100

210210892892564564153153845845

⋮⋮⋱⋱⋮⋮⋮⋮⋮⋮

526526……345345565565989989

196196……369369258258145145

156156……265265598598788788

�� Arranjos de Arranjos de 22 dimensõesdimensões

Arranjos multidimensionais:: ExemplosArranjos multidimensionais:: Exemplos

Page 8: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

33

00

22

11

00

33221100

33

11

22

11

00

33221100

33

22

22

11

00

33221100

33

33

22

11

00

33221100

�� Arranjo de Arranjo de 33 dimensõesdimensões

Arranjos multidimensionais:: ExemplosArranjos multidimensionais:: Exemplos

Page 9: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

33

(0,0)(0,0)

22

11

00

33221100

33

(0,1)(0,1)

22

11

00

33221100

33

(0,2)(0,2)

22

11

00

33221100

33

(0,3)(0,3)

22

11

00

33221100

33

(1,0)(1,0)

22

11

00

33221100

33

(1,1)(1,1)

22

11

00

33221100

33

(1,2)(1,2)

22

11

00

33221100

33

(1,3)(1,3)

22

11

00

33221100

�� Arranjo de Arranjo de 44 dimensõesdimensões

Arranjos multidimensionais:: ExemplosArranjos multidimensionais:: Exemplos

Page 10: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� 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 C

Page 11: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

int VetInt[n];int VetInt[n];

...

ÍÍndices:ndices: 00 11 22 33 44 55 ...... nn--11

VetInt

ÍÍndice do ndice do primeiroprimeiro elemento:elemento: zerozeroÍÍndice dondice do úúltimoltimo elemento:elemento:n n –– 11QuantidadeQuantidade de elementos:de elementos: nn

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

Page 12: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

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

Vetores 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 cdo cóódigo.digo.

int X1;

int Vetor[6];

int X2

int X1;

int Vetor[6];

int X2

Page 13: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

��O tamanho de um vetor ou matriz O tamanho de um vetor ou matriz éé prpréé--definidodefinido, ou seja, ap, ou seja, apóós a compilas a compilaçção, não pode ão, não pode ser mudado.ser mudado.

��Portanto, vetores e matrizes são chamadas Portanto, vetores e matrizes são chamadas estruturas de dados estestruturas de dados estááticasticas, pois mant, pois mantéém o m o mesmo tamanho mesmo tamanho ao longo de toda a execuao longo de toda a execuçção ão do programa.do programa.

Page 14: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��Atribuir valores na declaraAtribuir valores na declaraçção do vetor:ão do vetor:

��Atribuir valores na declaraAtribuir valores na declaraçção da matriz:ã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 C:: ExemplosVetores e Matrizes na Linguagem C:: Exemplos

Page 15: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��Colocar os nColocar os núúmeros de 1 a 5 num vetor:meros de 1 a 5 num vetor:

��Colocar os nColocar os núúmeros de 5 a 1 num vetor: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 C:: ExemplosVetores e Matrizes na Linguagem C:: Exemplos

Page 16: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��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 C:: ExemplosVetores e Matrizes na Linguagem C:: Exemplos

Page 17: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��Copiar dados de um vetor para outro:Copiar dados de um vetor para outro:

��Boa prBoa práática de programatica de programaçção:ão:�� Definir o tamanho de vetores com Definir o tamanho de vetores com constantesconstantes

flexibiliza a manutenflexibiliza a manutençção do cão do cóódigo.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 C:: ExemplosVetores e Matrizes na Linguagem C:: Exemplos

Page 18: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��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 C:: ExemplosVetores e Matrizes na Linguagem C:: Exemplos

Page 19: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� Uma string Uma string éé um vetor de caracteres, cujo final um vetor de caracteres, cujo final ééindicado com um indicado com um caractere nulocaractere nulo (valor inteiro zero).(valor inteiro zero).

�� O terminador nulo tambO terminador nulo tambéém pode ser escrito como m pode ser escrito como ''\\00‘‘..

�� Ao definir uma string, deveAo definir uma string, deve--se levar em considerase levar em consideraçção, ão, alaléém do nm do núúmero de caracteres da string, o caractere mero de caracteres da string, o caractere nulo que termina a string.nulo que termina a string.

StringsStrings

Page 20: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

��FunFunçção ão getsgets ()()

�� Lê string atLê string atéé o o primeiro primeiro enterenter

��FunFunçção ão scanfscanf ()()

�� Lê string atLê string atéé o o primeiro espaprimeiro espaçço em brancoo em branco

Strings:: Leitura a partir do tecladoStrings:: Leitura a partir do teclado

Page 21: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

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

Strings:: Atribuição de valoresStrings:: Atribuição de valores

Page 22: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� A Linguagem C possui algumas funA Linguagem C possui algumas funçções especiais para ões especiais para ananáálise e manipulalise e manipulaçção de caracteres.ão de caracteres.

�� Tais funTais funçções estão definidas na biblioteca ões estão definidas na biblioteca ctypectype .h.h

�� A biblioteca A biblioteca ctypectype .h.h possibilita a possibilita a manipulamanipulaçção de ão de caracterescaracteres, não de strings inteiras., não de strings inteiras.

Manipulação de caracteresManipulação de caracteres

Page 23: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� FunFunçção ão toupper

�� Converte seu argumento para uma letra Converte seu argumento para uma letra maimaiúúsculascula::

�� FunFunçção ão tolower

�� Converte seu argumento para uma letra Converte seu argumento para uma letra minminúúsculascula::

<var1> = toupper(var2);<var1> = toupper (var2);

<var1> = tolower(var2);<var1> = tolower (var2);

Manipulação de caracteres:: Funções tolower e toupperManipulação de caracteres:: Funções tolower e toupper

Page 24: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

caractere imprimcaractere imprimíível na tela (vel na tela (não levanão leva espaespaçço em o em consideraconsideraçção)ão)isgraphisgraph

caractere imprimcaractere imprimíível na tela (vel na tela (levaleva espaespaçço em o em consideraconsideraçção)ão)isprintisprint

caractere de controle (caractere de controle (00--0x1F0x1F ou ou 0x7F0x7F))iscntrliscntrl

caractere caractere ASCIIASCII (0 a 127)(0 a 127)isasciiisascii

caractere caractere alfabalfabééticoticoisalphaisalpha

caractere caractere alfanumalfanumééricoricoisalnumisalnum

Testa se seu argumento Testa se seu argumento éé umumFunFunççãoão

Manipulação de caracteres:: Outras funçõesManipulação de caracteres:: Outras funções

Page 25: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

caractere numcaractere numéérico (rico (00--99))isdigitisdigit

caractere maicaractere maiúúsculosculoisupperisupper

caractere caractere minminúúsculosculoislowerislower

ddíígito hexadecimal (gito hexadecimal (00--99, , aa--ff ou ou AA--FF))isxdigitisxdigit

caractere de caractere de espaespaççoo, , tabulatabulaççãoãoisspaceisspace

caractere de caractere de pontuapontuaççãoãoispunctispunct

Testa se seu argumento Testa se seu argumento éé umumFunFunççãoão

Manipulação de caracteres:: Outras funçõesManipulação de caracteres:: Outras funções

Page 26: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� A Linguagem C possui funA Linguagem C possui funçções especiais para anões especiais para anáálise e lise e manipulamanipulaçção de ão de stringsstrings..

�� Tais funTais funçções estão definidas na biblioteca ões estão definidas na biblioteca string.hstring.h ..

�� A biblioteca A biblioteca string.hstring.h possibilita a manipulapossibilita a manipulaçção de ão de strings completas (sem considerar caractere a strings completas (sem considerar caractere a caractere).caractere).

Manipulação de strings:: Biblioteca string.hManipulação de strings:: Biblioteca string.h

Page 27: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� strcatstrcat (str1, str2)(str1, str2)

Concatena str2 ao final de str1Concatena str2 ao final de str1

�� int int tamtam = = strlenstrlen (str1);(str1);

Retorna o tamanho de str1Retorna o tamanho de str1

Manipulação de strings:: Biblioteca string.hManipulação de strings:: Biblioteca string.h

Page 28: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� int valor = int valor = strcmpstrcmp (str1, str2);(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 = int valor = strcmpistrcmpi (str1, str2);(str1, str2);

Mesmo que Mesmo que strcmpstrcmp , mas não , mas não éé senssensíível ao casovel ao caso

Manipulação de strings:: Biblioteca string.hManipulação de strings:: Biblioteca string.h

Page 29: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� struprstrupr (( strstr ))

Converte uma string para maiConverte uma string para maiúúsculas.sculas.

�� strlwrstrlwr (( strstr ))

Converte uma string para minConverte uma string para minúúsculas.sculas.

�� strrevstrrev (( strstr ))

Inverte o conteInverte o conteúúdo de uma string.do de uma string.

�� strsetstrset (( strstr ,, charchar ))

Substitui todos os caracteres de uma string pelo caractere Substitui todos os caracteres de uma string pelo caractere especificado.especificado.

Manipulação de strings:: Biblioteca string.hManipulação de strings:: Biblioteca string.h

Page 30: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

�� A seguintes funA seguintes funçções fazem parte da biblioteca ões fazem parte da biblioteca stdlibstdlib .h.h

Int em stringInt em stringitoaitoa (( <int><int> ))

String em String em floatfloatatofatof (( <<strstr >>))

String em intString em intatoiatoi (( <<strstr >>))

ConverteConverteFunFunççãoão

Manipulação de strings:: Conversão para númerosManipulação de strings:: Conversão para números

Page 31: Algoritmos e Programação Linguagem C - Início — UNIVASF …univasf.edu.br/.../arquivos_algprog/P_aula4C.pdf · 2010-05-20 · caractere imprim ível na tela ( não leva espa

Referências: Referências:

Material do Material do Prof. Leandro Galvão da Universidade Federal de ManausProf. Leandro Galvão da Universidade Federal de Manaus

Livros: Livros:

•• Fundamentos da programaFundamentos da programaçção de computadoresão de computadores

•• C a linguagem de programaC a linguagem de programaçção padrão ANSIão padrão ANSI

•• C completo e totalC completo e total