Académique Documents
Professionnel Documents
Culture Documents
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 1 de 45
Curso de programacin
Est dividido en varias sesiones que te introducen los conceptos fundamentales que tienes que
conocer antes de aprender cualquier lenguaje de programacin.
El curso est impartido en vdeo, con clases que fueron emitidas en directo ante los estudiantes
suscritos. El equipo doncente lo formaron varios profesores con amplia experiencia enfocada a
la programacin.
Entre los temas que se impartieron figuran una introduccin a los lenguajes, tipos de datos,
algoritmos, estructuras necesarias para la creacin de algoritmos complejos como
condicionales y repeticiones, as como subprogramacin por medio de funciones. Tambin se
vieron asuntos relacionados con el mundo de los objetos y estructuras de datos complejas, para
acabar con una sesin que nos ofrece una vista de pjaro a diferentes lenguajes y sus
aplicaciones principales.
El enfoque que se aplic en este curso de programacin es el de asentar las bases para la
programacin y el desarrollo en cualquier tipo de lenguaje. Osea, se dio ms importancia a los
conceptos de programacin que a los lenguajes en si. El motivo es que esos conceptos son los
mismos para cualquier lenguaje, al menos los principales, y nos deben servir de base para
luego acercarnos a los lenguajes ya en especfico. No obstante, para los ejemplos todos los
profesores usaron Javascript, por lo que tambin sirve para aprender algunas de las utilidades
y modos de trabajo de este lenguaje estndar en el desarrollo web y en numerosas plataformas.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 2 de 45
Curso de programacin
Las siguientes personas han participado como autores escribiendo artculos de este manual.
Alberto Basalo
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 3 de 45
Curso de programacin
Alberto Basalo es experto en Angular y otras tecnologas basadas en Javascript, como NodeJS
y MongoDB. Es director de gora Binaria, empresa dedicada al
desarrollo de aplicaciones y a la formacin a travs de Academia
Binaria.
Eduard Toms
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 4 de 45
Curso de programacin
Durante la clase se dedic a ofrecer explicaciones respecto a dos temas principalmente, por un
lado la introduccin genrica a los lenguajes de programacin y por otro una descripcin de los
tipos de datos y variables. De los dos temas introductorios a los lenguajes de programacin. En
este vdeo tenemos el primero de ellos, dedicado a los lenguajes en general.
Es un contenido que se engloba en un curso en el que tendremos 8 sesiones para conocer los
aspectos esenciales de la programacin, que nos ofrezcan una base slida para poder
acercarnos luego a cualquier lenguaje. Esta es la primera sesin, que tiene este contenido:
Qu es programacin
Es un trmino comn que se puede describir segn la Real Academia de la Lengua. Accin o
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 5 de 45
Curso de programacin
efecto de programar. Y programar? Idear y ordenar las acciones necesarias para realizar un
proyecto. Todo esto en trminos generales, no se refiere especficamente a la programacin de
lenguajes informticos, pero nos da una idea de lo que es.
Programar puedes programar cualquier cosa, por ejemplo, las vacaciones. Luis nos ofreci un
ejemplo explicando qu tipo de cosas pensamos cuando tenemos que programar algo. Vimos
que consta de una serie de decisiones y una serie de pasos para conseguir hacer todas aquellas
pendencias antes de, en este ejemplo, salir de vacaciones.
Luego nos hizo pensar en la posibilidad de programar las vacaciones con un mayordomo, o
programar cualquier tipo de cosas en las que tenemos un asistente. El mayordomo est a tu
servicio y no decide absolutamente nada. Entonces tendrs que darle las instrucciones precisas
que quieres que realice y se lo tienes que dar en un lenguaje que ambos conozcis.
Por qu programar?
A continuacin entramos en un bloque que nos explica por qu realizar programas
informticos, bsicamente por automatizar diversos tipos de procesos y nos dio una serie de
ejemplos fantsticos entra las maneras de actuar de las personas y de las mquinas que nos
acercan al pensamiento que debe de tener un programador para desempear su trabajo y el
pensamiento que debe tener un estudiante cuando comienza a pensar en trminos de "lneas
de cdigo".
Obviamente, en el vdeo se explican todos esos trminos en detalle y Luis Fernndez nos ofrece
ejemplos clave para poder entenderlo, sobre varios tipos de lenguajes, hablados, signos, de
programacin o incluso algo tan sencillo como el lenguaje que implementan los semforos que
regulan la circulacin. Todo ello nos hace entender mejor cmo funcionan los lenguajes y por
extensin, cmo funciona un lenguaje de programacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 6 de 45
Curso de programacin
Esta clase tiene una duracin corta, porque la primera sesin con Luis estaba dividida en dos
partes, en la segunda nos habl de Tipos de datos y Variables, junto con otra serie de cosas
relacionadas. Pero fjate que para ser un vdeo de poco ms de 10 minutos tiene una cantidad
de informacin fantstica que nos ayudar mucho a adquirir la base necesaria para entender
los lenguajes de programacin.
Las diapositivas usadas en la presentacin las puedes ver embebidas aqu abajo.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 7 de 45
Curso de programacin
Esta es la segunda clase del Curso de Programacin gratuito que dimos en EscuelaIT y
DesarrolloWeb.com. En esta segunda clase abordamos los tipos y variables. La ofreci Luis
Fernndez, profesor de la Universidad Politcnica de Madrid en vivo a los estudiantes de esta
comunidad.
Se ofreci a continuacin de la primera clase dedicada a dar una introduccin a los lenguajes.
(Esta sesin se dividi en dos partes bien diferenciadas que se hicieron contiguas, las dos
temticas con Luis).
En este bloque nos dedicamos a conocer cosas bsicas de los lenguajes de programacin,
introduciendo el concepto de Tipo de Dato, Variable, Operador, Entrada y Salida, etc. El
esquema del guin general que se ofreci consta de estos puntos.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 8 de 45
Curso de programacin
entender las diferencias entre seales, datos, informacin y conocimiento. Esto nos da una
idea sobre qu es lo que manejas en la vida real y qu es lo que manejas cuando ests
expresando programas a una mquina.
Esto lo dice para entender cmo piensa un ordenador y cmo se diferencia de las personas. Un
ordenador es muy tonto, las personas somos muy listas. Los ordenadores son trabajadores y
las personas son por lo general perezosas. Conviene ver el vdeo porque las explicaciones estn
geniales y nos hacen entender mejor a los ordenadores.
Tipo de datos
En un ordenador tengo datos y los datos son de un tipo. Luis Fernndez nos explica los
motivos y la razn de ser. Adems cmo eso nos afecta en la prctica en trminos de lenguaje
informtico, pues a un tipo se le asocian una serie de operaciones bsicas. Si son numricos
podramos sumar, restar, etc. Si son cadenas concatenar y si son lgicos, operaciones lgicas
de comparacin, etc.
Todo eso son tipos de datos simples. Los tres tipos bsicos (numrico, cadena y lgico, o los
que tenga cada lenguaje), son lo que se llaman tipos de datos primitivos y son en los que se
centra la explicacin. No obstante, tambin nos explic qu pasa con tipos de datos complejos,
fechas, facturas, alumnos de un curso, operaciones asociadas sobre esos tipos, etc.
Con los tipos de datos primitivos son con los que se construye cualquier sistema en el mundo,
en el fondo. Sobre esos datos nos explic varias cosas como:
Sobre el asunto de operadores hubo bastantes explicaciones, ya que cada tipo de datos es capaz
de atender a una serie de operadores, que sirven para realizar operaciones sobre ellos. Sobre
tipos numricos debes hacer operaciones matemticas y sobre cadenas haces otro tipo de
operaciones como la concatenacin. Sobre los lgicos tienes operaciones como AND, OR y
NOT.
Variables
Luego nos explic sobre las variables. Las variables tienen un nombre que sirve de referencia
para almacenar un dato. Por tanto, las variables tienen un tipo, que es el tipo del dato que
almacenan.
El nombre de "variable" nos indica que bajo ese nombre, bajo esa referencia a un dato,
podemos almacenar algo que puede cambiar con el tiempo. Por eso es variable.
Constantes
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 9 de 45
Curso de programacin
Nos introdujo el concepto de constante, que a diferencia de la variable, una vez que cargas el
valor en la constante, no puedes actualizarse durante la vida del programa.
Asignacin
Nos explic al final del vdeo acerca de la asignacin, que es la operacin para insertar un valor
en una variable, o una constante. Siendo que las variables, adems de asignarle por primera
vez un valor, se pueden asignar valores nuevos que sobreescriban a los que haba
anteriormente en una variable. Las operaciones de asignacin se revisaron rpidamente, pues
es un asunto que se repitir incansablemente a lo largo de todo el curso.
El vdeo de esta clase de programacin bsica, sobre los tipos de datos lo puedes ver aqu.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 10 de 45
Curso de programacin
Algoritmo
Este es el resumen de la primera parte de la charla dedicada a los algoritmos, realizada durante
el Curso Gratuito de los Fundamentos de la Programacin, en EscuelaIT, la comunidad y
plataforma para la formacin asistida de DesarrolloWeb.com. Este tema de los algoritmos se
vio en la segunda sesin del curso. En la primera tuvimos una Introduccin a los Lenguajes de
Programacin en plan general y una descripcin detallada de los Tipos de Datos.
La clase fue impartida por Miguel Angel Alvarez, fundador de DesarrolloWeb.com y EscuelaIT.
En este artculo encontrars un resumen de la exposicin junto con el vdeo de la clase grabada
y las diapositivas que se usaron para la presentacin, embebidos en el propio artculo al final
del presente texto.
Concepto de Algoritmo
El algoritmo es algo que forma parte de nuestro da a da, en realidad es un concepto tan
comn que resulta hasta raro que, muchos de nosotros, solo lo conozcamos cuando nos
ponemos a estudiar programacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 11 de 45
Curso de programacin
Como detalle fjate que no necesitas acudir a un libro de programacin para conocer la palabra
algoritmo, pues como deca es algo que cualquiera de nosotros hace en la vida normal. sta
que est aqu es la definicin de la Real Academia de la Lengua.
Preparar caf
Tomar un bao
Hacer la cama
...
Son operaciones tan habituales y tan simples que casi siempre obviamos que exista un
algoritmo definido para ello. Aunque no todos los algoritmos son tan sencillos.
Un algoritmo se define mediante la especificacin de una serie de pasos, como en este ejemplo.
Beber un vaso de agua:
Como podis ver, no hace falta saber programacin para disear un algoritmo. Entonces Por
qu es importante?
Lo veremos claro enseguida, pero antes os formular con otra pregunta Habis odo la frase
"Los ordenadores son tontos"? Estis de acuerdo?
Yo no estoy totalmente de acuerdo con esa frase. Pensar en todo lo que se puede hacer con un
ordenador, trabajos digitales con programas como Photoshop, Pelculas increbles y de un
realismo acojonante hechas con computador, juegos, en 2D y 3D increbles, o incluso la
inteligencia artificial desarrollada en ellos. Alguien ha intentado jugar contra la mquina en
uno de esos juegos de ftbol actuales?
Cuando veo las cosas que se pueden hacer con ordenador me hace pensar que es muy difcil
que algo "tonto" consiga resultados tan impresionantes. Pero eso de que los ordenadores son
tontos se dice porque a ellos todo les debe ser explicado. El ordenador es un conjunto de cables
y circuitos que, en principio, no sabe hacer nada a no ser que creemos un programa para ello.
En los programas necesitamos decirle a la mquina todos y cada uno de los pasos que debe
realizar para completar nuestro objetivo. Y qu es eso? no es ms que la definicin de
algoritmo.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 12 de 45
Curso de programacin
Qu es un programa
Ahora, para ahondar en el concepto de algoritmo, debe quedar claro que ste es un paso previo
a escribir cdigo. Para escribir un programa antes debo pensar en el algoritmo que resuelve mi
necesidad. El programa viene despus del algoritmo: es la expresin de un algoritmo en
un lenguaje de programacin.
Aunque los diagramas de flujo o el pseudocdigo son tiles porque nos permiten un paso
intermedio entre los algoritmos expresados por palabras y el cdigo fuente de los programas,
no los vamos a ver de momento. Dado que todos sabemos escribir, por ahora vamos a
limitarnos a escribir los algoritmos con palabras.
Permetro de un rectngulo
Media
Estos programas que hemos visto sin duda ilustran bien esa frase, pero pensar que cuando
hacis un programa grande (un juego, un programa de gestin), entran en juego cientos o
miles de algoritmos distintos y como programadores debemos no solo escribirlos, sino hacer
que se comporten bien los unos con los otros, se coordinen, comuniquen, compartan
informacin, respondan a las acciones del usuario, etc, etc.
Por tanto, podramos decir que programar es mucho ms que escribir algoritmos en un
lenguaje de programacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 13 de 45
Curso de programacin
Partes de un algoritmo
En esta parte de la clase se explicaron las partes de un algoritmo, junto con diversos ejemplos
para tratar de identificarlas ya en el cdigo Javascript.
Entrada de datos
Caractersticas de un algoritmo
Estas son las caractersticas que debe tener un algoritmo. Algunas de ellas ya las hemos
mencionado. Te dars cuenta que la mayora son de sentido comn.
Estar bien detallado: No nos olvidemos que a los ordenadores hay que darles todos los
pasos, uno a uno, sin olvidar u obviar ninguno de ellos, porque por si solos no son capaces de
entender nada.
Estar bien ordenado: Lgicamente, un algoritmo tiene unos pasos a ser realizados en una
secuencia. Pensemos en el algoritmo de beber agua. Qu os parece si despus de sacar el vaso
del armario de la cocina me lo llevo directamente a la boca para beber?
Tener un principio y un fin: Tenemos que empezar por algn lugar y terminar en un
nmero finito de pasos, si no, no es un algoritmo. Si nunca acaba nuestro proceso soy incapaz
de llegar al final y por tanto no obtengo el resultado deseado, con lo que no se cumple la
definicin de algoritmo.
Ser fiable: Este punto incluye muchas cosas, como que el algoritmo resuelva los problemas
sin errores y tambin que una misma entrada de datos produzca una misma salida. Si estamos
haciendo el algoritmo del rea de un cuadrado y para un cuadrado de 2 metros una vez
calculamos el rea como 2 metros cuadrados y otras veces como 4 metros cuadrados, habr
algo que hemos hecho mal.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 14 de 45
Curso de programacin
A continuacin podrs ver el vdeo de la clase de algoritmos, recordando que este vdeo lo
hemos dividido en dos partes, en esta ms enfocada a conocer el concepto de algoritmo y sus
caractersticas.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 15 de 45
Curso de programacin
En esta clase realizamos un par de ejercicios interesantes que nos ayudan a asentar de manera
emprica los conocimientos de la primera charla de Miguel Angel Alvarez, dedicada a los
algoritmos. De hecho, esta parte con los primeros algoritmos de Javascript y la parte anterior,
fueron realizados en el mismo bloque o misma sesin. En realidad forman parte de la misma
clase, simplemente nosotros la hemos dividido para que el estudiante la pueda digerir mejor.
La este segmento de la clase se divide a su vez en dos ejercicios realizados para entender mejor
los algoritmos. Por una parte realizamos la descomposicin en aos, meses y das un nmero
de das dado. Por otra parte calculamos la distancia entre dos puntos en un eje de coordenadas
2D.
Para ese valor de das, 10.000, el programa nos devolvera un dato como este: "Ha vivido 27
aos, 4 meses y 25 das.". En simples palabras, el algoritmo que usaramos para obtener ese
resultado lo podemos ver a continuacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 16 de 45
Curso de programacin
Nota: Para simplificar nuestros clculos vamos a suponer que todos los aos tienen 365
das y nos olvidamos de los aos bisiestos. Tambin supondremos todos los meses igual a
30 das.
1. Pido el nmero de das vividos 2. Calculo el nmero de aos / 365 3. A los das vividos les
quito los das de los aos calculados. Esta operacin es el resto de la divisin de los das vividos
/ 365. Ese resto de la divisin son los das restantes que necesito para seguidamente calcular el
nmero de meses. 4. Sobre los das restantes calculo el nmero de meses / 30 5. A los das
restantes les quito los das de los mese calculados. Es la misma operacin del resto de la
divisin de los das restantes / 30. Ese resto de la divisin son los das restantes que me
quedan. 6. Muestro los resultados, aos, meses y das restantes calculados
alert("Ha vivido " + numAnos + " aos, " + numMeses + " meses y " + diasRestantes + " das.");
Es un ejemplo interesante porque podemos ver el algoritmo como una serie de pasos
secuenciales. Para calcular unos necesito haber calculado los anteriores.
Pero qu pasa si esos puntos no estn alineados, son dos puntos cualquiera? entonces la tarea
no es tan sencilla.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 17 de 45
Curso de programacin
1. Pido la coordenada x del punto a 2. Pido la coordenada y del punto a 3. Pido la coordenada x
del punto b 4. Pido la coordenada y del punto b 5. Calculo el tamao de la componente
horizontal (cateto 1) 6. Calculo el tamao de la componente vertical (cateto 2) 7. Elevo al
cuadrado componentes vertical y horizontal 8. Las sumo 9. Aplico la raz cuadrada 10. Muestro
la distancia
alert(distancia);
Os parece correcta esa frase? Pensar en lo que hemos comentado, un programa no es ms que
la expresin de un algoritmo en un lenguaje de programacin. El algoritmo, ese concepto que
hemos conocido hoy es ms importante por ser comn a todos los lenguajes. El cdigo no es
ms que la expresin de ese algoritmo. Es como una receta de cocina, la Paella, conocida en
cualquier parte del mundo. Puedes escribir la receta de ese delicioso plato en espaol,
valenciano o cataln, francs, japons, etc. Pero el cocinero cuando se ponga a hacer la paella
realizar los mismos pasos exactamente independientemente del idioma que hable. As que es
ms importante el proceso en si que el idioma con el que quieras expresar la receta.
Conclusin
Hemos aprendido qu es un algoritmo, qu es un programa, que escribir cdigo en un lenguaje
de programacin es una pequea tarea de las que un programador debe realizar. Hemos
aprendido que los algoritmos deben disearse con cuidado, porque son la parte ms
importante de un programa.
A continuacin puedes encontrar el vdeo con la grabacin de esta clase. La clase fue emitida
en directo, pero aqu tienes la grabacin para verla en el momento que desees.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 18 de 45
Curso de programacin
Para acabar os dejo unos ejercicios para que pensis sobre ellos:
Disear un algoritmo para: Hacer una tortilla Cruzar la calle sin ser atropellado
Nota: Para cruzar la calle observareis que tenis que preguntaros cosas que sern
necesarias para algoritmos ms complejos y que forman parte de las siguientes clases del
curso.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 19 de 45
Curso de programacin
Alternativas o condicionales
Es una clase del Curso de los fundamentos de la Programacin que realizamos en enero de
2015, orientado para todos aquellos que desean dar los primeros pasos en el mundo de las
lneas de cdigo.
En esta ocasin nos dedicamos a exponer todas las nociones y ejemplos que nos ayuden a
entender las primeras estructuras de control que aprende todo futuro programador, como son
los condicionales o alternativas. La clase fue impartida por Alberto Basalo, colaborador de
DesarrolloWeb.com co-autor del Manual de AngularJS y profesor en diversos cursos de
EscuelaIT y otros centros de formacin.
Con la analoga de la receta, nos pone varios casos en los que debo tomar decisiones para hacer
cosas, como agregar sal si est la comida sosa o apagar el fuego si est la comida lista.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 20 de 45
Curso de programacin
Con ello el ordenador deja de ser "tonto" y comienza a poder tomar algn tipo de decisin.
Luego se analiza que las condiciones son muy habituales en nuestros procedimientos
cotidianos:
Los lunes y mircoles tengo partido, los martes clase de ingls y el jueves francs. Los
dems das libres.
Al realizar programas de gestin, o cualquier otro tipo de programas debemos pensar en esas
situaciones, que a veces nos las marca la propia lgica de la aplicacin que estamos realizando.
Si te piden hacer un sistema que vende entradas para un partido y que se apliquen descuentos
para ciertas personas, como jubilados o socios, pues entonces tendrs que usar condicionales
para observar esas situaciones, si se cumplen o no, a fin de dar el precio de la entrada con el
descuento que toca, si es que toca aplicar algn descuento. Sobre una situacin como esa
Alberto nos realiz diversos ejemplos.
Ejemplos de programacin
En el bloque principal de la clase Alberto nos introdujo ya cdigo Javascript para resolver
situaciones en las que entraban en juego los condicionales. Nos explic:
Partes de un condicional
Cmo declarar las expresiones que se deben evaluar para saber si se debe ir por un lado
o por otro del condicional
Para calcular expresiones se usan las variables del sistema, se pueden usar operadores lgicos
que nos han explicado ya para crear todo tipo de expresiones, tan complejas como queramos.
if(abonado){
precio = 90;
} else {
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 21 de 45
Curso de programacin
precio = 100;
Todo se vio a lo largo de varios ejemplos en los que se fue agregando dificultad y nuevas
expresiones como "else if". Al final tambin se introdujo la posibilidad de anidar los if,
colocando unos dentro de otros, para crear todo tipo de flujo condicional tan complejo como
sea necesario.
Las diapositivas de esta sesin sobre alternativas en la programacin las encuentras embebidas
a continuacin.
Adems tambin te dejamos el vdeo de la clase completa para conocer a fondo las estructuras
condicionales, en trminos generales y cmo escribir esas estructuras con los bloques if, else,
else if, en Javascript.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 22 de 45
Curso de programacin
Repeticiones o bucles
Esta es una clase del Curso de Fundamentos de la Programacin que realizamos con
EscuelaIT, de manera gratuita para todos los compaeros de la comunidad de
DesarrolloWeb.com. Se trata de un curso donde recorrimos los temas ms importantes a la
hora de aprender programacin, desde cero.
En el presente vdeo intervino como profesor Jos Dimas Lujn, que es el director y
presentador de los #androidIO que emitimos en DesarrolloWeb.com, autor tambin del
Manual de Android de este sitio web. Profesor en diversos cursos de EscuelaIT y en
universidades de El Caribe, Mxico.
En este texto encontrars un resumen de la clase y luego, al final, el vdeo grabado en la sesin
emitida en directo, junto con las diapositivas de la presentacin.
El concepto es bien simple, si hay que hacer algo varias veces, usamos una repeticin. Algunas
veces sabremos el nmero de veces que debemos realizar una o varias acciones, otras veces no
se tendr claro desde el inicio, pero s se sabr que hay que repetir algo. Incluso hay procesos
en los que podramos repetir algo tantas veces como ninguna, y tambin podra ser una
repeticin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 23 de 45
Curso de programacin
El ejemplo que usa Jos en el minuto 2 del video es el de un revisor de entradas en la puerta de
la sala del cine. l tendr que recibir la entrada de cada una de las personas que entran en la
sala, as que encontramos una repeticin. Sin embargo no sabe cuntas veces lo va a tener que
hacer. Algunas veces pueden entrar muchas personas, hasta la capacidad mxima de la sala,
pero en algunos horarios con menos pblico pueden venir pocas personas, incluso tan pocas
como una, o ninguna persona. En trninos de programacin informtica, aunque no entre
ninguna persona a la sala del cine, igualmente es una repeticin.
A veces las repeticiones son ms complejas y no tienen por que ser una nica accin, ya que el
ciclo puede tener muchas operaciones a ser repetidas.
Tipos de bucles
A partir del cuarto de hora de clase nos muestra ya cdigo en Javascript para mostrarnos los
tipos de bucles o repeticiones que vamos a tener disponible en este lenguaje.
El bucle FOR es el que explica para comenzar y es el bucle donde mejor se encuentran o se
localizan las tres partes de una repeticin. Su sintaxis es esta:
//instrucciones de la repeticin
Tambin nos explica en la clase otros bucles disponibles en Jacascript, como son el while y el
do...while, junto con una explicacin sobre qu situaciones son ideales para uno y otro bucle.
Muy en resumen:
El bucle for se usa generalmente cuando sabes el nmero de veces que debes ejecutar
algo y las condiciones las puedes expresar de manera numrica.
El bucle while se usa generalmente cuando no sabes el nmero de veces que debes
ejecutar algo. Tambin es necesario cuando la condicin para ejecutar el bucle no
depende de algo que pueda ser numrico, por ejemplo, pedir una clave al usuario hasta
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 24 de 45
Curso de programacin
que sta sea la vlida. Como podrs ver, no sabes el nmero de veces que un usuario
introducir texto hasta que acertar la clave.
El bucle do...while es exactamente igual que while, solo que sabes con seguridad que
debes hacer algo al menos una vez. Por ejemplo, el bucle del ejemplo anterior, pedir la
clave hasta que el usuario te de la clave verdadera, sera bueno para realizar con una
estructura do...while, porque siempre sabes que la clave la vas a tener que pedir al
menos una vez.
Durante los ejemplos que nos mostr Jos incidi mucho en que, muchas veces, un mismo
problema lo puedes resolver de distinta manera. Una repeticin que resuelves con un for, de
una manera parecida la podras resolver con un while, solo es cuestin de saber expresarse en
el cdigo.
En fin, lo mejor es ver el vdeo para entenderlo todo y acceder a las explicaciones completas del
profesor para introducirse en los bucles y cmo expresarlos en Javascript.
Ahora tienes el vdeo completo de esta clase del curso de programacin, dedicada a los bucles.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 25 de 45
Curso de programacin
Subprogramacin, funciones
Esta es una clase en vivo, que ahora puedes ver en su grabacin, emitida en el contexto del
Curso de Programacin que realizamos gratuitamente para todos los interesados de la
comunidad de DesarrolloWeb.com / EscuelaIT. La imparti Claudio Morales @pronuer, que es
el lder de la Comunidad de PHP de Mxico.
Qu es subprogramacin
La subprogramacin es fundamental en cualquier lenguaje de programacin, aunque no existe
desde siempre. Al principio los lenguajes no facilitaban la creacin de subprogramas y todo el
cdigo se escriba en una secuencia interminable de lneas con sentencias. Solo con la
programacin estructurada aparecieron las primeras herramientas para crear subprogramas.
En definitiva, es una manera elemental de crear y mantener el cdigo de los programas, que
nos permite dividir los problemas en partes ms pequeas, ms fciles de implementar. Sirven
por tanto para organizar nuestro cdigo, pero nos ofrecen diversas otras ventajas.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 26 de 45
Curso de programacin
se pueden invocar desde diversos sitios de un programa, las veces que se desee, o se necesite.
Por ejemplo, si tenemos un aplicacin de gestin empresarial, podras tener un programa que
te resuelva todo el tema de facturacin. Sin embargo, ese objetivo puede ser lo suficientemente
grande y complejo para crear varios subprogramas. Por ejemplo, uno para crear facturas, otro
para borrarlas otro para enviarlas por email al cliente, y as puedes tener tantos subprogramas
como necesites, abonar facturas, marcarlas como pagadas, crear clientes, etc. Incluso, puede
haber subprogramas que llaman a otros subprogramas, quizs al crear la factura necesitas
invocar el subprograma que crea un cliente.
Esa estructura de funciones y funciones que llaman a otras funciones (aqu cuando me refiero
a funciones no es ms que un sinnimo de subprograma), es la base del primer modo de
jerarquizar que apareci en los lenguajes de programacin, que nos ayuda no solo a resolver un
problema complejo, sino que nos permite entenderlo mejor y tambin facilita el
mantenimiento del cdigo, una vez el programa ya ha sido creado.
Tambin se muestra cmo se invocan las funciones en un cdigo, por medio del nombre de la
funcin y se hizo mucho hincapi en mostrar como un programa mejora en muchos sentidos
cuando se realizan funciones para implementar aquellas tareas bsicas.
Durante la clase se vieron varios ejemplos de funciones distintas que servirn de banco de
pruebas para cualquier persona que desee realizar sus propias prcticas.
API de Javascript
En el ltimo bloque de esta clase se dio a conocer el API de Javascript, de una manera
introductoria. Se explic que cualquier lenguaje ofrece un conjunto de funciones ya listas para
realizar tareas bsicas, como entrada y salida de datos, trabajo con fechas, estructuras de datos
como arrays, trabajo con cadenas, matemticas, etc.
Javascript es un lenguaje con una extenssima cantidad de funciones, que no solo nos sirven
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 27 de 45
Curso de programacin
para realizar programacin bsica, sino que nos permite adems controlar miles de aspectos
del navegador, como la ventana, el historial de navegacin, el almacenamiento local y un largo
etc.
El vdeo de la clase, en su grabacin, lo puedes ver ahora, esperamos que puedas aprender
muchas cosas y disfrutes con las explicaciones del profesor.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 28 de 45
Curso de programacin
El objetivo, por tanto, es explicar los conceptos fundamentales relacionados con los objetos, de
modo que nos suenen y podamos entender las bases de este modelo de programacin, presente
en Javascript, pero tambin en muchos otros lenguajes populares.
Esta es una clase que requiere un esfuerzo especial, para abrir la mente y asimilar conceptos
un poco ms abstractos. Por eso os pido un poco de paciencia y aunque al principio puedan
parecer conceptos complicados observareis que poco a poco se va entendiendo mejor de qu se
trata esto de los objetos.
A continuacin tienes un resumen en texto del contenido de esta clase y al final encontrars
embebido el vdeo completo de esta clase, donde se amplia esta informacin, junto con las
diapositivas.
Nota: La clase de objetos la hemos decidido partir en dos vdeos, en este tienes
conocimientos generales de objetos y en el siguiente vers cmo aplicar esos conocimientos
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 29 de 45
Curso de programacin
Qu es un objeto?
Luis Fernndez lo defini al hablarnos sobre tipos de datos : Agrupaciones heterogneas de
datos simples, con sus operaciones.
Quizs de momento es un poco difcil de asimilar el mundo de los objetos por medio de esa
definicin, pero a lo largo de la clase se explicar ms detalladamente y podrs entender la
frase.
Ej: ser humano. Cualquiera de nosotros podra ser descompuesto en una serie de objetos, que
forman sistemas y que colaboran entre si para llevar a cabo una vida humana. En la OOP se
intenta llevar este mismo esquema al desarrollo de software, que se repite tanto en la
naturaleza como en las estructuras o sistemas creados por nosotros.
Como veis, ninguna de estas definiciones somos capaces de asimilarlas todava al 100% y, ni
mucho menos nos hacen entender qu son esto de los objetos. As que tendremos que
remontarnos un poco ms atrs para poder dar una definicin que seamos capaces de
entender.
Lenguajes de alto nivel y Javascript: Antes de la llegada de Javascript hay varios pasos
intermedios, pero observis que con Javascript es ms sencillo de programar que con ceros y
unos o con el lenguaje ensamblador. Esto es porque los lenguajes cada da se parecen ms a la
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 30 de 45
Curso de programacin
forma de expresarnos de las personas. Este tipo de lenguajes menos cercanos a la mquina y
ms a la expresin de los humanos se les llama lenguajes de alto nivel.
Una de las muchas cosas que evolucionaron en los lenguajes tiene que ver con los tipos de
datos.
Numrico
Cadena
Lgico (boleano)
Con estos tipos de datos, que son los principales en la mayora de lenguajes, se llaman
primitivos. Sobre ellos se construye cualquier cosa, se hace un excitante juego de carreras de
coches, "se lleva un cohete a la luna"...
Pero qu pasa con los tipos de datos ms complejos? Por ejemplo, piensa en una coordenada
en el eje 2D. La coordenada se define por dos valores (x,y).
Si quieres que vayan juntas puedes usar una estructura de un array, una variable con mltiples
compartimentos para guardar cosas. Como las carpetas con compartimentos donde guardas
por separado los apuntes de cada asignatura. Veremos soluciones como stas de los arrays en
la clase dedicada a las estructuras de datos.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 31 de 45
Curso de programacin
Una coordenada est compuesta por dos nmeros (elementos de tipo de datos numrico), pero
en la prctica, en muchas ocasiones queremos juntar cosas diferentes.
Agrupaciones heterogneas
Piensa en elementos como estos, que tienen que ser manejados en multitud de programas:
Observars que en estos, y muchos otros, elementos de los programas necesitas mezclar cosas
distintas. Podramos usar un array, pero enseguida veris que se nos queda corto y lo que es
peor, en muchos lenguajes no se pueden meter cosas de tipos distintos en un mismo array.
Osea, si haces un array en C, todos los elementos de ese array deben tener el mismo tipo.
Con dos coordenadas podrs querer saber la distancia que las separan
Todas esas funciones, con lo que sabis ahora, se tienen que definir por separado. Es decir, en
los lenguajes tenemos por una parte los datos, en variables o estructuras, y por otra tenemos
las funciones. Quizs hoy todava no sois capaces de ver la problemtica de ello o la manera de
mejorar esa situacin, pero muchas personas pensantes han llegado a soluciones. Para que lo
puedas ver, quizs sea bueno realizar un anlisis.
Plantate que quieres saber la distancia de dos puntos (este algoritmo se explic en la clase de
primeros algoritmos en Javascript).
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 32 de 45
Curso de programacin
//Las sumo
//Devuelvo el resultado
Qu te parecera si a una coordenada (que en principio dijimos que eran dos datos con dos
puntos, en el eje de las x y de las y) adems pudieras pedirle que realizara operaciones. En ese
caso podras resolver esa operacin de solicitar la distancia simplemente pidindole a la
coordenada que te la indique.
Cuando tenemos estructuras de datos heterogneas como una factura, o un usuario nos resulta
extremadamente til que dentro de ellas tambin se incluyan una serie de funcionalidades
asociadas, porque simplifica mucho el trabajo con ellas.
factura aparte de guardarme simplemente esos datos, tambin me resulta cmodo que
responda a las cosas que yo necesito hacer sobre una factura:
registrar pago
imprimir
Verificar si es vlido
dar de baja
Todo ello nos facilita la programacin, simplifica el cdigo y permite una mayor reutilizacin y
modularidad. Resumo algunos detalles.
Defino las facturas una vez y luego puedo crear tantas como desee, todas tendrn los datos de
cada factura de mi programa y respondern a operaciones habituales que yo necesite. En mi
programa de gestin, que trabaja con facturas, simplemente les pido a las facturas que hagan
cosas, por favor factura, imprmete, abnate, dime tu precio sin iva... Soy capaz de reutilizar el
cdigo de mis facturas para cualquier programa de gestin que deba trabajar con facturas.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 33 de 45
Curso de programacin
Clase
Objeto
Propiedad
Mtodo
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 34 de 45
Curso de programacin
Esta es la clase dedicada a objetos del Curso de Programacin bsico que realizamos en
DesarrolloWeb.com en enero de 2015. En ese curso impartimos una clase dedicada a los
objetos, que estuvo muy bien para todos aquellos que quieran comenzar con este paradigma de
la programacin.
La clase actual pertenece a la exposicin de objetos, dedicada al uso de los objetos dentro del
lenguaje Javascript. Consulta el vdeo anterior si quieres saber qu son los objetos y conocer
sus conceptos relacionados.
Ten en cuenta que en este texto encontrars solo un resumen de la clase y para encontrar el
contenido completo tendrs que ver el vdeo de la clase, impartida por Miguel Angel Alvarez.
Al final de este texto est embebido el vdeo.
Estos dos puntos hacen que Javascript no sea el mejor lenguaje para aprender a programar con
orientacin a objetos, pero esperamos que no sea un inconveniente para entender cmo se
aplican los conceptos de OOP.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 35 de 45
Curso de programacin
El proceso de instanciacin se realiza, como en muchos otros lenguajes, por medio del
operador "new".
//Operador new
La variable sobre la que guardo un objeto es igual que cualquier otra variable conocida hasta
ahora. Esto lo podrs leer como "asigna en la variable factura1 el resultado que se produzca al
instanciar un nuevo objeto de la clase Factura".
Nota: Ojo, en Javascript no existen las clases como tal. Esto va a cambiar en futuras
revisiones del lenguaje, pero, como veremos ms tarde, no existe la "clase Factura" como
tal, sino que simplemente es una funcin.
El acceso a propiedades y mtodos de los objetos se realiza por medio del operador punto ".",
indicando primero el objeto (el nombre de la variable donde he almacenado un objeto),
seguido de punto (.) y luego el nombre de la propiedad o mtodo a acceder, teniendo en cuenta
que los mtodos al ser funciones, requieren los parntesis detrs para realizar el paso de
parmetros.
factura1.cliente = "EscuelaIT";
factura1.imprimir();
Ahora veamos cmo se define la clase factura, apreciando que no es ms que una funcin. Eso
es algo muy particular de Javascript, dado que en este lenguaje no existe el concepto de clase.
function Factura(){
this.imprimir = function(){
Las operaciones de instanciacin y de acceso a sus atributos o mtodos se pueden hacer como
hemos visto.
factura1.cliente = "Miguel";
factura1.imprimir();
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 36 de 45
Curso de programacin
operaciones tpicas, como trabajo con fechas, matemticas, arrays, cadenas, etc. En este
lenguaje esas funciones nos las ofrecen por medio de objetos incorporados. En esta exposicin
se hizo un rpido listado de los objetos incorporados y el sentido de su existencia:
...
Estos objetos incorporados los vimos ya en uso durante las clases del curso y en esta clase te
explicamos cmo usarlos. Se vi un ejemplo de uso de las funciones de cadenas.
alert (cadena.length);
alert (cadena.toLowerCase());
Al ver ese cdigo aprecia que en Javascript las cadenas de caracteres se comportan como si
fueran objetos. Con cadena.length accedemos a la propiedad que contiene el nmero de
caracteres de la longitud del string. Con cadena.toLowerCase() alteramos una cadena, donde
puede haber maysculas y minsculas, para que solo tenga minsculas.
Tambin vimos ejemplo del trabajo con la clase Date de Javascript, para trabajo con fechas.
En este caso creamos una nueva fecha y luego extraemos los valores de dias, meses y aos,
para luego imprimirlos en la pgina.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 37 de 45
Curso de programacin
DOM en Javascript
El Document Object Model (DOM) contiene una correspondencia en objeto de cada uno de los
elementos del navegador. Es decir, todos los elementos de la pgina estn representados
dentro de lo que se conoce como DOM y disponibles para los programadores en Javascript. En
el DOM encontramos objetos que corresponden con elementos presentes en el navegador
(ventana, historial, etc.) y en el documento o pgina que se est visualizando (cuerpo,
etiquetas, elementos de formulario, etc.).
Cambiando el estado del DOM, cambiamos el estado de los elementos de la pgina. Ese es el
mecanismo por el cual mediante Javascript podemos alterar el estado de la pgina, muy
habitalmente como respuesta a acciones del usuario (eventos).
Dentro del DOM hay elementos simples, como podra ser un prrafo, o una etiqueta DIV, pero
algunos tan complejos como el elemento CANVAS que tiene una complejidad muy grande y
una cantidad enorme de funciones y mtodos orientados a dibujar cualquier tipo de diseo de
mapa de bits en una pgina web.
En la penltima parte de este vdeo veremos un ejemplo de trabajo con el API (juego de
funciones) de Canvas, para crear una imagen realizada dinmicamente por medio de
Javascript.
circulos = parseInt(circulos);
context.beginPath();
context.arc(75,75,50,0,Math.PI*2,true);
context.fillStyle = '#272298';
context.fill();
context.beginPath();
context.arc(85,54,21,0,Math.PI*2,true);
context.fillStyle = '#fcfdff';
context.fill();
context.beginPath();
context.arc(88,52,14,0,Math.PI*2,true);
context.fillStyle = '#dbf6fd';
context.fill();
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 38 de 45
Curso de programacin
context.beginPath();
context.arc(90,53,6,0,Math.PI*2,true);
context.fillStyle = '#101010';
context.fill();
var usuario = {
nombre: "Manolo",
edad: 35,
autenticado: true
};
for(campo in usuario){
alert(campo);
alert(usuario[campo]);
Las primeras lneas son la definicin de un objeto por medio de su literal y el bucle for nos
permite realizar un recorrido por todas sus propiedades. Decimos que es un recorrido genrico
porque da igual el nmero o nombre de sus propiedades, independientemente de ellos el bucle
los recorrer todos, accediendo tanto al nombre del campo como a su valor.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 39 de 45
Curso de programacin
Estructuras de datos
En este vdeo os presentamos uno de los contenidos bsicos que todo programador debe
conocer cuando est empezando, como son las estructuras de datos. Es una clase del Curso de
los fundamentos de la programacin, que impartimos a principios de 2015. La clase la ofreci
Jos Dimas Lujn, profesor de universidad en Cancn.
La clase trata de explicar en trminos generales qu son las estructuras de datos y por qu son
importantes en el mundo de la programacin, aplicaciones e implementaciones bsicas.
Los tipos de estructuras de datos que se usan en la programacin tambin son similares a los
que encuentras en tu da a da. Por ejemplo, las camisetas de tu armario probablemente estn
una encima de la otra y muchas veces (al menos los hombres solemos hacer eso) coges la
camiseta que est arriba del todo porque es la ms fcil de retirar y porque no quieres
preocuparte con aquello de "qu me pongo hoy". Fuera de bromas, estructuras de datos
encuentras en la pila de lavar los platos, en la cola de los ingresos del cine, en la fila para subir
al autobs, etc. Ahora solo falta verlas en trminos de programacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 40 de 45
Curso de programacin
Empezando por arrays de una nica dimensin, lo puedes entender como una barra con
casillas, cada casilla es como una variable, solo que est agrupada con otras. As pues, en un
array tenemos diversas posiciones y en cada una de ellas se puede almacenar un dato. En cada
posicin de esa estructura de arreglo encontramos un dato diferente y para poder referirnos a
l usamos lo que se llaman ndices.
En Javascript solo hay arrays con ndices numricos y la primera casilla de un array siempre
empieza por el ndice cero. Por tanto, un array de 10 posiciones ira desde el ndice cero hasta
el nueve.
Sin embargo podemos tener arrays de varias dimensiones, por lo que pasaramos de tener una
estructura parecida a un vector (vectores de las matemticas), a una estructura de matriz, con
varias dimensiones.
Para saber cmo son y cmo se comportan estas estructuras de datos simples, piensa
nuevamente en cosas de tu da a dia. Los platos para fregar en la cocina se organizan en una
pila. Los platos sucios se colocan encima del todo y cuando vas a fregarlos el primero que
tomas es el que tienes arriba. Una cola (o en lugares tambin llamada fila) es como cuando vas
al cine y quieres comprar tu entrada en la taquilla. El ltimo que llega se coloca detrs y la
taquillera atiende primero al que lleg antes.
Esas estructuras de datos se implementan por medio de arrays, a los que se les otorga un poco
de "inteligencia" por medio de cdigo de programacin. En este vdeo se ofrecen diversas
implementaciones en Javascript. Nuevamente, te sugerimos prestar atencin a la segunda
mitad del vdeo para poder obtener ms informacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 41 de 45
Curso de programacin
de mayor a menor, menor a mayor, orden alfabtico, etc. Para todo eso generalmente los
lenguajes tienen diversas funciones que tambin revisamos en el vdeo.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 42 de 45
Curso de programacin
En este vdeo vamos a realizar un estudio de los distintos tipos lenguajes de programacin,
para conocer sus principales caractersticas y entender qu nos aporta cada uno y el motivo de
su existencia. Se trata de un conocimiento general que cualquier programador debera tener,
que le ayudar a entender mejor la disciplina de la programacin, y en definitiva su profesin.
Esta es la ltima clase del Curso de Programacin bsico que hemos realizado en
DesarrolloWeb.com y EscuelaIT y la imparti Eduard Toms @eiximenis. Al final de este texto
encontrars el vdeo con la grabacin de la clase. La clase est dividida en dos partes, en una se
trata la historia de los lenguajes de programacin y en otra se ve ms acerca de los tipos de
lenguajes que han ido apareciendo con sus detalles particulares.
Se comenta en la exposicin una serie de datos curiosos cronolgicos que nos hacen una idea
buena de como ha evolucionado toda esta disciplina de la programacin. Los primeros
lenguajes, los primeros bug, los primeros ordenadores hasta llegar al 1960 con el primer
circuito integrado o 1971 el primer microprocesador o 1981 el PC.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 43 de 45
Curso de programacin
En cuanto a tipado se habl de los lenguajes con y sin tipos, con tipado esttico y dinmico o
fuerte o dbil. Incluso de otros conceptos como el Duck Typing o Estructural Typing.
En cuanto a Paradigma hay dos tipos de lenguajes, imperativos (que son los que ms se
conocen) y el declarativo. Los imperativos se dividen en secuenciales, estructurados,
procedurales y orientados a objetos. Los declarativos a su vez se dividen en lgicos y
funcionales. Cada uno de estos tipos se explicaron con detalle, explicando sus caractersticas y
ejemplos de lenguajes representativos de cada caso.
Conclusin
En resumen, esta clase significa un bao de conocimiento que sera muy interesante para que
las personas que quieren aprender programacin consigan tener una idea global de las cosas
que pueden encontrarse mediante el cual ubicar tambin las tecnologas que estn utilizando.
Como siempre, en este resumen solamente te estamos aportando una pequea parte de esta
charla dedicada a la programacin y encontrars mucha ms informacin de utilidad si te ves
el vdeo completo que puedes encontrar a continuacin.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 44 de 45
Curso de programacin
Estaremos agradecidos si nos das cualquier tipo de opinin o comentario, tanto a los
profesores como a @deswebcom en general. Recuerda que tienes muchos otros manuales en
nuestra web que te pueden ensear de manera detallada muchos tipos de lenguajes.
http://desarrolloweb.com/manuales/curso-fundamentos-programacion.html Pgina 45 de 45