Transcript aula

Vetores e matrizes
Vetores nada mais são que matrizes
unidimensionais. Estruturas de dados
muito utilizadas, não permitem que seus
elementos sejam de tipos diferentes.
Para se declarar um vetor podemos
utilizar a seguinte forma geral:
tipo_da_variável nome_da_variável
[tamanho];
Vetores
Quando o C vê uma declaração como
esta ele reserva um espaço na memória
suficientemente grande para armazenar o
número de células especificadas em
tamanho. Por exemplo, se declararmos:
int exemplo [20];
Vetores
O compilador irá reservar 2 x 20=40 bytes.
Estes bytes são reservados de maneira
contígua. Para acessá-los vamos
escrever:
exemplo[0]
exemplo[1]
.
:
exemplo [19]
Exemplos
int main () {
int count;
char expressao [5] = { 'A', 'L', 'U', 'N', 'O' };
for (count = 0 ; count < 5; count++) {
printf("%c ", expressao[count]);
}
getch();
return 0;
}
Exemplo
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char mes[12][10];
int x;
for (x = 1; x <= 2 ; x++)
scanf("%s",&mes[x]);
for (x = 1; x <= 2 ; x++)
printf("o mes %d é %s.\n",x,mes[x]);
getch();
}
Exemplo
#include <stdio.h>
#include <stdlib.h>
int main () {
int count;
char frase[8] = "TESTE C";
char expressao [5] = { 'A', 'L', 'U', 'N', 'O' };
for (count = 0 ; count < 5; count++) {
printf("%c ", expressao[count]);
}
printf("\n");
for( count =0; count < 8; count ++){
printf("%c ", frase[count]);
}
getch();
return 0;
}
Matrizes : inicialização
int matriz_id [3][3] = { 1, 0, 0,
0, 1, 0,
0, 0, 1 };
Strings
Pode-se declarar String em vetores
facilmente.
frase[ ] = “TESTE”;
Caso se determine o número de posições
do vetor deve-se considerar o terminado
nulo.
frase[8] = “TESTE C”
Na memória estará gravada a sequência:
´T, ´E, ´S, ´T, ´E, ´ , ´C, 0x00;
Diretivas de pré-compilação
O pré-processador C é um programa que
examina o programa fonte escrito em C e
executa certas modificações nele,
baseado nas diretivas de pré-compilação.
Essas diretivas são comandos que não
geram código, sendo dirigidos ao préprocessador, que é chamado pelo
compilador antes do processo de
compilação propriamente dito.
A diretiva include:
• A diretiva include:
#include "nome_do_arquivo"
Observe que não há ponto e vírgula após
a diretiva de compilação.
A diretiva define
A diretiva #define tem a seguinte forma
geral:
#define nome_da_macro
sequência_de_caracteres
• Exemplo:
# define TAMANHO 10
• Em C não há tipo cadeia e portanto
conjuntos de caracteres teriam de ser
tratados como conjuntos de números
inteiros, por exemplo. Para facilitar a
programação foram criadas algumas
funções para manipular cadeias. As
funções mais comuns são as seguintes:
Funções de cadeia Descrição
• strcat(dest, orig) Concatena cadeia origem ao final de
destino strncat (dest, orig, n) Concatena cadeia orig ao
final de dest, usando no máximo n caracteres de orig.
• strcmp (str1, str2) Compara os dois cadeias. Retorna
zero se iguais, menor que 0 se str1 < str2, maior que 0
se str1 > str2 strcmpi (str1, str2) Compara os dois
cadeias sem levar em conta maiúsculas e minúsculas
• strlen(str) Calcula o comprimento da cadeia sem o
caracater nulo.
• strlwr(str) Converte cadeia para minúsculas
• strupr(str) Converte cadeia para maiúsculas
• strcpy(dest, orig) Copia cadeia origem para destino
Exemplo
#include <cstdlib>
#include <iostream>
#include <stdio.h>
int main( void ) {
char c, nome[40]; char sobrenome[40]; int i;
printf("Entre com um nome ");
scanf("%s", nome);
getchar();
puts(nome);
printf("Entre com um sobrenome ");
scanf("%s", sobrenome);
getchar();
puts(nome);
strcat(nome, " ");
strcat(nome, sobrenome);
puts(nome);
printf("Qual caracter? ");
c = getchar();
for (i=0; i<strlen(nome); i++)
if (c == nome[i])
printf("%d\n", i);
system("PAUSE");
}
Exemplo
Um exemplo que mostra um programa que lê uma matriz de três linhas e
cinco colunas e imprime os valores
#define DIML 3
#define DIMC 5
#include<stdio.h>
int main( void ) {
int i, j; int matriz[DIML][DIMC];
for (i=0; i<DIML; i++)
for (j=0; j<DIMC; j++)
scanf("%d", &matriz[i][j]);
for (i=0; i<DIML; i++) {
for (j=0; j<DIMC; j++)
printf("%4d", matriz[i][j]); printf("\n");
}}