Linguagem C - Vetores, Matrizes e Funções
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Linguagem C - Vetores, Matrizes e Funções

on

  • 1,782 views

Linguagem C - Vetores, Matrizes e Funções

Linguagem C - Vetores, Matrizes e Funções

Statistics

Views

Total Views
1,782
Views on SlideShare
1,782
Embed Views
0

Actions

Likes
2
Downloads
73
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Linguagem C - Vetores, Matrizes e Funções Presentation Transcript

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. Vetores • PREENCHENDO • for(i=0; i<10; i++) • scanf( “ %d ” , &vetor*i+ ); • MOSTRANDO OS VALORES • for(i=0; i<10; i++) • printf( “ %d ” , vetor*i] ); 4
  • 5. 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
  • 6. 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
  • 7. Matrizes • PREENCHENDO for(i=0; i<7; i++){ //linha for(j=0; j<3; j++) //coluna scanf( “ %d ”, &mat*i+*j+ ); } Preenche primeiro todas as colunas da linha 0 Depois todas as colunas da linha 1 E assim por diante 7
  • 8. Matrizes • IMPRIMINDO for(i=0; i<7; i++){ for(j=0; j<3; j++) printf( “ %d ”, mat[i][j] ); } 8
  • 9. 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 + ); } MEMÓRIA TELA } i j 0 Elementos da linha 0 0 0 4 0 1 5 0 2 1 0 3 10 1 Elementos da linha 1 9
  • 10. 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 + ); } MEMÓRIA TELA } j i 0 Elementos da coluna 0 0 0 4 0 1 5 0 2 1 1 1 Elementos da coluna 1 0 6 10
  • 11. 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
  • 12. 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
  • 13. Sub rotinas #include <stdio.h> int a, b, s; //variáveis globais void 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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; } Quando a função chega ao fim, as int soma_dobro(int a, int b){ variaveis criadas são completamente int soma; destruídas e as alterações realizadas são a = a * 2; perdidas. X continuara valendo 5 e y b = b * 2; continuara valendo 3. soma = a + b; return soma; } 21
  • 22. 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); FUNÇÃO MAIN y); //chamada da sub rotina FUNÇÃO SOMA_DOBRO res = soma_dobro(x, A X 5 printf(' a soma do dobro dos números %d e %d = %d', x, y, res); 5 getchar(); B 3 Y 3 return 0; SOMA 16 RES 16 } int soma_dobro(int a, int b){ int soma; a = a * 2; b = b * 2; soma = a + b; return soma; } 22
  • 23. 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
  • 24. 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; } Quando a função chega ao fim, as int soma_dobro(int *a, int *b){ variaveis criadas são completamente int soma; *a = 2 * (*a); destruídas, mas as alterações realizadas *b = 2 * (*b); não se perdem. X valerá 10 e Y 6, isto soma = *a + *b; porque as alterações fizeram referencia return soma; a endereços de memória } 24
  • 25. Sub rotina 25
  • 26. Sub rotinas • Matrizes e vetores só podem ser passadas para funções por referencia void 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
  • 27. 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 “caminhonome_da_biblioteca”, em que caminho, é o local onde está salva sua biblioteca 27
  • 28. 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:testeMYBIBLIO.H” int main(){ sub_rotina1(); sub_rotina2(); } 28