Está en la página 1de 32

Módulo 2. ¿Cómo nos ayudan los algoritmos?

¿Cuáles son las leyes básicas de los algoritmos? ¿Qué elementos los componen?
Habiéndonos introducido en el módulo anterior en las bases de la programación, a
continuación conoceremos sobre la entrada, el proceso y la salida de un algoritmo, como así
también todas las otras nociones que nos permitirán resolver problemas en su ejecución.

Video de inmersión

Unidad 1. ¿Cómo nos ayudan los algoritmos?

Cierre

Referencias

QUESTION B AN KS
Lección 1 de 4

Video de inmersión

Verify to continue
We detected a high number of errors from your
connection. To continue, please confirm that
you’re a human (and not a spambot).

I'm not a robot


reCAPTCHA
Privacy - Terms
Lección 2 de 4

Unidad 1. ¿Cómo nos ayudan los algoritmos?

En el módulo anterior llevamos a cabo una introducción a la programación: qué es programar, qué es el
lenguaje de programación –los lenguajes, mejor dicho– y cómo y para qué usarlos. Vimos también que la
base de la programación es la creación de algoritmos, a partir de los cuales brindamos instrucciones a
las computadoras y, de ese modo, programamos.

Figura 1: Algoritmo

Fuente: [Imagen sin título sobre algoritmo]. (s. f.). Recuperado de https://goo.gl/TiyQvC

Noción de algoritmos
 Un algoritmo es un conjunto finito de reglas precisas que resuelven un problema
en una cantidad finita de tiempo.

Los algoritmos, según su definición, son una serie de pasos que permiten obtener la solución a un
problema. En programación, mediante el lenguaje algorítmico se resuelven problemas y se alcanzan
objetivos. Se trata de soluciones planteadas en forma de pasos por seguir ordenados de forma teórica,
como un manual de instrucciones.

Por ejemplo, en el caso de que nos encontremos en casa con un foquito de luz fundido en una lámpara,
un posible algoritmo sería:

1. Comprobar si hay foquitos de repuesto.

2. En el caso de que haya, sustituir el foquito anterior por uno nuevo.

3. Si no hay foquitos de repuesto, salir a comprar uno nuevo a la tienda, volver y sustituir el viejo por
el nuevo.

Los algoritmos son la base de la programación de computadoras u ordenadores, ya que los programas de
ordenador se basan, justamente, en algoritmos escritos en un código especial que es entendible por
este.

Una dificultad que se les presenta a los programadores al diseñar algoritmos es que no se puede escribir
cualquier cosa ni se puede dejar lugar a la ambigüedad: el lenguaje utilizado no debe dejar lugar a la
duda, debe contemplar todas las posibilidades.

En realidad, si queremos diseñar algoritmos para el proceso de reemplazar un foquito quemado por uno
nuevo, los pasos deben ser mucho más detallados que en el ejemplo anterior:

(1) Comprobar si hay foquitos de repuesto:


[1.1] Abrir el cajón de los foquitos.
[1.2] Observar si hay foquitos.

(2) Si hay foquitos:


[2.1] Agarrar una silla.
[2.2] Acomodar la silla bajo la lámpara.
[2.3] Agarrar el foquito.
[2.4] Subirse a la silla.
[2.5] Sacar el foquito quemado.
[2.6] Poner el foquito nuevo en la lámpara.
[2.7] Bajar.

(3) Si no hay foquitos:

[3.1] Conseguir (comprar un foquito).


[3.2] Poner el foquito nuevo en la lámpara.
[3.2.1] Agarrar una silla.
[3.2.2] Acomodar la silla bajo la lámpara.
[3.2.3] Agarrar el foquito.
[3.2.4] Subirse a la silla.
[3.2.5] Sacar el foquito quemado.
[3.2.6] Poner el foquito nuevo en la lámpara.
[3.2.7] Bajar.

Como se observa en el ejemplo anterior, en un algoritmo las instrucciones pueden ser más largas de lo
que parecen, por lo que hay que determinar cuáles se pueden utilizar y cuáles no. En el caso de los
algoritmos preparados para la computadora, se pueden utilizar solo instrucciones muy concretas.

Características de los algoritmos

Un algoritmo debe resolver el problema para el que fue formulado. Un error frecuente es una
deficiente interpretación del problema por resolver, lo que hace que a veces se creen algoritmos que
resuelven problemas diferentes al planteado.

Los algoritmos deben de ser precisos. Esto significa que los resultados de los cálculos deben de
ser exactos, no son válidas las aproximaciones.
Los algoritmos deben de ser finitos; es decir, deben finalizar en algún momento. No es un algoritmo
válido aquel que produce situaciones en las que este no termina. Cada paso o acción debe concluir.

Los algoritmos deben poder repetirse. Esto significa que tienen que permitir que su ejecución se
reitere todas las veces que haga falta.

Los algoritmos son independientes del ordenador. Esto quiere decir que los algoritmos se
escriben para poder ser utilizados en cualquier máquina.

Características aconsejables para los algoritmos

Validez: que no tiene ningún tipo de error en su estructura.

Eficiencia: que ejecuta la función para la que fue creado en un tiempo


óptimo, es decir, en forma relativamente veloz.

Óptimo: que no tiene errores y que entrega los resultados de forma rápida,
según el tiempo preestablecido.

Además, podemos afirmar que un algoritmo debe tener los siguientes elementos:

Entrada: se denomina de esta forma al conjunto de datos previos que se utilizarán para desarrollar
el algoritmo. Puede pensarse como el planteo del problema o la información disponible con la que
se comienza a crear determinado algoritmo.

Proceso: se llama de este modo a la serie de pasos organizados que ejecutan los algoritmos para
solucionar un problema o alcanzar un objetivo, es decir, a las acciones que estos desencadenan.

Salida: se denomina de esta forma al conjunto final de datos que se obtienen luego del proceso
desarrollado por los algoritmos, es decir, los datos con los que se valida la solución al problema
planteado.

Figura 2: Elementos de los algoritmos


Fuente: [Imagen sin título sobre elementos de los algoritmos]. (s. f.). Recuperado de
https://goo.gl/NC3AQo

En la imagen anterior se observa la relación lineal entre los tres elementos constitutivos de los
algoritmos.

2.1 La importancia de la simplicidad


Para programar necesitamos crear algoritmos o instrucciones que digan, paso a paso y en forma muy
detallada, qué tiene que hacer la computadora. Una vez que dispongamos de un algoritmo que funciona
correctamente, es necesario definir criterios para medir su rendimiento o comportamiento. Estos criterios
se centran principalmente en su simplicidad y en el uso eficiente de los recursos, ya que de estos
factores depende la calidad del algoritmo.

Simplicidad
¡Ojo! Que un algoritmo sea corto o sea “fácil” no significa que sea simple. La simplicidad viene dada por
la facilidad para entenderlo al momento de manejarlo y trabajar con él. Se llama simple a un algoritmo
que es óptimo para cumplir los objetivos propuestos: no consume tantos recursos de un sistema y es
fácil de entender y de usar.

Cuando hablamos de simplicidad, hacemos referencia al diseño de un algoritmo que permite que el
programador tenga control sobre dicho código. De acuerdo con Rosa Guerequeta y Antonio Vallecillo, en
su libro Técnicas de diseños de algoritmos (1998), a medida que un programador va creando una
estructura algorítmica, va conociendo detalladamente cómo está formada: al ser el creador del código,
puede ubicar los posibles fallos y, a su vez, optimizar los problemas que puedan surgir, desde un
consumo de memoria excesivo hasta un error (este aspecto lo veremos en el tercer tema de este
módulo).

Cuando el programador va desarrollando un código y creando nuevas funciones, este va creciendo e


inevitablemente se va complejizando: no existe un algoritmo fácil o totalmente simple, ya que siempre
que crezca va aumentar su dificultad o su complejidad. Pero si el programador toma las pautas
adecuadas para que sea lo más simple posible mientras lo desarrolla, lo crea en forma ordenada y es
clara su conformación, le será más sencillo solucionar los posibles inconvenientes, así como
implementar mejoras de forma más adecuada.

Figura 3: Algoritmo sencillo

Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.

Como se puede ver en la imagen anterior, se creó un algoritmo para que un programa salude. Se trata de
una estructura sencilla, con tres líneas de código.

Figura 4: Algoritmo no simple


Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.

En la imagen anterior se puede observar cómo creció y se complejizó la estructura del código planteado
en la Figura 3. Este algoritmo se basa en el anterior, que solo saludaba, pero, además, hace una suma y
pregunta si se desea ver el resultado de dicha operación.

La simplicidad o complejidad de un algoritmo depende de cada programador. No existe un criterio


universal para definir la sencillez, sino que esta implica que, para el programador que crea un código,
dicho código es de fácil manipulación, ya sea para seguir desarrollando, para cambiarlo, para arreglarlo o
para su mantenimiento posterior.

Uso eficiente de los recursos


Además de la simplicidad en la forma de plantear las soluciones a los problemas, dijimos que la calidad
de los algoritmos también depende de la eficiencia en el uso de los recursos disponibles; estos son: el
tiempo que necesita para ejecutarse y la memoria que utiliza. Según un artículo publicado por la
Universidad de Antioquía, “dichos parámetros van a servir además para comparar algoritmos entre sí,
permitiendo determinar el más adecuado de entre varios que solucionan un mismo problema” (“Grafos y
algoritmos”, s. f., https://goo.gl/g7hxrQ).

Para analizar la eficiencia temporal de un algoritmo debe realizarse, primero, un análisis a priori: a
través de la elaboración teórica de una función se obtienen valores estimados del tiempo de ejecución de
determinados algoritmos. Luego se realiza un análisis a posteriori, es decir, se pone en funcionamiento
el programa y se mide el tiempo real de ejecución en una computadora.

Por lo tanto, cuando vamos escribir un algoritmo para desarrollar un programa debemos elegir aquel que
utilice la menor cantidad de recursos posible, que sea óptimo en los tiempos de ejecución y, a la vez,
que use la cantidad de memoria mínima en el sistema operativo para el que se diseña. Como ningún
algoritmo es igual a otro, el programador tiene que saber claramente qué quiere lograr y planificar
minuciosamente el modo de hacerlo, porque, si no lo plantea en modo adecuado a sus necesidades
particulares, puede llegar a ser muy costoso.

Actividad 1: características aconsejables de los algoritmos

 ¡Practiquemos! ¿Te quedó claro qué características debe tener un algoritmo para
que su funcionamiento sea óptimo? Ahora vas a ponerte a prueba.

Para que un programador genere un algoritmo que para él sea simple, más allá de cuán larga sea la
estructura del código y de cuántas funciones tenga, ¿qué elementos debe tener en cuenta?

A continuación, te presentamos una serie de enunciados que responden a la pregunta anterior. Tenés que
indicar si cada uno de ellos es verdadero o falso.
Debe escribir el código de manera ordenada.

Verdadero.

Falso.

SUBMIT

Debe escribir un código y después analizarlo.

Verdadero.

Falso.

SUBMIT
Debe crear un código que implique un alto consumo de memoria.

Verdadero.

Falso.

SUBMIT

Debe resultarle fácil hacer mejoras y mantenimientos en el código escrito.

Verdadero.

Falso.

SUBMIT

El código debe ser lo más corto posible.


Verdadero.

Falso.

SUBMIT

2.2 La relación de los algoritmos con la buena


programación
Cuando generamos un algoritmo estamos programando, por lo que, si realizamos una buena estructura
que cumpla el objetivo propuesto, podremos afirmar que nuestro código es bueno. Si desde la base, la
creación de un algoritmo es de calidad, también lo será el programa que desarrollemos, ya que cumplirá
los parámetros para los que fue hecho.

 A continuación, vamos a ver un ejemplo de un algoritmo que nos permita


multiplicar dos números.

1. En primer lugar, necesitamos datos de entrada: los números que vamos a multiplicar.

2. Estos datos deben ser procesados: en este caso, el proceso consiste en multiplicarlos.

3. Salida: debemos obtener un resultado sin errores.

Un posible algoritmo que cumpla este objetivo puede ser el siguiente:


Proceso Multiplicar

Escribir " por favor ingrese un número"

Leer a

Escribir " por favor ingrese el siguiente número"

Leer b

c=a*b

Escribir " El resultado es: ",c;

FinProceso
Con este ejemplo, en el que podés ver un algoritmo simple, se puede observar que, si trabajamos con los
datos correctos y planificamos bien el proceso para la resolución de un problema, podremos siempre
obtener resultados favorables.

Programación C
Programación C es un lenguaje de programación usado para desarrollo de sistemas operativos, de
considerado el comienzo de muchos lenguajes de programación, como por ejemplo, PHP (Hypertext
Preprocessor) o Python, así como también el pilar de varios sistemas operativos.

la programación en C se utiliza, entre otras cosas, para el desarrollo de sistemas


operativos. El primer sistema operativo escrito en C fue Unix. Más tarde, otros
sistemas operativos como Linux también fueron escritos en C. Pero C no es sólo el
lenguaje de programación de los sistemas operativos. C es el precursor e inspirador
para casi todos los lenguajes de alto nivel más populares disponibles en la actualidad.
(VIU, 2018. Recuperado de https://goo.gl/os5K4N).

Entonces, adquirir este lenguaje significa que estás aprendiendo la base de desarrollo para sistemas
operativos o para algún otro software. Además, se trata de un tipo de código que te permite comprender
muchos otros lenguajes de programación. El lenguaje de programación C es un lenguaje de nivel medio:
cuando empezás a programar con programación en C aprendés qué significan términos como registro,
pila, mapeado de memoria, entre otros. Además, este lenguaje es la base de los compiladores,
editores y también de los sistemas embebidos (circuitos electrónicos programables para realizar
funciones específicas).

El lenguaje C requiere una capacitación continua y muchas veces es necesario pensar más, es decir,
analizar en forma más consciente lo que estás haciendo, que con otros lenguajes. Sin embargo, existen
algunas ventajas de aprenderlo, a pesar de que existen otros muchos más fáciles de usar o aprender
(como C++ o Java).

Pseudocódigo
El pseudocódigo es un lenguaje que se encuentra entre el lenguaje natural y otros lenguajes de
programación, como lo son PHP, C, HTML (HyperText Markup Language). Debido a que no existe una
notación formal o estándar de pseudocódigo, cada programador puede utilizar la suya; es decir, no hay
un estándar prefijado o una serie preestablecida de pasos por seguir (Pes, s. f. a).

Figura 5: Utilización de pseudocódigo


Fuente: captura de pantalla de Notepad++ versión 7.5.8. (2018). Licencia GPL.

En esta imagen podemos observar la utilización de un pseudocódigo para programar en Notepad++.

Por ejemplo, el pseudocódigo usado en el Video 1 es el siguiente:

#include<stdio.h>
int main()
{
printf( "HOLA MUNDO TECLAB" );
}

 ¡Practicamos! Ahora vas a ejercitar la carga de algoritmos en PSeInt.

A continuación, te presentamos una serie de algoritmos para que practiques la carga en PSeInt, tal como
lo hiciste en el módulo anterior.
Calculá tu edad: en este algoritmo vamos a realizar, de acuerdo con el día de nacimiento de la
persona, el cálculo aproximado de la edad, según el año en curso.

Proceso EdadPorFecha

Escribir "Ingresa tu año de nacimiento"


Leer año
Edad 2021 - año;
Escribir "Tu edad es: " Edad;

FinProceso

 Ingresá en este enlace para seguir practicando con otros ejemplos:


https://goo.gl/G44PeS

Antes de pasar al tema siguiente, tendrás que asegurarte que entendiste correctamente los puntos
desarrollados hasta el momento. ¡Tenés que ponerte a prueba! A continuación, te presentamos una
pregunta y cinco respuestas, pero solo tres de ellas son correctas; tendrás que seleccionarlas.

 ¿Qué elementos debo tener siempre en consideración antes de desarrollar un


algoritmo?

Analizar los datos de los que dispongo.


Correcto.

Incorrecto.

SUBMIT

Pensar en el perfil del usuario del programa por desarrollar.

Correcto.

Incorrecto.

SUBMIT

Organizar la estructura del algoritmo.

Correcto.
Incorrecto.

SUBMIT

Pensar la lógica implicada en el proceso.

Correcto.

Incorrecto.

SUBMIT

Optar por un algoritmo sencillo o complejo.

Correcto.
Incorrecto.

SUBMIT

2.3 ¿Qué hacer frente a errores?


En programación existen muchos tipos de errores. En este apartado veremos algunos y cómo
solucionarlos.

Tipos de errores
Tal como hemos visto en los temas desarrollados anteriormente, si un algoritmo no es planificado y
ejecutado en forma minuciosa y precisa, pueden producirse diferentes tipos de errores. Estos son:

Errores de sintaxis: son aquellos que hacen referencia a la forma de escribir el código.

Errores de ejecución: son aquellos que aparecen cuando el programa se pone en funcionamiento,
es decir, cuando se lo usa.

Errores lógicos: son aquellos que surgen a causa de códigos mal planificados, cuando hay
funciones implementadas de formas incorrectas.

En los siguientes ejemplos vamos a observar errores comunes con los que suele encontrarse un
programador.

Errores de sintaxis
Este error es uno de los más frecuentes; suele pasar cuando un programador se equivoca al escribir un
código, ya sea al usar en forma inapropiada una etiqueta de algún lenguaje de programación o por escribir
mal algún parámetro.
Cuando en alguna instrucción del código fuente de un programa existe un error de
sintaxis, dicho error impedirá, tanto al compilador como al intérprete, traducir dicha
instrucción, ya que, ninguno de los dos entenderá qué le está diciendo el programador.
(Pes, s. f. b, https://goo.gl/J3HHEC).

Por ejemplo, al generar un saludo “Hola mundo” en C, puede producirse el siguiente error de sintaxis:

Instrucción correcta:
Printf ( " HOLA MUNDO " );

Resulta que el programador escribe con el siguiente error:


prrinntf( " HOLA MUNDO" );

En este caso, podemos ver que, al escribir el código, el programador uso la etiqueta Printf (que se usa
para imprimir en pantalla) de forma no adecuada, ya que la escribió mal: prrinntf. Este error de tipeo va
causar un error en la lectura y la ejecución del código; tanto el compilador como el intérprete tendrán
dificultades al intentar compilar y ejecutar el código, ya que no se va reconocer la etiqueta porque está
mal escrita.

Figura 6: Error de sintaxis


Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.

En la imagen anterior podemos observar que por redactar mal la palabra escribir se produce un error
porque hubo un parámetro malo.

Errores de ejecución
Suele pasar cuando un programa no se puede ejecutar o iniciar porque, más allá de que la estructura del
código esté bien escrita, se pretende una operación que no es posible. Es decir, no están pensadas
adecuadamente las órdenes que se le dan a la computadora.

A modo de ejemplo, a continuación, te presentamos las siguientes instrucciones para realizar la siguiente
operación: A= 2+2.
El error de ejecución podría surgir si el programador comete un error al escribir la estructura y coloca
directamente 2+2.

De esta forma, al omitir el resto de los signos necesarios, estamos asignando el resultado a una
condición: vamos a tener un error al ejecutar, ya que nos hacen falta valores que no están expresados.

Otro error de ejecución puede producirse, por ejemplo, cuando se pide a la computadora que realice una
operación imposible, como por ejemplo, dividir algún número por cero.

Figura 7: Error de ejecución

Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.


En esta imagen podemos ver que el algoritmo no se ejecuta, ya que está mal redactado, y su sintaxis
está mal planificada.

Errores de lógica
Este tipo de error suele generarse cuando un programador, por equivocación, coloca parámetros
erróneos. Por ejemplo, si al escribir un programa para realizar adiciones confunde los símbolos + (más) y
– (menos), y coloca + para realizar una resta. De esa forma, obtendrá un resultado no deseado: al querer
restar, va a sumar. Si este error se comete en operaciones complejas, es difícil de detectar y puede
llegar a tener consecuencias nefastas.

Figura 8: Error de lógica

Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.


En la figura anterior se puede observar que el programador quería crear un programa para hacer restas,
pero no se percató de un error en el símbolo para hacer el cálculo matemático y le dio un resultado
incorrecto, no esperado.

Figura 9: Corrección del error de lógica

Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.

En la imagen precedente podemos observar que se corrigió el error expuesto en la Figura 8: se cambió el
símbolo de suma por el de resta; de esta forma, el algoritmo cumple su función.

También existe un problema recurrente, que es el error del usuario. Se trata de errores que se producen
cuando el usuario realiza algo inesperado, que no estaba previsto por el programa, por lo que este no
reacciona apropiadamente. Es por esto, justamente, que hoy en día se hacen tantas pruebas de
aplicaciones beta, para detectar cómo funciona un software en manos del usuario final.
Figura 10: Error de usuario

Fuente: Captura de pantalla del PseInt (2018). Pablo Novara, Intel.

En la imagen anterior podemos ver que se escribió un código para multiplicar un número por dos, pero el
usuario ingresa una palabra en vez de un número, y esto causa un error, debido a que el programa no fue
diseñado para ingresar texto.

Actividad 2: Ordenar un algoritmo

 ¡Practiquemos! Te presentamos una actividad para que te pongas a prueba.

A continuación, te presentamos una serie de algoritmos desordenados. El objetivo es que la


computadora multiplique dos números ingresados por el usuario.
¿Cuál sería el inicio o entrada?, ¿cuál sería el proceso?, ¿y el final o salida?

Tenés que arrastrar las cartas con algoritmos de la primera columna y soltar
sobre el número que está en la segunda columna, según el orden en el que
deben ubicarse en el proceso de programación.

SUBMIT
Lección 3 de 4

Cierre

La importancia de la simplicidad

Cuando hablamos de simplicidad, hacemos referencia al diseño de un algoritmo que permite que el
programador tenga control sobre dicho código.
Cuando el programador va desarrollando un código y creando nuevas funciones, este va creciendo e
inevitablemente se va complejizando: no existe un algoritmo fácil o totalmente simple, ya que siempre
que crezca va aumentar su dificultad o su complejidad. Pero si el programador toma las pautas
adecuadas para que sea lo más simple posible mientras lo desarrolla, lo crea en forma ordenada y es
clara su conformación, le será más sencillo solucionar los posibles inconvenientes, así como
implementar mejoras de forma más adecuada.

La relación de los algoritmos con la buena programación



Cuando generamos un algoritmo estamos programando, por lo que, si realizamos una buena estructura
que cumpla el objetivo propuesto, podremos afirmar que nuestro código es bueno. Si desde la base, la
creación de un algoritmo es de calidad, también lo será el programa que desarrollemos, ya que cumplirá
los parámetros para los que fue hecho.

Tipos de errores

Errores de sintaxis: son aquellos que hacen referencia a la forma de escribir el código.
Errores de ejecución: son aquellos que aparecen cuando el programa se pone en funcionamiento,
es decir, cuando se lo usa.

Errores lógicos: son aquellos que surgen a causa de códigos mal planificados, cuando hay
funciones implementadas de formas incorrectas.
Lección 4 de 4

Referencias

Grafos y algoritmos. (s. f.). [Artículo en línea]. Recuperado de


http://docencia.udea.edu.co/regionalizacion/teoriaderedes/grafosyalgoritmos.html

Guerequeta, R. y Vallecillo, A. (1998). Técnicas de diseños de algoritmos. Málaga, ES: Servicio de


Publicaciones de la Universidad. Recuperado de http://www.lcc.uma.es/~av/Libro/

[Imagen sin título sobre algoritmo]. (s. f.). Recuperado de


http://arquivo.devmedia.com.br/cursos/imagem/curso_curso-de-algoritmo_1945.jpg

[Imagen sin título sobre elementos de los algoritmos]. (s. f.). Recuperado de
https://algoritmica.webcindario.com/imagenes/eps.png

PSeInt, Software Libre bajo Licencia CPL, Pablo Novara (2013 - 2018)

Pes, C. (s. f. a). Pseudocódigo. Recuperado de


http://www.carlospes.com/curso_de_ingenieria_del_software/03_04_pseudocodigo.php

Pes, C. (s. f. b). Tipos de errores. Recuperado de


http://www.carlospes.com/curso_de_ingenieria_del_software/04_04_tipos_de_errores.php

Torrealba, J. D. (21 de septiembre de 2018). Programa básico C “Teclab” [Video de YouTube].


Recuperado de https://www.youtube.com/watch?v=vN2ue2znnk0&feature=youtu.be
Universidad Internacional de Valencia. (21 de marzo de 2018). ¿Por qué deberías aprender
programación en C? Recuperado de https://www.universidadviu.com/deberias-aprender-programacion-c/

También podría gustarte