{"id":7927,"date":"2015-06-15T09:00:55","date_gmt":"2015-06-15T14:00:55","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=7927"},"modified":"2026-04-05T15:36:12","modified_gmt":"2026-04-05T20:36:12","slug":"funciones-en-programacion","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-u05\/funciones-en-programacion\/","title":{"rendered":"5.1 Funciones  - Reusar algoritmos"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"funciones\">1. Funciones en Programaci\u00f3n<\/h2>\n\n\n\n<p>Cuando un algoritmo se usa de forma frecuente, en lugar de repetir las instrucciones cada vez que se necesitan, se pueden resumir y extraer en un bloque o secci\u00f3n dedicada independiente del resto denominada <strong>funci\u00f3n<\/strong>. <\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"368\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/06\/funcion_def01.png\" alt=\"funciones en programaci\u00f3n estructura\" class=\"wp-image-16088\" \/><\/figure>\n\n\n\n<p>Si cada algoritmo sigue la \"estructura b\u00e1sica\", la <strong>funci\u00f3n<\/strong> es un bloque de procedimiento que se podr\u00e1 reutilizar en cualquier otro problema y trabaja de forma \"modular\".<\/p>\n\n\n\n<p>El bloque o <code>funci\u00f3n()<\/code> se identifica con un nombre, que ser\u00e1 el nombre de la <strong>funci\u00f3n<\/strong><br>y usa las variables de entrada (<strong>a<\/strong>) y variable de salida (<strong>z<\/strong>).<\/p>\n\n\n\n<p>En programaci\u00f3n estructurada, al cambiarse los bloques de entrada (input) y los bloques de salida (print), las instrucciones de entrada y salida se las mantiene dentro del programa principal que hace la llamada a las funciones.<\/p>\n\n\n\n<p>La definici\u00f3n de una funci\u00f3n en Python se escribe como:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\ndef funcion(entrada):\n    # intrucciones\n    # detalladas de la funcion\n    return(respuesta)\n<\/pre><\/div>\n\n\n<p>Definida la <strong>funci\u00f3n<\/strong> se puede usar una o varias veces en un programa principal usando el nombre de la funci\u00f3n junto a la variable de entrada.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"310\" height=\"481\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/06\/funcion_def02.png\" alt=\"funciones en programaci\u00f3n dentro de algoritmo\" class=\"wp-image-16089\" \/><\/figure>\n\n\n\n<p>El <strong>resultado<\/strong> de la funci\u00f3n se asigna a una variable que es usada dentro del programa principal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>resultado = funcion(entrada)<\/code><\/pre>\n\n\n\n<p>Se pueden hacer tantas llamadas a la funci\u00f3n como sean necesarias.<\/p>\n\n\n\n<p>Las funciones se pueden realizar usando variables tipo escalar (enteras, reales), vectoriales o matriciales, tipo texto o cadena de caracteres, etc.<\/p>\n\n\n\n<p>Las variables escalares se declaran como variables internas a la funci\u00f3n, mientras que las variables vectoriales o matriciales tienen un alcance global.<\/p>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Rodr\u00edguez 6.1 p155, Van Rossum p19<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Funciones en programaci\u00f3n, Reusar algoritmos en Python\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/1P4ZQVr5hjg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"variables\">2. Variables dentro de una funci\u00f3n<\/h2>\n\n\n\n<p>Las variables dentro de una funci\u00f3n se tratan como variables de un algoritmo aparte.Por lo que los nombres de las variables internas, no afectan a las variables del algoritmo principal.<\/p>\n\n\n\n<p>Exceptuando el caso de Arreglos y listas que el paso es por \"referencia\" (o \u00e1lias), pues se considera que si las matrices y vectores del problema son de gran tama\u00f1o, crear copias de cada una de ellas dentro de cada llamada a la funci\u00f3n ocupa memoria que podr\u00eda ser usada para otras tareas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"estructura\">3. Estructura del Algoritmo con funciones creadas por usuario<\/h2>\n\n\n\n<p>Cuando el algoritmo tiene funciones b\u00e1sicas creadas por usted, y son relativamente \"peque\u00f1as\", se incluyen dentro del bloque de inicio.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# INICIO\n# Referencia del problema\nimport numpy as np\nimport random as np\n# funciones creadas por usuario\ndef miprimerafuncion(variableentrada,otravariable):\n    # algunas instrucciones\n    return(respuesta)\n\n# INGRESO\na = int(input(' un numero entero'))\nb = float(input(' un numero real'))\n\n# PROCEDIMIENTO\nrespuesta =  miprimerafuncion(a,b)\n\n# SALIDA\nprint('alguna respuesta: ',respuesta)\n<\/pre><\/div>\n\n\n<p>Si las funciones son varias o siempre usa esas funciones las puede incluir en un archivo .py y llamarlas desde el archivo con el algoritmo principal. Detalles en el siguiente tema publicado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">4. Ejercicio - Buscar producto m\u00e1s econ\u00f3mico<\/h2>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"610\" height=\"248\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/06\/mercadoviveres01.png\" alt=\"mercado v\u00edveres kioskos\" class=\"wp-image-16091\" \/><\/figure>\n\n\n\n<p>De compras en el mercado de v\u00edveres, se puede consultar en precio en varios puestos y decidir d\u00f3nde comprar al final de un recorrido. Si el \u00fanico factor a considerar es el precio, desde luego que compraremos en el local mas barato.<\/p>\n\n\n\n<p>Se obtiene la lista de precios por vendedor de 1 Kg de manzanas y se requiere determinar el local con el precio m\u00e1s barato y en qu\u00e9 posici\u00f3n se encuentra. Considere usar el \u00edndice <strong>local<\/strong> empezando en cero<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>local<\/td><td>0<\/td><td>1<\/td><td>2<\/td><td>3<\/td><\/tr><tr><td>precio<\/td><td>2.25<\/td><td>3.00<\/td><td>2.10<\/td><td>2.50<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>precio = &#091;2.25,3,2.10,2.50]<\/code><\/pre>\n\n\n\n<p>Al inicio y sin mas datos, se supone que el mejor precio lo ofrece el primer vendedor.&nbsp; Siendo el tama\u00f1o del vector <strong>n<\/strong>=4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n = len(precio)\ndonde = 0<\/code><\/pre>\n\n\n\n<p>Sin embargo la decisi\u00f3n se debe tomar considerando los dem\u00e1s locales, por lo que se compara su <em><strong>precio<\/strong><\/em> con los dem\u00e1s. La comparaci\u00f3n empieza con el siguiente en la lista.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local = donde + 1 \nwhile local&lt;n:\n    if (precio&#091;local]&lt;precio&#091;donde]):\n        donde = local\n    local = local + 1<\/code><\/pre>\n\n\n\n<p>\u00bfCu\u00e1nto? es el precio menor, se obtiene al revisar el valor del vector en la posici\u00f3n de \u00bf<strong>donde<\/strong>?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cuanto = precio&#091;donde]<\/code><\/pre>\n\n\n\n<p><em><strong>Tarea<\/strong><\/em>: Algoritmo del mayor. \u00bfQu\u00e9 pasar\u00eda si alguien nos pregunta d\u00f3nde lo venden m\u00e1s caro? Analice los cambios en el algoritmo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">5. Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# algoritmo del menor\n\n# INGRESO:\nprecio = &#x5B;2.25,3,2.10,2.50]\n\n# PROCEDIMIENTO\nn = len(precio)\ndonde = 0\nlocal = donde + 1 \nwhile local&lt;n:\n    if (precio&#x5B;local]&lt;precio&#x5B;donde]):\n        donde = local\n    local = local + 1\n\ncuanto = precio&#x5B;donde]\n\n# SALIDA\nprint('El menor precio:')\nprint('donde:',donde)\nprint('cuanto:',cuanto)\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"funcion\">6. Funci\u00f3n en Python<\/h2>\n\n\n\n<p>El bloque de procedimiento&nbsp; se convierte a una funci\u00f3n denominada menor, con variable de entrada <strong>vector<\/strong> y variable de salida <strong>donde<\/strong>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# algoritmo del menor\ndef menor_donde(vector):\n    n = len(vector)\n    donde = 0\n    i = donde + 1 \n    while i&lt;n:\n        if (vector&#x5B;i]&lt;vector&#x5B;donde]):\n            donde = i\n        i = i + 1\n    return(donde)\n\n# INGRESO:\nprecio = &#x5B;2.25,3,2.10,2.50]\n\n# PROCEDIMIENTO\ndonde = menor_donde(precio)\ncuanto = precio&#x5B;donde]\n\n# SALIDA\nprint('El menor precio:')\nprint('donde:',donde)\nprint('cuanto:',cuanto)\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicios-de-mayor-y-menor\">7. Ejercicios de mayor y menor<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-1eva10\/1eva2003ti_t4-lado-mayor-de-un-poligono\/\" data-type=\"post\" data-id=\"3085\">1Eva2003TI_T4 Lado mayor de un pol\u00edgono<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-1eva10\/1eva2008tii_t3-tiempos-de-recorrido-en-metrovia\/\" data-type=\"post\" data-id=\"3183\">1Eva2008TII_T3 Tiempos de recorrido en metrov\u00eda<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-1eva10\/1eva2007ti_t3-eleccion-de-diputados-provinciales\/\" data-type=\"post\" data-id=\"3162\">1Eva2007TI_T3 Elecci\u00f3n de diputados provinciales<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva10\/2eva2003ti_t1-funciones-promedio-mayor-y-menor\/\" data-type=\"post\" data-id=\"2853\">2Eva2003TI_T1 Funciones promedio, mayor y menor<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva10\/3eva2008tii_t3-funciones-mas-caro-y-mas-barato\/\" data-type=\"post\" data-id=\"2581\">3Eva2008TII_T3 Funciones m\u00e1s caro y m\u00e1s barato<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#funciones\">Funciones<\/a> <\/p>\n\n\n\n<p><a href=\"#variables\">variables internas<\/a><\/p>\n\n\n\n<p><a href=\"#estructura\">Estructura<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Funciones variables internas Estructura Ejercicio Algoritmo funci\u00f3n 1. Funciones en Programaci\u00f3n Cuando un algoritmo se usa de forma frecuente, en lugar de repetir las instrucciones cada vez que se necesitan, se pueden resumir y extraer en un bloque o secci\u00f3n dedicada independiente del resto denominada funci\u00f3n. Si cada algoritmo sigue la \"estructura b\u00e1sica\", la funci\u00f3n [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-unidades","format":"standard","meta":{"footnotes":""},"categories":[106],"tags":[],"class_list":["post-7927","post","type-post","status-publish","format-standard","hentry","category-fp-u05"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=7927"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7927\/revisions"}],"predecessor-version":[{"id":23469,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7927\/revisions\/23469"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=7927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=7927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=7927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}