PROGRAMACION
SECUENCIAL Y DESARROLLO DE ALGORITMOS.
INTRODUCCION:
Los ordenadores deber su existencia y su
utilidad, precisamente a su capacidad de efectuar varios cálculos que no pueden
realizar los seres humanos. Deseamos que la computadora efectúe lo que nunca
podríamos hacer nosotros, y la potencia de las maquinas actuales es tal, que
inclusive los cálculos pequeños, por su tamaño, escapan al poder de nuestra
imaginación limitada.
Sin
embargo debemos organizar el calculo de manera tal que nuestros limitados
poderes sean suficientes para asegurar que se establecerá el efecto deseado.
Esta organización incluye la composición de los programas.
Los
avances en la tecnología siempre van parejos con progresos en los lenguajes de
programación y con nuevas ayudas para simplificar el uso del computador, con lo
cual un numero mayor de usuarios se beneficia de el. Pero la necesidad de hacer
programas para resolver problemas específicos quizás nunca desaparecerá.
La
programación intenta establecer una secuencia de acciones que puedan ser
ejecutadas por el procesador y que realicen un
determinada tarea.
Las
fases son en primer lugar la resolucion del problema
propuesto mediante por supuesto un algoritmo y en segundo lugar la adaptación
del algoritmo al PC y codificar el algoritmo en un lenguaje que el ordenador
pueda comprender:
CONCEPTO
DE ALGORITMO:
Concepto de
algoritmo

Es un conjunto de sentencias
pertenecientes de un pseudolenguaje en un determinado
orden (secuencia de control) y finitas en un número que resuelve un problema.
El algoritmo se compone de
acciones es decir, de etapas en la realización de este. Existe otro tipo de
acciones que son las acciones primitivas que son las acciones que el procesador
puede ejecutar sin necesidad de información suplementaria. En base a esto un
algoritmo seria la secuencia ordenada de acciones primitivas que realizan un
trabajo.
Siempre a la hora de escribir
un algoritmo hay que tener en cuenta tres cosas principalmente como son:
La determinación de las
primitivas de las que se parten.
El lenguaje o pseudolenguaje a utilizar.
La representación de los
datos.
Aparte de estos tres mas
importantes hay otros puntos a tener en cuenta como por ejemplo establecer
datos de entrada (variables); establecer datos de salida; y como no establecer
las correspondientes relaciones entre datos de entrada y salida.
Un algoritmo debe cumplir un serie de condiciones como son:
Ser finito:
Un algoritmo debe finalizar
tras un numero finito de pasos.
Estar bien definido:
Para que todas las definiciones
de los datos de entrada devuelvan los mismos datos pedidos a la salida:
Asi al la vista de
la gente parece que no hay muchas diferencias entre algoritmo y programa y es que en verdad la unica
diferencia que los hace distintos es que los algoritmos no son pueden ser
interpretados por el ordenador si no que deben ser traducidos al lenguaje de
programación correspondiente para poder ser compilados y ejecutados.
ESTRUCTURA SUPERFICIAL DE LOS
ALGORITMOS:

Los datos pueden ser de varios tipos:
Ø De entrada.
Ø De salida.
Ø Internos o de proceso (ofrecen resultados).
Hay al igual que los datos aciones de..
Ø Entrada: reogen los datos para el trabajo.
Ø Proceso: ejecutan los calculos.
Ø Salida: ofrecen resultados.
TIPOS DE ALGORITMOS (NOTACIONES ALGORITMICAS):
Ø Ordinogramas / organigramas (diagramas de flujo):

Concepto:
Un diagrama de flujo es una representación gráfica de la secuencia de pasos a realizar para producir un cierto resultado, que puede ser un producto material, una información, un servicio o una combinación de los tres. Se utiliza en gran parte de las fases del proceso de Mejora Continua, sobretodo en Definición de proyectos, Diagnóstico, Diseño e Implantación de soluciones, y Mantenimiento de las mejoras.
Para elaborar un diagrama de flujo se utilizan diversos símbolos según el tipo de información que contengan (proceso, decisión, base de datos, conexión, etc.).
Cómo interpretar un diagrama de flujo:
Existen dos niveles de interpretación, comprensión del proceso y mejora del mismo. La mejor manera de adquirir conocimiento sobre un proceso en curso es recorrer el proceso representado en el diagrama de flujo, paso a paso, siguiendo el flujo indicado por las flechas. Por esto, y dado que los equipos de mejora suelen estar constituidos por representantes de departamentos que sólo conocen en profundidad una de las partes del proceso, es recomendable plantearse como primer objetivo el de adquirir un mejor conocimiento común completo del proceso en su conjunto.
El error más común es no documentar el proceso real o no actualizarlo.
Cómo elaborar un diagrama de flujo:
1. Discutir la utilización del diagrama de flujo.
2. Decidir sobre el resultado de la sesión.
3. Definir los límites del proceso, identificando el primer y último paso necesarios.
4. Documentar cada paso secuencialmente.
5. En puntos de decisión o bifurcación escoger una rama.
6. Seguimiento del proceso desconocido, tomar nota y continuar.
7. Repetir los pasos 4, 5 y 6 hasta alcanzar el último paso del proceso.
8. Retroceder y trazar el diagrama de las otras ramas siguiendo el mismo proceso.
9. Revisión completa sin omitir pequeños bucles o casos especiales.
10. Decidir cómo rellenar aquellas partes del proceso que no son bien conocidas.
11. Analizar el diagrama una vez seguros de que el diagrama está completo

Ø Arboles de decisión:
Aproximan funciones discretas, clasificando las instancias yendo de la raiz hasta las hojas. Testeando en cada nodo un atributo y bajando por la rama apropiada al valor de la instancia. Repitiendose el proceso hasta llegar a una hoja, a donde esta el resultado.

Ø Tablas de decisión:
Muchos procesos de toma de decisiones se pueden solucionar por medio de las tablas de decisión, en las que se representan los elementos característicos de estos problemas:
· Los diferentes estados que puede presentar la naturaleza: e1, e2, ..., en.
· Las acciones o alternativas entre las que seleccionará el decisor: a1, a2,...,am.
El formato general de una tabla de decisión es el siguiente:
| |
Estados de la Naturaleza |
|||||
|
Alternativas |
|
e1 |
e2 |
. . . |
en |
|
|
a1 |
x11 |
x12 |
. .
. |
x1n |
||
|
a2 |
x21 |
x22 |
. .
. |
x2n |
||
|
. . . |
. . . |
. . . |
. . . |
. . . |
||
|
am |
xm1 |
xm2 |
. .
. |
xmn |
Ø Pseudocodigo ó pseudolenguaje:
*explicado posteriormente al hablar de la creación de el pseudocodigo: metrica 3 (ASI).
ESTRUCTURAS DE CONTROL:
Son aquellas estructuras con las que podemos llevar a cabo nuestros programas y algoritmos.
Se puede realizar cualquier tipo de problema con la unica aplicación de 3 estructuras de control:
1.-Estructuras
condición: Es el punto en el algoritmo en el que se condiciona el estado del
proceso y se tienen dos o una alternativa; cuando es Verdadera o Falsa.

2.-Estructuras
de iteración: Es un mecanismo
de lazo. Permite repetir varias veces un grupo de pasos, hasta que se satisfaga
esta condición. La repetición puede programarse para un cierto número de veces.

3.-
Estructura de control de secuencia: Es un grupo de instrucciones que se ejecuta
en orden, de la primera a la última. Una acción hasta que se vuelva Verdadera
la condición.

CONCEPTOS...
*Ciclo
condicional: “Mientrasque no cumpla
*Ciclo definido: Es un ciclo
condicional en el que el número de veces que se repite la acción estan definidos por el programa, o bien, un algoritmo en el
que hay un comienzo y un final.
*Ciclo infinito:
Es el ciclo que se repite y se repite sin límite alguno.
*Iteración: se le atribuye al proceso de repetir una acción.
*Contador: es un dispositivo que cuenta el número de veces que se repite
Los pasos a seguir para resolver correctamente un problema:
Ø
Comprensión del problema
Ø
Desarrolo de un
plan para resolver el problema
Ø
Realización del plan
Ø
Evluación de la
solución
En el
progreso de la programación también se sigue un procedimiento.....
Ø
Definición del problema
Ø
Desarrollo, refinamiento y pruebas del algoritmo
Ø
Escritura del programa
Ø
Pruebas y depuración del programa
Ø
PSEUDOCODIGO DE
Ø PSEUDOLENGUAJE: METRICA 3 (ASI):
En el pseudocódigo emplearemos un enfoque imperativo
Notación algorítmica:
— Palabras clave
— Lenguaje natural sintaxis libre
— Sangrado o indentación
— Empleo de comentarios
Las principales ventajas son: la Flexibilidad y como no la Legibilidad.
Los elementos de una notación son o pueden ser:
— Léxicos: símbolos indivisibles mínimos.
• Combinaciones mínimas de caracteres
• Símbolos gráficos
— Sintácticos: reglas para combinar jerárquicamente elementos léxicos.
• Construcción de sentencias
• Uniones válidas de símbolos gráficos
— Semánticos: reglas que aseguran que los elementos sintácticos tienen significado.
• Compatibilidad de tipos
Ø ESTRUCTURA DE ALGORITMO
Sera:
ALGORITMO
nomre_algoritmo
VARIABLE
FIN VARIABLE
CONSTANTE
FIN CONSTANTE
INICIO
FIN
FIN_ ALGORITMO
Los comentarios seran:
\\----------------------- ó \\*----------------------------
----------------------------
-----------------------------*\\
Ø Concepto de variable: Posición de memoria que almacena un dato cuyo valor puede cambiar durante la ejecución.
En las variable, se pone la declaración de las variables que se usan en el modul, area, bloque …principal.
Ø Concepto de constante: Posición de memoria que almacena un dato cuyo valor NO puede cambiar durante la ejecución.
En las constantes se pone la declaracion de las constantes que se usan en el modulo, área, bloque…principal.
NOTA: El nombre de las palabras reservadas se pone en mayuscula.
El nombre de variables y constantes:
- tamaño ilimitado.
- En minuscula.
- Sin restricción de caracteres.
Las variables serán de los siguientes tipos:
- entero
- carácter
- real
- booleano
Ejemplos de inicialización: - ENTERO Aux.=3;
- ENTERO Aux.=3, var.=7;
TIPOS:
La representación de las constantes en el algoritmo sera:
CONSTANTE
Nombre _ constante (valor o literal)
Ej: numero _ veces 10;
FIN CONSTANTE
Ø SALIDA STANDARD (STOUT).
ESCRIBIR ( )
![]()

Lo que quiero que aparezca por pantalla.
- Ej: ESCRIBIR (“es par”);
-
Ej2:
ESCRIBIR (a + 1);
Variable entero.
- Ej3: ESCRIBIR(expresión);
1) se evalua la expresión.
2) El resultado se imprime por pantalla.
Ø EXPRESIONES:
Son un conjunto de datos y operadores con unas reglas específicas de construcción.
Los operandos pueden ser también valores retornados por funciones. En la obtención del resultado se debe tener en cuenta el orden de prioridad de los operadores.
En función del resultado las expresiones se pueden clasificar en:
- NUMERICAS: Con resultado numérico, utilizan operandos y operadores aritméticos.
Ej.: num./2+cantidad
- ALFANUMERICAS: Con resultado de una cadena de caracteres y utilizan operadores alfanuméricos.
Ej: nombre+apellido1+apellido2
Y esto con valores nombre=”miguel”, apellido1=”Martínez”, apellido2=”moreno”.
Quedando como resultado: “Miguel Martines Moreno”.
- LOGICAS O BOOLEANAS: Con resultado verdadero (V) ó falso (F).
Utilizan operadores relacionales y logicos.
Ej: A>25 y (B+C) < D/2.
Ø LECTURA: ENTRADA STANDARD(STDIN):
LEER
( );
Nombre _ variable (leido cuando le doy al INTRO).
EJ: LEER (a);
Ø ESTRUCTURAS DE CONTROL.
Ø SECUENCIAS:
NOTA: Una línea es una instrucción que acaba en (;). A excepción de las otra estructuras de control.

La instrucción más importante que permite cambiar el estado inicial de un programa y de sus variables se denomina: ASIGNACION.
La instrucción de asignación es: VARIABLE=EXPRESION.
A) El igual se utiliza para la asignación.
B) La parte de la izquierda de la asignación solo puede ser el nombre de una variable.
C) La parte derecha de una asignación siempre sera una expresión.
D) El proceso o ejecución de un asignación se hace con los pasos siguientes:
Ø Se evalua la expresión dando como resultado un valor.
Ø Se ve si es compatible el tipo del valor y el tipo de la variable.
Ø Si no son compatibles, ERROR.
Ø Si son compatibles el valor machaca al valor que tenia anteriormente la variable.
*la variable que esta en la parte izquierda puede aparecer como operando en la parte derecha.
Ø ESTRUCTURAS IPERATIVAS. (hay 3 tipos:)
1. MIENTRAS (condicion)
“cuerpo del bucle”
FIN _ MIENTRAS
Funcionamiento: en primer lugar todo lo que coloque dentro se llama cuerpo del bucle en el cual puedo hacer cualquier instrucción en cualquier orden y cantidad.
la conclusión es un tipo de condicion que al evaluarse da como valor V ó F.
Finalizada la instrucción de antes del mientras se evalúa la expresión, si dicha expresión da como valor F la secuencia o flujo de ejecución se encuentra inmediatamente después del FIN _ MIENTRAS.
Si por el contrario el valor que me da a evaluar la expresión es verdadero V el flujo se introduce en el cuerpo del bucle. Cuando se ejecuta la ultima instrucción del cuerpo el flujo vuelve al mientras evaluándose denuevo la expresión.
Mientras que la condicion es verdadera se ejecuta el cuerpo del bucle, cuando sea falsa saltara el flujo hasta justo después del FIN _ MIENTRAS.
2. REPETIR
“cuerpo del bucle”
HASTA (condicion).
Funcionamiento: ejecutado la instrucción que hay antes del repetir se introduce en el cuerpo del bucle, llegado al hasta se evalúa la expresión; si es V pasa a la instrucción que este después del HASTA. Se la condicion es F el flujo vuelve al principio del cuerpo. Como se observa en el cuerpo se ejecuta siempre como mínimo una vez.
Si puedo poner tanto un MIENTRAS como un HASTA se cumple que: si tengo una condicion en mientras la condicion de REPETIR será F.
3. HACER
“cuerpo del bucle”
MIENTRAS (condición)
Funcionamiento: IDEM al mientras pero con la diferencia de que como minimo el cuerpo se ejecuta una vez.
Ø ESTRUCTURAS CONDICIONALES:
SI (CONDICION) ENTONCES
“CUERPO DEL BUCLE”
FIN _ SI
Funcionamiento: ejecutado la instrucción anterior a si se evalúa la condición que será una expresión relacional o lógica, si el resultado es verdadero el flujo se introduce en el bucle, por el contrario si es falsa salta a la instrucción siguiente a FIN _ SI.
<<BLOQUE V>>
SI NO
<< BLOQUE F>>
FIN _ SI
Funcionamiento: Ejecutada la instrucción anterior al SI se evalúa la condición, si el resultado es V se ejecuta el bloque V y no el bloque F, siguiendo el flujo por la instrucción que haya después de FIN _ SI. Si la evaluación es F se ejecutara el bloque F.
<<BLOQUE1>>
SINO SI (CONDICION2)
<<BLOQUE2>>
SINO SI
…………
SINO SI (CONDICION ‘N’) ESNTONCES
<<BLOQUE ‘N’>>
FIN _ SI.
Funcionamiento: Ejecutada la instrucción anterior al SI se evalúa la condición 1, si el resultado esV se ejecuta el bloque 1 siguiendo el flujo por la instrucción siguiente a FIN _ SI. Si la condición 1 es falsa se evalúa la condicion2. y así hasta llegar a la ultima condición verdadera.
Solo se ejecuta el primer bloque verdadero, si todas las instrucciones son falsas no se ejecuta ninguna. Cuando me encuentro una condición verdadera se ejecuta y pasa a la condición posterior a FIN _ SI.
Ø SELECTOR
SELECTOR (EXPRESION)
CASO1: (BLOQUE1)
FIN:
CASO2: (BLOQUE 2)
FIN:
CASO3: (BLOQUE3)
FIN:
CASON: (BLOQUE N)
FIN:
DEFECTO:
(BLQUE DEFECTO)
FIN:
FIN SELECTOR
Funcionamiento: ejecutada la instrucción del selector, se evalúa la expresión (entero, carácter o real) y dado el valor que sea se determina si coincide con alguno de los distintos casos, se ejecuta su bloque, opcionalmente después del bloque tenemos la instrucción FIN. Si existe esa instrucción el flujo prosigue por la instrucción que haya después del FIN _ SELECTOR; si no tenemos esa instrucción se ejecuta el bloque siguiente hasta llegar a un FIN: o a FIN _ SELECTOR.
El caso defecto es opcional y se aparece el bloque se ejecuta en 2 ocasiones:
- Cuando el valor de las expresión no coincide con los valores dados.
- Cuando entre el bloque que se ejecuta y defecto no haya ninguna instrucción de FIN:
Ø VECTORES, MATRICES Y SECUENCIAS:
Son estructuras estáticas y su tamaño no varia a lo largo del tiempo. Es un conjunto finito de datos homogéneos y por lo tanto del mismo tipo, almacenados en memoria dinámica.
Un vector como una variable tiene asociado unos nombres pero no hace referencia a un solo dato sino a ‘n’ datos.
Un dato de un vector queda referenciado mediante 2 elementos:
- el nombre del vector.
- Un entero denominado índice que identifica la posición de dicho dato dentro del vector.
REPRESENTACION:
Array o vector:

Los vectores tienen:
|

Un vector es una estructura unidimensional. Y para acceder a cualquier posición habrás que decir que el nombres del vector y el nombre del elemento que quiero y lo podré modificar.
Los vectores se utilizan para guardar temporalmente datos del
mismo tipo con el fin de manipularlos.
VARIABLE _ VECTOR:
Tipo _ Base mombre_vector [c_i... c_s]
![]()
![]()
-
Entero
-
Real literal entero, constante
- Carácter Ej.: ENTERO números[5..27]
- Booleano
INSTRUCCIONES
LEER (numero [7]); //guardar en posición 7.
ECRIBIR (numero[i]); //mostrar por pantalla el elemento con posición 26.
ESTRUCTURA DE RECORRIDO:
ENTERO vector [1...20]
INICIO
Contador=1 // posición en la que se guarda.
MIENTRAS (contador<=20)
LEER (vector [contador];
Contador=contador +1;
FIN MIENTRAS
*El contador con vectores lo llamaremos índice.
Cont.=20;
MIENTRAS (Cont.>0)
ESCRIBIR (vector [contador];
Cont.=contador+1;
FIN _ MIENTRAS
Son estructuras de información. IDEM al los vectores,
considerando en este caso que un elemento queda identificado mediante dos números
enteros el primero que representa lo que seria
Considerando lo mencionado respecto a la dimensión de un vector y una matriz podemos generalizar las definiciones de la siguiente manera: Un array ‘n’ dimensional es una estructura estática de información que contiene ‘m’ elementos y que cada elemento queda identificado por 2 cosas:
- 1. nombres del array.
- 2. Índices que identifican su posición (tantos como dimensiones).
DEFINICION:
Tipo_base nombre_matriz [c_i1...c_s1,
c_i2...c_s2]
![]()


![]()
REAL
ENTERO 1Dimensión 2Dimensión
CARACTER
BOOLEANO
ESTRUCTURA DE RECORRIDO:
ENTERO matriz [1...5; 1...7]
INICIO
LEER (matriz [2,3];
ESCRIBIR (matriz [2,1]); // el resultado sera un entero.
Índice_1=1;
MIENTRAS (Índice_1<=5)
Índice_2=1;
MIENTRAS (indice2<=7);
Operar (matriz [indice1, indice2];
Indice2=indice2+1;
FIN _ MIENTRAS
Indice1=indice1+1;
FIN _ MIENTRAS
FIN
ESTRUCTURAS ‘N’ DIMENSIONALES:
Tipo _ base entero estructura [c_i1...c_s1; c_i2...c_s2;……., c_In...c_sN]
ESTRUCTURA [X, Z, Y,………, N] // Son ‘n’ elementos que al evaluarlos dan un entero como resultado.
![]()
![]()
3.
SECUENCIAS: STRING JAVA
VECTOR DE CARACTERES
C ó C++
Estructura estática de información la cual guarda o almacena caracteres del código ASCII. En su definición tiene asociada una longitud que indica el nº máximo de caracteres que puede contener.
Podemos considerar una secuencia como un caso especial ó excepción de los vectores de caracteres.
DEFINICION: Secuencia _ palabra [valor _ entero];
LEER SECUENCIA:
Tendrá parte de vector y parte de variable.
LEER (palabra); 1) primera tecla palabra[1]
2) segunda tecla palabra [2]
…………………..
10) décima tecla palabra [10]
11) para finalizar INTRO.
12) Y se añade automáticamente en palabra 11 un carácter especial que es ‘|0’, que indica el fin de la secuencia
ESCRIBIR POR STOUT:
ESCRIBIR (palabra);
ACCESO A LOS CARACTERES DE UN SECUENCIA:
Índice=1;
MIENTRAS (palabra [índice] <> ‘|0’)
Operar (palabra [índice];
Índice=índice+1;
FIN _ MIENTRAS.