elainececiliagatto
19,567 views
28 slides
Nov 28, 2013
Slide 1 of 28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
About This Presentation
Linguagem C - Vetores, Matrizes e Funções
Size: 135.38 KB
Language: pt
Added: Nov 28, 2013
Slides: 28 pages
Slide Content
VETORES MATRIZES FUNÇÕES Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado CoraçãO – USC Bauru/SP
Vetores Variaveis compostas homogeneas unidimensionais Os índices começam em zero A quantidade de elementos que o vetor pode armazenar deve ser um valor inteiro fixo DECLARAÇÃO Exemplo1: int vet[10]; Começa na posição zero e termina na posição 9 (tamanho do vetor – 1); Exemplo 2: char x[5]; Começa na posição zero e termina na posição 4 2
Vetores Exemplo 3: #define tam 5; char z[tam]; Começa na posição zero e termina na posição 4 ATRIBUIÇÃO Exemplo 1: vet[0] = 1; //atribui o valor 1 à primeira posição do vetor X[3] = ‘b’; //atribui a letra b à quarta posição do vetor 3
Vetores PREENCHENDO f or(i=0; i<10; i++) s canf( “ %d ” , &vetor[i] ); MOSTRANDO OS VALORES for(i=0; i<10; i++) printf( “ % d ” , vetor[i ] ); 4
Matriz Variaveis homogeneas bidimensionais ou multidimensionais Pode ter até 12 dimensões de acordo com o padrão ANSI Para cada dimensão, um índice deve ser usado DECLARAÇÃO float x[2][6]; //uma matriz com duas linhas e seis colunas char mat[4][3]; //uma matriz com quatro linhas e tres colunas float y[2][4][3]; //uma matriz com duas linhas, quatro colunas e três profundidades 5
MATRIZES ATRIBUIÇÃO X[1][4] = 5; //atribui o valor 5 ao espaço identificado pelo indice 1 (linha 2) e índice 4 (coluna 5) Mat[3][2] = ‘d’; //atribui o valor d à quarta linha e à terceira coluna Y[0][3][1] = 12; //atribui o valor 12 à primeira linha, quarta coluna e segunda profundidade. 6
Matrizes PREENCHENDO for(i=0; i<7; i++){ //linha for(j=0; j<3; j++) //coluna s canf( “ %d ”, &mat[i][j] ); } Preenche primeiro todas as colunas da linha 0 Depois todas as colunas da linha 1 E assim por diante 7
Matrizes Exemplo for(i=0; i<3; i++){ printf( “ Elementos da linha %d ”, i); for(j=0; j<4; j++){ printf( “ %d ”, x[ i , j ] ); } } 9 MEMÓRIA TELA i j Elementos da linha 0 4 1 5 2 1 3 10 1 Elementos da linha 1
Matrizes Exemplo for(j=0; j<4; j++){ printf( “ Elementos da coluna %d ”, j); for(i=0; i<3; i++){ printf( “ %d ”, x[ i , j ] ); } } 10 MEMÓRIA TELA j i Elementos da coluna 0 4 1 5 2 1 1 Elementos da coluna 1 1 6
Sub rotinas Sub-rotinas ou subprogramas são blocos de instruções que realizam tarefas específicas Como o problema pode ser subdividido em pequenas tarefas, os programas tendem a ficar menores e mais organizados Programas são executados linha após linha, mas quando se usa subrotina, um desvio é realizado na execução do programa Uma subrotina pode ou não receber um parametro Uma subrotina pode ou não retornar um valor Uma subrotina pode ter variaveis locais, variaveis que são criadas apenas para uso interno da subrotina 11
Sub rotinas Modularização do programa por meio de funções Variaveis globais: são aquelas variaveis conhecidas por todo o programa e são declaradas fora das funções FUNÇÕES SEM PASSAGEM DE PARAMETROS E SEM RETORNO Não recebe nenhuma informação no momento de sua chamada Não repassa nenhum valor para quem a chamou 12
Sub rotinas #include <stdio.h> int a, b, s; //variáveis globais v oid soma(){ printf(“Digite dois números”); scanf(“%d %d”, &a, &b); s = a + b; printf(“ a soma é %d”, s); } int main(){ soma(); getchar(); return 0; } 13
Sub rotinas FUNÇÕES COM PASSAGEM DE PARAMETROS E SEM RETORNO Recebem valores no momento em que são chamadas Não devolvem nenhum valor para quem as chamou 14
Sub rotinas #include <stdio.h> void soma(int a, int b){ int s; //variável local da subrotina s = a + b; printf('a soma é %d', s); } int main(){ int a, b; //variável local do programa principal printf('Digite dois valores'); scanf(' %d %d ', &a, &b); soma(a, b); getchar(); return 0; } 15
Sub rotinas FUNÇÕES SEM PASSAGEM DE PARAMETROS E COM RETORNO Não recebem nenhum valor no momento em que são chamadas Devolvem um valor para quem as chamous 16
Sub rotinas #include <stdio.h> int soma(){ int a, b, s; //variável local da subrotina printf('Digite dois valores'); scanf(' %d %d ', &a, &b); s = a + b; return s; } int main(){ int s; //variável local do programa principal s = soma(); //chamada da sub rotina printf(' a soma é: %d', s); getchar(); return 0; } 17
Sub rotina FUNÇÕES COM PASSAGEM DE PARAMETROS E COM RETORNO Recebem valores no momento em que são chamadas Devolvem um valor para quem as chamou 18
Sub rotina #include <stdio.h> int soma(int a, int b){ return a+b; } int main(){ int a, b, s; //variável local do programa principal printf('Digite dois números'); scanf(' %d %d ', &a, &b); s = soma(a, b); //chamada da sub rotina printf(' a soma é: %d', s); getchar(); return 0; } 19
Sub rotina Se você quiser, pode escrever todas as funções antes do MAIN Se quiser escrevê-las após MAIN, deverá utilizar os protótipos de funções PASSAGEM DE PARAMETROS POR VALOR Significa que a função trabalhará com cópias dos valores passados no momento de sua chamada 20
Sub rotina #include <stdio.h> int soma_dobro(int a, int b); int main(){ int x, y, res; //variável local do programa principal printf('Digite dois números'); scanf(' %d %d ', &x, &y); res = soma_dobro(x, y); //chamada da sub rotina printf(' a soma do dobro dos números %d e %d = %d', x, y, res); getchar(); return 0; } int soma_dobro(int a, int b){ int soma; a = a * 2; b = b * 2; soma = a + b; return soma; } 21 Quando a função chega ao fim, as variaveis criadas são completamente destruídas e as alterações realizadas são perdidas. X continuara valendo 5 e y continuara valendo 3.
Sub rotina #include <stdio.h> int soma_dobro(int a, int b); int main(){ int x, y, res; //variável local do programa principal printf('Digite dois números'); scanf(' %d %d ', &x, &y); res = soma_dobro(x, y); //chamada da sub rotina printf(' a soma do dobro dos números %d e %d = %d', x, y, res); getchar(); return 0; } int soma_dobro(int a, int b){ int soma; a = a * 2; b = b * 2; soma = a + b; return soma; } 22 FUNÇÃO MAIN X 5 Y 3 RES 16 FUNÇÃO SOMA_DOBRO A 5 B 3 SOMA 16
Sub rotina PASSAGEM DE PARAMETROS POR REFERENCIA Significa que os parametros passados para a função correspondem a endereços de memória ocupados por variáveis Toda vez que for necessário acessar determinado valor, isso será feito por meio de referencia, apontamento ao seu endereço de memória 23
Sub rotina #include <stdio.h> int soma_dobro(int *a, int *b); int main(){ int x, y, res; //variável local do programa principal printf('Digite dois números'); scanf(' %d %*c %d %*c', &x, &y); res = soma_dobro(x, y); //chamada da sub rotina printf(' a soma do dobro dos números %d e %d = %d', x, y, res); getchar(); return 0; } int soma_dobro(int *a, int *b){ int soma; *a = 2 * (*a); *b = 2 * (*b); soma = *a + *b; return soma; } 24 Quando a função chega ao fim, as variaveis criadas são completamente destruídas, mas as alterações realizadas não se perdem. X valerá 10 e Y 6, isto porque as alterações fizeram referencia a endereços de memória
Sub rotina 25
Sub rotinas Matrizes e vetores só podem ser passadas para funções por referencia v oid soma_linhas(float m[][5], float v[]){ //um vetor com colchetes vazios ou uma matriz com colchetes da primeira dimensão vazios significa que são variáveis ponteiros que guardam os endereços iniciais das variáveis } int main(){ soma_linhas(mat, vet); //isto indica que esta sendo usado o endereço de memória ocupado pela posição 0 do vetor ou pela posição 0x0 da matriz } 26
Sub rotinas SUBROTINAS EM ARQUIVOS SEPARADOS – BIBLIOTECAS Uma biblioteca é gerada a partir de um arquivo .H Esse arquivo .H não contém o programa principal O programa principal irá utilizar as funções definidas nesse arquivo .H Chame seu arquivo .H usando a diretiva #INCLUDE “caminho\nome_da_biblioteca”, em que caminho, é o local onde está salva sua biblioteca 27
Sub rotinas MYBIBLIO.H #include <stdio.h> void sub_rotina1(){ printf(“mostrando uma mensagem”); } void sub_rotina2(){ } void sub_rotina3(){ } MYPROGRAM.C #include <stdio.h> #include “c:\teste\MYBIBLIO.H” i nt main(){ sub_rotina1(); sub_rotina2(); } 28