Hola taringueros!
En esta oportunidad les traigo un curso de programación en pascal para todos aquellos que quieran ingresar en el mundo de la programación, voy a tratar de explicar lo más simple que pueda y también poner ejercicios para que puedan practicar. Espero que les sirva y que les guste!
El objetivo de este curso es poder resolver problemas, o mejor dicho, diseñar algoritmos para poder resolver un problema de pequeña escala e implementarlos en programas escritos en el lenguaje de programación pascal.
¿Qué es un problema?
Un problema es un asunto del que se espera una solución, aunque ésta sea obvia. En matemática un problema es una pregunta sobre un objeto y una estructura matemática que requiere una explicación y una demostración. Es decir, que una vez que tengamos nuestra solución a través de propiedades matemáticas y demás, realizamos una explicación para darle sentido al resultado.
Un problema implica un desafío y requiere de cierto grado de creatividad. Puede pensarse como un proceso de búsqueda.
Si un detective tiene que hallar el responsable de un crimen seguramente va a tener pautas a seguir y estrategias para aplicar, sin embargo no existe un método infalible que le permita hallar la solución.
Para resolver quién cometió el crimen puede intentar resolver otros problemas relacionados como cuándo, cómo, dónde.
Cada una de las respuestas irá restringiendo la búsqueda de la solución.
Características de un problema
Aceptación: El individuo o grupo acepta el problema como tal y se compromete con su resolución
Desafío: No existe un procedimiento o método evidente que permita hallar la solución de manera directa.
Exploración: El compromiso fuerza la exploración de nuevos procedimientos o métodos para atacar la resolución.
Problemas y soluciones
En este curso hallar la solución va a consistir en:
Encontrar una secuencia de instrucciones que permitan pasar de un estado inicial a otro estado final de acuerdo a algunas restricciones.
Traducir esa secuencia de pasos a un lenguaje que la computadora pueda interpretar y ejecutar.
Algoritmo
Un algoritmo es una secuencia de instrucciones, comprensibles para quien tenga que ejecutarlas, que permiten resolver un problema.
-Tiene que haber un problema.
-Tiene que haber un orden entre las instrucciones, existe una única instrucción inicial y dada una instrucción en particular es posible determinar con precisión, cuál es la que le sigue.
Es una definición general, no está ligada a la programación.
De acuerdo a esta definición una receta es un algoritmo, una partitura musical o las instrucciones para armar una bicicleta también lo son.
Entonces podemos decir que:
•Un algoritmo es la especificación de una secuencia de pasos u operaciones, que cuando
los ejecuta un autómata (Una computadora por ejemplo), produce el resultado esperado y termina luego de una cantidad finita de tiempo.
•Cada paso básico (llamado primitiva) debe estar definido sin ambigüedad, y las operaciones deben ser comprensibles por el autómata que las ejecutará.
•Debe haber un único punto de comienzo y al menos un punto final.
Prueba de un algoritmo: Traza
•Una traza es una simulación de la ejecución real de los pasos en la cual se lleva un registro de los movimientos realizados. Es decir, que luego de plantear los pasos para resolver el problema los aplicamos para ver si obtenemos el resultado esperado.
•Nota:Una traza no exitosa muestra la existencia de errores.
•Nota:Una traza exitosa no garantiza la ausencia de errores.
¿Qué programa vamos a utilizar?
El programa que voy a utilizar para el curso se llama lazarus, es un programa gratuito asique no van a tener problemas en conseguirlo.
¿Donde lo puedo descargar?
Primero que nada tenemos que dirigirnos hacia la pagina oficial de lazarus.
En la esquina superior derecha seleccionamos al opción "Downloads".
Elegimos la opción correcta según nuestro sistema operativo. En mi caso windows (64 bits).
Instalación
Una vez descargado el archivo iniciamos la instalación y seleccionamos el idioma.
Seleccionamos la carpeta en la cual lo deseamos instalar.
Seleccionamos instalación completa.
La opción de poner un icono en el escritorio es a su elección. Dejamos finalizar la instalación de lazarus y listo.
Entorno de trabajo
Este va a ser nuestro entorno de trabajo.
Como pueden ver tenemos un inspector de objetos (Que no creo que vayamos a utilizar), una barra de herramientas con varias opciones y por ultimo lo mas importante, el editor de código fuente.
Como explique antes un algoritmo es una secuencia de instrucciones, comprensibles para quien tenga que ejecutarlas, que permiten resolver un problema.
Otra definición importante que nos interesa saber es la de un programa procedural.
Un programa procedural es un algoritmo escrito en un lenguaje de programación imperativo.
Todo programa en pascal esta compuesto por:
Un encabezado donde se encuentra siempre la palabra "program" seguido del nombre de nuestro programa.
Un bloque de declaraciones donde se encuentran indicadas las variables que vamos a utilizar.
Y por ultimo un bloque ejecutable donde se encontrara escrito nuestro programa.
Como todo lenguaje de programación tenemos procedimientos y funciones. Hay procedimientos y funciones predefinidos por pascal (Que son los que nos interesan ahora) como por ejemplo tenemos los procedimientos writeln, read, readln, repeat, while, if, etc... Y tenemos funciones predefinidas como +, *, abs, sqr, -, ^, etc... (Las funciones para comprenderlas más fácilmente podemos decir que son para operaciones matemáticas y demás ese es el uso que les vamos a dar por el momento). También podemos definir nuestros procedimientos y funciones (Esto lo vamos a ver mas adelante).
Empezando a programar
Primero abrimos lazarus, vamos a archivo y seleccionamos nuevo, luego seleccionamos la opción aplicación de consola.
Ahora nos fijamos que este todo en orden como en la foto.
Aceptamos y cuando se abra la nueva ventana de código fuente seleccionamos y borramos todo.
Ahora escribimos en la primer linea de código la palabra "program" y en este caso el programa se va a llamar "HolaMundo" luego finalizamos con el signo ";" que en pascal es separador de instrucciones.
A continuación, con la palabra reservada "begin" abrimos el bloque ejecutable. Este programa no tiene bloque de declaraciones porque no estamos utilizando ninguna variable. Ahora, abajo de la palabra reservada "begin" vamos a utilizar el procedimiento predefinido por pascal como "write" este procedimiento es una instrucción de salida de datos, es decir, que el programa devuelve un dato. El programa se comunica con el usuario a través de instrucciones de entrada y salida de datos. Después de escribir el comando write dejamos un espacio y abrimos un paréntesis "(" dentro del paréntesis colocamos el signo " ' " este sirve para indicar que va a iniciar texto, y hasta que no se cierre con otro signo igual el programa reconoce todo como texto, se van a dar cuenta porque lo que vamos escribiendo es azul. Escribimos la frase "hola mundo" cerramos con el signo " ' " , cerramos el paréntesis y colocamos un " ; " para separar la instrucción.
Luego dejamos un espacio y escribimos la instrucción "readln" para que cuando ejecutemos el programa no se cierre solo. Escribimos el comando readln más dos parentesis y separamos la instrucción con un " ; ". Luego finalizamos el bloque ejecutable con la palabra reservada "end" seguida de un punto y listo.
Presionamos f9 y ejecutamos el programa.
Ahora vamos con un ejercicio un poco mas difícil
Escribir un programa en Pascal que calcule y muestre el área de un cuadrado a partir de la longitud de lado ingresada por el usuario.
Todos sabemos para sacar el área de un cuadrado se multiplica lado por lado o lado al cuadrado es lo mismo. Ahora escribamoslo en pascal.
Como explique antes todo programa empieza con la palabra program seguido de su nombre. En la foto aparece recuadrado de azul.
El signo " ; " es un separador de instrucciones.
Todo programa va a incluir una o más variables. Cada variable tiene un nombre y un tipo. Las variables se declaran antes de usarse. El bloque de declaraciones comienza con la palabra "var". En el recuadro rojo están inicializadas las variables y en los cuadros rojos mas pequeños se muestra como se comportan.
La sección ejecutable de un programa se encierra siempre entre las palabras begin – end y termina con el signo '.' . Es el recuadro verde en la imagen.
El programa se comunica con el usuario a través de instrucciones de entrada y salida . En la imagen las instrucciones de entrada y salida están subrayadas por un color marrón.
La asignación es la instrucción fundamental en un lenguaje de programación imperativo como Pascal. Como muestra la foto, en el recuadro negro se utiliza la instrucción " := " para asignarle valores a las variables dentro del código del programa.
Nota: En la imagen me olvide de poner la instrucción readln (); tienen que agregarla para evitar que el programa se aborte.
Terminamos de escribir el código y compilamos debería quedar algo así.
Identificadores
Un programa en Pascal incluye tres tipos de nombres o identificadores:
-Reservados
-Predefinidos
-Definidos por el programador
Todo identificador comienza con una letra y puede seguir con otras letras, dígitos o guiones bajos.
Pascal no distingue mayúsculas y minúsculas en los identificadores. Es importante adoptar una convención uniforme para el uso de mayúsculas y minúsculas.
Los identificadores reservados permiten especificar la estructura del programa y no pueden ser redefinidos.
Los identificadores predefinidos tienen un significado inicial pero el programador puede cambiarlo.
Los identificadores definidos por el programador se declaran en el bloque de declaraciones, excepto el nombre del programa.
Noción de tipos de datos
Un tipo de dato define un conjunto de valores, un conjunto de operaciones y tiene asociada una representacion interna.
El tipo integer:
•El conjunto de valores definidos por el tipo integer es un subconjunto de los enteros algebraicos.
•Las constantes literales enteras son…, ‐5, ‐4, ‐3, ‐2, ‐1, 0, 1, 2, 3, 4, 5, …
•Existe una constante especial llamada maxint que determina el máximo entero representable por una implementación dada.
•El rango de representación del tipo integer es desde ‐(maxint + 1) hasta maxint..
•En FreePascal Lazarus, maxint vale 2.147.483.647
Funciones y procedimientos predefinidos
Write es un procedimiento predefinido.
La primera instrucción write muestra un mensaje para indicarle al usuario que el programa espera que Ingrese la longitud del lado.
La instrucción read permite que el usuario ingrese el valor que queda almacenado en la variable lado.
read es un procedimiento predefinido y lado es el parámetro.
La instrucción de asignación tiene dos efectos:
-Computa la expresión lado * lado
-Almacena el valor computado en la variable area
La expresión consta de operadores y operandos.
Elementos de pascal
La estructura del bloque ejecutable, como la de muchos de los programas que desarrollaremos, es:
-Leer los valores de algunos de los datos de entrada
-Procesar, generar datos de salida a partir de datos de entrada
-Mostrar los valores de los datos de salida.
Para los mismos valores de los datos de entrada un programa generará los mismos valores para los datos de salida.
Los datos de entrada pueden ser constantes o variables.
La memoria
La memoria es el dispositivo de almacenamiento de la computadora.
Los valores de las variables se almacenan en celdas de memoria.
Una declaración como:
var a,b,c : integer;
Ocupa tres celdas de memoria asociadas a los nombres a,b y c respectivamente.
Cuando el programa termina las celdas se liberan y en la próxima ejecución probablemente se ocupen otras.
Las instrucción:
readln(a);
modifica el valor almacenado en la celda ligada a la variable a.
La instrucción:
a := b+c;
También modifica el valor almacenado en la celda ligada a la variable a.
La traza de una secuencia de asignaciones:
PROGRAM abc;
VAR a,b,c: integer;
BEGIN
a:= 1; b:= a+1; c:= b*2;
writeln (a,’ ‘ ,b,’ ‘ ,c);
END.
Ejercicios:
1) Escribir un programa en pascal que calcule la suma de 2 números a y b ingresada por el usuario.
2) Escribir un programa en pascal que intercambie los valores a y b ingresados por el usuario.
3) Escribir un programa en pascal que dadas tres variables a, b y c permita intercambiar sus valores de manera tal que a quede con el valor b, b con el valor de c, y c con el valor de a. El programa deberá mostrar los valores antes y después del intercambio.
Bueno este es el fin de la primera parte! si tienen alguna duda o hay algo que no se entendio o no quedo bien claro, por favor comenten y lo corrijo! gracias por tomarse el trabajo de leer el post!
En esta oportunidad les traigo un curso de programación en pascal para todos aquellos que quieran ingresar en el mundo de la programación, voy a tratar de explicar lo más simple que pueda y también poner ejercicios para que puedan practicar. Espero que les sirva y que les guste!
Introducción
El objetivo de este curso es poder resolver problemas, o mejor dicho, diseñar algoritmos para poder resolver un problema de pequeña escala e implementarlos en programas escritos en el lenguaje de programación pascal.
¿Qué es un problema?
Un problema es un asunto del que se espera una solución, aunque ésta sea obvia. En matemática un problema es una pregunta sobre un objeto y una estructura matemática que requiere una explicación y una demostración. Es decir, que una vez que tengamos nuestra solución a través de propiedades matemáticas y demás, realizamos una explicación para darle sentido al resultado.
Un problema implica un desafío y requiere de cierto grado de creatividad. Puede pensarse como un proceso de búsqueda.
Si un detective tiene que hallar el responsable de un crimen seguramente va a tener pautas a seguir y estrategias para aplicar, sin embargo no existe un método infalible que le permita hallar la solución.
Para resolver quién cometió el crimen puede intentar resolver otros problemas relacionados como cuándo, cómo, dónde.
Cada una de las respuestas irá restringiendo la búsqueda de la solución.
Características de un problema
Aceptación: El individuo o grupo acepta el problema como tal y se compromete con su resolución
Desafío: No existe un procedimiento o método evidente que permita hallar la solución de manera directa.
Exploración: El compromiso fuerza la exploración de nuevos procedimientos o métodos para atacar la resolución.
Problemas y soluciones
En este curso hallar la solución va a consistir en:
Encontrar una secuencia de instrucciones que permitan pasar de un estado inicial a otro estado final de acuerdo a algunas restricciones.
Traducir esa secuencia de pasos a un lenguaje que la computadora pueda interpretar y ejecutar.
Algoritmo
Un algoritmo es una secuencia de instrucciones, comprensibles para quien tenga que ejecutarlas, que permiten resolver un problema.
-Tiene que haber un problema.
-Tiene que haber un orden entre las instrucciones, existe una única instrucción inicial y dada una instrucción en particular es posible determinar con precisión, cuál es la que le sigue.
Es una definición general, no está ligada a la programación.
De acuerdo a esta definición una receta es un algoritmo, una partitura musical o las instrucciones para armar una bicicleta también lo son.
Entonces podemos decir que:
•Un algoritmo es la especificación de una secuencia de pasos u operaciones, que cuando
los ejecuta un autómata (Una computadora por ejemplo), produce el resultado esperado y termina luego de una cantidad finita de tiempo.
•Cada paso básico (llamado primitiva) debe estar definido sin ambigüedad, y las operaciones deben ser comprensibles por el autómata que las ejecutará.
•Debe haber un único punto de comienzo y al menos un punto final.
Prueba de un algoritmo: Traza
•Una traza es una simulación de la ejecución real de los pasos en la cual se lleva un registro de los movimientos realizados. Es decir, que luego de plantear los pasos para resolver el problema los aplicamos para ver si obtenemos el resultado esperado.
•Nota:Una traza no exitosa muestra la existencia de errores.
•Nota:Una traza exitosa no garantiza la ausencia de errores.
Comencemos!
¿Qué programa vamos a utilizar?
El programa que voy a utilizar para el curso se llama lazarus, es un programa gratuito asique no van a tener problemas en conseguirlo.
¿Donde lo puedo descargar?
Primero que nada tenemos que dirigirnos hacia la pagina oficial de lazarus.
En la esquina superior derecha seleccionamos al opción "Downloads".
Elegimos la opción correcta según nuestro sistema operativo. En mi caso windows (64 bits).
Instalación
Una vez descargado el archivo iniciamos la instalación y seleccionamos el idioma.
Seleccionamos la carpeta en la cual lo deseamos instalar.
Seleccionamos instalación completa.
La opción de poner un icono en el escritorio es a su elección. Dejamos finalizar la instalación de lazarus y listo.
Entorno de trabajo
Este va a ser nuestro entorno de trabajo.
Como pueden ver tenemos un inspector de objetos (Que no creo que vayamos a utilizar), una barra de herramientas con varias opciones y por ultimo lo mas importante, el editor de código fuente.
Nuestro primer programa
Como explique antes un algoritmo es una secuencia de instrucciones, comprensibles para quien tenga que ejecutarlas, que permiten resolver un problema.
Otra definición importante que nos interesa saber es la de un programa procedural.
Un programa procedural es un algoritmo escrito en un lenguaje de programación imperativo.
Todo programa en pascal esta compuesto por:
Un encabezado donde se encuentra siempre la palabra "program" seguido del nombre de nuestro programa.
Un bloque de declaraciones donde se encuentran indicadas las variables que vamos a utilizar.
Y por ultimo un bloque ejecutable donde se encontrara escrito nuestro programa.
Como todo lenguaje de programación tenemos procedimientos y funciones. Hay procedimientos y funciones predefinidos por pascal (Que son los que nos interesan ahora) como por ejemplo tenemos los procedimientos writeln, read, readln, repeat, while, if, etc... Y tenemos funciones predefinidas como +, *, abs, sqr, -, ^, etc... (Las funciones para comprenderlas más fácilmente podemos decir que son para operaciones matemáticas y demás ese es el uso que les vamos a dar por el momento). También podemos definir nuestros procedimientos y funciones (Esto lo vamos a ver mas adelante).
Empezando a programar
Primero abrimos lazarus, vamos a archivo y seleccionamos nuevo, luego seleccionamos la opción aplicación de consola.
Ahora nos fijamos que este todo en orden como en la foto.
Aceptamos y cuando se abra la nueva ventana de código fuente seleccionamos y borramos todo.
Ahora escribimos en la primer linea de código la palabra "program" y en este caso el programa se va a llamar "HolaMundo" luego finalizamos con el signo ";" que en pascal es separador de instrucciones.
A continuación, con la palabra reservada "begin" abrimos el bloque ejecutable. Este programa no tiene bloque de declaraciones porque no estamos utilizando ninguna variable. Ahora, abajo de la palabra reservada "begin" vamos a utilizar el procedimiento predefinido por pascal como "write" este procedimiento es una instrucción de salida de datos, es decir, que el programa devuelve un dato. El programa se comunica con el usuario a través de instrucciones de entrada y salida de datos. Después de escribir el comando write dejamos un espacio y abrimos un paréntesis "(" dentro del paréntesis colocamos el signo " ' " este sirve para indicar que va a iniciar texto, y hasta que no se cierre con otro signo igual el programa reconoce todo como texto, se van a dar cuenta porque lo que vamos escribiendo es azul. Escribimos la frase "hola mundo" cerramos con el signo " ' " , cerramos el paréntesis y colocamos un " ; " para separar la instrucción.
Luego dejamos un espacio y escribimos la instrucción "readln" para que cuando ejecutemos el programa no se cierre solo. Escribimos el comando readln más dos parentesis y separamos la instrucción con un " ; ". Luego finalizamos el bloque ejecutable con la palabra reservada "end" seguida de un punto y listo.
Presionamos f9 y ejecutamos el programa.
Ahora vamos con un ejercicio un poco mas difícil
Escribir un programa en Pascal que calcule y muestre el área de un cuadrado a partir de la longitud de lado ingresada por el usuario.
Todos sabemos para sacar el área de un cuadrado se multiplica lado por lado o lado al cuadrado es lo mismo. Ahora escribamoslo en pascal.
Como explique antes todo programa empieza con la palabra program seguido de su nombre. En la foto aparece recuadrado de azul.
El signo " ; " es un separador de instrucciones.
Todo programa va a incluir una o más variables. Cada variable tiene un nombre y un tipo. Las variables se declaran antes de usarse. El bloque de declaraciones comienza con la palabra "var". En el recuadro rojo están inicializadas las variables y en los cuadros rojos mas pequeños se muestra como se comportan.
La sección ejecutable de un programa se encierra siempre entre las palabras begin – end y termina con el signo '.' . Es el recuadro verde en la imagen.
El programa se comunica con el usuario a través de instrucciones de entrada y salida . En la imagen las instrucciones de entrada y salida están subrayadas por un color marrón.
La asignación es la instrucción fundamental en un lenguaje de programación imperativo como Pascal. Como muestra la foto, en el recuadro negro se utiliza la instrucción " := " para asignarle valores a las variables dentro del código del programa.
Nota: En la imagen me olvide de poner la instrucción readln (); tienen que agregarla para evitar que el programa se aborte.
Terminamos de escribir el código y compilamos debería quedar algo así.
Elementos de pascal
Identificadores
Un programa en Pascal incluye tres tipos de nombres o identificadores:
-Reservados
-Predefinidos
-Definidos por el programador
Todo identificador comienza con una letra y puede seguir con otras letras, dígitos o guiones bajos.
Pascal no distingue mayúsculas y minúsculas en los identificadores. Es importante adoptar una convención uniforme para el uso de mayúsculas y minúsculas.
Los identificadores reservados permiten especificar la estructura del programa y no pueden ser redefinidos.
Los identificadores predefinidos tienen un significado inicial pero el programador puede cambiarlo.
Los identificadores definidos por el programador se declaran en el bloque de declaraciones, excepto el nombre del programa.
Noción de tipos de datos
Un tipo de dato define un conjunto de valores, un conjunto de operaciones y tiene asociada una representacion interna.
El tipo integer:
•El conjunto de valores definidos por el tipo integer es un subconjunto de los enteros algebraicos.
•Las constantes literales enteras son…, ‐5, ‐4, ‐3, ‐2, ‐1, 0, 1, 2, 3, 4, 5, …
•Existe una constante especial llamada maxint que determina el máximo entero representable por una implementación dada.
•El rango de representación del tipo integer es desde ‐(maxint + 1) hasta maxint..
•En FreePascal Lazarus, maxint vale 2.147.483.647
Funciones y procedimientos predefinidos
Write es un procedimiento predefinido.
La primera instrucción write muestra un mensaje para indicarle al usuario que el programa espera que Ingrese la longitud del lado.
La instrucción read permite que el usuario ingrese el valor que queda almacenado en la variable lado.
read es un procedimiento predefinido y lado es el parámetro.
La instrucción de asignación tiene dos efectos:
-Computa la expresión lado * lado
-Almacena el valor computado en la variable area
La expresión consta de operadores y operandos.
Elementos de pascal
La estructura del bloque ejecutable, como la de muchos de los programas que desarrollaremos, es:
-Leer los valores de algunos de los datos de entrada
-Procesar, generar datos de salida a partir de datos de entrada
-Mostrar los valores de los datos de salida.
Para los mismos valores de los datos de entrada un programa generará los mismos valores para los datos de salida.
Los datos de entrada pueden ser constantes o variables.
La memoria
La memoria es el dispositivo de almacenamiento de la computadora.
Los valores de las variables se almacenan en celdas de memoria.
Una declaración como:
var a,b,c : integer;
Ocupa tres celdas de memoria asociadas a los nombres a,b y c respectivamente.
Cuando el programa termina las celdas se liberan y en la próxima ejecución probablemente se ocupen otras.
Las instrucción:
readln(a);
modifica el valor almacenado en la celda ligada a la variable a.
La instrucción:
a := b+c;
También modifica el valor almacenado en la celda ligada a la variable a.
La traza de una secuencia de asignaciones:
PROGRAM abc;
VAR a,b,c: integer;
BEGIN
a:= 1; b:= a+1; c:= b*2;
writeln (a,’ ‘ ,b,’ ‘ ,c);
END.
Ejercicios:
1) Escribir un programa en pascal que calcule la suma de 2 números a y b ingresada por el usuario.
2) Escribir un programa en pascal que intercambie los valores a y b ingresados por el usuario.
3) Escribir un programa en pascal que dadas tres variables a, b y c permita intercambiar sus valores de manera tal que a quede con el valor b, b con el valor de c, y c con el valor de a. El programa deberá mostrar los valores antes y después del intercambio.
Bueno este es el fin de la primera parte! si tienen alguna duda o hay algo que no se entendio o no quedo bien claro, por favor comenten y lo corrijo! gracias por tomarse el trabajo de leer el post!
