Programa:
Un programa en término derivado del latín programa que, a su vez, tiene su origen en un vocablo griego, posee múltiples acepciones. Puede ser entendido como el anticipo de lo que se planea realizar en algún ámbito o circunstancia; el temario que se ofrece para un discurso; la presentación y organización de las materias de un cierto curso o asignatura; y la descripción de las características o etapas en que se organizan determinados actos o espectáculos artísticos.
Un programa también consiste en una unidad temática desarrollada durante una emisión televisiva o radial, además de permitir nombrar al grupo de instrucciones que le posibilita a una computadora desarrollar diferentes funciones.
Tipos
Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo.
Programación estructurada (PE)
La programación estructurada está compuesta por un conjunto de técnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo.
Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.
Esta técnica incorpora:
Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas.
Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.
Estructuras básicas: existen tres tipos de estructuras básicas:
Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.
Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.
Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.
Las principales ventajas de la programación estructurada son:
Los programas son más fáciles de entender.
Se reduce la complejidad de las pruebas Aumenta la productividad del programador.
Los programas queden mejor documentados internamente.
Un programa está estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.
Programación modular
En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad. En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros. A su vez cada módulo puede contener sus propios datos y llamar a otros módulos o funciones.
Programación orientada a objetos (POO)
Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos. El elemento principal de la programación orientada a objetos, es el objeto. El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización. Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento. El polimorfismo y la herencia son unas de sus principales características y por ello dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos.
Programación concurrente
Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez. Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultánea. Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones.
Programación funcional
Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.
Programación lógica
Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas.
Partes de un Programa
Introducción: En este tema se presenta una introducción a Pascal: ¿qué es un lenguaje de programacion?, un poco de historia sobre Pascal, ¿qué es compilar un programa?, etc. Si no te interesa, puedes saltarlo ya que no es demasiado importante.
Entrada y salida de datos: Aquí aprenderás a comunicarte con el usuario a través de tus programas. ¿Cómo? Pues a través de unos procedimientos que te permiten leer y escribir datos en la salida y entrada estándar respectivamente.
Estructura de un programa: En este apartado podrás aprender de qué partes consta un programa en Pascal. Verás el orden en el que se escriben, en qué consisten, cuáles son obligatorias y cuáles no, cómo se relacionan unas con otras, etc.
Sentencias y expresiones: En este tema se muestran los tipos de sentencias, de expresiones y de operadores que puedes utilizar en tus programas. Estos tres conceptos están relacionados, ya que los
Variables y constantes: Si pinchas en este libro aprenderás cosas sobre las variables: qué es una variable, cómo se declara, cómo se inicia, etc. Además observarás que una variable pertenece a un tipo de dato, concepto éste que se trata en el siguiente tema.
Control del flujo: En este tema aprenderás a que tus programas puedan variar el orden de su ejecución si se cumplen ciertas condiciones, sentencias selectivas. Y también aprenderás a repetir algo varias veces sentencias iterativas.
Tipos de datos: En este capítulo verás lo que es un tipo de dato. Este es un concepto muy importante en cualquier lenguaje de programación, especialmente en Pascal que es un lenguaje fuertemente tipeado.
Programación modular: Aquí conocerás cómo construir pequeños programas procedimientos y funciones que ayuden a solucionar un problema grande dividiéndolo en subproblemas
Instrucciones de Control
Las instrucciones de control son aquellas que nos permiten variar o alterar la secuencia normal de ejecución de un programa. Prácticamente la totalidad de lenguajes de programación de alto nivel soportan tres tipos de instrucciones de control:
Instrucciones condicionales o alternativas.
Instrucciones de salto.
Instrucciones repetitivas.
Instrucciones Condicionales o Alternativas:
· Alternativa simple:
Se evalúa una condición, ejecutándose un grupo de sentencias si el resultado es “verdadero”, y no ejecutándose este grupo de sentencias si el resultado es “falso”.
Alternativa doble:
Se evalúa la condición, ejecutándose un grupo de sentencias si el resultado es “verdadero”, y ejecutándose otro grupo alternativo de sentencias si el resultado es “falso”.
Alternativa múltiple (o selector):
En lugar de una condición, se evalúa una expresión con múltiples pero finitos resultados, ejecutándose en función del resultado de la expresión, un grupo de sentencias entre múltiples posibles.
Instrucciones alternativas anidadas:
También es posible utilizar la instrucción Si-Sino para diseñar estructuras de selecciones entre más de dos alternativas. Esto se consigue mediante las estructuras anidadas, donde tanto la rama Si como la Si no pueden contener a su vez otra instrucción Si-Sino, y así sucesivamente un número determinado de veces.
Instrucciones de Salto:
Se utilizan para realizar un salto, es decir, para transferir el control a un punto del programa donde seguirá la ejecución del mismo, pero perdiendo toda posibilidad de retornar de forma controlada la ejecución del programa al punto de llamada.
No se aconseja su utilización porque crean un código difícil de leer y mantener, estando su uso muy restringido en programación estructurada.
Instrucciones Repetitivas:
Este tipo de instrucciones también son conocidas como bucles, ciclos o lazos. Lo que hacen es que mientras se verifique una condición, un segmento del algoritmo o programa se repita consecutivamente.
En cada repetición del bucle (o iteración) se evalúa la expresión de control del bucle (o condición), que determinará si continuamos realizando otra iteración o bien salimos definitivamente del bucle.
Instrucciones ejecutables
Una instrucción ejecutable realiza una acción. Puede llamar a un procedimiento, bifurcar a otra parte del código, recorrer varias instrucciones con un bucle o evaluar una expresión. Una instrucción de asignación es un caso especial de una instrucción ejecutable.
En el ejemplo siguiente se utiliza una estructura de control If...Then...Else para ejecutar diferentes bloques de código basándose en el valor de una variable. En cada bloque de código, un bucle For...Next se ejecuta un número especificado de veces.
VB
Public Sub startWidget(ByVal aWidget As widget, _
ByVal clockwise As Boolea, ByVal revolutions As Integer)
Dim counter As Integer
If clockwise = True Then
For counter = 1 To revolutions
aWidget.spinClockwise()
Next counter
Else
For counter = 1 To revolutions
aWidget.spinCounterClockwise()
Next counter
End If
End Sub
Programación declarativa
La Programación Declarativa, en contraposición a la programación imperativa es un paradigma de programación que está basado en el desarrollo de programas especificando o declarando un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla tan sólo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando. No existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial.
Constantes
Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el programa.
Como ya se ha comentado en el tema sobre las partes de un programa, las constantes se declaran en una sección que comienza con la palabra reservada const. Después de declarar una constante ya puedes usarla en el cuerpo principal del programa Tienen varios usos: ser miembro en una expresion, en una comparación, asignar su valor a una variable, etc.
En el siguiente ejemplo se contemplan varios casos:
const
Min = 0;
Max = 100;
Sep = 10;
var
i : integer;
begin
i := Min;
while i < Max do begin
writeln(i);
i := i + Sep
end
end.
En este ejemplo se declaran tres constantes (Min, Max y Sep). En la primera línea del cuerpo del programa se asigna una constante a una variable. En la siguiente, se usa una constante en una comparación. Y en la cuarta, la constante Sep interviene en una expresión que se asigna a una variable. El resultado de ejecutar este programa sería una impresión en pantalla de los números: 0, 10, 20, 30, 40, 50, 60, 70, 80 y 90.
Se puede hacer una división de las constantes en tres clases:
Constantes literales sin nombre.
Constantes declaradas con nombre.
Constantes expresión.
Variables
Una variable es un nombre asociado a un elemento de datos que está situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un programa.
Toda variable pertenece a un tipo de dato concreto. En la declaración de una variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable:
Declaración
Iniciación.
Utilización.
Iniciación.
Utilización.
Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La declaración se realiza en la sección que comienza con la palabra var. Si quieres más información, puedes ir al apartado que trata sobre la declaración de variable en el tema la estructura de un programa.
Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser previamente declarada.
Esto no es más que darle un valor inicial a una variable. Así como lo primero que se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de declararla. Principalmente, existen dos maneras de otorgar valores iníciales a variables.
Mediante una sentencia de asignació.Mediante uno de los procedimientos de entrada de datos (read o readln)
Mediante una sentencia de asignació.Mediante uno de los procedimientos de entrada de datos (read o readln)
Veamos un ejemplo que reúne los dos casos:
begin
...
i:=1;
readln(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
end.
Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta un mayor abanico de posibilidades. Expresión aritmética a aquella donde los operadores que intervienen en ella son numéricos, el resultado es un número y los operadores son aritméticos. Los operadores aritméticos más comúnmente utilizados son: + , - , * , / y %.
El signo más (+) se emplea para adicionar dos valores, el signo menos (-) para restar un valor de otro, el asterisco (*) para multiplicar dos valores, la división (/) para dividir un valor por otro, y el signo % para obtener el resto de una división entera. Estos símbolos se conocen como operadores binarios, pues operan sobre dos valores o variables.
La lista siguiente son ejemplos de expresiones aritméticas:
resultado = x - y;
total = capital+ interés;
cuadrado = x * x;
celcius = (fahrenheit - 32) / 1.8
Hay que comprender que el signo igual (=) en las expresiones anteriores se le conoce como "operador de asignación". Asigna el valor de la derecha de dicho signo igual a la variable de la izquierda.
Operadores Aritméticos
Un operador es un símbolo que representa una acción determinada para una variable o valor y así como en español la coma ( , ) indica una pausa corta y el punto ( . ) indica una pausa un poco más larga, en aritmética existen operadores que indican la ejecución de determinado proceso, por ejemplo:
2 + 2 = 4
Operadores Aritméticos
Binarios: los operadores binarios indican operaciones sencillas de incremento (suma o multiplicación ) y decremento (resta, división y modulo), estos son los operadores binarios:
+: representa la suma de dos o más valores o variables.
-: representa la resta de dos o más valores o variables.
*: representa la multiplicación de dos o más valores o variables.
/: representa la división de dos o más valores o variables.
%: representa el modulo (obtención del residuo de una división) de dos o más valores o variables.
Unarios: los operadores unarios representan operaciones simplificadas de incremento decremento y modificación de signos, estos son los operadores unarios:
++: Incrementa el valor de una variable en una unidad.
--: Decrementa el valor de una variable en una unidad.
-: Cambia el signo de una variable, es como multiplicar por -1.
Ejemplos:
3 + 3 = 6
10 - 5 = 5
5 * 5 = 25
8 / 2 = 4
8 % 2 = 0 (cero es el residuo de la división 8/2)
c=4;
c++; //c=5 (c inicia siendo igual a 4, después del incremento [c++], c vale 5)
d=10;
d--; //d=9 se le resto 1
e = -(4) // e = -4
f = -(-6) // f = 6 (por regla de signos menos por menos igual a mas)
En conclusión los operadores unarios, simplifican el proceso de modificación de valores ya que al escribir c++ se hace lo mismo que c=c+1.
Operadores Relacionales
Son operadores que se encargan de unir y comparar dos o más valores, siempre se utilizan en comparaciones de parejas y están dadas por los símbolos:
== : igual que
!= : diferente a
> : mayor que
< : menor que
>= : mayor igual que
<= : menor igual que
Estos operadores se usan para comparar valores de variables por pares es decir,no se pueden comparar más de 2 valores al tiempo:
a > b > c //ERROR
(a > b) && (b > c) //BIEN
Operadores Lógicos
Son operadores de unión, también llamados compuertas lógicas, estos operadores pueden unir dos o más pares de valores comparados por medio de los operadores relaciones y están dados por estos símbolos:
&& : Operador AND (Y) quiere decir que todas las condiciones deben ser verdaderas para que se ejecute una acción.
|| : Operador OR (O) quiere decir que de todas las condiciones solo una debe ser verdadera y se asume que con eso es suficiente para hacer determinada acción.
! : Operdaro NOT (NO) quiere decir que se niega la afirmación para cambiar su valor, es decir cambia de verdadero a falso y de falso a verdadero.
not (negación) Instrucciones lógicas
Esta instrucción ejecuta la operación lógica NOT sobre el operando, es decir invierte los bits. Cambia los unos por ceros y los ceros por unos.
Instrucción
|
Efecto
|
Descripción
|
notb Operando
|
Operando ← ¬ Operando
|
niega operando de 1 byte
|
notw Operando
|
Operando ← ¬ Operando
|
niega operando de 2 bytes
|
notl Operando
|
Operando ← ¬ Operando
|
niega operando de 4 bytes
|
Operandos válidos
|
Ejemplo
|
registro
|
notl %eax
|
memoria
|
notl etiqueta
|
Instrucciones de Control
Las instrucciones de control son aquellas que nos permiten variar o alterar la secuencia normal de ejecución de un programa. Prácticamente la totalidad de lenguajes de programación de alto nivel soportan tres tipos de instrucciones de control:
Instrucciones condicionales o alternativas.
Instrucciones de salto.
Instrucciones repetitivas
