Paso por Referencia v/s Paso por Valor Diego Hernández dhernand@inf.utfsm.cl
Hoy Paso por Valor Paso por Referencia Ejercicios
Paso por Valor Program programa Procedure suma ( DATO) Begin Begin X Y End Procedure suma ( DATO) Begin End Function suma (DATO) x
Paso por Valor Program Saludos; uses crt; Var Nombre, Apellido :String; Procedure saludador( name : String ); altura:real; Begin Writeln('cuanto mides'); Read(altura); Writeln('Buenos dias ', name,' ',Apellido,' de ',altura,' mts'); End; Writeln('Nombre: '); Readln(Nombre); Writeln('Apellido: '); Readln(Apellido); saludador(Nombre); readkey End.
Paso por Referencia Program programa Procedure suma (Flecha ) Begin X End Procedure suma (Flecha ) Begin R End Function suma (Flecha)
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; ClrScr; C:=10; A:=10; B:=10; suma(A,B,C); WriteLn(A,',',B,',',C); ReadKey; ClrScr end.
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); referencia:=2222; BEGIN global:=60; writeln(global); valor:=1234; val(valor); 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 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 crt; Var n1,n2 :integer; Procedure swap(var a1,a2 :integer); var temp : integer; Begin temp:=a1; a1:=a2; a2:=temp; End; n1:=1; n2:=2; writeln('antes de llamar al procedimiento ',n1,' ',n2); swap(n1,n2); writeln('despues de llamar al procedimiento ',n1,' ',n2); readkey End.
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 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; 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 matriz Program funciones; uses crt; Const MAX=3; Type matriz=array[1..MAX,1.. MAX] of integer; matriz2=array[1..MAX] of array[1..MAX] of integer; Var i,j:integer; m1:matriz; m2:matriz2; 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(100) End; Begin llena_matriz(m1); for i:=1 to MAX do begin for j:= 1 to MAX do write(m1[i,j],' '); m2[i][j]:=m1[i,j] end; writeln(''); write(m2[i][j],' '); readkey End.
Fin ¿Alguna consulta?