Por Referencia y por valor
Ordena tres números intercambiándolos con subprocesos.
- Nivel
- Intermedio
- Conceptos:
- Entrada y salida
- SubProcesos
- Por Referencia
- Si
Ejecuta, modifica y depura este ejemplo en el navegador.
Lo que aprenderás
Con Por Referencia el SubProceso modifica las variables originales; con Por Valor solo cambia una copia. Un SubProceso puede llamar a otro, como OrdenarTres a Intercambiar.
Código
SubProceso Intercambiar(a Por Referencia, b Por Referencia) Definir temporal Como Real temporal <- a a <- b b <- temporalFinSubProcesoSubProceso OrdenarTres(n1 Por Referencia, n2 Por Referencia, n3 Por Referencia) Si n1 > n2 Entonces Intercambiar(n1, n2) FinSi Si n2 > n3 Entonces Intercambiar(n2, n3) FinSi Si n1 > n2 Entonces Intercambiar(n1, n2) FinSiFinSubProcesoSubProceso IntentarCambiar(n Por Valor) // Solo cambia la copia local n <- 0FinSubProcesoAlgoritmo PorReferencia Definir a, b, c Como Real Escribir "Escribe tres números:" Leer a, b, c OrdenarTres(a, b, c) Escribir "Ordenados: ", a, " ", b, " ", c IntentarCambiar(a) Escribir "Por valor, a sigue valiendo ", aFinAlgoritmoDiagrama de flujo
Cada bloque del diagrama corresponde a una instrucción del código.
Ejemplo de ejecución
Esto muestra el programa al ejecutarlo. Las respuestas escritas por el usuario aparecen resaltadas.
Escribe tres números:Respuesta del usuario: 9Respuesta del usuario: 2Respuesta del usuario: 5Ordenados: 2 5 9Por valor, a sigue valiendo 2
Desafío
Agrega un SubProceso Duplicar(n Por Referencia) y úsalo para duplicar el mayor de los tres.
Ver pista
Después de OrdenarTres, el mayor siempre queda en c.
Ejemplos relacionados
Torres de Hanói
Resuelve el clásico rompecabezas de las torres paso a paso.
AvanzadoOrdenamiento burbuja
Ordena números al azar intercambiando vecinos, y se detiene apenas quedan ordenados.
IntermedioOrdenamiento por selección
Busca el menor de los que faltan y lo pone en su lugar.
Intermedio