Tema 2: Estructura general de un algoritmo
Un algoritmo es una secuencia de instrucciones ordenadas para solucionar un problema. La estructura de un algoritmo consiste en un proceso que mediante una entrada de datos se obtiene una salida. Los algoritmos que se analizarán tienen que contar al menos con datos de entrada.
Se llaman errores de compilación a aquellos que se producen cuando el IDE compila un programa. Un caso típico son los errores de sintaxis: si escribimos código fuente que el IDE no puede comprender, nunca podrá compilar el programa y crear la aplicación, ya que no sabrá qué hacer con el código.
Un ejemplo sencillo:
A = (B * C
Aquí hay un paréntesis sin cerrar, lo que produce un error de compilación.
Dependiendo del lenguaje y del compilador utilizado, un error de compilación puede mostrar tantos errores. Por ejemplo, olvidar un punto y coma al final de una línea, cuando un lenguaje lo requiere, puede causar errores de análisis porque el compilador no sabe cuándo se supone que termina una línea en particular. Este error de análisis puede manifestarse como muchos errores de compilación, haciendo que parezca que de repente hay problemas horribles con el código en lugar de un pequeño error tipográfico. En general, una cuidadosa atención a obedecer las reglas de un lenguaje de computadora puede prevenir este tipo de errores. De la misma manera, si aparece una avalancha repentina de errores de compilación, el programador experimentado generalmente puede inferir que un solo pequeño error causó la mayoría de ellos.
En un programa podemos encontrarnos con distintos tipos de errores, pero a grandes rasgos podemos decir que todos los errores pertenecen a una de las siguientes categorías:
· Errores de sintaxis
· Errores lógicos
· Errores de ejecución
Si desea conocer un poco sobre estos tipos de errores, le recomiendo que vea el siguiente video a continuación.
CONTADORES Y ACUMULADORES
CONTADORES
Al visitar el departamento de servicio al cliente en una empresa, los clientes para obtener un turno deben tomar un ticket. Un letrero electrónico indica el número del cliente que se está atendiendo, luego este número cambia incrementándose en 1 para anunciar el siguiente turno a ser atendido.
El ejemplo de uso práctico de un contador permite observar dos características:
· Siempre tienen un valor inicial
· El valor nuevo del contador es el resultado del valor anterior más una constante.
Al inicio del día, el contador de tickets debe ser inicializado, de preferencia con 0. Cuando un puesto de atención está listo para atención, el contador se incrementa en uno, se escucha una alerta y el cliente se puede acercar con el ticket del primer turno.
Las características descritas en forma algorítmica se escriben como:
contador ← 0
contador ← contador + 1
La expresión de la segunda línea se puede leer como: «valor nuevo” de contador es el resultado del «valor anterior» incrementando en 1.
Desde luego que los contadores pueden sumarse un valor diferente a 1, pero siempre será un valor constante, como cuando se cuenta de dos en dos. Contador decreciente en programación.
La variable contador también
pueden tener cambios de forma ascendente, o disminuir desde un valor inicial
(decreciente).
Un ejemplo de contador decreciente se observa en cronometro del microondas para calentar alimentos. El valor inicial son los segundos que permanecerá encendido. El contador de tiempo disminuye en uno cada segundo y al llegar a 0 se apaga el microondas.
Ejemplo de contador con instrucciones:
>>> contador = 0
>>> contador = contador + 1
>>> contador
1
.. [ contador ] [ acumulador]
ACUMULADORES
Un acumulador en
programación es una versión ampliada de un contador. El acumulador tiene las
mismas características que un contador excepto el valor de incremento que es un
valor variable.
Por ejemplo, una cuenta
de ahorros puede representarse en un algoritmo mediante un acumulador, pues
quien ahorra no siempre lo hará con una cantidad fija en la cuenta: un día
deposita 10, otro día deposita 30, otro deposita 5.
Con el ejemplo de
ahorro, se puede determinar que en el acumulador no siempre se añade un valor
positivo, pues cuando se hace un retiro, se puede interpretar como que el valor
añadido es negativo.
Las características descritas para forma algorítmica se escriben como:
acumulador ← 0
acumulador ← acumulador + X
La expresión del literal b se para una cuenta puede leer como: «saldo nuevo” de acumulador es el «saldo anterior» de acumulador considerando el deposito (+x) o retiro (-x).
Recuerde que:
El concepto de asignar es usado en algoritmos “=” carece de sentido matemático.
Si tomamos como ejemplo
el acumulador, si se expresa como una igualdad, se interpretaría como:
acumulador = acumulador
+ X
acumulador - acumulador
= X
0 = X
Cuando en el algoritmo se quiere expresar en realidad es una asignación, por lo que se utiliza el símbolo “←”
acumulador ← acumulador + X
Esta aclaración permite formalizar la diferencia de comparación de igualdad “=” usada dentro de los condicionales.
Ejemplo de acumulador en:
>>> acumulador
= 0
>>> acumulador
= acumulador + 4.5
>>> acumulador
4.5
>>> acumulador
= acumulador - 1.3
>>> acumulador
3.2
Video explicativo de contador y acumulador en Pseint
TIPOS DE OPERADORES
Operaciones de asignación
Los operadores de asignación o
assignment operators, nos permiten realizar una operación y almacenar su resultado
en la variable inicial. Podemos ver como realmente el único operador nuevo es
el “=”. El resto son abreviaciones de otros operadores que habíamos visto con
anterioridad. Ponemos un ejemplo con:
x=7
El signo igual (=) significa que
el computador va a realizar lo que está a la derecha del igual y lo va a
almacenar en la variable que se encuentre a la izquierda de este.
EJEMPLO
Si x no tiene
un valor antes de ejecutar y = x + 1, se producirá un error lógico.
x = 2;
y = x + 1;
Si a, b y c no
tienen un valor antes de ejecutar z = a + b + c, se producirá un error lógico.
a = 3 , b = 4,
c = 8;
z = a + b + c;
m=1
m= m+1
m= m+1
m= m+5
Print (m)
Operadores matemáticos o
aritméticos
Existen operadores aritméticos
binarios y unarios.
Los binarios son:
+ : Suma de dos o más valores o variables.
- : Resta de dos o más valores o variables.
* : Multiplicación de dos o más valores o variables.
/ : División de dos o más valores o variables.
% : Modulo (obtención del residuo de una división) de dos o más valores y variables.
// ; div : Devuelve la parte entera de una división
Los unarios:
++ : Aumenta el valor de una variable en una unidad. for (i=0;i<=10; i++)
-- : Disminuye el valor de una variable en una unidad. For(i=10; i>=1;i--)
- : Cambia el signo de una variable, es como multiplicar por -1
Operadores relacionales o de
comparación
Son operadores que se encargan
de unir y comparar dos o más valores
!=, <> : diferente a, distinto, no es igual
= : igual
> : 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 mismo tiempo:
a > b > c //Error
(a > b) && (b > c) //Correcto
Tabla de operadores relacionales o de comparación.
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:
&& : Operador AND (Y) todas las condiciones deben ser verdaderas para que se ejecute una acción. (conjunción)
|| o #: Operador OR (O) de todas las condiciones solo una debe ser verdadera y con ello hace una determinada acción. (disyunción)
! : Operador NOT (No) se niega la afirmación para cambiar su valor, es decir cambia de verdadero a falso y de falso a verdadero. (negación)