Paso de Vectores como Parámetros

23
Paso de Vectores como Parámetros Prof. Judith Barrios Albornoz Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Semestre A_2013 Este material toma como base el curso original Prof. Narciso. Año 2000- 2006

description

Paso de Vectores como Parámetros. Prof. Judith Barrios Albornoz Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Semestre A_2013. Este material toma como base el curso original Prof. Narciso. Año 2000- 2006. - PowerPoint PPT Presentation

Transcript of Paso de Vectores como Parámetros

Page 1: Paso de  Vectores  como Parámetros

Paso de Vectores como Parámetros

Prof. Judith Barrios AlbornozDepartamento de Computación

Escuela de Ingeniería de SistemasFacultad de Ingeniería

Universidad de Los Andes

Semestre A_2013

Este material toma como base el curso original Prof. Narciso. Año 2000- 2006

Page 2: Paso de  Vectores  como Parámetros

Paso de vectores como parámetrosUn vector completo se puede pasar como

parámetro actual a una función :

se especifica únicamente su nombre, sin corchetes ni subíndices

char caracteres[80] = “esta cadena es constante”;……F1(caracteres, longitud);……

El parámetro formal debe ser definido dentro de la función, se indicará con un par de corchetes vacíos, sin definir el tamaño del vector

void F1 (char string[], int lng)

Page 3: Paso de  Vectores  como Parámetros

Paso de vectores como parámetrosEn C/C++ los arreglos en general son

pasados como parámetros por referenciaEsto es, el nombre del arreglo es la

dirección del primer elemento del arreglo

En C/C++ un elemento cualquiera de un arreglo puede ser pasado a una función por valor o por referencia, tal y como se hace con una variable simple

Page 4: Paso de  Vectores  como Parámetros

Ejemplo 1 de paso de vectores como parámetros

float media (int a, float x[]) /* Definición de la función*/{ /* Note que se incluyen los corchetes

vacíos */…….

}void main () { int n;

float med;float lista[100];

………med = media(n, lista); /* Esta llamada pasa como parámetros*/ /* actuales la longitud del vector y el vector*/

/* No se incluyen los corchetes*/……………..

}

Page 5: Paso de  Vectores  como Parámetros

Ejemplo 2 de paso de vectores como parámetros

void modificarTemp(int b[], int numEltos) /* Definición de la función*/

{ /* Se incluyen los corchetes vacíos*/…….

}void main (){ int tempDiaria[24];

………modificarTemp(tempDiaria, 24); /* Esta llamada pasa como */

/* parámetros actuales nombre del */ /* vector y su longitud*/………… /* No se incluyen los corchetes*/

}

Page 6: Paso de  Vectores  como Parámetros

Ejemplo 3 de paso de vectores como parámetros

#include <ctype.h>#include <string.h>

void F1(char string[], int lng) { int i; for (i=0; i!=lng; i++)

string[i] = toupper(string[i]);}void main () { char caracteres[80] =

“Ejemplo”; int longitud =

strlen(caracteres);

puts(caracteres); F1(caracteres, longitud); puts(caracteres);}

Entrada = EjemploSalida = EJEMPLO

Main

F1 ( ) Strlen ( )

Toupper ( )

Puts ( )

Funciones de librería

Función definida por el

Programador

Page 7: Paso de  Vectores  como Parámetros

Ejemplo 4 de paso de vectores como parámetros

/*Paso de vector y elementos individuales del vector como parámetros*/

# include <stdio.h>#define numeroEltos 5

void modificarVector(int [], int); /* Prototipo de la función*/

void modificarValor(int); /* Prototipo de la función */

void modificarReferencia(int &); /* Prototipo de la función */

void main() { int vector[numeroEltos] = {0, 1, 2, 3, 4}, j;

printf (“Los valores del vector original son: \n” ); for (j = 0; j < numeroEltos; j ++) printf (vector[j]); modificarVector(vector, numeroEltos); printf (“Los valores del vector modificado son:\n”); for (j = 0; j <= numeroEltos – 1; j ++) printf

(vector[j]);

Principal - Main

modificarReferenciamodificarValormodificarVector

Page 8: Paso de  Vectores  como Parámetros

Ejemplo 4 de paso de vectores como parámetros - continuación

printf (“Efectos de pasar un elemento de un vector como parámetro por valor\n”);

modificarValor(vector[3]); printf (“El valor del cuarto elemento del vector es: %d\n”,

vector[3]);modificarReferencia(vector[3]);printf (“El valor del cuarto elemento del vector es: %d\n”, vector[3]);

} Principal - Main

modificarReferenciamodificarValormodificarVector

Page 9: Paso de  Vectores  como Parámetros

Ejemplo 4 de paso de vectores como parámetros - continuación

void modificarVector (int b[], int num) { int k; for (k = 0; k <= num – 1; k ++) b[k] *= 2;}void modificarValor (int e) { e *= 2; printf (“Valor modificado del elemento = %d\n”, e);}

void modificarReferencia (int &e) { e *= 2; printf (“Valor modificado del elemento = %d\n”, e);}

Principal - Main

modificarReferenciamodificarValormodificarVector

Page 10: Paso de  Vectores  como Parámetros

Diagrama de descomposición modular

Principal - Main

modificarReferenciamodificarValormodificarVector

Page 11: Paso de  Vectores  como Parámetros

Ejemplo 5 de paso de vectores como parámetros

Diseñar un programa que calcule y escriba el área y la circunferencia de n círculos, los n radios se deben almacenar en el vector Radios

#include <stdio.h>#define n 100

void leerRadios(float radios[], int &numElementos)/*Parametros de salida: vector radios su numero de elementos

numElementos*/

{ int j;

printf (“¿ Cuantos radios seran introducidos ?\n”);scanf (&numElementos);for (j = 0; j < numElementos; j++) { printf (“radio %d =\n”, j+1); scanf (&radios[j]);}

}

Page 12: Paso de  Vectores  como Parámetros

Ejemplo 5 de paso de vectores como parámetros

void AreaCirc (float radio, float &area, float &circulo)/* Parametros de entrada: radio*//* Parametros de salida: area y circulo */{ float pi = 3.14159;

area = pi * pow(radio, 2);circulo = 2 * pi * radio;

}void AreasCircs(float radios[], int numElementos, float

areas[], float cirs[]) /* Parametros de entrada: vector radios *//* Parametros de salida: vectores areas y cirs */

{ int I;

for (I = 0; I < numElementos; I++)AreaCirc(radios[I], areas[I], cirs[I]);

}

Page 13: Paso de  Vectores  como Parámetros

Ejemplo 5 de paso de vectores como parámetros

void escribirAreasCircs (float radios[], int numElementos, float areas[],

float cirs[]) { int j;

for (j = 0; j < numElementos; j++) { printf (“Para la circunferencia de radio %d\n”, radios[j]); printf (“su area es: %d\n”, areas[j]); printf (“su circunferencia es: %d\n”, cirs[j]); }

}void main() { float R[n], A[n], C[n];

int nRadios;leerRadios(R, nRadios); AreasCircs(R, nRadios, A, C); escribirAreasCircs (R, nRadios, A, C);

}

Page 14: Paso de  Vectores  como Parámetros

Diagrama de descomposición modular

Principal - Main

AreaCirc

escribirAreasCircsAreasCircsleerRadios

Page 15: Paso de  Vectores  como Parámetros

Ejercicios1. Determinar la salida del siguiente programa si

el dato de entrada es el entero 4.

#include <stdio.h>

int A (int y){ y *= 2; return y;}

int B (int x){ x += 5; return x;}

void main (){ int x, x1; printf (“Introduzca un numero \n”); scanf (&x); x1 = B(x); printf (“%d\n”, x1); x1 = A(x); printf (“%d\n”, x1);}

Page 16: Paso de  Vectores  como Parámetros

Ejercicios2. Determinar la salida del siguiente programa:

#include <stdio.h>

int reloj, num, temp;

void pascal (int num, int &suma) { int reloj; temp = 2 * num + suma; reloj = temp * suma; num++; suma += num; printf (“%d %f %d %d\n”, temp, reloj, num, suma);}

void main () { num = 1; reloj = 0; temp = 0; pascal (num, temp); printf (“%d %f %d\n”, num, reloj, temp) ; temp++; pascal (temp, num); printf (“%d %d %d\n”, num, reloj, temp);}

Page 17: Paso de  Vectores  como Parámetros

Ejercicios 3) Diseñar un procedimiento con tres parámetros formales

reales (por referencia), a, b y c. El procedimiento debe girar los valores de los parámetros hacia

la derecha de manera que, después de la ejecución, el valor que originalmente estaba en a quede en b, el que estaba en b quede en c y el que estaba en c quede en a. Deben escribirse los números iniciales y su valor después de la rotación

Ejemplo de entrada:4.7 1.0003 7.5-12.5 6.5 2.005

Ejemplo de salida7.5 4.7 1.00032.005 -12.5 6.5

Page 18: Paso de  Vectores  como Parámetros

Ejercicios

4) Los registros mensuales de visitantes al parque Chorros de Milla durante el año 2011 son los siguientes:

Mes Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic

#visitantes 180 300 120 150 210 250 330 510 380 230 160 320

Diseñar un programa, estructurado en funciones que realizan las siguientes tareas:

Leer y almacenar los datos en el vector VISITANTES (12) . Cada posición corresponde con un mes del año.

Calcular y escribir el promedio de visitantes durante el año 2011

Calcular y escribir los nombres de los meses con el mayor y el menor número de visitantes

Page 19: Paso de  Vectores  como Parámetros

Paso de Arreglos bidimensionales como

Parámetros

Page 20: Paso de  Vectores  como Parámetros

Paso de arreglos como parámetrosUn arreglo completo se puede pasar como

parámetro actual a una función :

se especifica únicamente su nombre, sin corchetes ni subíndices

int notas [40] [6]……F1(notas, filas, columnas);……

El parámetro formal debe ser definido dentro de la función, se indicará con un par de corchetes vacíos, sin definir el tamaño del vector

void F1 (int PR1[] [], int fila, int columna)

Page 21: Paso de  Vectores  como Parámetros

Paso de vectores como parámetrosEn C los arreglos en general son pasados

como parámetros por referenciaEsto es, el nombre del arreglo es la

dirección del primer elemento del arreglo

En C un elemento cualquiera de un arreglo puede ser pasado a una función por valor o por referencia, tal y como se hace con una variable simple

Page 22: Paso de  Vectores  como Parámetros

Ejemplo 1 de paso de Arreglos como parámetros

float PromParciales (int f, int c, int notas[] []) /* Definición de la función*/

{ /* Note que se incluyen los corchetes vacíos */…….

}void main () { int n, m;

float media;int listaPR1[40][3];

………media = PromParciales(n, m, listaPR1); /* Esta llamada pasa como parámetros actuales numero de filas y de columnas y el arreglo*/

/* No se incluyen los corchetes*/……………..

}

Page 23: Paso de  Vectores  como Parámetros

Ejercicio1. Definir una subprograma que permite leer un arreglo

bidimensional NotasParciales compuesto por las 4 notas parciales de los estudiantes de PR1 sección 01.

2. Definir una subprograma para crear un arreglo unidimensional con las NotasDefinitivas de los alumnos, las cuales son el promedio de los 4 parciales almacenados en el arreglo NotasParciales .

3. Definir una subprograma para ordenar el arreglo NotasDefinitivas en orden descendente, considerando que cada vez que cambia cambia de lugar un elemento del arreglo NotasDefinitivas, debe cambiar de lugar toda una fila del arreglo NotasParciales. Esto considerando que ambos arreglos son tratados como paralelos.

4. Definir una subprograma que permita crear un arreglo con los nombres de los estudiantes de PR1 – arreglo de caracteres, el cual se corresponde con las notas parciales y posteriormente con las notas definitivas. Este es igualmente un arreglo paralelo con NotasParciales y NotasDefinitivas.