Funções Vetores Matrizes
|
|
|
- Sandra Teixeira Angelim
- 8 Há anos
- Visualizações:
Transcrição
1 Funções Vetores Matrizes Além dos tipos elementares (float, double, char, etc.), é possível também passar um vetor ou uma matriz como parâmetro de funções. Quando um vetor é passado como parâmetro, o que é passado na verdade é o endereço ou localização do primeiro elemento do vetor. Desta forma, é possível que se tenha acesso a todos os elementos do vetor dentro da função, pois os elementos são contíguos na memória. O mesmo não ocorre com parâmetros dos tipos elementares. Neste caso, o que vai como parâmetro é o valor da variável. Dizemos que a passagem de parâmetros é por valor. Por isso, quando alteramos o valor de um parâmetro do tipo elementar, a mudança só vale dentro da função. Escreva uma função zera (a, n) que zera os n primeiros elementos do vetor a de inteiros. /* Função zera (a, n) que zera os n primeiros elementos do vetor a de inteiros */ int zera (int a[], int n) { int i = 0; while (i < n) a[i++] = 0; /* não precisa retornar nada */ Alguns exemplos de chamada da função zera: /* exemplo de programa principal */ int x[100], y[30], z[50]; int k = 20; /* zerar todo o vetor x */ zera (x,100); /* zerar os 30 primeiros de x */ zera (x, 30); /* zerar os 200 primeiros de x vai dar erro porque x só tem 100 elementos */ zera (x, 200); /* zerar todo o vetor y */ zera (y,30); /* zerar os k primeiros de z */ zera (z, k); Escreva uma função conta (a, n, x) que devolve como resultado, o número de elementos iguais a x que aparecem no vetor a de n elementos. /* Função conta (a, n, x) que devolve como resultado, o número de elementos iguais a x que aparecem no vetor a de n elementos. */ int conta (int a[], int n, int x) { int i = 0, cc = 0; while (i < n) { if (a[i] == x) cc++; i++;
2 return cc; Abaixo, alguns exemplos de chamadas da função conta: #include <stdio.h> int vet[200]; int n, k; /* atribui a k o número de nulos de x */ k = conta (vet, 200, 0); /* imprime o número de -1s nos 50 primeiros elementos de vet */ printf("\nnumero de elementos iguais a -1 = %5d", conta (vet, 50, -1)); /* imprime quantas vezes cada número de 0 a 9 aparece nos n primeiros */ for (k = 0; k < 10; k++) printf("\n%5d aparece %5d vezes", k, conta (vet, n, k)); /* Lembram-se daquele exercício que verificava quantas vezes cada elemento do vetor se repetia? */ for (k = 0; k < n; k++) printf("\nvet[%3d] = %5d aparece %5d vezes", k, vet[k], conta (vet, n, vet[k])); Escreva uma função trocavet (char a[], char b[], int n) que troca o conteúdo dos 2 vetores a e b de n elementos. /* Função trocavet (char a[], char b[], int n) que troca o conteudo dos 2 vetores a e b de n elementos. */ int trocavet (char a[], char b[], int n) { int i = 0; char aux; while (i < n) { aux = a[i]; a[i] = b[i]; b[i] = aux; i++; O que será impresso pelo programa abaixo? Veja mais abaixo. /* Exemplo de uso da função troca */ #include <stdio.h>
3 char x[5] = {"abcde", y[5] = {"edcba"; int k; trocavet(x, y, 5); /* imprime x depois da troca */ for (k = 0; k < 5; k++) printf("\nx[%2d] = %1c", k, x[k]); /* imprime y depois da troca */ for (k = 0; k < 5; k++) printf("\ny[%2d] = %1c", k, y[k]); x[ 0] = e x[ 1] = d x[ 2] = c x[ 3] = b x[ 4] = a y[ 0] = a y[ 1] = b y[ 2] = c y[ 3] = d y[ 4] = e Escreva uma função busca (double a[], int n, double x), que procura x no vetor a de n elementos, devolvendo como resultado o índice do elemento que é igual a x ou 1 caso não encontre, Embora possa existir mais de um elemento igual a x, devolva o índice do primeiro encontrado. /* Função busca (int a[], int n, int x), que procura x no vetor a de n elementos, devolvendo como resultado o índice do elemento que é igual a x ou -1 caso não encontre. */ int busca (int a[], int n, int x) { int i = 0; while (i < n) { if (a[i] == x) return i; /* encontrou */ i++; return -1; /* não encontrou */ Abaixo um exemplo de chamada e que será impresso pelo programa: /* Gerar nummax números aleatórios entre 0 e 29 verificar se são primos */ #include <stdio.h> #include <stdlib.h> #define nummax 20 int primos[10] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29; int n, k; for (k = 0; k < nummax; k++) { n = rand () % 30; /* n estará entre 0 e 29 */ if (busca (primos, 10, n) >= 0) printf("\n%5d e um numero primo", n); else printf("\n%5d nao e numero primo", n);
4 11 e um numero primo 17 e um numero primo 4 nao e numero primo 10 nao e numero primo 29 e um numero primo 4 nao e numero primo 18 nao e numero primo 18 nao e numero primo 22 nao e numero primo 14 nao e numero primo 5 e um numero primo 5 e um numero primo 1 nao e numero primo 27 nao e numero primo 1 nao e numero primo 11 e um numero primo 25 nao e numero primo 2 e um numero primo 27 nao e numero primo 6 nao e numero primo Escreva uma função comp (char a[], char b[], int n) que compara os 2 vetores a e b de n elementos, devolvendo: n se a[i] = b[i] para 0 <= i < n k se a[k] b[k] e a[i] = b[i] para 0 i < k /* Função comp (char a[], char b[], int n) que compara os 2 vetores a e b de n elementos, devolvendo: n - se a[i] = b[i] para 0 <= i < n k - se a[k] b[k] e a[i] = b[i] para 0 i < k */ int comp (char a[], char b[], int n) { int i = 0; while (i < n) { if (a[i]!= b[i]) break; i++; return i; /* note que se todos forem iguais i sai do while valendo n */ O que será impresso pelo programa abaixo? #include <stdio.h> char a[] = {0,1,2,3,4,5,6,7,8,9, b[] = {0,1,2,3,4,5,6,6,6,6; printf("\n*******numero de elementos iguais = %5d", comp (a, b, 5)); printf("\n*******numero de elementos iguais = %5d", comp (a, b, 10)); *******numero de elementos iguais = 5
5 *******numero de elementos iguais = 7 Escreva uma função semrepeticao(int a[], int n, int b[], int m) que recebe um vetor a de n elementos e devolve um vetor b de m elementos, onde b é o próprio a sem elementos repetidos. Idem semrepeticao(int a[], int n, int m) eliminando as repetições e devolvendo no próprio a. Escreva uma função uniao(int a[],int n,int b[],int m,int c[],int *p) que recebe os vetores a e b de n e m elementos e devolve o vetor c de p elementos contendo o conjunto uniao entre a e b, ou seja, os elementos que estão em a ou em b. Note que *p é parâmetro de saida. /* Função uniao (int a[], int n, int b[], int m, int c[], int *p) que recebe os vetores a e b de n e m elementos e devolve o vetor c de p elementos contendo o conjunto uniao entre a e b, ou seja, os elementos que estão em a ou em b. */ int uniao (int a[], int n, int b[], int m, int c[], int *p) { int i, j; /* move a para c */ for (i = 0; i < n; i++) c[i] = a[i]; *p = n; /* verifica os que estão em b e não em a e os acrescenta a c */ for (i = 0; i < m; i++) { /* procura b[i] em c[0] até c[*p - 1] */ for (j = 0; j < *p; j++) if (b[i] == c[j]) break; // este b[i] já está /* verifica se não encontrou b[i] em c se não encontrou acrescenta b[i] a c e incrementa *p */ if (j == *p) {c[*p] = b[i]; (*p)++; O que será impresso no programa abaixo? #include <stdio.h> int a[] = {0,1,2,3,4,5,6,7,8,9, b[] = {5,6,7,8,9,10,11,12, c[20]; int nc, i; uniao (a, 10, b, 8, c, &nc); printf("\n*******uniao de a com b tem %5d elementos **********", nc); for (i = 0; i < nc; i++) printf("\nc[%2d] = %5d", i, c[i]); *******uniao de a com b tem 13 elementos ********** c[ 0] = 0 c[ 1] = 1 c[ 2] = 2 c[ 3] = 3 c[ 4] = 4
6 c[ 5] = 5 c[ 6] = 6 c[ 7] = 7 c[ 8] = 8 c[ 9] = 9 c[10] = 10 c[11] = 11 c[12] = 12 Escreva a função intersecção(int a[],int n,int b[],int m,int c[],int *p). Escreva a função diferenca(int a[],int n,int b[],int m,int c[],int *p). Matrizes e Funções Matrizes podem ser usadas como parâmetros de funções. Como já vimos, os elementos das matrizes estão dispostos contiguamente na memória, linha a linha, ou seja, variando-se primeiro os últimos índices. Lembrando os exemplos anteriores: Para a matriz a[10][10]: a[0][0] a[0][1] a[0][2]... a[0][9] a[1][0] a[1][1] a[1][2]... a[1][9] : : : a[9][0] a[9][1] a[9][2]... a[9][9] Para a matriz b[30][40]: b[0][0] b[0][1] a[0][2]... b[0][39] b[1][0] b[1][1] b[1][2]... b[1][39] : : : b[29][0] b[29][1] b[29][2]... b[29][39] Para a matriz c[3][4][5]: c[0][0][0] c[0][0][1] c[0][0][2] c[0][0][3] c[0][0][4] c[0][1][0] c[0][1][1] c[0][1][2] c[0][1][3] c[0][1][4] c[0][2][0] c[0][2][1] c[0][2][2] c[0][2][3] c[0][2][4] c[0][3][0] c[0][3][1] c[0][3][2] c[0][3][3] c[0][3][4] c[1][0][0] c[1][0][1] c[1][0][2] c[1][0][3] c[1][0][4] c[1][1][0] c[1][1][1] c[1][1][2] c[1][1][3] c[1][1][4] c[1][2][0] c[1][2][1] c[1][2][2] c[1][2][3] c[1][2][4] c[1][3][0] c[1][3][1] c[1][3][2] c[1][3][3] c[1][3][4] c[2][0][0] c[2][0][1] c[2][0][2] c[2][0][3] c[2][0][4] c[2][1][0] c[2][1][1] c[2][1][2] c[2][1][3] c[2][1][4] c[2][2][0] c[2][2][1] c[2][2][2] c[2][2][3] c[2][2][4] c[2][3][0] c[2][3][1] c[2][3][2] c[2][3][3] c[2][3][4]
7 A memória é linear, assim, do ponto de vista de armazenamento na memória, não há diferença entre uma matriz e um vetor, pois os elementos estão contíguos na memória. No caso do vetor, o índice, determina o deslocamento do elemento a partir do início do vetor. Por exemplo, considere o vetor int x[5] que estará disposto na memória assim: x[0] x[1] x[2] x[3] x[4] Observe que a[i] estará na posição (início de a) + i. No caso de matrizes, o deslocamento em relação ao início, é uma função dos vários índices. Esta função, nada mais é que a transformação dos vários índices num só índice, ou seja, a linearização dos vários índices. Vejamos alguns exemplos nas matrizes declaradas acima. 1) a[1][2] é o 12 º elemento (o primeiro é o 0 º ), ou (10.1+2)º. Note que temos que contar quantos elementos anteriores existem. 2) a[2][3] é o 23 º elemento, ou (2.10+3) º 3) a[9][5] é o 95 º elemento, ou (9.10+5) º 4) b[29][2] é o 1162 º = ( )º 5) c[2][1][3] é o 48 º = ( )º 6) c[1][3][1] é o 36 º = ( ) º Portanto, para 2 índices, se temos a matriz mat com o primeiro e segundo índices de valor máximo d1 e d2 (por exemplo int mat[d1][d2]) o elemento mat[i][j] estará na posição (início de mat) + i.d2+ j. Para 3 índices, a matriz mat com o primeiro, segundo e terceiro índices de valores máximos d1, d2 e d3 (por exemplo int mat[d1][d2][d3]) o elemento mat[i][j][k] estará na posição (início de mat) + i.d2.d3 + j.d3 + k. Para n índices, a matriz mat com índices de valores máximos d1, d2,, dn (int mat[d1][d2][dn]) o elemento mat[i1][i2][in] estará na posição: (início de mat) + i1.d2.d3..dn + 12.d3.d4..dn + i3.d4.d5..dn + i(n-1).dn + in Então, para acessar um elemento, é necessário conhecer-se as dimensões de todos os índices, com excessão do primeiro. Por isso, na declaração de uma matriz como parâmetro formal, é necessário declarar-se todos os índices máximos a partir do segundo. Exemplos: int funcx(double a[][100], int n); double funcy (int x[][200][10], y[], z[][23][30]); O exemplo abaixo está errado: double f(int x[][8])
8 main() { int a[10][10]; f(a); Também é possível que uma função tenha como parâmetro formal um vetor, e seja chamada com um parâmetro do tipo matriz. void zera_vet_mat(int x[], int n) { /* zera vetor x com n elementos, mas recebe matriz */ int i; for (i=0; i<n; i++) x[i] = 0; int a[10][10]; zera_vet_mat(a, 100); Outro exemplo: função que zera o elemento [i,j] de uma matriz, mas recebe um vetor como parâmetro. Neste caso é necessário também passar a quantidade de elementos de cada linha da matriz. void zera_elem(int x[], int i, int j, int ncol) { /* zera vetor x com n elementos, mas recebe matriz como parâmetro */ x[i*ncol+j] = 0; int a[10][10]; int n,m; /* zera a[3][4] */ zera_elem(a, 3, 4, 10); /* zera toda a matriz */ for (n = 0, n < 9, n++) for (m = 0, m < 9, m++) zera_elem(a, n, m, 10); Outra maneira de entender a necessidade de declarar os índices de uma matriz quando esta matriz é parâmetro de função Outra forma de entender melhor a necessidade de declarar na função os índices a partir do segundo através de um exemplo com duas dimensões: Suponha uma função F que recebe com parâmetro uma matriz de no máximo 10 linhas por 20 colunas e também 2 outros parâmetros inteiros n e m que representam as linhas e colunas que serão realmente usadas.
9 void F(int A[][20], int n, int m) { Os elementos da matriz estão dispostos na memória linha a linha. Suponha a chamada abaixo da função F: int x[10][20]; F(X,7,8); /* usando apenas 7 linhas e 8 colunas de X */ Será usado apenas o trecho indicado de X. F precisa saber quantos elementos tem que pular por linha da matriz para acessar os elementos corretos. Outros exemplos de funções usando matrizes como parâmetros Escreva uma função simetrica (double a[][maxcol], int n) que verifica se a matriz a nxn é uma matriz simétrica, isto é, se a[i][j] é igual a a[j][i]. #define maxlin 10 #define maxcol 10 /* Escreva uma função simetrica (double a[maxlin][], int n) que verifica se a matriz a nxn é uma matriz simétrica. */ int simetrica (double a[][maxcol], int n) { int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (a[i][j]!= a[j][i]) return 0; // não é return 1; /* é simétrica */
10 Veja abaixo exemplos de chamada e o que será impresso: /* Exemplo de chamada */ #include <stdio.h> double a[maxlin][maxcol], b[maxlin][maxcol]; int n = 2, m = 3; /* preenche a (simetrica) */ a[0][0] = 1; a[1][1] = 2; a[0][1] = a[1][0] = 3; if (simetrica(a,n)) printf ("\n a e simetrica"); else printf ("\n a nao e simetrica"); // preenche b (não simetrica) b[0][0] = 1; b[1][1] = 2; b[2][2] = 3; b[0][1] = b[1][0] = 3; b[0][2] = b[2][0] = 4; b[1][2] = 5; b[2][1] = 6; // não é mesmo if (simetrica(b, m)) printf ("\n b e simetrica"); else printf ("\n b nao e simetrica"); a e simetrica b nao e simetrica Observe que na função simetrica, fazemos comparações desnecessárias, pois comparamos a[i][j] com a[j][i] e depois a[j][i] com a[i][j], pois i e j variam de 0 a n-1. Bastaria comparar apenas quando i>j ou quando i<j, ou seja, percorrendo o triângulo inferior ou o triângulo superior. Idem, percorrendo o triângulo inferior: #define maxlin 10 #define maxcol 10 /* Escreva uma função simetrica (double a[maxlin][], int n) que verifica se a matriz a nxn é uma matriz simétrica, percorrendo apenas a parte inferior da matriz em relação ã diagonal principal. */ int simetrica (double a[][maxcol], int n) { int i, j; for (i = 0; i < n; i++) for (j = 0; j < i; j++) if (a[i][j]!= a[j][i]) return 0; /* não é */ return 1; /* é simétrica */ Idem, percorrendo o triângulo superior como exercício.
11 Escreva uma função somamat(double a[][mc],b[][mc],c[][mc],int n) que recebe as matrizes a e b e devolve a matriz c, soma de a com b. a, b e c tem dimensão nxn. Idem, uma função multmatvet(double a[][mc],double b[],double c[],int n, int m) que recebe a matriz a de nxm elementos, o vetor b de m e devolve o vetor c de n elementos que é a multiplicação de a por b. #define maxlin 100 #define maxcol 100 /* Função multmatvet (double a[][maxcol], double b[], double c[], int n, int m) que recebe a matriz a de n x m elementos, o vetor b de m e devolve o vetor c de n elementos que é a multiplicação de a por b. */ int multmatvet (double a[][maxcol], double b[], double c[], int n, int m) { int i, j; for (i = 0; i < n; i++) { /* multiplica a linha i da matriz pelo vetor */ c[i] = 0; for (j = 0; j < m; j++) c[i] = c[i] + a[i][j] * b[j]; return 0; /* não precisa retornar nada */ Idem, uma função multmatmat(double a[][mc],double b[][mc],double c[][mc],int n,int m,int p) que recebe a matriz a de nxm elementos, a matriz b de mxp elementos e devolve a matriz c de nxp elementos, que é a multiplicação de a por b. Escreva uma função ind_min_col(double a[][maxc],int n,int col) que receba a matriz a de nxn elementos e devolva como resultado o índice do menor elemento da coluna col desta matriz. #define maxlin 100 #define maxcol 100 /* Função ind_min_col (double a[][maxc], int n, int col) que receba a matriz a de n x n elementos e devolva como resultado o índice do menor elemento da coluna col desta matriz. */ int ind_min_col (double a[][maxcol], int n, int col) { int lin; /* índice para as linhas */ int indmin = 0; /* índice do mínimo na coluna. */ /* começa supondo que é o primeiro da coluna */ /* varre todos os elementos desta linha a partir do segundo e verificando se é menor que o mínimo corrente se for troca o índice do mínimo corrente */
12 for (lin = 1; lin < n; lin++) if (a[lin][col] < a[indmin][col]) indmin = lin; return indmin; Índice inicial de vetores e matrizes O índice inicial de vetores em C é sempre 0: int x[10] declara elementos x[0], x[1], x[9]. Idem, para o índice inicial de matrizes de 2 ou mais dimensões: int y[3][2] declara y[0][0], y[0][1], y[1][0], y[1][1], y[2][0], y[2][1] Em outras linguagens de programação isso não ocorre: Fortran índice sempre começa do 1. Pascal declara-se o índice inicial e final. A vantagem de se começar o índice do zero como já vimos, é que no caso de vetores é exatamente o valor a ser incrementado para se chegar ao endereço do elemento. Não é necessário subtrair 1 para se chegar ao elemento. índice: x[0] x[1] x[2] x[3] x[4] x[5] endereço: x+0 x+1 x+2 x+3 x+4 x+5 No caso de matrizes é exatamente o valor a ser multiplicado pelas várias dimensões. A desvantagem é que em problemas de matemática envolvendo vetores, matrizes, somatórias, etc., o usual é o índice começar em 1. Uma forma de contornarmos esse problema é declarar o vetor com um elemento a mais e não usar o elemento de índice 0. Exemplo vetor x com 5 elementos: int x[6] **** x[1] x[2] x[3] x[4] x[5] No caso de matrizes é mais drástico. Declarar a matriz com uma linha e uma coluna a mais e não usar a linha 0 e coluna 0. Exemplo matriz y com 3 linhas e 4 colunas: int y[4][5] ***** ***** ***** ***** ***** ***** y[1][1] y[1][2] y[1][3] y[1][4] ***** y[2][1] y[2][2] y[2][3] y[2][4] ***** y[3][1] y[3][2] y[3][3] y[3][4]
Aula 15 Variáveis Indexadas (vetores)
Aula 15 Variáveis Indexadas (vetores) Além das variáveis normais já conhecidas, podemos ter também variáveis indexadas. Tais variáveis são referenciadas por um nome e um índice. Especialmente úteis para
1 Resumo: Matrizes. 2.1 Como declarar uma matriz IME/USP. Departamento de Ciência da Computação
Departamento de Ciência da Computação MAC2166 Introdução a Computação IME/USP Matrizes 1 Resumo: Matrizes são estruturas bi-dimensionais utilizadas para armazenar dados de um mesmo tipo. Para declarar
Aula 11 - Repetições Encaixadas
Aula 11 - Repetições Encaixadas Já vimos os seguintes comandos de repetição: while for do while O formato geral destes comando é: while (comparação) {c1; c2;...; cn; for (inicialização; comparação; incremento)
Programação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Aula 18 Algoritmos básicos de busca e classificação
Aula 18 Algoritmos básicos de busca e classificação Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas e classificação de tabelas estão entre os mais usados. Considere por exemplo
ponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo [email protected] ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes
Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany [email protected] Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta
Algoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes [email protected] 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick [email protected], [email protected] Roteiro Funções Escopo de Variáveis Variáveis Globais
INF 1620 P1-04/10/03 Questão 1 Nome:
INF 1620 P1-04/10/03 Questão 1 a) Implemente uma função para calcular as raízes de uma equação do segundo grau do tipo ax 2 +bx+c=0. O protótipo dessa função deve ser: void raizes (float a, float b, float
Modularidade - Funções e Procedimentos
Modularidade - Funções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situações, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de entrada
MC-102 Aula 14. Instituto de Computação Unicamp. 29 de Setembro de 2016
MC-102 Aula 14 Funções II Instituto de Computação Unicamp 29 de Setembro de 2016 Roteiro 1 Escopo de Variáveis: variáveis locais e globais 2 Exemplo Utilizando Funções 3 Vetores, Matrizes e Funções Vetores
BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores
BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores 1- Faça um programa que preencha um vetor com seis elementos numéricos inteiros, calcule e mostre: a.
Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU
Aula 9 Oficina de Programação Matrizes Profa. Elaine Faria UFU - 26 Variáveis Compostas Homogêneas O que uma variável composta homogênea? - Conjunto de variáveis do mesmo tipo - É chamada de forma geral
Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
Prova de Recuperação
Programação I Prova de Recuperação 1. (1 ponto) Considere um programa que leia de um arquivo de veículos os seguintes dados: placa de um veículo, ano de fabricação, consumo médio de combústivel, modelo
Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
UNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação MIEA 1º Semestre Frequência Resolução 13/12/2016 1. Escreva uma expressão lógica em linguagem C para cada uma das seguintes condições: (a) o valor da variável
Matrizes. DCC 119 Algoritmos
Matrizes DCC 119 Algoritmos Matrizes: vetores multidimensionais Assim como os vetores, as matrizes são estruturas de dados homogêneas. Podem ser construídas dos diversos tipos básicos primitivos (real,
Modularidade - Fun ções e Procedimentos
Modularidade - Fun ções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situa ções, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de
Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento
Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento Parte 1: Vetores Gabarito - Lista de Exercícios 5 Vetores e Matrizes 1) O que será impresso
Aula 21 - Algoritmos e Funções Recursivas
Aula 21 - Considere a definição da função fatorial: n! = 1 se n 0 Considere agora a seguinte definição equivalente: n! = 1 se n 0 Dizemos que essa
Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva
Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição OPL e IC1 Prof: Anilton Joaquim da Silva [email protected] 1 Estrutura de Repetição Em certas situações é necessária a repetição de
1) Operadores de auto incremento ++ e auto decremento --
Aula 09 - Operadores de auto incremento e auto decremento, atribuição múltipla, atribuição na declaração, atribuição resumida e algumas regras de boa programação. 1) Operadores de auto incremento ++ e
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Introdução à Computação 1 de 28 Funções Na Programação, funções são conjuntos
Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses
1 3 Estrutura de dados 2 Ponteiro Ponteiro 2 O ponteiro é um tipo de dado como int, char ou float. A diferença do ponteiro ponteiro guardará um endereço de memória. Por meio deste endereço pode-se acessar
Estruturas Homogêneas II (Matrizes)
BCC 201 - Introdução à Programação Estruturas Homogêneas II (Matrizes) Guillermo Cámara-Chávez UFOP 1/1 Introdução I Imaginemos que queremos ler as notas de 4 provas para cada aluno e calcular a média
Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ
Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos
Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.
222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao
Introdução à Programação
Introdução à Programação Aula 10 Matrizes Edirlei Soares de Lima Conjuntos Bidimensionais Uma matriz representa um conjunto bidimensional de valores. Exemplo de matriz de inteiros:
Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.
3636363636363636363636363636363636363636363636363636 5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios. 5.1 - Comandos
Matrizes. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 67
Matrizes Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 67 Conteúdo Introdução vetores e matrizes Representações de matrizes TADs TAD Vetor TAD Vetor
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Algoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1
Linguagem C: Ponteiros Prof. Leonardo Barreto Campos 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação
CCO 016 / COM 110 Fundamentos de Programação
CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 12 Agregados Homogêneos Variáveis Indexadas matrizes Variáveis Indexadas bi dimensionais
LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz
Vetores são estruturas de dados que armazenam usualmente uma quantidade fixa de dados de um certo tipo; por esta razão, também são conhecidos como estruturas homogêneas de dados. Internamente, um vetor
Aula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Ponteiros, ponteiros e vetores e alocação dinâmica de memória
Ponteiros Ponteiros ou apontadores (em inglês pointers) são variáveis cujo conteúdo é um endereço. Já vimos que variáveis são posições na memória que podem conter um determinado valor dependendo de seu
Programação Estruturada
Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada
Introdução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
INF 1620 P1-18/09/04 Questão 1 Nome:
INF 1620 P1-18/09/04 Questão 1 Considerando a definição da série harmônica abaixo: H n =1+ 1 2 + 1 3 + 1 4 + 1 5 + K+ 1 n (a) Escreva uma função que calcule o valor de H n dado o número de termos da série
Alocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Programação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 6 Exercício 1 Dados dois vetores com n (n
Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de
PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C
PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C 1 Implementações básicas: a) Implementar o procedimento LerMatriz que preenche uma matriz de L linhas por C colunas de inteiros (L, C 1); b) Implementar o procedimento
Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz
Variáveis Compostas Homogêneas São conhecidas na linguagem C como matrizes. Vetores e es É um conjunto de variáveis do mesmo tipo, acessíveis com um único nome e armazenadas de forma contínua na memória.
Arquivo: /home/vinicius/documentos/simplex.c Página 1 de 7
Arquivo: /home/vinicius/documentos/simplex.c Página 1 de 7 /* * Programa Simplex.c * Resolve o problema de otimização linear * min Cx Ax = b x >= 0 * utilizando o método simplex revisado * * Criado por
Ponteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,
1. Para cada pergunta selecione uma opção. Resposta correta +2, incorreta -1. [12 pontos]
* Universidade Federal do ABC Avaliação: Prova 01 (40 pontos) Disciplina: MCTA028 - Programação Estruturada Turma: Noturno A1 e A2 Professor: Jesús P. Mena-Chalco Data: 25/10/2016 Nome completo: RA: Instruções:
Vetores e Matrizes. Vetores
Vetores e Matrizes José Gustavo de Souza Paiva Vetores Também conhecidos como variáveis compostas homogêneas unidimensionais É um tipo de dado que representa um conjunto de valores do mesmo tipo É como
Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1
Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação Lista de Exercícios 1 1. O programa seguinte tem vários erros em tempo de compilação. Encontre-os. Main() int a=1; b=2,
