Bienvenidos a este nuevo capítulo de este Curso Gratis de Programación #21 Funciones
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Funciones y procedimientos
TIPOS
Funciones: Devuelve valores al programa principal de dos maneras:
- por valor
- por referencia
Procedimientos: Devuelve valores al programa principal solo de una única
- por referencia
La funciones o procedimientos se escriben una sola vez. pero pueden ser gamadas desde el programa principal tantas veces como el programador lo considere necesario. El uso de subprogramas es otra de las bases fundamentales de la programación estructurada.
Definición, Función y Manipulación
Un problema complejo se puede dividir en pequeños subproblemas mas sencillos. Estos subproblemas se conocen como “Módulos” y su complementacion en un lenguaje se llama subprograma (procedimientos y funciones).
Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma lo utiliza solamente un programa para un propósito especifico.
Un subprograma recibe datos de un programa y le devuelve resultados (el programa “llama” o “invoca” al subprograma, este ejecuta una tarea especifica y devuelve el “control” al programa que lo llamo)
Funciones
Es un subalgoritmo que retorna un valor al algoritmo que lo haya invocado. Los lenguajes de programación ya incluyen funciones internas. Las funciones devuelven un sólo valor a la unidad de programa que las referencia. Los procedimientos pueden devolver cero, uno o varios valores. En el caso de no devolver ningún valor, realiza alguna tarea tal como alguna operación de entrada y/o salida. Una función se referencia utilizando su nombre en una expresión, mientras que un procedimiento se referencia por su llamada o invocación al mismo.
Una función en matemáticas, es una operación que toma un o mas valores (argumentos) y devuelve un resultado (valor de la función para los argumentos dados). Por ejemplo:
F(X) = X / (1+X2)
Donde:
F ………….. Nombre de la función
X …………. Es el argumento (también conocido como parámetro formal)
Definición de funciones: Una definición de función se presenta de la siguiente manera:
Función nombre_funcion (p1, p2, …, pn)
Inicio
Bloque de instrucciones
Fin
Donde:
- Función …………… Es la palabra clave que nos indica una definición de función.
- Nombre_funcion ….. Es el identificador con el cual se reconoce a la función en el cuerpo del algoritmo principal.
- P1,p2,…,pn ……… Es el grupo de parámetros que define a la función.
En PSeInt se pueden mencionar las siguientes funciones internas:
- RC(X)o RAIZ(X): retorna la raíz cuadrada de X.
- ABS(X): retorna el valor absoluto de X.
- AZAR(X): retorna un entero aleatorio en el rango [0;X-1].
- ALEATORIO(A,B): retorna un entero aleatorio en el rango [A;B].
- MAYUSCULAS(S): retorna una copia de la cadena S con todos sus caracteres en mayúsculas.
- CONVERTIRANUMERO(X): recibe una cadena de caracteres que contiene un número y devuelve una variable numérica con el mismo.
El programador también puede definir sus propias funciones. La sintaxis utilizada para definir una función en un algoritmo es la siguiente:
<tipo de dato> funcion <nombre función>(lista de parametros)
var
Declaración de variables locales
inicio
<acciones> //cuerpo de la función
devolver(<expresion>)
fin-funcion
La definición de una función comienza indicando el tipo de dato del valor que devolverá la función. Se define el nombre o identificador de la función utilizando la palabra reservada función. Entre paréntesis, se coloca la lista de parámetros indicando el tipo de dato y nombre o identificador de las variables. Los parámetros se separan con coma. Se pueden definir también variables locales a la función en la sección var.
El cuerpo de acciones de la función debe delimitarse con las palabras reservadas inicio y fin-funcion. En la última sección del cuerpo de la función debe indicarse el valor que se retornará utilizando la sintaxis devolver(<expresión>).
Para llamar a la función, se debe invocar su nombre con la lista de parámetros que esta requiere: nombre_funcion(lista de parámetros actuales) Un programa que permita mostrar por pantalla la suma de dos números enteros.
Se debe implementar una función que realice la suma de los números y devuelva el resultado al algoritmo principal. El resultado de la operación se debe mostrar desde el algoritmo principal.
Llamado a una función
Cuando definimos una función solo le indicamos al algoritmo que esta función existe, pero una definición de función no implica la realización de las instrucciones que la constituyen. Para hacer uso de una función, el algoritmo principal la debe llamar. Por ejemplo:
Función F(X)
Inicio
F = X /(1 + X^2)
Fin
Inicio
Imprimir “Este es el algoritmo principal”
Leer N
R = F(N) llamado de la función
Imprimir “El resultado de la función es:”,R
Fin
Ejercicio 1
Algoritmo calcular_suma
var
entero: a, b, resultado
inicio
mostrar("lngresar dos números enteros")
leer(a,b)
resultado <-suma(a, b)
mostrar("La suma es: ', resultado)
fin
entero funcion suma(entero: a,b)
var
entero: sum
inicio
sum <-a + b
devolver(sum)
fin-funcion
Una función es un subalgoritmo que recibiendo o no datos devuelve un único resultado. funciones internas son (sin, cos, abs). Las cuales pueden usarse en expresiones algorítmicas como si se tratara de variables. Otros ejemplos de funciones matemáticas:
donde x,y,z: son los parámetros formales o ficticios, es decir permiten expresar la ley o “forma” de la función. Las funciones pueden tener uno o más parámetros formales (datos) pero siempre devuelven un único resultado.
Las funciones son evaluadas utilizando parámetros actuales o reales, es decir los valores con los que se quiere evaluar la función:
Una función es un objeto del ambiente, con nombre, tipo y valor único. El tipo se asocia al valor que retorna la función cuando es evaluada para un conjunto dado de valores de sus argumentos
Funcion nombre (lista de parámetros formales): Tipo de resultado
Declaración de variables
Inicio
Acciones
Devolver (constante, variable o expresión)
Fin función
Definiciones
Lista de parámetros formales: contiene las variables que pasan alguna información necesaria para que la función ejecute el conjunto de acciones. Tipo de resultado: señala el tipo de dato que devuelve la función.
Declaración de variables: en este lugar se deben declarar los parámetros formales y también aquellas variables que se usarán en la función.
Cuerpo de la función: lo constituye el conjunto de acciones a realizar por la función.
Retornar el resultado: el único resultado que devuelve la función puede ser un valor constante, o una variable o una expresión válida, la cual debe colocarse entre paréntesis al lado de la acción Devolver.
Cuando se ejecuta esta acción se devuelve el control del programa al lugar donde se ha llamado a la función.
Algoritmo que utilice la función del ejemplo anterior para calcular la potencia n de x. Los valores de n y x deberán ser ingresados por teclado, siendo n un entero y x un valor real.
se muestran dos formas posibles de utilización de la función potencia:
en el caso 1 la función potencia es empleada directamente dentro de la acción escribir,
en el caso 2 el valor devuelto por la función potencia es asignado en la variable real z y es el valor almacenado en z el que luego se muestra.
Función promedia:
- Recibe un arreglo
- Se recorre el arreglo con la estructura repetitiva «para»
Acumula sus elementos en la variable «suma» - Dividir el valor de la variable «suma» con la cantidad de elementos del arreglo.
Flujo de funciones para encapsular algoritmos
Ahora que ya has aprendido cómo se crean las funciones, te reto a resolver los siguientes ejercicios donde encontrarás requerimientos muy puntuales para que los conviertas en algoritmos y los pases a funciones que realicen la actividad. ¡Déjame tus resultados en los comentarios! Estaré encantada de ver tu crecimiento.
Venta de tiquetes
En una empresa de viajes se requiere realizar la venta de tiquetes teniendo en cuenta las siguientes consideraciones:
- Cada tiquete incluye ciudad de origen, ciudad de destino, fecha, hora, cantidad de puestos y datos del pasajero.
- Cada autobús o avión tiene una capacidad máxima de pasajeros, debo avisar cuando se hayan llenado los cupos.
- Debes asignar los puestos de cada medio de transporte conforme al orden de compra.
Funciones
Para definir funciones hay una similitud muy marcada entre JavaScript y PHP porque su estructura base es simplemente escribir la palabra reservada “function” seguido por el nombre de la función y paréntesis que bien pueden estar vacíos si no recibe ningún valor o incluir los parámetros separados por comas.
Sin embargo, en PHP puedes definir el alcance de la función; si será pública, privada o estática, pero si no se lo indicas explícitamente, de manera automática se creará pública.
Con Python esta definición es distinta, pues solo utiliza “def”, seguido por el nombre de la función y los parámetros que recibe, al igual que los lenguajes anteriormente mencionados. Adicionalmente, un bloque de código no empieza por las típicas llaves, sino por dos puntos ( : ) que indican que debajo empiezan sus instrucciones a ejecutar.
Estructuras de control
Cómo ya has visto, cada lenguaje tiene su propia forma de escribir las cosas. No obstante, las estructuras de control son un punto en común.
A pesar de que las instrucciones empiecen con llaves, con dos puntos o que las líneas de código terminen en punto y coma o no, la forma del contenido en las estructuras de control no cambia su lógica, suceden de la misma forma y ofrecen el mismo servicio en los tres lenguajes.
El condicional “if” en todos los casos evalúa una condición basada en operadores lógicos de comparación. Los ciclos también siguen con este mismo patrón porque incluso su definición cumple con la misma estructura y respetan la forma en la cual funciona. Es esta la magia de saber programación primero que un lenguaje específico.
El proceso de debugging
El muy conocido debugging o depuración es una actividad que realizamos cuando estamos probando un código en un punto muy específico del cual necesitamos ver un resultado o una salida en consola para conocer específicamente qué puede estar pasando en un punto crítico de nuestra aplicación.
Para realizar esta inspección, utilizamos normalmente alguna instrucción que nos muestre algo que definamos y dependiendo del lenguaje que utilicemos contamos diferentes herramientas.
En JavaScript…
En JavaScript existe el muy popular console.log() que dentro de sus paréntesis recibe el valor que va a mostrar justo cuando la ejecución de la aplicación llegue a donde está ubicado y mostrará este valor en consola. Sin embargo, no es el único método pues también se puede utilizar debugger para detener la ejecución de la aplicación justo en el punto donde lo hayamos ubicado.
console.log(“Quiero ver esto enconsola”)
En PHP…
Con PHP hay varias formas y la que utilices dependerá del contexto en el cual quieres ver este mensaje o valor de referencia para la depuración además del tipo de dato que devolverá.
Se puede hacer uso de “echo” que es la forma más clásica de mostrar cadenas de texto en PHP. Sin embargo, no será útil si deseas mostrar valores de tipo objeto o algo más complejo, en este caso puedes usar var_dump para conocer el tipo de dato que devuelves o print_r para imprimir lo que sea que traiga.
echo “Quiero ver esto cuando el código pase por aquí”;
var_dump($soyunavariable);
print_r([“Hola”]);
Python, por supuesto, también ofrece herramientas para hacer esta actividad de depuración, como es el uso de la librería pdb, con la cual se pueden crear breakpoints sobre los cuales hacer pausas en la ejecución y probar esas fracciones de manera fácil y controlada.
Puedes igualmente usar el clásico “retorno de mensajes”, pero también tienes una herramienta que lo puede hacer por ti.
Ventajas y Desventajas
La resolución de problemas complejos se facilita considerablemente si se procede dividiendo en problemas más pequeños (subproblemas). La solución de estos subproblemas se realiza con subalgoritmos.
El uso de subalgoritmos permite al programador desarrollar programas de problemas complejos utilizando el método descendente introducido en los módulos anteriores.
Los subalgoritmos (subprogramas) pueden ser de dos tipos: funciones y procedimientos o subrutinas. Los subalgoritmos son unidades de programa o módulos que están diseñados para ejecutar alguna tarea específica. Estas funciones y procedimientos se escriben solamente una vez, pero pueden ser referenciados en diferentes puntos de un programa de modo que se puede evitar la duplicación innecesaria del código.
El uso de unidades de programas en el estilo de programación modular son independientes; el programador puede escribir cada módulo y verificarlo sin preocuparse de los detalles de otros módulos.
Esto facilita considerablemente la localización de un error cuando se produce. Los programas desarrollados de este modo son normalmente también más fáciles de comprender, ya que la estructura de cada unidad de programa puede ser estudiada independientemente de las otras unidades de programa.
Entonces, para solucionar un problema complejo hay que dividirlo en subproblemas -problemas más sencillos- y a continuación dividir estos subproblemas en otros más simples hasta que los problemas más pequeños sean fáciles de resolver. Esta técnica de dividir el problema principal en subproblemas se suele denominar «divide y vencerás» (Divide and Conquer).
Top-dow design
Este método de diseñar la solución de un problema principal obteniendo las soluciones de sus subproblemas se conoce como diseño descendente (top-dow design). Se denomina descendente ya que se inicia en la parte superior con un problema general y el diseño específico de las soluciones de los subproblemas. Normalmente las partes en que se divide un programa deben poder desarrollarse independientemente entre sí.
Las soluciones de un diseño descendente pueden implementarse fácilmente en lenguajes de programas de alto nivel. Estas partes independientes se denominan subprogramas o subalgoritmos si se emplean desde el concepto algorítmico.
Consideremos el problema del cálculo de la superficie (área) de un rectángulo. Este problema se puede dividir en tres subproblemas.
- Subproblema 1: entrada de datos de altura y base. Subproblema 2: cálculo de la superficie.
- Subproblema 3: salida de resultados.
El algoritmo correspondiente que resuelve los tres subproblemas es:
………………..
leer datos (altura, base) //entrada de datos}
área ¬ base * altura //cálculo de la superficie escribir (base, altura, área) //salida de resultados
……………………
El problema principal
El problema principal se soluciona por el correspondiente programa o algoritmo principal -también denominado controlador o conductor (driver)- y la solución de los subproblemas mediante subprogramas, conocidos como procedimientos (subrutinas) o funciones. Los subprogramas cuando se trata en lenguaje algorítmico se denominan también subalgoritmos.
Un subprograma puede realizar las mismas acciones que un programa: 1) aceptar datos, 2) realizar algunos cálculos y 3) devolver resultados. Un subprograma, sin embargo, se utiliza por el programa para un propósito específico. El subprograma recibe datos desde el programa y le devuelve resultados. Haciendo un símil con una oficina, el problema es como el jefe que da instrucciones a sus subordinados -subprogramas-; cuando la tarea se termina, el subordinado devuelve sus resultados al jefe.
Se dice que el programa principal llama o invoca al subprograma. El subprograma ejecuta una tarea, a continuación, devuelve el control al programa. Esto puede suceder en diferentes lugares del programa. Cada vez que el subprograma es llamado, el control retorna al lugar de donde fue hecha la llamada. Un subprograma puede llamar a su vez sus propios subprogramas. Existen -como ya se ha comentado- dos tipos importantes de subprogramas: funciones y procedimientos o subrutinas.
Ejemplos de utilidad.
Implementar subalgoritmos, tiene más ventajas que desventajas. Entre las ventajas se encuentran:
- Una vez implementado un subalgoritmo, si este tuviese que modificarse en algún aspecto (cambiar el tipo de variable de entero pasar a real, mostrar por pantalla un valor de cálculo intermedio que antes no se hacía, cambiar el tamaño de un arreglo, etc.) es más fácil y rápido efectuar el cambio en el subalgoritmo, que andar buscando en el algoritmo general las partes de código que implementan la tarea y que necesitan cambiarse para adaptar el algoritmo original a los nuevos requerimientos.
- Se pueden construir librerías propias, con los subalgoritmos que se desarrollen.
- Desarrollado un algoritmo, cualquier ajuste que deba hacerse, es más fácil hacerlo sobre un subalgoritmo que sobre el algoritmo.
- Es menos laborioso, el testeo y búsqueda de error de un algoritmo que utilizó subalgoritmos para codificar tareas específicas, que uno que no utilizó subalgoritmos.
- Los algoritmos modularizados (subalgoritmos), se pueden ir desarrollando paulatinamente por tarea, se pueden probar, y finalmente hacer el ensamble de todos los módulos en un solo programa.
- Es más sencillo trabajar en ambientes colaborativos, donde distintos programadores desarrollan los subalgoritmos y luego se unen los módulos en un programa.
Entre las desventajas, se encuentran:
- En general los subalgoritmos utilizan más memoria de sistema, porque los parámetros (información que se pasa desde el algoritmo a los subalgoritmos) deben guardarse en alguna parte de memoria.
- Las variables locales al subalgoritmo, y los parámetros por valor se guardan en una zona de memoria de sistema llamada Pila, esta pila esta acotada en capacidad, por lo tanto hay que tener cuidado de que no se rebalse. Muchos compiladores de lenguajes reales no avisan cuando se está dando esta situación con lo cual se pierde información y nadie se da cuenta.
- Es más complejo realizar un programa modular que uno que no lo sea.
Por ejemplo, se podrían pensar en situaciones como las siguientes:
- Desarrollar subalgoritmos que reciban como parámetro un mensaje a desplegar por pantalla. Cada vez que se necesite mostrar algo por pantalla se invoca el subalgoritmo pasándole los parámetros adecuados.
- Desarrollar un subalgoritmo que permita buscar algún dato entre una colección de elementos del mismo tipo. Los parámetros de este subalgoritmos, serían el arreglo, su dimensión, la clave de búsqueda.
- Desarrollar un subalgoritmo de ordenamiento, los parámetros de este código serían el arreglo, su tamaño, la forma de ordenamiento ( de mayor a menor o viceversa)
- Subalgoritmos que permitan cargar arreglos, sus parámetros serían: el arreglo, el tamaño, y eventualmente alguna otra variable para determinar si se aceptan valores positivos o negativos o alguna condición en especial, de manera tal de hacer el algoritmo lo más general que se pueda.
Función
Tipo función nombre_de_la_función (modo tipo: nombre-variable;…..) var:
// se declaran las variables y sus tipos inicio
// se codifica la tarea
fin-función
La definición
La definición de una función comienza con la palabra reservada función a continuación se coloca el tipo de dato que va a devolver la función (entero, real, etc.), a continuación, se coloca el nombre o identificador de la función, tratando de darle un identificador que represente la tarea que codifica el subalgoritmo, posteriormente, entre paréntesis se coloca la lista de parámetros indicando: modo, tipo y nombre o identificador de la variable.
Los parámetros se separan con punto y como. No hay limitación a la cantidad de parámetros que pueden indicarse entre paréntesis. En los lenguajes de programación suelen usarse hasta 4 o 5 parámetros, si se necesitasen más que esa cantidad, entonces, es posible que dicho subalgoritmo pueda descomponerse en dos o más subalgoritmos.
Modo: hay tres posibilidades: E (entrada), S (salida) y E/S (entrada y salida)
- El modo entrada (E), implica que el contenido de la variable solo puede ser leído o usado dentro del subalgoritmo, pero ese valor no puede ser modificado desde dentro del subalgoritmo.
- El modo salida (S), implica que el contenido de la variable no puede ser leído o usado dentro del subalgoritmo, pero si se puede generar un resultado o valor dentro del subalgoritmo y asignárselo a este parámetro de salida, y desde el algoritmo principal se puede hacer uso de ese valor.
- El modo entrada/salida (E/S), implica que el contenido de la variable puede ser leído o usado dentro del subalgoritmo, pero ese valor no puede ser modificado desde dentro del subalgoritmo.
Tipo: es cualquier tipo válido en pseudocódigo, por ejemplo, real, entero, lógico, cadena, carácter o registro (se verá más adelante).
La invocación
La invocación se hace en el programa principal o algoritmo para lo cual se escribe: el nombre de la función (sin la palabra reservada función ni el tipo de retorno de la función, a continuación, y entre paréntesis la lista de parámetros (actuales) sin tipo ni modo, separados por coma., y la definición del subalgoritmo se coloca después de la línea de fin para el algoritmo principal.
Por ejemplo, implementar un programa que permita mediante una función sumar dos enteros pasados por parámetros desde el programa principal. Los sumandos serán tomados desde el teclado. El resultado de la suma se mostrará desde el algoritmo principal.
Algoritmo CalcularSuma Var:
entero: a, b, resul //declaración de variables Inicio:
escribir („ingresar dos números enteros‟) // ingreso de datos desde el teclado
leer (a,b ) // se introducen por teclado y se guardan en las posiciones de memoria
//llamadas a y b
Resul ß suma (a, b) // se invoca la función Mostrar („la suma es: „, resul)
fin // fin del algoritmo
entero función suma ( E entero: a,b) // definición del procedimiento var:
entero: sum inicio
sum ⭠ a + b
devolver sum
fin-función
EXPLICACIÓN:
- La función recibe dos parámetros de modo entrada, esto quiere decir que dentro de la función solo se podrá leer su contenido, pero no se podrá modificar el contenido de las variables a y b.
- Dentro de la función se declara una variable entera sum, local, sobre la que se guarda la suma de a y b.
- La función devuelve a través de la línea devolver, un valor, y solo un valor (objeto) al programa principal. El resultado de la tarea solicitada se muestra por pantalla en el algoritmo principal.
Ejercicios de aplicación.
Ejemplo 1:
Implementar un programa que mediante un procedimiento se permita mostrar por pantalla solamente las letras ingresadas por teclado. Realizar 20 ingresos.
Algoritmo MuestraMayúsculas Var
caracter: dato entero: cant
inicio cant ⭠ 0 repetir
leer ( dato)
llamar_a determina_mayus ( dato) cant ßcant +1
hasta-que cant > = 20 fin
procedimiento determina_mayus ( E carácter: dato)
inicio:
si (dato > = „A‟ y dato < = „Z‟) o (dato > = „a‟ y dato < = „z‟) entonces mostrar ( dato)
fin-si
fin-procedimiento
EXPLICACIÓN: El procedimiento recibe un parámetro de entrada de tipo carácter. Dentro del procedimiento se determina si el carácter ingresado por teclado corresponde a una letra, en tal caso lo muestra por pantalla.
Ejemplo 2:
Realizar 50 ingresos de caracteres por teclado. Una función determinará si el carácter ingresado, es una minúscula, la minúscula se muestra desde el programa principal, si no lo es otra función transformará el carácter la letra es mayúscula convertirla a minúscula para luego mostrarla por pantalla.
Una codificación puede ser:
Algoritmo MuestraMinúsculas Var
caracter: dato entero: cont
inicio
cont ⭠ 0 repetir
leer ( dato)
si determina_minus ( dato) entonces
mostrar ( dato)
fin-si
si determina_mayus (dato) entonces
mostrar (dato)
fin-si
cont ⭠ cont +1
hasta-que cant > = 50 fin
lógico función determina_minus ( E carácter: dato) var:
lógico: prueba inicio
prueba ⭠ verdadero
si (dato > = „a‟ y dato < = „z‟) entonces
devolver prueba
si_no
prueba ⭠ falso devolver prueba
fin-si
fin_funcion
lógico función determina_mayus ( E/S carácter: dato) var
lógico: prueba inicio
prueba ⭠ verdadero
si (dato > = „A‟ y dato < = „Z‟) entonces
dato ⭠ dato + 32
si_no
prueba ⭠ falso
fin-si
devolver prueba
fin_funcion
Ejemplo 3:
Ingresar 3 números desde el teclado, los números representan dimensiones de los lados de un triángulo. Un procedimiento mostrará por pantalla un mensaje indicando si el triángulo es equilátero (3 lados iguales), isósceles (dos lados iguales) o escaleno (3 lados distintos). El programa termina cuando se introduzca la palabra salir.
Una codificación puede ser:
Algoritmo Clasifica_triangulos Var
Real: lado1, lado2, lado3 Cadena: clave
inicio
clave ⭠ XXX
mientras no (clave = „salir‟) hacer
leer ( lado1, lado2, lado3)
llamar_a clasifica_triangulo ( lado1, lado2, lado3)
mostrar ( „para terminar introduzca la palabra salir en minúscula‟) leer( clave)
fin-mientras
fin
procedimiento clasifica_triangulo ( E real: lado1, lado2, lado3)
inicio
si (lado1 =lado2) y (lado2 = lado3) entonces
mostrar ( „equilátero‟)
si-no
si ( lado1 < > lado2) y ( lado2 < > lado3) entonces
mostrar („ escaleno‟)
si-no
mostrar ( „isósceles‟)
fin-si
fin-si
fin_procedimiento
Ejercicio 4:
Se dispone de una lista de N números ingresados por teclado, mediante un procedimiento se desea determinar y mostrar por pantalla el valor del número mayor y del menor que se hayan ingresado al mismo tiempo.
Una posible codificación podría ser:
Algoritmo DeterminaMayor_Menor Var
entero: N
inicio leer ( N)
llamar_a det_May_men ( N) fin
procedimiento det_May_men ( E entero: N) var
real: dato, mayor, menor entero: cant
inicio
leer ( dato) mayor ⭠ dato menor ⭠ dato
desde cant ⭠ 2 hasta N hacer
leer ( dato)
si mayor < dato entonces
mayor ⭠ dato
fin-si
si menor > dato entonces
menor ⭠ dato
fin-si
fin-desde
mostrar ( mayor, menor)
fin_procedimiento
Ejercicio 5:
Se leen desde el teclado 100 números, mediante un procedimiento se desea determinar y mostrar por pantalla la media de los números positivos y la media de los números negativos que se hubiesen ingresado, al mismo tiempo.
Una posible codificación podría ser:
Algoritmo DeterminaMedia_Positivos_Negativos Inicio
Llamar_a det_media ( ) fin
procedimiento det_media ( ) var
entero: cantP, cantN, total real: dato, sumaPos, sumaNeg
inicio
cantP ⭠ 0
cantN ⭠ 0
sumaPos ⭠ 0
sumaNeg ⭠ 0
desde total ß 1 hasta 100 hacer leer ( dato)
si dato > 0 entonces cantP ⭠ cantP+1
sumaPos ⭠ sumaPos + dato
fin-si
si dato < 0 entonces
sumaNeg ⭠ sumaNeg + dato cantN ⭠ cantN + 1
fin-si
fin-desde
mostrar ( „la media de los valores negativos es: „,sumaNeg/cantN)
mostrar ( „la media de los valores positivos es:‟, sumaPos/cantN)
fin_procedimiento
EXPLICACION: Lo interesante de este ejercicio es presentar una lista de parámetros vacía. Este procedimiento, no recibe parámetros entonces los paréntesis se colocan vacios en su interior.
El procedimiento declara todas las variables que necesita para cumplir su tarea como locales al método.
Observar también que el algoritmo principal no requiere declarar variables.
Ejercicio 6:
Se desea implementar un programa que permita ingresar dos número enteros positivos: X y N. Una función deberá calcular la N-ésima potencia de X. El resultado se muestra desde el programa principal.
Una posible codificación podría ser:
Algoritmo CalculaProtencia Var:
entero: X, N real: pot
inicio: pot ⭠ 1 repetir
mostrar („ ingresar la base y el exponente de la potencia a calcular)
leer ( X, N)
hasta-que (X>=1 y N > -1)
pot ⭠ calcula_Po ( X, N)
mostrar ( ´La potencia es :‟ , pot)
fin
real función calcula_Po ( E entero: X ; E /S entero: N) var
real: pot inicio
pot ⭠ 1
mientras N > 0 hacer pot ⭠ pot * X
N ⭠ N -1
fin-mientras devolver pot
fin_función
Ejercicio 7:
Mediante una función se desea calcular el factorial de un número entero ingresado por teclado.
Algoritmo CalculaFactorial Var:
entero: num, cont real: fact
inicio:
mostrar ( „ingresar un número a calcular su factorial‟) // no se realiza la validación ingresar ( num)
fact ⭠ cal_fac ( num)
mostrar („El factorial de: „,num, „es:‟ fact)
fin
real función cal_fac ( E entero: num) var
real: fa
entero: cont inicio
si num = 0 o num =1 entonces
fa ⭠ 1
si-no
fa ⭠ num cont ß num-1 } repetir
fa ⭠ fa * cont cont ⭠ cont -1
hasta-que cont < =1
fin-si
devolver fa
fin_función
Ejemplo 8:
Se desea implementar un programa que permita ingresar solo números enteros positivos, el programa mostrará por pantalla por medio de una función, el promedio de los 10 números enteros positivos ingresados desde el teclado.
Una posible codificación podría ser:
Algoritmo CalculaPromedio var
real: prom inicio
prom ⭠ cal_pro ( )
mostrar ( „el promedio es: „, prom)
fin
real función cal_pro ( ) var:
entero: cont, num, suma real: prom
inicio: cont ⭠ 0
suma ⭠ 0 repetir
cont ⭠ cont + 1 repetir
mostrar ( ´ingresar número entero mayor a cero´)
leer (num)
hasta-que num > = 0 suma ⭠ suma + num
hasta-que cont > = 10 prom ⭠ suma / 10
tipo
array [1..10] de entero: dato
var
dato: origen inicio
carga_arreglo (origen) muestra_pos_pares (origen)
fin
procedimiento carga_arreglo ( S dato: origen) var
entero: i inicio
escribir („ ingresar los 10 elementos del arreglo‟)
desde i ⭠ 1 hasta 10 hacer //se toman los valores del teclado
leer ( origen [ i ])
fin-desde
fin_procedimiento
procedimiento muestra_pos_pares ( E dato: origen) var
entero: i inicio
escribir („ Se muestran los elementos de las posiciones pares del arreglo lineal‟)
desde i ⭠ 2 hasta 10 inc 2 hacer // se muestran por pantalla datos del arreglo lineal
escribir (origen [i ])
fin-desde
fin_procedimiento
Ejemplo 9:
Se desea crear un algoritmo en pseudocódigo que permita ingresar 20 valores enteros por teclado, y los guarde en un arreglo unidimensional, mediante un procedimiento. Luego recorrerlo y mostrar los valores positivos que sean pares por pantalla, mediante otro procedimiento.
Algoritmo Muestra_positivos_par
tipo
array [1..20] de entero : dato
var
dato : vec inicio
carga_datos ( vec) busca_posit_pares ( vec)
fin
procedimiento carga_datos ( S dato: vec) var
entero: índice inicio
escribir („ ingresar los 20 elementos del arreglo‟)
desde índice ⭠ 1 hasta 20 hacer //se toman los valores del teclado
leer ( vec [índice])
fin-desde fin_procedimento
procedimiento busca_posit_pares ( E dato: vec) var
entero: índice inicio
escribir („ Se muestran los elementos positivos pares‟)
desde índice ⭠ 1 hasta 20 hacer // se recorre los datos del arreglo lineal si (vec [índice] > 0) y (vec [índice] mod 2 = 0) entonces
mostrar (vec[índice]) fin-si
fin-desde fin_procedimiento
Ejemplo 10:
Se desea crear un algoritmo en pseudocódigo que permita leer una tabla con temperaturas. La tabla tiene 5 filas correspondientes a 5 momentos distintos del día, y tiene 3 columnas correspondientes a 3 días distintos, esta tabla se carga mediente un procedimiento. Se desea detectar la temperatura mínima y la máxima de la tabla completa, mediante otro procedimiento. Mostrar los valores hallados por pantalla, desde el programa principal.
Algoritmo Muestra_mín_máx
tipo
array [1..5, 1..3] de real : matriz
var
matriz : mat real: men, may
inicio
men ⭠ 0
may ⭠ 0 carga_tabla ( mat)
busca_Men_May ( mat, men, may)
mostrar („la temperatura mínima es: „, men, „ y la temperatura máxima es:‟, may)
Problemas Propuestos
1) Diseñe un algoritmo que llene una matriz de 10 * 10 y determine:
A) El numero mayor almacenado en la matriz
B) El numero mayor almacenado en cada renglón
C) La columna que tuvo la máxima suma
D) El renglón que tuvo la máxima suma
Diseña una función para cada inciso.
2) Diseñe un algoritmo que lea un numero y mediante una función regrese el valor de 1 si el numero es positivo y -1 si es negativo)
No te detengas, sigue avanzando
Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera!
Python Practicando. Desde 0 hasta Desarrollador en Python
Aprende Python, donde iniciamos desde 0, sin conocimientos previos hasta desarrollar aplicaciones con mucha practica!
Calificación: 4,6 de 5 (20.833 calificaciones) 249.493 estudiantes Creado por Alvaro Chirou • 1.800.000+ Enrollments Worldwide, Walter Coto || +450,000 Estudiantes Español.
Lo que aprenderás
- Ejercitar la lógica de programación
- Comprender cómo la vida cotidiana puede ser fácilitada o simulada con código
- Aprender programación desde cero
- Usar Visual Studio Code como Editor de Código
- Conocer y aprender el lenguaje de programación Python
- Ser un programador desde cero, sin conocimiento en otro lenguaje o con algo previo
- Mejorar las habilidades de programación, mejorar procesos y fácilitar la comprensión de código
- Preparar un entorno dónde programar en Python
- Operaciones aritméticas y jerarquía de Python
- Manejo de cadenas en Python
- Digitar datos por teclado con Python
- Mostrar Datos por Pantalla al usuario en Python
- Operadores Relacionales de Python
- Operadores Lógicos de Python
- Condicionales en Python
- Estructuras de Datos: Listas, Tuplas y Diccionarios
- Iteraciones y bucles repetitivos de Python
- Segmentar Código y hacerlo más eficaz con las Funciones en Python
- Gestionar posibles errores que puedan dar tus programas
- Programación Orientada a Objetos
- HTML y CSS
- Selenium Web Driver con Python
- Ejercitar todo lo Aprendido con Ejercicios
Este curso incluye:
- 25,5 horas de vídeo bajo demanda
- 21 artículos
- 148 recursos descargables
- Acceso en dispositivos móviles y TV
- Certificado de finalización
Python es Hoy uno de los lenguajes más utilizados por Excelencia.
Esto se debe por su simpleza al momento de Desarrollar aplicaciones.
Por su capacidad de procesamiento a altas velocidades con grandes volúmenes de información.
Es un increíble lenguaje con el cual si no sabes programar, podrás aprender.
Y si ya sabes desarrollar, te aconsejo aprenderlo ya que en el mercado cada vez se solicitan más desarrolladores en Python.
Aspirar al trabajo que desean, o mejorar sus ingresos con un aumento de salario.
Python se utiliza para muchisimas cosas como:
- Machine Learning
- Data Science
- Inteligencia Artificial.
- Y mucho más!
En este curso te acompañare en el proceso por el cual aprenderás las bases del lenguaje, para luego determinar qué camino quieres seguir.
Te invito que me acompañes a conocer este Gran Lenguaje!
Aprende con nuestros más de 100 cursos que tenemos disponibles para vos
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.