Está en la página 1de 12

Los Algoritmos

Como algoritmo denominamos un conjunto ordenado y finito de operaciones simples a


través del cual podemos hallar la solución a un problema.
Los algoritmos nos permiten ejecutar una acción o resolver un problema mediante una serie
de instrucciones definidas, ordenadas y finitas. Así, dado un estado inicial y una entrada, y
siguiendo los sucesivos pasos indicados, se llega al estado final y se obtiene una solución.
Propiedades de un algoritmo

Ejemplos de algoritmos
Aunque es un término habitual en áreas como las matemáticas, la informática, la lógica y
demás disciplinas relacionadas, lo cierto es que en la vida cotidiana también usamos
algoritmos para solucionar cuestiones, por ejemplo

Recetas de cocina
Explican el paso a paso para crear una comida con una cantidad finita de ingredientes. El
estado inicial serían los ingredientes sin procesar y el estado final la comida preparada.

Manuales
Sirven de guía para ejecutar procesos, desde cómo armar una biblioteca hasta cómo activar
un teléfono móvil. En estos casos, el estado final es el producto armado, instalado,
encendido, en funcionamiento, etc.

Operaciones matemáticas
En matemáticas, algunos ejemplos de algoritmos son la multiplicación, en donde seguimos
una secuencia de operaciones para obtener un producto; o la división, que nos permite
determinar el cociente de dos números. El algoritmo de Euclides, con el cual sacamos el
máximo común divisor de dos enteros positivos es otro ejemplo de algoritmo.

Algoritmo en programación
En informática o programación, el algoritmo es la secuencia de instrucciones mediante la
cual podemos resolver un problema o cuestión.

De hecho, todas las tareas ejecutadas por la computadora se basan en algoritmos. Un


software o programa informático está diseñado a base de algoritmos, de modo que
podemos introducir una tarea en él y resolverla.

Diagrama de flujo
Un diagrama de flujo es un diagrama que describe un proceso, sistema o algoritmo
informático. Se usan ampliamente en numerosos campos para documentar, estudiar,
planificar, mejorar y comunicar procesos que suelen ser complejos en diagramas claros y
fáciles de comprender. Los diagramas de flujo emplean rectángulos, óvalos, diamantes y
otras numerosas figuras para definir el tipo de paso, junto con flechas conectoras que
establecen el flujo y la secuencia. Pueden variar desde diagramas simples y dibujados a
mano hasta diagramas exhaustivos creados por computadora que describen múltiples pasos
y rutas. Si tomamos en cuenta todas las diversas figuras de los diagramas de flujo, son uno
de los diagramas más comunes del mundo, usados por personas con y sin conocimiento
técnico en una variedad de campos. Los diagramas de flujo a veces se denominan con
nombres más especializados, como "diagrama de flujo de procesos", "mapa de procesos",
"diagrama de flujo funcional", "mapa de procesos de negocios", "notación y modelado de
procesos de negocio (BPMN)" o "diagrama de flujo de procesos (PFD)". Están relacionados
con otros diagramas populares, como los diagramas de flujo de datos y los diagramas de
actividad de lenguaje unificado de modelado.

Pseudocódigo
El pseudocódigo es una forma de expresar los distintos pasos que va a realizar un programa,
de la forma más parecida a un lenguaje de programación. Su principal función es la de
representar por pasos la solución a un problema o algoritmo, de la forma más detallada
posible, utilizando un lenguaje cercano al de programación. El pseudocódigo no puede
ejecutarse en un ordenador ya que entonces dejaría de ser pseudocódigo, como su propio
nombre indica, se trata de un código falso (pseudo = falso), es un código escrito para que lo
entienda el ser humano y no la máquina.

Concepto de datos

Un dato es la representación de una variable, que puede ser cuantitativa o cualitativa, que
indica un valor que se le asigna a las cosas y se representa a través de una secuencia de
símbolos, números o letras.

En programación, un tipo de dato informático o simplemente tipo es un atributo de los


datos que indica al ordenador (y/o al programador) sobre la clase de datos que se va a
trabajar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar y
qué operaciones se pueden realizar.

Los tipos de datos más comunes son: números enteros, números con signo (negativos),
números de coma flotante (decimales), cadenas alfanuméricas (y unicodes), estados, etc.

Con relación a esto los tipos de datos generales son :


Los numéricos : enteros y reales
De texto : carácter, cadenas
lógico: booleano

Códigos de representación
Para entender la manera en que las computadoras procesan datos, es importante conocer
cómo la computadora representa los datos. Las personas se comunican a través del habla
combinando palabras en oraciones. El habla humana es análoga porque utiliza señales
continuas que varían en fortaleza y calidad. Las computadoras son digitales, pues reconocen
solo dos estados: encendido (on) y apagado (off).

El sistema binario es un sistema numérico que tiene tan solo dos dígitos, 0 y 1, llamados
bits. Un bit (binary digit) es la unidad de datos más pequeña que la computadora puede
representar. Por sí solo, un bit no es muy informativo. Cuando ocho bits se agrupan como
una unidad, forman un byte. El byte es informativo porque provee suficientes
combinaciones diferentes de 0 y 1 para representar 256 caracteres individuales.
Las combinaciones de 0 y 1 que representan caracteres son definidas por
patrones llamados esquemas de códigos (coding scheme). Esquemas de códigos
populares son:

1. ASCII – American Standard Code for information


Interchange – es el sistema de código para
representar datos que más se utiliza.

2. EBCDIC – Extended Binary Coded Decimal


Interchange Code – es utilizado principalmente en
computadoras mainframe.

3. Unicode – es el único esquema de código capaz de


representar todos los lenguajes del mundo actual.
Se desarrolló precisamente porque el ASCII y el
EBCDIC no eran suficientes para representar
lenguajes para alfabetos diferentes al inglés o
Europeo, como los asiáticos y otros.

Elementos de lenguaje de programación


Estos se componen de identificadores que son los nombres , que define el programador ,
que sirve para denotar ciertos elementos de un programa, adicional a esto , tenemos las
constantes que es un valor que no puede ser alterado/modificado durante la ejecución de
un programa, únicamente puede ser leído a diferencia de las variables ,Una variable está
formada por un espacio en el sistema de almacenaje y un nombre simbólico que está
asociado a dicho espacio.
Por otro lado tenemos los siguiente elementos :

Sintaxis
Cada lenguaje de programación tiene unas reglas especiales para la construcción de
programación, a esto se le denomina sintaxis
El compilador lee el programa y comprueba que el programa sigue las reglas de sintaxis del
lenguaje de programación, el compilador traduce el código fuente de Java a un código
máquina (código objeto).

Código Objeto
Consta de instrucciones máquina e información de cómo cargar el programa en la memoria
antes de su ejecución.
Si el compilador encuentra errores, los presentará en la pantalla, una vez corregidos los
errores se vuelve a compilar sucesivamente hasta que no se produzcan más errores.

Depuración
Los programas rara vez funcionan bien la primera vez que se ejecutan, por lo que los errores
que se detectan deben ser corregidos
Al proceso de encontrar errores se denomina depuración del programa, esta tarea es de las
más difíciles en el proceso de programación.

Errores de sintaxis
Son aquellos que se producen cuando el programa viola la sintaxis, es decir, las reglas
gramaticales del lenguaje.

Errores lógicos
Son errores del programador en el diseño del algoritmo, son difíciles de encontrar y aislar,
ya que no suelen ser detectados por el compilador.

Errores de regresión
Son aquellos que son provocados cuando accidentalmente se producen al corregir un error
lógico y se produce otro en otra parte del programa.

Elementos léxicos de los programas


● Identificadores
● Palabras reservadas
● Literales
● Operadores
● Separadores

Identificador
Es una secuencia de caracteres, letras dígitos y subrayados(_)
El primer carácter debe de ser una letra, no un subrayado
Las letras mayúsculas y minúsculas son diferentes para cada identificador
Ejemplo:
Nombre
Nombre_clase
Cantidad_Total
Palabras Reservadas
Es aquella que tiene un significado especial para el lenguaje de programación
Una palabra reservada no puede ser utilizada como identificador, objeto o función.

Operadores algorítmicos
Los operadores son símbolos que representan una acción a realizar con los números o
elementos que se encuentran antes o después.
En Matemáticas los operadores nos sirven para realizar la representación de fórmulas. En la
Programación, los operadores nos sirven como para utilizarse en fórmulas dentro de un
algoritmo además de realizar comparaciones y también para agrupar elementos. Estos
operadores pueden ser:

ARITMÉTICOS: Los operadores aritméticos nos permiten, básicamente, hacer cualquier


operación aritmética, que necesitamos (ejemplo: suma, resta, multiplicación, etc).
Existen operadores aritméticos binarios los cuales 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.
%: Módulo (obtención del residuo de una división) de dos o más valores o variables.

RELACIONALES: Son operadores que se encargan de unir y comparar dos o más valores, se
utilizan en comparaciones de parejas 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 mismo tiempo:
a > b > c //ERROR
(a > b) && (b > c) //BIEN

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.
|| : Operador OR (O) de todas las condiciones solo una debe ser verdadera y con hace
determinada acció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.

El operador de asignación básico es el igual (=), el cual asigna el valor del operando derecho
al operando izquierdo. Es decir, x = y asigna el valor de y a x. El otro operador de asignación
son usualmente son abreviaciones para operaciones estándar, como se muestra en las
siguientes definiciones y ejemplos.

x=y x = y: Asignación
x += y x = x + y: Asignación de adición
x -= y x = x - y: Asignación de sustracción
x *= y x = x * y: Asignación de multiplicación
x /= y x = x / y: Asignación de división
x %= y x = x % y: Asignación de Resto
x **= y x = x ** y: Asignación de exponenciación
x <<= y x = x << y: Asignación de desplazamiento a la izquierda
x >>= y x = x >> y: Asignación de desplazamiento a la derecha
x >>>= y x = x >>> y: Asignación sin signo de desplazamiento a la derecha
x &= y x = x & y: Asignacion AND
x ^= y x = x ^ y: Asignación X OR
x |= y x = x | y: Asignación OR
La notación BNF
La notación BNF es un metalenguaje, esto se dice porque se le usa para describir otro
lenguaje, es una nomenclatura que nos permite una descripción compacta y precisa de los
constructores sintácticos usando ciertos símbolos y reglas.

Los meta símbolos BNF son:


::= de definición (el esquema de la derecha desarrolla el elemento de la izquierda)
|: de alternativa (se puede elegir únicamente uno de los elementos que separa)
{}: de repetición (los elementos que incluyen, pueden repetirse cero o más veces)
[]: de opción (los elementos que incluyen pueden utilizarse o no)
(): de agrupación (sirven para agrupar los elementos que incluyen)

También para diferenciar los elementos simbólicos incluídos en las reglas, se emplearán
distintos estilos de letra para diferenciar los siguientes elementos:

Elemento_no_terminal: son elementos que habrán de ser definidos por alguna regla, se
encuentran entre <>.

Elemento_terminal: se emplea para representar los elementos que forman


parte del lenguaje, lo usamos entre los siguientes símbolos.

Para recordar...
Semántica
Por medio de la semántica de un lenguaje de programación podemos ver como los
programas están compuestos por un programador e interpretados por el computador.

Sintaxis
La sintaxis es la forma en que se escribe un lenguaje de programación por medio de reglas
que especifican si un programa está bien escrito o no.

Expresión
Una expresión es una combinación de constantes, variables o funciones, que es interpretada
de acuerdo con las normas particulares de un lenguaje de programación

Según el tipo de datos que manipulan, las expresiones se clasifican en aritméticas,


relacionales y lógicas, sus tipos son:
● Simples.
○ Estos operadores sólo necesitan el símbolo matemático que los representa
para ser utilizados.
■ *, +, -, /, %

● Compuestas.
○ Las operadores compuestos combinan una operación aritmética con una

variable asignada. Estas son comúnmente utilizadas en los bucles. Estas

asignaciones compuestas pueden ser:

■ ++, –

■ += , -= , *= , /=

Las sentencias como casi todas las cosas, se dividen en simples y estructuradas.
Las simples serán las que tratemos en este tema, dejando para el siguiente las
estructuradas.

Este tema debería ser de repaso, pues lo que aquí se cuenta ya se ha mencionado a lo

largo del tutorial. Pues, sentencias de asignación, expresiones y operadores seguro que ya te

suenan y que sabes lo qué son. Por otro lado, a las llamadas a procedimientos, que son otro

tipo de sentencias simples, ya se les dedica un tema completo

El bloque de código es un usuario o sección de código con una o más declaraciones y

sentencias. Un lenguaje de programación que permite bloques, incluyendo bloques

anidados dentro de otros bloques es llamado un lenguaje de programación estructurado por

bloques.

Ideas de la estructura del bloque se desarrollaron en la década de los años 1950, durante el

desarrollo de los primeros autocodes y fueron formalizados en los informes de Algol 58 y


Algol 60. Algol 58 introdujo la noción de la "sentencia compuesta", que estaba relacionada

únicamente con control de flujo. El posterior informe revisado que describe la sintaxis y la

semántica de Algol 60 introdujo la noción de un bloque, consistiendo en "una secuencia de

sentencias encerrada entre begin y end..." en la que "cada declaración aparece en un bloque

de esta manera y es válida solo para ese bloque.

El control de flujo se refiere al orden en que se ejecutan las instrucciones que tenemos en

el programa.

El orden puede ser ascendente, descendente o podemos ejecutar un conjunto de

instrucciones alguna determinada cantidad de veces en donde se modifique algunos valores

y hasta que el valor cumple alguna condición se dejen de ejecutar esas instrucciones.

Determinar el orden de las instrucciones depende primordialmente de el algoritmo que

queremos desarrollar en el programa.

Flujo secuencial

Se refiere a la ejecución de instrucciones una trás otra, es decir de una línea, a la siguiente

sin saltarse ninguna, es en dónde la salida de una es la entrada de otra.

El flujo secuencial es casi inexistente, ya que en muchos programas se hacen llamadas a

funciones y esto hace que no sea secuencial.

Función

Flujo alternativo

Es cuando el contador del programa no sigue la siguiente instrucción(como en el flujo

secuencial) y se salta directamente a otra aunque este en una dirección de memoria más

alejada, puede ser que se salte a otra linea incondicionalmente, es decir de manera
obligatoria, o que se haga condicionalmente que es cuando alguna expresión cumple alguna

determinada condición y se brinca a otra instrucción.

Flujo selectivo

Se utiliza cuando para realizar algún programa se tienen diferentes casos y que los podemos

identificar con algún valor, este valor nos va a ayudar a saber si es cierto caso a que bloque

de código se debe de brincar. Es como tener un tipo directorio en el que tenemos registrado

el identificador del caso que puede ser un valor "x" con el correspondiente bloque de código

que debe ejecutar.

Flujo repetitivo

Por ejemplo cuando en un bloque de código se tiene una instrucción incondicional que salte

al principio de ese bloque de código diríamos que estamos teniendo un flujo repetitivo

aunque en este caso infinito, pero si en cambio tenemos nuestro bloque de código, con

alguna variable que vaya cambiando su valor y al final una instrucción condicional en la que

se finalice ese bloque de código si el valor de la variable cumple cierta condición y si no lo

cumple se regrese al principio del bloque, entonces tenemos un flujo de control en el que el

bloque del código se ejecuta al menos una vez.

Un bloque de sentencias es un conjunto de instrucciones englobadas bajo


llaves { }. Como al principio se mencionó. La sentencia if elige entre varias
alternativas en base al valor de una o más expresiones booleanas. La
sentencia else es opcional, puede utilizarse o no.

En programación, una sentencia condicional es una instrucción o grupo de


instrucciones que se pueden ejecutar o no en función del valor de una
condición. Los tipos más conocidos de sentencias condicionales son el
SI..ENTONCES, el SI..ENTONCES.

También podría gustarte