Paso por Referencia vs Paso por Valor Diego

  • Slides: 13
Download presentation
Paso por Referencia v/s Paso por Valor Diego Hernández dhernand@inf. utfsm. cl

Paso por Referencia v/s Paso por Valor Diego Hernández dhernand@inf. utfsm. cl

Hoy � Paso por Valor � Paso por Referencia � Ejercicios � {certamen el

Hoy � Paso por Valor � Paso por Referencia � Ejercicios � {certamen el 20}

Paso por Valor � � Program programa Begin � End X � � �

Paso por Valor � � Program programa Begin � End X � � � Procedure suma ( DATO) Begin � Y � Function suma (DATO) Begin � x � End � � End

Paso por Valor � � � � � Program Saludos; uses crt; Var Nombre,

Paso por Valor � � � � � Program Saludos; uses crt; Var Nombre, Apellido : String; Procedure saludador( name : String ); Var altura: real; Begin Writeln('cuanto mides'); Read(altura); Writeln('Buenos dias ', name, ' ', Apellido, ' de ', altura, ' mts'); End; Begin Writeln('Nombre: '); Readln(Nombre); Writeln('Apellido: '); Readln(Apellido); saludador(Nombre); readkey End.

Paso por Referencia � � Program programa Begin X � � � Procedure suma

Paso por Referencia � � Program programa Begin X � � � Procedure suma (Flecha ) Begin R End � � Function suma (Flecha) Begin � R � End � � End

Paso por Referencia Program Suma_por_Referencia; {El siguiente programa realiza la suma de dos números

Paso por Referencia Program Suma_por_Referencia; {El siguiente programa realiza la suma de dos números } Uses Crt; Var A, B, C: integer; procedure suma(X, Y: integer; Var J: integer); begin J : = X + Y; end; begin Clr. Scr; C: =10; A: =10; B: =10; suma(A, B, C); Write. Ln(A, ', ', B, ', ', C); Read. Key; Clr. Scr end.

Paso por Referencia y Valor � � � � program valor_y_referencia; Uses crt; var

Paso por Referencia y Valor � � � � program valor_y_referencia; Uses crt; var valor: integer; referencia: integer; global: integer; procedure val(valor: integer); begin valor: =5643; global: =9999; end; procedure ref(var referencia: integer); begin referencia: =2222; end; BEGIN global: =60; writeln(global); valor: =1234; val(valor); writeln(global); referencia: =5432; ref(referencia); writeln('Valor = ', valor); writeln('Referencia = ', referencia); readkey; END.

Ejercicios � Hacer una función que haga swap de los valores de 2 posiciones

Ejercicios � Hacer una función que haga swap de los valores de 2 posiciones en un arreglo. � Hacer una función Calcular el promedio de un arreglo � Hacer una función que retorne la posición del mínimo de un arreglo � Hacer una función que llene con números aleatorios enteros de 0 a 100 una matriz

Hacer una función que haga swap � � � � � Program funciones; uses

Hacer una función que haga swap � � � � � Program funciones; uses crt; Var n 1, n 2 : integer; Procedure swap(var a 1, a 2 : integer); var temp : integer; Begin temp: =a 1; a 1: =a 2; a 2: =temp; End; Begin n 1: =1; n 2: =2; writeln('antes de llamar al procedimiento ', n 1, ' ', n 2); swap(n 1, n 2); writeln('despues de llamar al procedimiento ', n 1, ' ', n 2); readkey End.

Calcular el promedio de un arreglo � � � � � Program funciones; uses

Calcular el promedio de un arreglo � � � � � Program funciones; uses crt; Const MAX=3; Type arreglo=array[1. . MAX] of real; Var mi_array: arreglo; function promedio(arr: arreglo): real; var p: real; i: integer; Begin p: =0; for i: =1 to MAX do p: =p+arr[i]; p: =p/MAX; promedio: =p; End; Begin mi_array[1]: =1; mi_array[2]: =2; mi_array[3]: =3; writeln('prom ', promedio(mi_array)); readkey End.

Retornar la posición del mínimo de un arreglo � � � � � �

Retornar la posición del mínimo de un arreglo � � � � � � � Program funciones; uses crt; Const MAX=3; Type arreglo=array[1. . MAX] of integer; Var pos: integer; mi_array: arreglo; Function pos_minimo(arr: arreglo): integer; var i, min: integer; Begin min: =1; for i: =2 to MAX do if arr[i]<arr[min] then min: =i; pos_minimo: =min End; Begin mi_array[1]: =20; mi_array[2]: =15; mi_array[3]: =117; pos: =pos_minimo(mi_array); writeln('posicion del minimo ', pos); readkey End.

Hacer una función que llene con números aleatorios enteros de 0 a 100 una

Hacer una función que llene con números aleatorios enteros de 0 a 100 una matriz � � � � � Program funciones; uses crt; Const MAX=3; Type matriz=array[1. . MAX, 1. . MAX] of integer; matriz 2=array[1. . MAX] of integer; Var i, j: integer; m 1: matriz; m 2: matriz 2; Procedure llena_matriz(var m: matriz); var i, j: integer; Begin for i: =1 to MAX do for j: = 1 to MAX do m[i, j]: =random(10 0) End; Begin llena_matriz(m 1); for i: =1 to MAX do begin for j: = 1 to MAX do begin write(m 1[i, j], ' '); m 2[i][j]: =m 1[i, j] end; writeln(''); for i: =1 to MAX do begin for j: = 1 to MAX do begin write(m 2[i][j], ' '); end; writeln(''); end; readkey End.

Fin ¿Alguna consulta?

Fin ¿Alguna consulta?