La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Paso de Vectores como Parámetros

Presentaciones similares


Presentación del tema: "Paso de Vectores como Parámetros"— Transcripción de la presentación:

1 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

2 Paso de vectores como parámetros
Un 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)

3 Paso de vectores como parámetros
En C/C++ los arreglos en general son pasados como parámetros por referencia Esto 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

4 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*/ ……………..

5 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*/

6 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); Entrada = Ejemplo Salida = EJEMPLO Main F1 ( ) Strlen ( ) Puts ( ) Toupper ( ) Funciones de librería Función definida por el Programador

7 Ejemplo 4 de paso de vectores como parámetros
Principal - Main modificarReferencia modificarValor modificarVector /*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]);

8 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]); } Principal - Main modificarReferencia modificarValor modificarVector

9 Ejemplo 4 de paso de vectores como parámetros - continuación
Principal - Main modificarReferencia modificarValor modificarVector 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)

10 Diagrama de descomposición modular
Principal - Main modificarReferencia modificarValor modificarVector

11 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]); }

12 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 = ; 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]);

13 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);

14 Diagrama de descomposición modular
Principal - Main AreaCirc escribirAreasCircs AreasCircs leerRadios

15 Ejercicios 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); }

16 Ejercicios 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); }

17 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: Ejemplo de salida

18 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 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

19 Paso de Arreglos bidimensionales como Parámetros

20 Paso de arreglos como parámetros
Un 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)

21 Paso de vectores como parámetros
En C los arreglos en general son pasados como parámetros por referencia Esto 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

22 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*/ ……………..

23 Ejercicio Definir una subprograma que permite leer un arreglo bidimensional NotasParciales compuesto por las 4 notas parciales de los estudiantes de PR1 sección 01. 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 . 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. 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.


Descargar ppt "Paso de Vectores como Parámetros"

Presentaciones similares


Anuncios Google