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:
1.- 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”.
2.- 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”.
3.- 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.
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
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.
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:
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:
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 variables en el tema 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 iniciales a variables:
- Mediante una sentencia de asignación
- 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.
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.
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
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.
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
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
|
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.