A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA

Apresentações semelhantes


Apresentação em tema: "FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA"— Transcrição da apresentação:

1 FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
LINGUAGEM C – VETORES

2 Revisão Sobre Caracteres Cadeia de Caracteres Vetores Bidimencionais
SUMÁRIO Revisão Sobre Caracteres Cadeia de Caracteres Vetores Bidimencionais Declaração de Vetores Bidimencionais Vetores para Funções

3 Cadeia de Caracteres

4 REVISÃO SOBRE CARACTERES
De forma genérica, tudo o que um computador faz é executar cálculos com números. Ele é incapaz de entender o texto. Portanto, devemos fazer uma escolha: que número utilizaremos para representar a letra "A"? E para os sinais de pontuação, que números usar?

5 REVISÃO SOBRE CARACTERES
Existem diversas convenções (códigos) para fazer a correspondência entre códigos e caracteres. Como exemplo destas convenções podemos citar: ASCII UNICODE UTF-8 LATIN 1 (ISO ) WIN-1252

6 REVISÃO SOBRE CARACTERES
Um dos mais conhecidos é o código ASCII (American Standard Code for Information Interchange). O ASCII é um código binário (cadeias de bits: 0s e 1s) que codifica um conjunto de 128 sinais, sendo que cada código binário possui 8 bits (equivalente a 1 byte), sendo 7 bits para o propósito de codificação e 1 bit de paridade (detecção de erro).

7 REVISÃO SOBRE CARACTERES
Dos 128 sinais codificados em ASCII: 95 são sinais gráficos (letras do alfabeto latino, sinais de pontuação e sinais matemáticos); E 33 sinais de controle.

8 REVISÃO SOBRE CARACTERES
A seguir são ilustrados 95 sinais gráficos segundo a tabela ASCII:

9 REVISÃO SOBRE CARACTERES
A linguagem C normalmente trata a correspondência entre os caracteres e seus códigos numéricos através da tabela ASCII. E a diferença entre caracteres e inteiros é feita apenas através da maneira pela qual são tratados.

10 REVISÃO SOBRE CARACTERES
Por exemplo, para um mesmo caractere podemos imprimir o mesmo valor de duas formas diferentes usando formatos diferentes. 1. char c = 65; 2. printf("%d %c\n",c,c); // Será impresso na tela o código e // sinal gráfico correspondente, // neste caso a letra ‘A’.

11 REVISÃO SOBRE CARACTERES
A linguagem C permite a escrita de constantes caracteres, a qual é escrita envolvendo o caractere com aspas simples. Assim, a expressão ‘A’ representa uma constante caractere e resulta no valor numérico associado ao caractere ‘A’, no caso 65.

12 REVISÃO SOBRE CARACTERES
O uso de constantes caracteres nos livra de conhecermos os códigos associados a cada caractere. A seguir, o exemplo anterior utilizando este recurso: 1. char c = ‘A’; 2. printf("%d %c\n",c,c); // Será impresso na tela o código e // sinal gráfico correspondente, // neste caso a letra ‘A’.

13 REVISÃO SOBRE CARACTERES
Independente da tabela de códigos numéricos utilizada, garante-se que os dígitos são codificados em seqüência. Deste modo, se o dígito zero tem código 48, o dígito um tem obrigatoriamente código 49, e assim por diante. As letras minúsculas e as letras maiúsculas também formam dois grupos de códigos seqüenciais.

14 REVISÃO SOBRE CARACTERES
Valendo-se desta sequência de caracteres, considere o exemplo a seguir: Escreva uma função para testar se um caractere c é um dígito númerico(um dos caracteres entre '0' e '9').

15 REVISÃO SOBRE CARACTERES
Solução: int digito(char c){ if ((c>='0')&&(c<='9')) return 1; else return 0; }

16 Cadeia de Caracteres

17 Cadeia de Caracteres Em C, cadeias de caracteres (strings), são representadas por vetores do tipo char terminadas pelo caractere nulo ('\0'). O código de formato %s da função printf permite imprimir uma cadeia de caracteres. A função printf então recebe um vetor de char e imprime elemento por elemento, até encontrar o caractere nulo.

18 O código abaixo ilustra a representação de uma cadeia de caracteres:
1. char cidade[4]; 2. cidade[0] = 'R'; 3. cidade[1] = 'i'; 4. cidade[2] = 'o'; 5. cidade[3] = '\0'; 6. printf("%s \n", cidade);

19 2. cidade[0] = 'R'; 3. cidade[1] = 'i'; 4. cidade[2] = 'o';
Cadeia de Caracteres . 1. char cidade[4]; 2. cidade[0] = 'R'; 3. cidade[1] = 'i'; 4. cidade[2] = 'o'; 5. cidade[3] = '\0'; 6. printf("%s \n", cidade); Se o caractere '\0' não fosse colocado, a função printf executaria de forma errada, pois não conseguiria identificar o final da cadeia

20 char cidade[ ] = {'R', 'i', 'o', '\0'}; printf("%s \n", cidade); }
Cadeia de Caracteres Como as cadeias de caracteres são vetores, podemos reescrever o código acima inicializando os valores dos elementos do vetor na declaração: int main( ){ char cidade[ ] = {'R', 'i', 'o', '\0'}; printf("%s \n", cidade); }

21 Cadeia de Caracteres A inicialização de cadeias de caracteres é tão comum em códigos C que a linguagem permite que elas sejam inicializadas escrevendo-se os caracteres entre aspas duplas ( “ “ ). 1. char cidade[ ] = "Rio"; 2. printf("%s \n", cidade); /* Neste caso, o caractere nulo é representado implicitamente.*/

22 REVISÃO SOBRE CARACTERES
Outro exemplos: char s1[ ] = ""; /* A variável s1 armazena uma cadeia de caracteres com um único elemento, o caractere '\0‘ */ char s2[ ] = "Rio de Janeiro"; /* A variável s2 representa um vetor com 15 elementos. */ char s3[81]; /* A variável s3 representa uma cadeia de caracteres capaz de representar cadeias com até 80 caracteres, */ char s4[81] = "Rio"; /* A variável s4 também foi dimensionada para armazenar cadeias até 80 caracteres, mas seus primeiros quatro elementos foram atribuídos na declaração. */

23 REVISÃO SOBRE CARACTERES
O uso do especificador %s se limita a função printf, pois quando utilizado na comando scanf, em alguns compiladores tende a pular os eventuais caracteres brancos e capturar a seqüência de caracteres não brancos ou e outros compiladores, tende a cessar a leitura ao encontrar um caractere branco.

24 REVISÃO SOBRE CARACTERES
Por exemplo, em: char cidade[81]; ... scanf("%s", cidade); /* Se o usuário digitar Rio de Janeiro, apenas a palavra Rio será capturada, pois o %s lê somente uma seqüência de caracteres não brancos. */

25 REVISÃO SOBRE CARACTERES
Para capturarmos estes nomes, podemos usar o especificador de formato %[...], no qual listamos entre os colchetes todos os caracteres que aceitaremos na leitura. Assim, ao utilizar este código de formato, a leitura dos dados do teclado cessa quando for informado um caractere diferente do listado entre colchetes.

26 REVISÃO SOBRE CARACTERES
Se o primeiro caractere entre colchetes for o acento circunflexo (^), teremos o efeito inverso (negação). Assim,com o formato "%[^a]" a leitura prossegue enquanto a vogal ‘a’ não for encontrada.

27 REVISÃO SOBRE CARACTERES
Exemplos: char str1[81] , str2[81]; scanf( “%[ ],” , str1); /*neste comando scanf, foi especificado que só será aceito texto contendo números.*/ scanf( “%[^ ],” , str2); /*neste comando scanf, foi especificado que só será aceito texto sem dígitos númericos.*/

28 REVISÃO SOBRE CARACTERES
Exemplos: char str3[81], str4[9]; scanf( “%[^\n],” , str3); /*neste comando scanf, foi especificado que o comando irá ler o texto fornecido até encontrar uma quebra de linha.*/ scanf( “%8[^\n],” , str4); /*neste comando scanf, foi especificado que o comando irá ler o apenas os primeiros 8 caracteres fornecidos ou irá encerrar a leitura do texto do fornecido quando encontrar uma quebra de linha.*/

29 REVISÃO SOBRE CARACTERES
Exemplos: char str4[9]; scanf( “%8[^\n],” , str4); /*Devemos notar que não usamos o caractere & na passagem da cadeia para a função, pois a cadeia é um vetor (a variável str4 é uma constante que aponta para o endereço do primeiro elemento do vetor e a função atribui os valores dos elementos a partir desse endereço).*/

30 Vetores Bidimencionais

31 Vetores Bidimencionais
Um vetor bidemensional é uma estrutura bidimensional capaz de armazenar dados de um mesmo tipo. Vetores bidimensionais são conhecidos também por Matrizes e podemos considerar o conceito de Matriz como uma extensão do conceito de vetores, onde vetores corresponderia a uma estrutura unidimensional.

32 Vetores Bidimencionais
A dimensão de um vetor bidemensional (matriz) é definida através de 2 números, o número de linhas e o de colunas. Na linguagem C, o primeiro índice sempre corresponde à linha, e o segundo índice, à coluna a ser acessada.

33 DECLARAÇÃO DE VETORES BIDIMENCIONAIS

34 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Um vetor bidimensional deve ser declarada da seguinte forma: tipo_do_vetor nome_do_vetor [num_linhas][num_colunas];

35 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Por exemplo, para declararmos um vetor bidemensional de valores reais com 4 linhas e 3 colunas, fazemos: float mat[4][3]; Outro exemplos: int matInt [6][2]; /* matriz com 6 linhas e 2 colunas de inteiros */ float matReal [5][7]; /* matriz com 5 linhas e 7 colunas de floats */ char matChar [3][4]; /* matriz com 3 linhas e 4 colunas de chars */

36 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Pilha de execução para a matriz float mat[4][3]:

37 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
As matrizes também podem ser inicializadas na declaração: float mat[4][3] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; Ou podemos inicializar seqüencialmente: float mat[4][3] = {1,2,3,4,5,6,7,8,9,10,11,12}; O número de elementos por linha pode ser omitido numa inicialização, mas o número de colunas deve, obrigatoriamente, ser fornecido: float mat[ ][3] = {1,2,3,4,5,6,7,8,9,10,11,12};

38 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Após a declaração de uma matriz, a variável que representa a matriz, mat no exemplo anterior, representa um ponteiro para o primeiro “vetor- linha”, composto por 3 elementos. Com isto, mat[1] aponta para o segundo “vetor-linha”, e assim por diante.

39 VETORES PARA FUNÇÕES

40 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Em C, a forma mais prática de se passar um vetor para uma função é através de um parâmetro do tipo ponteiro. Salientamos que a expressão “passar um vetor para uma função” deve ser interpretada como “passar o endereço inicial do vetor”.

41 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Exemplo: Escreva uma função que retorne a média aritmética dos valores inseridos em um vetor. float media (int n, float *v){ int i; float s = 0.0; for (i = 0; i < n; i++) s += v[i]; return s/n; }

42 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Exemplo: Escreva uma função que receba uma cadeia de caracteres e imprima caractere por caractere. void imprime (char *s){ int i; for (i=0; s[i] != '\0'; i++){ printf("%c",s[i]); printf("\n"); }

43 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Quanto a Matrizes (Vetores Bidimensionais), a forma usual de se declarar o parâmetro de uma função como matriz, é omitindo o número de linhas: void f (..., float mat[ ][3], ...); Outra forma, é declarando o parâmetro como ponteiro e definindo o número de colunas: void f (..., float (*mat)[3], ...);

44 DECLARAÇÃO DE VETORES BIDIMENCIONAIS
Exemplo: Escreva uma função que receba um matriz e imprima todos os seus elementos. void exibir(int matriz[][4]) { int linha, coluna; for(linha=0 ; linha < 4 ; linha++) { for(coluna=0 ; coluna < 4 ; coluna++) { printf("%3d ", matriz[linha][coluna]); } printf("\n");


Carregar ppt "FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA"

Apresentações semelhantes


Anúncios Google