Fecha y hora actual: Domingo 25 Ago 2019 04:21
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Programando desde 0: 26- Introducción a la segunda parte

Responder al Tema

Índice del Foro > Programación en general > Programando desde 0: 26- Introducción a la segunda parte

Autor Mensaje
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1043

Mensaje Publicado: Jueves 08 Sep 2011 23:08

Título del mensaje: Programando desde 0: 26- Introducción a la segunda parte

Responder citando

Introducción

Podríamos decir que el curso de Programación Básica en Pascal tenía como objetivo introducir al mundo de la programación a cualquier persona que se lo propusiera, sin importar los conocimientos previos en la materia. O sea, lo que yo quise lograr en ese apartado fue que aquella persona que quisiera aprender a programar pudiera lograrlo aún sin saber nada y solo siguiendo lo que escribí.

Los temas dados en esa primera parte no están escritos porque sí nada más o porque a mí me gustaran; la línea del curso está basada en un curso real planificado por docentes de la universidad en la que estudio. Esto no significa que lo que escribí no sea de mi autoría, sino que me basé en el curso que ellos dictan para seleccionar los temas y el orden de los mismos, así como el enfoque y algunos de los desafíos allí propuestos. Teniendo en cuenta que el curso real impartido en la universidad es mucho más difícil en el sentido en que los profesores no te dan todo el material en la mano sino que apuntan a que investiguemos por nosotros mismos, yo sí decidí darles a ustedes todo el material en la mano y explicarles de forma lo más clara posible lo que a mí me llevó horas y hasta días buscar, estudiar y comprender.

¿Por qué? Porque ustedes no se están preparando para ingenieros o analistas, sino que quieren aprender a programar. De nada me sirve a mí y mucho menos a ustedes que yo les diga “Un arreglo se declara de tal o cual manera y se accede a sus celdas de esta otra manera”, para después de eso ponerles un ejercicio acerca de arreglos. La idea es que ustedes lo comprendieran desde el principio para luego romperse la cabeza con los ejercicios, los cuales son exactamente los mismos planteados en la universidad, por lo tanto ustedes al pensarlos y resolverlos estarían programando al mismo nivel que un estudiante universitario.

Otros ejercicios son creados por mí para dar un mayor énfasis a mi propio enfoque del curso, para que el aprendizaje sea más gradual y no tan abrupto. Por esto es que deben siempre hacer todos los ejercicios que les planteo, es la única forma de realmente aprender. Recuerden que lo más importante en la programación es la práctica y el ejercicio.

A partir de ahora dejaremos de trabajar con Pascal y comenzaremos a trabajar con el lenguaje de programación Modula 2. Para lo que aprenderemos en este apartado asumiré en todo momento que han leído y han trabajado con el apartado anterior, por lo tanto, partiré de la base de que ya saben todo lo que allí se enseñó y por tanto no me detendré nuevamente a explicar conceptos ya dados. Con esto quiero decir que al hablar, por ejemplo, de un REPEAT ustedes sabrán efectivamente de lo que se trata, yo no me detendré a explicarlo, lo mismo con todas las demás estructuras ya conocidas. De este modo estaremos continuando hacia delante. Si no han leído el apartado anterior o no tienen claros todos los conceptos allí dados, por favor, vuelvan a ello, vuelvan a leer, pregúntenme todo lo que les haga falta y, cuando sientan que ya están preparados continúen con esta parte del curso.

¿Qué trataremos en este curso?
Primero que nada y como cambio más apreciable a priori, será el paso del lenguaje Pascal al lenguaje Modula 2. Dicho lenguaje no fue elegido porque sí, sino porque como fue creado por la misma persona que creó Pascal no existen demasiadas diferencias entre las sintaxis entre un lenguaje y otro. De este modo será fácil migrar a este nuevo lenguaje todos los conceptos ya aprendidos en Pascal, pudiendo así concentrarse en aprender las nuevas metodologías de programación y no estar luchando con asimilar un nuevo lenguaje que sea demasiado distinto al que ya conocen. Asimismo, Modula 2 nos permite hacer un avance gradual de la Programación Procedimental hacia la Programación Orientada a Objetos (POO en español u OOP en inglés), aunque no terminaremos de aprender esto hasta que lleguemos a Java o a algún otro lenguaje que trabaje con objetos propiamente dichos.

Inicialmente en el curso de Pascal se comenzaba con lo que se conoce Programación Monolítica, o sea, crear un código fuente en el que se establecen distintos bloques que se van resolviendo conforme van apareciendo con lo cual el código queda como un archivo de texto larguísimo. Luego, más o menos a la mitad del curso, se introducían los subprogramas (procedimientos y funciones), los cuales permitían crear distintos “módulos” dentro del código, los cuales podían ser invocados luego más adelante; esto se conoce como Programación Procedimental. Y hasta ahí llegamos en este aspecto.
Todo esto está dentro del paradigma de programación conocido como Programación Estructurada.

Ahora, en Modula 2, aplicando aún la Programación Procedimental, pasaremos a la Programación Modular. Esto es que nuestro programa ya no constará de un único archivo de código fuente, sino que lo dividiremos en tantas partes como haga falta, cada una de las cuales es individual a las demás aunque no tiene por qué ser independiente, y en efecto, la mayoría no lo serán. De este modo estaremos creando nuestras propias librerías. Si recuerdan cuando les expliqué como usar la librería crt de Pascal para usar su procedimiento clrscr para limpiar la pantalla, sabrán un poquito de lo que estoy hablando; sin embargo solo les dejé una idea vaga del tema. En este apartado estarán usando librerías constantemente, tanto las suyas propias como las nativas del lenguaje.

Un viejo dicho en programación es el “Divide y vencerás” o “Dividir para vencer¿Qué significa? Cómo ya sabrán, un gran programa a realizar es en sí un gran problema. La idea que manejaremos en este apartado es tomar el problema completo y dividirlo en subproblemas más pequeños y por lo tanto más fáciles de solucionar de tal modo que, al juntar luego todas las pequeñas soluciones obtengamos una solución total al problema original. Dicho de otra manera, dividiremos nuestros programas de modo que cada parte se encargue de realizar ciertas tareas comunes. Luego el programa completo será capaz de realizar todo lo que se le pida al hacer llamados a sus módulos para que estos hagan lo que les corresponda.

De esta manera es posible realizar programas mucho más complejos que los que veníamos haciendo, así como trabajar en equipo de una forma mucho más cómoda, ya que distintas personas podrán hacer distintos módulos de un mismo programa para luego juntarlos todos y ver que el programa principal funciona de maravilla. Otra ventaja es que el código se puede mantener con mucha más facilidad así como actualizar o modificar, ya que es posible trabajar con un módulo por separado sin tan siquiera tocar a los demás ni preocuparse por ellos. De esta manera uno está centrado en un código fuente preciso y relativamente corto en comparación al código total, logrando así una mayor facilidad a la hora de trabajar con él.

La idea principal de este apartado es que ustedes al final sean capaces de realizar programas de porte mediano, o casi. Un programa de porte mediano podría ser un procesador de texto (no tan avanzado como Microsoft Word u OpenOfice.org Writer pero potente de todas formas), una red social al estilo Facebook, un sistema básico de cajeros automáticos, una planilla electrónica al estilo Microsof Excel u OppenOffice.org Calc (obviamente no tan poderosa), entre muchas otras cosas.

Seguiremos sin trabajar con interfaces gráficas porque primero deben aprender a desarrollar una buena lógica antes de hacer cosas vistosas y bonitas, llenas de botoncitos, ya que el crear buenas interfaces gráficas requiere pensar todo mucho más aún de lo que venimos haciendo, ya que se le deberá asignar a cada componente de nuestra interfaz una o varias funciones las cuales deberán obviamente ser programadas previamente por nosotros.

De este modo aún nos queda un largo camino por recorrer antes de poder crear un programita bonito que se vea en una ventana como las que estamos acostumbrados a visualizar, pero tengan fe en que el camino que están recorriendo ahora es el correcto.

Luego en Java veremos que resultará fácil crear ventanas, botones, menús y demás, pero no será fácil lograr que estos hagan lo que nosotros queramos cuando el usuario haga un click sobre ellos. Por eso es que deben saber programar bien los motores lógicos de sus programas y no preocuparse todavía por la estética de los mismos.

Además de adquirir nuevas técnicas de programación, les daré una introducción al diseño de programas ya que necesariamente tendré que hablarles de los Tipos Abstractos de Datos (TADs) y darles al menos una idea de cómo se han de diseñar. Con esto podrán comenzar a crear sus propios proyectos, tal vez no de la mejor manera, pero es un comienzo. Nadie pretende que salgan de aquí diseñando programas perfectos, primero necesitan hacer cosas un poco burdas para luego perfeccionarse y lograr resultados impresionantes. Todo a su tiempo y con su debido proceso de aprendizaje.

Trabajaremos con las ya conocidas Listas Encadenadas pero viéndolas como un tipo abstracto de datos, y también aprenderemos a usar otras estructuras, como Pilas, Colas, Árboles Binarios y probablemente alguna más. Para esto necesitaremos también aprender a usar la Recursión, tema que me pasé totalmente por alto en el apartado anterior, y no fue por error, fue una decisión propia ya que creo que el momento de aprender algo tan difícil es ahora.

Espero entonces que disfruten de esta segunda parte y sobretodo que aprendan mucho, que sea entendible y claro para todos y pues, que sientan que les vale la pena. Ese es el mayor rédito que puedo recibir por escribir esto, ya que no busco remuneraciones monetarias ni reconocimiento alguno, simplemente saber que este trabajo ha servido de ayuda. En mis momentos de aprendiz e incluso ahora, siempre termino aprendiendo gracias al trabajo de alguien más que se gastó en publicar por ahí cómo hacer tal o cual cosa, y lo mejor de todo es que lo hacen sin esperar nada. Gracias a ellos he aprendido mucho y sigo aprendiendo, sobretodo con Java, lenguaje que aún no he culminado de estudiar; pero no se preocupen , para lo que buscamos aquí sé más que suficiente como para que se quemen las pestañas creando buenos programas.

Bienvenidos entonces a la Segunda Parte del Curso Aprende Desde 0.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
pirdy
Usuario Inquieto


Registrado: 11 Feb 2010
Mensajes: 137

Mensaje Publicado: Jueves 08 Sep 2011 23:57

Título del mensaje: Re: Programando desde 0: 26- Introducción a la segunda parte

Responder citando

Muchas gracias amigo, impagable labor sin duda. Esas cervezas estan pendientes algun dia. Amigos

Volver arriba
Ver perfil del usuario Enviar mensaje privado
nicagio
Usuario Iniciado


Registrado: 28 Dic 2010
Mensajes: 16

Mensaje Publicado: Lunes 12 Sep 2011 01:29

Título del mensaje: Re: Programando desde 0: 26- Introducción a la segunda parte

Responder citando

hola kyusho estoy reportandome de nuevo, excelente introduccion al modulo II, estare reportandome y comentando sobre mis avances y caidas

Volver arriba
Ver perfil del usuario Enviar mensaje privado
killerangel
Usuario Iniciado


Registrado: 23 Jul 2008
Mensajes: 10

Mensaje Publicado: Miércoles 14 Sep 2011 01:15

Título del mensaje: Re: Programando desde 0: 26- Introducción a la segunda parte

Responder citando

Excelente.... simplemente excelente!!!

vamos genteeeeeeeee!!!!!!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
LongShot



Registrado: 05 Abr 2013
Mensajes: 4

Mensaje Publicado: Lunes 06 May 2013 20:52

Título del mensaje: Re: Programando desde 0: 26- Introducción a la segunda parte

Responder citando

Estimado Kyshuo. Quería hacer una pregunta sobre los programas que creamos. Mas adelante cuando creamos los programas del curso de modula 2 como por ejemplo el de listapersona. Nosotros compilamos, ejecutamos y vemos que funciona. Pero mi pregunta es como deberíamos hacer para que el programa mantenga la información. Es decir cuando cerramos el ejecutable, se guarde la informacion para que cuando abramos el programa los tengamos. No se si me explico. Muchas Gracias
Saludos!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1043

Mensaje Publicado: Lunes 06 May 2013 21:11

Título del mensaje: Re: Programando desde 0: 26- Introducción a la segunda parte

Responder citando

Te explicas perfectamente. Lo que sucede es que, de la forma en que venimos trabajando, los programas inician sin datos y luego nosotros se los cargamos a mano. Todo esto se hace en memoria RAM (que es donde se ejecutan TODOS los programas) y por tanto al cerrar el programa la RAM se libera de él y se pierden los datos. Es como si estuvieras escribiendo en Word y cierras sin guardar, lo que escribiste se perdió.

La forma de mantener los datos abarca un tema llamado Persistencia. Al cerrar un programa la RAM se libera (como ya dije), por tanto, para persisitir los datos lo que se hace es guardarlos antes de cerrar. Para lograr lo que tú quieres tendríamos que trabajar con archivos, por ejemplo, creando un archivo en el disco duro con los datos de las personas cargadas. Luego, al abrir el programa, debería ser posible obtener los datos desde el archivo a fin de seguir desde allí.

No daré persistencia en Modula 2 sino que recién lo atacaré en Java viendo el trabajo con archivos y bases de datos. La persistencia no implica únicamente aprender a crear archivos para guardar los datos, tiene unas cuantas complicaciones acerca de cómo guardarlos, como recuperarlos luego, cada cuanto se actualiza el archivo en que se persiste la información, etc.

Espero haber aclarado tu duda. Saludos.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Buenas desde el sur del sur =)

Maugarni Preséntate a la comunidad 1 Jueves 22 Ago 2019 14:09 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Hola desde bcn

Dav2k6 Preséntate a la comunidad 2 Miércoles 26 Jun 2019 19:22 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Existen problemas al descargar musica desde you...

SusanaP Tu PC 2 Martes 26 Mar 2019 19:22 Ver último mensaje
El foro no contiene ningún mensaje nuevo

hola!! los saludo desde argentina

mery Preséntate a la comunidad 2 Jueves 13 Dic 2018 17:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Llamada a web service desde form

mrrobot2 Programación Web en general 1 Martes 14 Nov 2017 00:50 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,