[CURSILLO] Programación básica
Moderador: dresha
Reglas del Foro
En Ogarena no están bien vistos el Warez ni la Piratería; para eso hay otros foros que seguro os acogen con los brazos abiertos.
En Ogarena no están bien vistos el Warez ni la Piratería; para eso hay otros foros que seguro os acogen con los brazos abiertos.
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
[CURSILLO] Programación básica
Introducción a la Programación
La programación consiste en crear nuevos PROGRAMAS ejecutables en un ordenador (.exe) por medio de un CODIGO FUENTE (texto escrito en un LENGUAJE DE PROGRAMACIÓN) el cual es COMPILADO para generar un código binario 0/1 que el ordenador pueda ejecutar.
Para este cursillo no vamos a emplear ningún lenguaje de programación concreto, vamos a utilizar un "pseudolenguaje" que permita entender lo que vamos a hacer. El motivo de no usar un lenguaje concreto para este cursillo es el siguiente : la gente que quiere programar se tira de cabeza a un ordenador y un ENTORNO DE DESARROLLO (programas que permiten escribir y compilar código fuente), y la realidad es que la programación siempre empieza en un papel, con ideas más básicas que detalles concretos. Si una persona aprende a programar de forma "abstracta" (sin pensar en un lenguaje u otro), luego le será mucho más fácil trabajar con cualquier lenguaje concreto.
Todo programa consta siempre de dos partes:
* Datos : es un espacio de memoria donde guardamos los datos con los que queremos trabajar en el programa. En jerga informática, se les llama VARIABLES.
* Programa : es un código binario que ejecuta INSTRUCCIONES concretas una detrás de la otra y con ello consiguen cambiar el valor de las variables.
La programación consiste en crear nuevos PROGRAMAS ejecutables en un ordenador (.exe) por medio de un CODIGO FUENTE (texto escrito en un LENGUAJE DE PROGRAMACIÓN) el cual es COMPILADO para generar un código binario 0/1 que el ordenador pueda ejecutar.
Para este cursillo no vamos a emplear ningún lenguaje de programación concreto, vamos a utilizar un "pseudolenguaje" que permita entender lo que vamos a hacer. El motivo de no usar un lenguaje concreto para este cursillo es el siguiente : la gente que quiere programar se tira de cabeza a un ordenador y un ENTORNO DE DESARROLLO (programas que permiten escribir y compilar código fuente), y la realidad es que la programación siempre empieza en un papel, con ideas más básicas que detalles concretos. Si una persona aprende a programar de forma "abstracta" (sin pensar en un lenguaje u otro), luego le será mucho más fácil trabajar con cualquier lenguaje concreto.
Todo programa consta siempre de dos partes:
* Datos : es un espacio de memoria donde guardamos los datos con los que queremos trabajar en el programa. En jerga informática, se les llama VARIABLES.
* Programa : es un código binario que ejecuta INSTRUCCIONES concretas una detrás de la otra y con ello consiguen cambiar el valor de las variables.
Última edición por apokalypse el 09 Abr 2011 19:04, editado 6 veces en total.
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Capítulo 1
Variables y tipos de datos
Las VARIABLES son pequeños trozos de memoria que usaremos para guardar datos concretos que necesitemos para los programas, los cuales pueden guardar desde datos de entrada del programa hasta datos intermedios necesarios para el funcionamiento del mismo programa.
Una variable puede tener datos de alguno de estos tipos:
* Entero : es el formato numérico más extendido. Incluye tanto números negativos como positivos (sin decimales) y permite trabajar con las operaciones aritméticas normales (+,-,*, raiz, ...)
* Real : al igual que el entero, permite representar números pero estos pueden mostrar también los decimales.
* Texto : este tipo de variables permiten guardar una cadena de caracteres para luego poder usarla donde corresponda (p.ej.: la entrada de un nombre por el teclado).
* Booleana : este tipo de variables solo pueden tener uno de estos dos valores : VERDADERO / FALSO.
* Caracter : igual que las variables de tipo texto, pero solo admiten un caracter por cada variable.
Hay ocasiones en las que, por ejemplo, necesitamos guardar una lista de elementos del mismo tipo. Para no tener que usar tantas variables, existe un tipo de variable llamados MATRICES. Una MATRIZ es una lista definida de X elementos que contienen datos del mismo tipo (ejemplo: una matriz nota(1 a 20) que contiene las notas de los 20 alumnos de la clase. Si queremos conocer la nota del quinto, bastaria con leer el valor de nota(5).)
Además de las matrices, puede que nos interese crear ESTRUCTURAS DE DATOS que en una sola variable pueda guardar varios datos de tipos distintos (ejemplo : un estructura ALUMNO podria incluir datos como su nombre, su dirección, su nota media, etc...).
Si queremos dar un valor concreto a una variable lo haremos mediante una ASIGNACION (instrucción de programación que cambia el valor de una variable). Las asignaciones siempre se hacen de la misma forma:
En la parte izquierda siempre se muestra la variable donde será guardado el valor nuevo del lado derecho. También podemos usar el valor antiguo de la misma variable de esta otra forma:
En este caso, la parte izquierda indica donde se va a guardar el valor de la operación de la parte derecha, pero el valor de la variable que aparece en la parte derecha es el valor que tenia la variable antes de producirse el cambio. En este ejemplo concreto, hemos aumentado el valor de la variable en 1 unidad.
Las asignaciones funcionan igual para las matrices, solo que hay que tener en cuenta el índice:
Y para las estructuras hay que indicar el campo de la misma a cambiar:
Las VARIABLES son pequeños trozos de memoria que usaremos para guardar datos concretos que necesitemos para los programas, los cuales pueden guardar desde datos de entrada del programa hasta datos intermedios necesarios para el funcionamiento del mismo programa.
Una variable puede tener datos de alguno de estos tipos:
* Entero : es el formato numérico más extendido. Incluye tanto números negativos como positivos (sin decimales) y permite trabajar con las operaciones aritméticas normales (+,-,*, raiz, ...)
* Real : al igual que el entero, permite representar números pero estos pueden mostrar también los decimales.
* Texto : este tipo de variables permiten guardar una cadena de caracteres para luego poder usarla donde corresponda (p.ej.: la entrada de un nombre por el teclado).
* Booleana : este tipo de variables solo pueden tener uno de estos dos valores : VERDADERO / FALSO.
* Caracter : igual que las variables de tipo texto, pero solo admiten un caracter por cada variable.
Hay ocasiones en las que, por ejemplo, necesitamos guardar una lista de elementos del mismo tipo. Para no tener que usar tantas variables, existe un tipo de variable llamados MATRICES. Una MATRIZ es una lista definida de X elementos que contienen datos del mismo tipo (ejemplo: una matriz nota(1 a 20) que contiene las notas de los 20 alumnos de la clase. Si queremos conocer la nota del quinto, bastaria con leer el valor de nota(5).)
Además de las matrices, puede que nos interese crear ESTRUCTURAS DE DATOS que en una sola variable pueda guardar varios datos de tipos distintos (ejemplo : un estructura ALUMNO podria incluir datos como su nombre, su dirección, su nota media, etc...).
Si queremos dar un valor concreto a una variable lo haremos mediante una ASIGNACION (instrucción de programación que cambia el valor de una variable). Las asignaciones siempre se hacen de la misma forma:
Código: Seleccionar todo
variable = valor_nuevo
Código: Seleccionar todo
variable = variable + 1
Las asignaciones funcionan igual para las matrices, solo que hay que tener en cuenta el índice:
Código: Seleccionar todo
nota(3)=7
Código: Seleccionar todo
variable_alumno.direccion = "Calle Falsa Nº 123"
Última edición por apokalypse el 09 Abr 2011 19:08, editado 6 veces en total.
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Capítulo 2
Estructuras de control
Llegados a este punto ya sabemos como leer y trabajar con las variables. Pero en casi todos los programas hay que tomar "decisiones" y en función de esas decisiones el programa reaccionará de un modo u otro.
Para ello existen las INSTRUCCIONES DE CONTROL, que permiten hacer algún tipo de COMPARACIÓN y poder hacer algo en función del resultado de dicha comparación.
La instrucción de control más utilizada es la instruccion SI ... ENTONCES ... FIN SI ("IF ... THEN...END IF" o "IF(...){...}" en los lenguajes convencionales). Esta instrucción hace una comparación que devuelve un valor VERDADERO / FALSO. Veamos un ejemplo:
Este código lee el valor de la variable y lo compara con el valor 0. En caso de que la variable sea mayor que 0, entraría en la parte del programa que va desde el ENTONCES hasta el FIN SI, pero si fuera menor o igual a 0 entonces se saltaría dicha parte de código.
Puede que nos interese que el programa haga una cosa si se cumple y otra si no se cumple. Para ello usariamos un SINO de esta forma:
Además de la instrucción SI, también existe otra instrucción de control que nos permite comparar más de dos casos : la instruccion SELECCIONAR ("switch{}" o "SELECT..." en algunos lenguajes).
Esta instrucción funciona de la misma forma que el SI, pero permite más de dos alternativas:
La forma de funcionar de esta instrucción es la siguiente : se lee el valor de la variable y se compara con los posibles valores de los CASOS. Si alguno concuerda, entonces el programa entraría en la parte de código entre el CASO y el FIN CASO correspondiente.
Llegados a este punto ya sabemos como leer y trabajar con las variables. Pero en casi todos los programas hay que tomar "decisiones" y en función de esas decisiones el programa reaccionará de un modo u otro.
Para ello existen las INSTRUCCIONES DE CONTROL, que permiten hacer algún tipo de COMPARACIÓN y poder hacer algo en función del resultado de dicha comparación.
La instrucción de control más utilizada es la instruccion SI ... ENTONCES ... FIN SI ("IF ... THEN...END IF" o "IF(...){...}" en los lenguajes convencionales). Esta instrucción hace una comparación que devuelve un valor VERDADERO / FALSO. Veamos un ejemplo:
Código: Seleccionar todo
SI variable > 0 ENTONCES
escribir en pantalla ("numero positivo")
FIN SI
Puede que nos interese que el programa haga una cosa si se cumple y otra si no se cumple. Para ello usariamos un SINO de esta forma:
Código: Seleccionar todo
SI variable >=0 ENTONCES
escribir en pantalla("numero positivo")
SINO
escribir en pantalla("numero negativo")
FIN SI
Esta instrucción funciona de la misma forma que el SI, pero permite más de dos alternativas:
Código: Seleccionar todo
SELECCIONAR variable
CASO 1:
escribir en pantalla("uno")
FIN CASO
CASO 2:
escribir en pantalla("dos")
FIN CASO
CASO 3:
escribir en pantalla("tres")
FIN CASO
...
FIN SELECCIONAR
Última edición por apokalypse el 09 Abr 2011 19:06, editado 4 veces en total.
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Capítulo 3
Bucles
Un BUCLE es una instrucción que permite ejecutar un mismo trozo de programa un número definido o no de veces. Para verlo mejor lo ilustraré con un ejemplo:
Tenemos una matriz nota(1 a 20) y queremos hacer un programa para que el profesor pueda rellenar las notas de los alumnos. Sin el uso de bucles, el programa debería ser algo así:
En esencia hay tipos de bucles: los bucles finitos y los infinitos. Los bucles finitos repiten un mismo código un número fijo de veces, y además, tienen una variable llamada ÍNDICE que nos permite saber en que ITERACIÓN (nº de veces entradas en dicha parte de programa) estamos. En el ejemplo de arriba, podríamos usar la instrucción PARA CADA indice...FIN PARA("for" en casi todos los lenguajes) de las siguiente manera:
En este programa el indice se va incrementando automáticamente en cada iteración empezando por el 1 y terminando el bucle en la iteración número 20.
Los bucles infinitos funcionan casi igual, salvo que el final del bucle está definido por una CONDICIÓN. Podemos ver el uso de la instrucción MIENTRAS (condicion)...FIN MIENTRAS (while(condicion)... en casi todos los lenguajes) en este ejemplo para el mismo problema anterior:
Aunque para este ejemplo concreto es más complejo, este tipo de bucles son útiles si tenemos que hacer algo hasta que se dé una condición (otro ejemplo : leemos por teclado hasta que el usuario escriba la clave de acceso correcta):
Este bucle pedirá una y otra vez que el usuario escriba la clave hasta que coincida con el valor "1234", en cuyo caso cambia el valor de la variable "acceso" para que en la siguiente iteración no se vuelva a entrar en el bucle.
Un BUCLE es una instrucción que permite ejecutar un mismo trozo de programa un número definido o no de veces. Para verlo mejor lo ilustraré con un ejemplo:
Tenemos una matriz nota(1 a 20) y queremos hacer un programa para que el profesor pueda rellenar las notas de los alumnos. Sin el uso de bucles, el programa debería ser algo así:
Código: Seleccionar todo
nota(1) = leer por teclado
nota(2) = leer por teclado
...
nota(20)=leer por teclado
Código: Seleccionar todo
PARA CADA indice ENTRE 1 y 20
nota(indice) = leer por teclado
FIN PARA
Los bucles infinitos funcionan casi igual, salvo que el final del bucle está definido por una CONDICIÓN. Podemos ver el uso de la instrucción MIENTRAS (condicion)...FIN MIENTRAS (while(condicion)... en casi todos los lenguajes) en este ejemplo para el mismo problema anterior:
Código: Seleccionar todo
numero_alumnos=20
indice=1
MIENTRAS indice <= numero_alumnos
nota(indice) = leer por teclado
indice = indice + 1
FIN MIENTRAS
Código: Seleccionar todo
acceso=FALSO
MIENTRAS acceso=FALSO
clave = leer por teclado
SI clave = "1234" ENTONCES
acceso=CIERTO
FIN SI
FIN MIENTRAS
Última edición por apokalypse el 09 Abr 2011 19:07, editado 5 veces en total.
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Capítulo 4
Subprogramas y funciones
Muchas veces los programadores se encuentran con situaciones de este estilo:
* Programas demasiado extensos y enrevesados
* Trozos de mismo código que se repiten en distintas partes del programa
* Cálculo de funciones matemáticas complejas.
Para ello existe un mecanismo llamado SUBPROGRAMA, el cual contiene un trozo de código y unas variables de entrada y salida y que mostraré en un ejemplo:
Para usar este subprograma en nuestro código lo hariamos así:
Los subprogramas tienen la ventaja de que podemos distribuir el código de una forma más organizada, de modo que podemos ver un programa como una serie de "tareas" (ejemplo)
En este ejemplo tenemos 3 subprogramas y cada uno se encarga de una tarea concreta : el primero pone todas las notas a 0, el segundo leeria los valores y el tercero los escribiría por pantalla.
Hay veces que nos interesa hacer cálculos de funciones y para ello hay una variante de los subprogramas llamadas FUNCIONES, las cuales siempre devuelven un único valor a partir de unos datos de entrada. Para un ejemplo, haremos la función que calcule la media de las notas:
La ventaja de las funciones es que permiten el uso de mecanismo como la recursividad (una función recursiva se llama a sí misma para hacer cálculos). Lo veremos con el clásico ejemplo (en el mundo de la programación) de hallar el número de Fibonnacci (el N-esimo número de Fibonnacci es el valor de la suma de los números de Fibonnacci N-1 y N-2 hasta llegar a 0 ó 1, en el cual devuelve uno. Un ejemplo de función recursiva sería asi:
Muchas veces los programadores se encuentran con situaciones de este estilo:
* Programas demasiado extensos y enrevesados
* Trozos de mismo código que se repiten en distintas partes del programa
* Cálculo de funciones matemáticas complejas.
Para ello existe un mecanismo llamado SUBPROGRAMA, el cual contiene un trozo de código y unas variables de entrada y salida y que mostraré en un ejemplo:
Código: Seleccionar todo
SUBPROGRAMA inicializar (entrada y salida nota(1 a 20) )
PARA CADA i entre 1 y 20
nota(i)=0
FIN PARA
FIN SUBPROGRAMA
Código: Seleccionar todo
inicializar(nota)
Código: Seleccionar todo
inicializar(nota)
leer_valores(nota)
mostrar_valores(nota)
Hay veces que nos interesa hacer cálculos de funciones y para ello hay una variante de los subprogramas llamadas FUNCIONES, las cuales siempre devuelven un único valor a partir de unos datos de entrada. Para un ejemplo, haremos la función que calcule la media de las notas:
Código: Seleccionar todo
FUNCION media(nota(1 a 20)) DEVUELVE REAL //// Tipo de datos que devuelve
temporal=0
PARA CADA i ENTRE 1 y 20
temporal = temporal + nota(i)
FIN PARA
temporal = temporal / 20
DEVOLVER temporal
FIN FUNCION
Para poder usar esta función, lo haríamos de la siguiente forma en nuestro código:
variable_media = media ( nota )
U otro ejemplo:
SI media(nota) > 5 ENTONCES...
Código: Seleccionar todo
FUNCION Fibonnacci (numero) devuelve ENTERO
SI numero = 0 ó numero = 1 ENTONCES
DEVOLVER 1
SINO
DEVOLVER Fibonnacci(numero-1) + Fibonnacci(numero-2)
FIN SI
FIN FUNCION
Última edición por apokalypse el 09 Abr 2011 19:08, editado 5 veces en total.
-
- Helper Literatura
- Mensajes: 3691
- Registrado: 09 Nov 2009 16:49
- Alianza: SCORPION
- Ubicación: Leyendo
Re: [CURSILLO] Programación básica
iba a abrir un tema para que me enseñaseis ahora mismo jajajaja cuando puedas!!
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Re: [CURSILLO] Programación básica
pues, hoy me he puesto y lo he terminado, xDDDel telible exanime escribió:iba a abrir un tema para que me enseñaseis ahora mismo jajajaja cuando puedas!!
aunque hay que decir que este cursillo solo sirve como iniciación, ya publicaré más cursillos más avanzados de programación, además de que voy a escribir GUIAS DE IMPLEMENTACION para los distintos lenguajes de programación (con ellas se puede traducir del "pseudolenguaje" al lenguaje de programación concreto).
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Re: [CURSILLO] Programación básica
opiniones porfa!!!!
y si creeis que hay algo que debiera incluir, decirmelo tambien!!!
(nota: Programación Orientada a Objetos y similares no se consideran programación básica)
y si creeis que hay algo que debiera incluir, decirmelo tambien!!!
(nota: Programación Orientada a Objetos y similares no se consideran programación básica)
-
- Helper Literatura
- Mensajes: 3691
- Registrado: 09 Nov 2009 16:49
- Alianza: SCORPION
- Ubicación: Leyendo
Re: [CURSILLO] Programación básica
apokalypse escribió:opiniones porfa!!!!
y si creeis que hay algo que debiera incluir, decirmelo tambien!!!
(nota: Programación Orientada a Objetos y similares no se consideran programación básica)
yo soy un me gustan las flores XD que no entiende nada, me tendré que poner detenidamente... lo que quiero saber de verdad es donde se programa metiendo todos los datos codigo etc, porque no tngo ni p**a idea xD
-
- Helper Programación
- Mensajes: 207
- Registrado: 25 Jun 2008 03:31
Re: [CURSILLO] Programación básica
Como bien dice la introducción, primero te convendría aprender a programar de la forma que enseña el cursillo, porque si te acostumbras a un lenguaje concreto, luego te va a costar mas pasarte a cualquier otro. Aun así, este cursillo enseña lo más básico que deberías saber antes de empezar con cada lenguaje concreto.el telible exanime escribió: yo soy un me gustan las flores XD que no entiende nada, me tendré que poner detenidamente... lo que quiero saber de verdad es donde se programa metiendo todos los datos codigo etc, porque no tngo ni p**a idea xD
Los programas que tu dices son los ENTORNOS DE DESARROLLO : son programas que permiten escribir el texto de los programas y son distintos para cada lenguaje informático.
Uno de los próximos cursillos que voy a hacer es el de Programación Básica en C, uno de los lenguajes más conocido y utilizado del mundo. Cuando haga este cursillo, os daré enlaces para que os bajeis los programas necesarios.