Download - Linguagem C - Vetores, Matrizes e Funções
![Page 1: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/1.jpg)
VETORESMATRIZESFUNÇÕES
Profª Ms. Engª Elaine Cecília GattoCurso de Bacharelado em Engenharia de ComputaçãoUniversidade do Sagrado CoraçãO – USCBauru/SP
![Page 2: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/2.jpg)
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
![Page 3: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/3.jpg)
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
![Page 4: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/4.jpg)
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
![Page 5: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/5.jpg)
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
![Page 6: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/6.jpg)
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
![Page 7: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/7.jpg)
Matrizes • PREENCHENDO
for(i=0; i<7; i++){ //linhafor(j=0; j<3; j++) //coluna
scanf( “ %d ”, &mat[i][j] );}
Preenche primeiro todas as colunas da linha 0Depois todas as colunas da linha 1E assim por diante
7
![Page 8: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/8.jpg)
Matrizes • IMPRIMINDO
for(i=0; i<7; i++){for(j=0; j<3; j++)
printf( “ %d ”, mat[i][j] );}
8
![Page 9: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/9.jpg)
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
0 Elementos da linha 0
0 0 4
0 1 5
0 2 1
0 3 10
1 Elementos da linha 1
![Page 10: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/10.jpg)
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
0 Elementos da coluna 0
0 0 4
0 1 5
0 2 1
1 Elementos da coluna 1
1 0 6
![Page 11: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/11.jpg)
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
![Page 12: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/12.jpg)
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
![Page 13: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/13.jpg)
Sub rotinas#include <stdio.h>int a, b, s; //variáveis globaisvoid 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
![Page 14: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/14.jpg)
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
![Page 15: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/15.jpg)
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
![Page 16: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/16.jpg)
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
![Page 17: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/17.jpg)
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
![Page 18: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/18.jpg)
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
![Page 19: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/19.jpg)
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
![Page 20: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/20.jpg)
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
![Page 21: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/21.jpg)
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.
![Page 22: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/22.jpg)
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
![Page 23: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/23.jpg)
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
![Page 24: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/24.jpg)
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
![Page 25: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/25.jpg)
Sub rotina
25
![Page 26: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/26.jpg)
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
![Page 27: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/27.jpg)
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
![Page 28: Linguagem C - Vetores, Matrizes e Funções](https://reader035.vdocuments.site/reader035/viewer/2022081720/558524dcd8b42ada748b5067/html5/thumbnails/28.jpg)
Sub rotinasMYBIBLIO.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”int main(){
sub_rotina1();sub_rotina2();
}
28