You are on page 1of 14

Programacin

Para otros usos de este trmino, vase Programacin (desambiguacin).


La programacin informtica o programacin algortmica, acortada
como programacin, es el proceso de disear, codificar, depurar y mantener el cdigo
fuente de programas de computadora. El cdigo fuente es escrito en un lenguaje de
programacin. El propsito de la programacin es crear programas que exhiban un
comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente
conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar,
algoritmos especializados y lgica formal. Programar no involucra necesariamente
otras tareas tales como el anlisis y diseo de la aplicacin (pero s el diseo del
cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas aplicaciones.
Para crear un programa, y que la computadora lo interprete y ejecute las instrucciones
escritas en l, debe escribirse en un lenguaje de programacin. En sus inicios las
computadoras interpretaban solo instrucciones en un lenguaje especfico, del ms bajo
nivel, conocido como cdigo mquina, siendo ste excesivamente complicado para
programar. De hecho solo consiste en cadenas de nmeros 1 y 0 (sistema binario).
Para facilitar el trabajo de programacin, los primeros cientficos, que trabajaban en el
rea, decidieron reemplazar las instrucciones, secuencias de unos y ceros, por
palabras o abreviaturas provenientes del ingls; las codificaron y crearon as un
lenguaje de mayor nivel, que se conoce como Assembly o lenguaje ensamblador. Por
ejemplo, para sumar se podra usar la letra A de la palabra inglesa add (sumar). En
realidad escribir en lenguaje ensamblador es bsicamente lo mismo que hacerlo en
lenguaje mquina, pero las letras y palabras son bastante ms fciles de recordar y
entender que secuencias de nmeros binarios. A medida que la complejidad de las
tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un
mtodo sencillo para programar. Entonces, se crearon los lenguajes de alto nivel.
Mientras que una tarea tan trivial como multiplicar dos nmeros puede necesitar un
conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel
bastar con solo una. Una vez que se termina de escribir un programa, sea en
ensamblador o en algunos lenguajes de alto nivel, es necesario compilarlo, es decir,
traducirlo completo a lenguaje mquina.1 Eventualmente ser necesaria otra fase
denominada comnmente link o enlace, durante la cual se anexan al cdigo, generado
durante la compilacin, los recursos necesarios de alguna biblioteca. En algunos
lenguajes de programacin, puede no ser requerido el proceso de compilacin y
enlace, ya que pueden trabajar en modo intrprete. Esta modalidad de trabajo es
equivalente pero se realiza instruccin por instruccin, a medida que es ejecutado el
programa.

Lxico y programacin[editar]
La programacin se rige por reglas y un conjunto ms o menos reducido de rdenes,
expresiones, instrucciones y comandos que tienden a asemejarse a una lengua
naturalacotada (en ingls); y que adems tienen la particularidad de una reducida
ambigedad. Cuanto menos ambiguo es un lenguaje de programacin, se dice, es
ms potente. Bajo esta premisa, y en el extremo, el lenguaje ms potente existente es
el binario, con ambigedad nula (lo cual lleva a pensar as del lenguaje
ensamblador).[cita requerida]
En los lenguajes de programacin de alto nivel se distinguen diversos elementos entre
los que se incluyen el lxico propio del lenguaje y las reglas semnticas y sintcticas.

Programas y algoritmos[editar]
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han
de seguirse para resolver un problema. Un programa normalmente implementa
(traduce a un lenguaje de programacin concreto) uno o ms algoritmos. Un algoritmo
puede expresarse de distintas maneras: en forma grfica, como un diagrama de flujo,
en forma de cdigo como en pseudocdigo o un lenguaje de programacin, en forma
explicativa.
Los programas suelen subdividirse en partes menores, llamadas mdulos, de modo
que la complejidad algortmica de cada una de las partes sea menor que la del
programa completo, lo cual ayuda al desarrollo del programa. Esta es una prctica
muy utilizada y se conoce como "refino progresivo".
Segn Niklaus Wirth, un programa est formado por los algoritmos y la estructura de
datos.
La programacin puede seguir muchos enfoques, o paradigmas, es decir, diversas
maneras de formular la resolucin de un problema dado. Algunos de los principales
paradigmas de la programacin son:

Programacin declarativa
Programacin estructurada
Programacin modular
Programacin orientada a objetos

Compilacin[editar]
El programa escrito en un lenguaje de programacin de alto nivel (fcilmente
comprensible por el programador) es llamado programa fuente y no se puede ejecutar
directamente en una computadora. La opcin ms comn es compilar el programa
obteniendo un mdulo objeto, aunque tambin puede ejecutarse en forma ms directa
a travs de un intrprete informtico.
El cdigo fuente del programa se debe someter a un proceso de traduccin para
convertirlo a lenguaje mquina o bien a un cdigo intermedio, generando as un
mdulo denominado "objeto". A este proceso se le llama compilacin.
Habitualmente la creacin de un programa ejecutable (un tpico.exe para Microsoft
Windows o DOS) conlleva dos pasos. El primer paso se llama compilacin
(propiamente dicho) y traduce el cdigo fuente escrito en un lenguaje de
programacin almacenado en un archivo de texto a cdigo en bajo nivel (normalmente
en cdigo objeto, no directamente a lenguaje mquina). El segundo paso se
llama enlazado en el cual se enlaza el cdigo de bajo nivel generado de todos los
ficheros y subprogramas que se han mandado compilar y se aade el cdigo de las
funciones que hay en las bibliotecas del compilador para que el ejecutable pueda
comunicarse directamente con el sistema operativo, traduciendo as finalmente
el cdigo objeto a cdigo mquina, y generando un mdulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase
de compilacin en archivos objetos (un tpico .o para Unix, .obj para MS-Windows,
DOS); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo
que la fase de compilacin puede almacenarse solo de forma temporal. Un programa
podra tener partes escritas en varios lenguajes, por
ejemplo, Java, C, C++ y ensamblador, que se podran compilar de forma
independiente y luego enlazar juntas para formar un nico mdulo ejecutable.

Programacin e ingeniera del software[editar]


Artculo principal: Ingeniera del software
Existe una tendencia a identificar el proceso de creacin de un programa informtico
con la programacin, que es cierta cuando se trata de programas pequeos para uso
personal, y que dista de la realidad cuando se trata de grandes proyectos.
El proceso de creacin de software, desde el punto de vista de la ingeniera, incluye
mnimamente los siguientes pasos:

1. Reconocer la necesidad de un programa para solucionar un problema o


identificar la posibilidad de automatizacin de una tarea.
2. Recoger los requisitos del programa. Debe quedar claro qu es lo que debe
hacer el programa y para qu se necesita.
3. Realizar el anlisis de los requisitos del programa. Debe quedar
claro qu tareas debe realizar el programa. Las pruebas que comprueben la
validez del programa se pueden especificar en esta fase.
4. Disear la arquitectura del programa. Se debe descomponer el programa en
partes de complejidad abordable.
5. Implementar el programa. Consiste en realizar un diseo detallado,
especificando completamente todo el funcionamiento del programa, tras lo cual
la codificacin (programacin propiamente dicha) debera resultar inmediata.
6. Probar el programa. Comprobar que pasan pruebas que se han definido en el
anlisis de requisitos.
7. Implantar (instalar) el programa. Consiste en poner el programa en
funcionamiento junto con los componentes que pueda necesitar (bases de
datos, redes de comunicaciones, etc.).
La ingeniera del software se centra en los pasos de planificacin y diseo del
programa, mientras que antiguamente (programacin artesanal) la realizacin de un
programa consista casi nicamente en escribir el cdigo, bajo solo el conocimiento de
los requisitos y con una modesta fase de anlisis y diseo.

Referencias histricas[editar]
El trabajo de Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron, que realiz
para la mquina de Babbage le hizo ganarse el ttulo de primera programadora de
computadoras del mundo, aunque Babbage nunca complet la construccin de la
mquina. El nombre del lenguaje de programacin Ada fue escogido como homenaje a
esta programadora.

Objetivos de la programacin[editar]
La programacin debe perseguir la obtencin de programas de calidad. Para ello se
establece una serie de factores que determinan la calidad de un programa. Algunos de
los factores de calidad ms importantes son los siguientes:

Correctitud. Un programa es correcto si hace lo que debe hacer tal y como se


estableci en las fases previas a su desarrollo. Para determinar si un programa
hace lo que debe, es muy importante especificar claramente qu debe hacer el
programa antes de su desarrollo y, una vez acabado, compararlo con lo que
realmente hace.

Claridad. Es muy importante que el programa sea lo ms claro y legible posible,


para facilitar tanto su desarrollo como su posterior mantenimiento. Al elaborar un
programa se debe intentar que su estructura sea sencilla y coherente, as como
cuidar el estilo de programacin. De esta forma se ve facilitado el trabajo
del programador, tanto en la fase de creacin como en las fases posteriores de
correccin de errores, ampliaciones, modificaciones, etc. Fases que pueden ser
realizadas incluso por otro programador, con lo cual la claridad es an ms
necesaria para que otros puedan continuar el trabajo fcilmente. Algunos
programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de
cdigo; una prctica comn es realizar aclaraciones en el cdigo fuente
utilizando lneas de comentarios. Contrariamente, algunos por diversin o para
impedirle un anlisis cmodo a otros programadores, recurren al uso de cdigo
ofuscado.

Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue
creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible
los recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se
suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido
creado y a la cantidad de memoria que necesita, pero hay otros recursos que
tambin pueden ser de consideracin para mejorar la eficiencia de un programa,
dependiendo de su naturaleza (espacio en disco que utiliza, trfico en la red que
genera, etc.).

Portabilidad. Un programa es portable cuando tiene la capacidad de poder


ejecutarse en una plataforma, ya sea hardware o software, diferente a aquella en
la que se desarroll. La portabilidad es una caracterstica muy deseable para un
programa, ya que permite, por ejemplo, a un programa que se ha elaborado para
el sistema GNU/Linux ejecutarse tambin en la familia de sistemas
operativos Windows. Esto permite que el programa pueda llegar a ms usuarios
ms fcilmente.

Ciclo de vida del software[editar]


Artculo principal: Proceso para el desarrollo de software
El trmino ciclo de vida del software describe el desarrollo de software, desde la fase
inicial hasta la fase final, incluyendo su estado funcional. El propsito es definir las
distintas fases intermedias que se requieren para validar el desarrollo de la aplicacin,
es decir, para garantizar que el software cumpla los requisitos para la aplicacin y
verificacin de los procedimientos de desarrollo: se asegura que los mtodos utilizados
son apropiados. Estos mtodos se originan en el hecho de que es muy costoso
rectificar los errores que se detectan tarde dentro de la fase de implementacin
(programacin propiamente dicha), o peor aun, durante la fase funcional. El modelo de
ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto,
permite a los desarrolladores concentrarse en la calidad del software, en los plazos de
implementacin y en los costos asociados. El ciclo de vida bsico de un software
consta de, al menos, los siguientes procedimientos:

Definicin de objetivos: definir el resultado del proyecto y su papel en la estrategia


global.
Anlisis de los requisitos y su viabilidad: recopilar, examinar y formular los
requisitos del cliente y examinar cualquier restriccin que se pueda aplicar.
Diseo general: requisitos generales de la arquitectura de la aplicacin.
Diseo en detalle: definicin precisa de cada subconjunto de la aplicacin.
Programacin (programacin e implementacin): es la implementacin en un
lenguaje de programacin para crear las funciones definidas durante la etapa de
diseo.
Prueba de unidad: prueba individual de cada subconjunto de la aplicacin para
garantizar que se implementaron de acuerdo con las especificaciones.
Integracin: para garantizar que los diferentes mdulos y subprogramas se
integren con la aplicacin. Este es el propsito de la prueba de integracin que
debe estar cuidadosamente documentada.
Prueba beta (o validacin), para garantizar que el software cumple con las
especificaciones originales.
Documentacin: se documenta con toda la informacin necesaria, sea funcional
final para los usuarios del software (manual del usuario), y de desarrollo para
futuras adaptaciones, ampliaciones y correcciones.
Mantenimiento: para todos los procedimientos correctivos (mantenimiento
correctivo) y las actualizaciones secundarias del software (mantenimiento
continuo).
El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una
aplicacin dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el
equipo de desarrolladores. En el caso del software libre se tiene un ciclo de vida
mucho ms dinmico, puesto que muchos programadores trabajan en simultneo
desarrollando sus aportaciones.

Definiciones
Hardware: Componentes fsicos de un ordenador, por ejemplo: monitor, ratn,
teclado, ordenador, impresora, ...
Software: Programas o elementos lgicos que hacen funcionar un ordenador o que
se ejecutan en ellos, distinguir: sistema operativa, programa

Sistema Operativa (OS): un sistema operativo es un programa especial que se


carga en un ordenador tras ser encendido y cuya funcin es gestionar los dems
programas/aplicaciones que se ejecutarn en dicho ordenador, como, por ejemplo
un procesador de texto o una hoja de clculo, o la impresin de un texto en una
impresora o una conexin a Internet. por ejemplo: DOS, Windows, MacOS, Unix,
Linux, ...
Aplicacin/Programa: (dice a un ordenador que hacer) conjunto de instrucciones
escritas en un determinado lenguaje que dirigen a un ordenador para la ejecucin
de una serie de operaciones, con el objetivo de resolver un problema que se ha
definido previamente, por ejemplo: aadir dos nmeros, compara dos nmeros,
ordenador interpreta instrucciones: ensear una pelcula en la pantalla,
implementar un procesador de texto
Lenguaje de programacin: lenguaje que un ordenador entiende, muchas
diferentes lenguajes, como mundo real muchas idiomas: Basic, C, C++, java, ...
tiene que estar traducida a un cdigo que ordenador entiende -> .exe
Compilador: transforma el cdigo escrito en un lenguaje de programacin a un
cdigo que un ordenador pueda ejecutar -> bit / byte, ensamblador (assembler)

Lenguaje de script: lenguaje que un ordenador entiende, esta traducida a un


cdigo que el ordenador entiende durante su ejecucin, por ejemplo: vbs (Visual
Basic Script), JavaScript, asp, jsp, php, perl, ActionScript, ...
Bit: Unidad mnima de informacin digital que puede ser tratado por un ordenador.
Proviene de la contraccin de la expresin binary digit (dgito binario).
Byte: Conjunto significativo de ocho bits que representan un carcter por ejemplo
la letra "a", en un sistema informtico.

Historia de la Programacin
Sobre los ltimos 50 aos, los idiomas que programan han evolucionado del
cdigo binario de mquina a herramientas poderosas que crean las abstracciones
complejas. Es importante entender por qu los idiomas han evolucionado, y qu
capacidades que los idiomas ms nuevos nos dan.

"Tan largo como no haba mquinas, programar era ningn problema; cuando
tuvimos unos pocas computadoras dbiles, programar lleg a ser un problema
templado y ahora que tenemos las computadoras gigantescas, programar ha
llegado a ser un problema igualmente gigantesco. En este sentido que la industria
electrnica no ha resuelto un solo problema, tiene slo los cre - ha creado el
problema de usar su producto". [Edsger. W. Dijkstra. "El Programista Humilde" (la
Conferencia del Premio de Turing), Comunicaciones del ACM, Vol 15, No. 10 (el
octubre 1972).]

E. W. Dijkstra habl estas palabras profticas casi hace 28 aos en su es la


conferencia del Premio de Turing. En aquel momento, el 'las computadoras
gigantescas l radio de probablemente tenido entre 64 y 128 kilobytes de la
memoria verdadera, y a lo ms unos pocos megaoctetos de artefactos de
almacenamiento de acceso directo. Si l pens que el problema era gigantesco
entonces...

Uno de las llaves a programar exitoso son el concepto de la abstraccin. La


abstraccin es la llave a la construccin sistemas complejos de software. Como el
tamao de nuestros problemas crece, la necesidad para la abstraccin
dramticamente aumentos. En sistemas sencillos, caracterstica de idiomas
usados en el 1950s y '60s, un solo programista podra entender el problema
entero, y por lo tanto manipula todas estructuras del programa y datos. Los
programistas son hoy incapaces de entender todos los programas y los datos - es
apenas demasiado grande. La abstraccin se requiere a permitir que el
programista para agarrar los conceptos necesarios.

La mayora de los libros y el reglamento en la historia de programar los idiomas


tienden a discutir los idiomas en trminos de generaciones. Esto es un arreglo til
para clasificar los idiomas por la edad.
Primera Generacin
Al desarrollarse las primeras computadoras electrnicas, se vio la necesidad de
programarlas, es decir, de almacenar en memoria la informacin sobre la tarea
que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les
indicaban los pasos de clculo, uno por uno.

John Von Neumann desarroll el modelo que lleva su nombre, para describir este
concepto de "programa almacenado". En este modelo, se tiene una abstraccin de
la memoria como un conjunto de celdas, que almacenan simplemente nmeros.
Estos nmeros pueden representar dos cosas: los datos, sobre los que va a
trabajar el programa; o bien, el programa en s.

Cmo es que describimos un programa como nmeros? Se tena el problema de


representar las acciones que iba a realizar la computadora, y que la memoria, al
estar compuesta por switches correspondientes al concepto de bit, solamente nos
permita almacenar nmeros binarios.

La solucin que se tom fue la siguiente: a cada accin que sea capaz de realizar
nuestra computadora, asociarle un nmero, que ser su cdigo de operacin
(opcode) . Por ejemplo, una calculadora programable simple podra asignar los
opcodes :

1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.


Supongamos que queremos realizar la operacin 5 * 3 + 2, en la calculadora
descrita arriba. En memoria, podramos "escribir" el programa de la siguiente
forma:

Podemos ver que con esta representacin, es simple expresar las operaciones de
las que es capaz el hardware (en este caso, nuestra calculadora imaginaria), en la
memoria.

La descripcin y uso de los opcodes es lo que llamamos lenguaje de mquina. Es


decir, la lista de cdigos que la mquina va a interpretar como instrucciones,
describe las capacidades de programacin que tenemos de ella; es el lenguaje
ms primitivo, depende directamente del hardware, y requiere del programador
que conozca el funcionamiento de la mquina al ms bajo nivel.

Los lenguajes ms primitivos fueron los lenguajes de mquina. Esto, ya que el


hardware se desarroll antes del software, y adems cualquier software finalmente
tiene que expresarse en el lenguaje que maneja el hardware.

La programacin en esos momentos era sumamente tediosa, pues el programador


tena que "bajarse" al nivel de la mquina y decirle, paso a pasito, cada punto de la
tarea que tena que realizar. Adems, deba expresarlo en forma numrica; y por
supuesto, este proceso era propenso a errores, con lo que la productividad del
programador era muy limitada. Sin embargo, hay que recordar que en estos
momentos, simplemente an no exista alternativa.
Segunada Generacin
El primer gran avance que se dio, como ya se coment, fue la abstraccin dada
por el Lenguaje Ensamblador, y con l, el nacimiento de las primeras herramientas
automticas para generar el cdigo mquina. Esto redujo los errores triviales,
como poda ser el nmero que corresponda a una operacin, que son sumamente
engorrosos y difciles de detectar, pero fciles de cometer. Sin embargo, an aqu
es fcil para el programador perderse y cometer errores de lgica, pues debe bajar
al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede
dentro de l.
ejemplo ensamblador: Hola Mundo!

Tercera Generacin
Con el desarrollo en los 50s y 60s de algoritmos de ms elevado nivel, y el
aumento de poder del hardware, empezaron a entrar al uso de computadoras
cientficos de otras ramas; ellos conocan mucho de Fsica, Qumica y otras ramas
similares, pero no de Computacin, y por supuesto, les era sumamente
complicado trabajar con lenguaje Ensamblador en vez de frmulas. As, naci el
concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN
(FORmula TRANslation), que, como su nombre indica, inici como un "simple"
esfuerzo de traducir un lenguaje de frmulas, al lenguaje ensamblador y por
consiguiente al lenguaje de mquina. A partir de FORTRAN, se han desarrollado
innumerables lenguajes, que siguen el mismo concepto: buscar la mayor
abstraccin posible, y facilitar la vida al programador, aumentando la
productividad, encargndose los compiladores o intrpretes de traducir el lenguaje
de alto nivel, al lenguaje de computadora.

Hay que notar la existencia de lenguajes que combinan caractersticas de los de


alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C:
contiene estructuras de programacin de alto nivel, y la facilidad de usar libreras
que tambin son caractersticas de alto nivel; sin embargo, fue diseado con muy
pocas instrucciones, las cuales son sumamente sencillas, fciles de traducir al
lenguaje de la mquina; y requiere de un entendimiento apropiado de cmo
funciona la mquina, el uso de la memoria, etctera. Por ello, muchas personas
consideramos a lenguajes como C (que fue diseado para hacer sistemas
operativos), lenguajes de nivel medio.

Cuarta Generacin
Los idiomas de la cuarta generacin parecen segn las instrucciones a las de la
tercera generacin. Lo nuevo de estas lenguajes son conceptos como clases,
objetos y eventos que permiten soluciones ms fciles y lgicos. Lenguajes como
C++, java y C# se llaman lenguajes orientadas al objeto.

Los idiomas modernos, tal como C++ y Java, no slo permite las abstracciones,
pero permite la implementacin impuesta de restricciones en abstracciones. La
mayora de los idiomas modernos son objetivas orientado, que permite que m
modele el mundo verdadero que usa mi idioma. Adems, puedo limitar el acceso
para modelar las restricciones de mundo verdadero en datos. La llave es que us
el trmino "mundo verdadero." Por la primera vez, yo modelo mi solucin en
trminos del problema. Quiero que mi solucin sea orientado de problema, para
que la solucin refleje el mundo verdadero en trminos de estructuras de datos y
acceso a los datos. Yo tambin puedo aplicar directamente y para poder modelar
objetos de mundo verdadero usando las clases (en C + + o Java).

Quinta Generacin
Como la quinta generacin estn conocidos los Lenguajes de inteligencia artificial.
Han sido muy valorados al principio de las noventa - mientras ahora el desarrollo
de software toma otras caminos.

Lo que veremos en el futuro es menos dependencia en el idioma, y ms en el


modelando herramientas, tal como el Unificado Modelando el Idioma (UML). La
salida del modelando herramienta producir mucho de nuestro cdigo para
nosotros; en el muy menos, producir arquitectnico y los modelos del diseo y la
estructura de nuestro cdigo. Esto producir un diseo (y posiblemente cdigo)
eso puede ser validado por el cliente antes de completar la implementacin y
probar. Cuando los problemas diarios que resolvemos llegan a ser ms grande,
nosotros tenemos cada vez menos tiempo "volver a hacer" el cdigo. Los das de
decir, "acabamos de escribir una versin de Beta y el cliente entonces pueden
decir nosotros lo que ellos quieren realmente," son pasados. Las organizaciones
que fallan de obtener completa y corrige los requisitos de cliente antes de escribir
el cdigo saldr del negocio. Por qu? Porque toma demasiado largo, y cuesta
tambin mucho, para escribir cdigo dos o ms vez. Las organizaciones que
tienen un compromiso a la comprobacin y la validacin antes de producir cdigo
prosperarn - los otros fallarn.

ejemplo Flowchart

ejemplo UML

Pasos importantes de las lenguajes de programacin



Historia de las lenguajes de programacin

Perder el miedo del cdigo


ejemplo practico HTML: Hola Mundo

ejemplo practico JavaScript: Hola Mundo

ejemplo practico JavaScript: Cuadrado

You might also like