UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una...

73
6. ALGORITMOS

Transcript of UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una...

Page 1: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

6. ALGORITMOS

Page 2: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Computabilidad: Término matemático para nombrar a los

estudios sobre teoría de la computación. Consiste en encontrar

la representación adecuada para la descripción de un

problema o un fenómeno.

Conocimiento transmisible: se da si se cierra el ciclo

Descripción Representación

Page 3: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Modelo: Especificación, generalmente en términos

de un lenguaje matemático, de los pasos necesarios

para reproducir, aquí y ahora, un subconjunto

determinado de la realidad descrito previamente

Pregunta:

¿Todo aquello que es descriptible es representable?

¿Habrá una representación que simule

completamente lo descrito?

Cuanto más adecuada sea la descripción del

proceso, tanto mejor será el resultado que emula lo

real

Page 4: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Supongamos que se crea una máquina para

producir descripciones en términos de cadenas de

símbolos.

Dada una descripción cualquiera, la analiza durante

un tiempo finito y después emite su dictámen (si o

no) con respecto al problema

Pregunta : ¿existirá una máquina así?

Descripción Procedimiento

De

decisión

SI

NO

HAY

SOLUCIÓN

Page 5: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Máquina de Turing: Es un modelo matemático para

especificar formalmente los pasos primitivos necesarios para representar una descripción en términos totalmente explícitos y claros, sin hacer la menor referencia a conceptos u operaciones ambiguos o sobreentendidos.

Elementos: – Una cinta de longitud infinita, dividida en celdas (cada

celda puede contener un símbolo

– Un diccionario de símbolos predefinido (De aquí se toman los símbolos para las celdas)

– Un control finito, que posee un conjunto de estados y que tiene la capacidad de examinar algún símbolo de alguna celda y tomar una decisión (La decisión depende del símbolo observado y del estado en el que se encuentre en ese momento)

Page 6: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Funcionamiento: Mediante un conjunto de funciones

matemáticas simples se indica el comportamiento completo del proceso que está siendo representado, mostrando detalladamente los estados por los que atraviesa para lograrlo. Se parte de un estado inicial y se recorre un conjunto de estados intermedios hasta llegar al estado final, que marca entonces el final de la computación

S10 S0 S7 S14 S4 S2 …

CONTROL

FINITO

Page 7: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Teoría de la computabilidad Encontrar formas de

representar descripciones de procesos, de manera

tal que siempre se pueda decir que la solución de un

problema existe o no

Un problema se dice que es Computable si existe

una máquina de decisión para él

Pregunta: ¿Todos los procesos son computables?

Un problema se dice que es No Computable si la

máquina de decisión para él llega a un estado en

donde no es capaz de decir que si o que no

Page 8: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

1. Definición o análisis del

problema: Descripción

específica y comprensible

del problema a resolver

2. Diseño del algoritmo:

Planteamiento de los

pasos a seguir para

resolver el problema

3. Transformación del

algoritmo en un programa

independientemente del

lenguaje de programación.

4. Ejecución y validación del

programa

5. Mejoras y correcciones al

programa

Page 9: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Algoritmo: Conjunto ordenado y finito de pasos u

operaciones que permite hallar la solución de un

problema. Es un método formal y sistemático de

representar la descripción de un proceso.

CARACTERÍSTICAS: – Definido: debe indicar el orden de la realización de cada paso y

no debe tener ambigüedad

– Preciso: Si se sigue dos veces o más se obtendrá e el mismo

resultado cada vez

– Finito: Debe terminar en algún momento. Tiene un número

determinado de pasos

Page 10: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

– Correcto: Sin errores

– Debe tener al menos una salida

– Su solución debe ser concreta

– Debe ser sencillo y legible

– Eficiente y efectivo

– Se ha de desarrollar en el menor tiempo posible

Un algoritmo debe describir tres partes:

– Entrada(s) : elementos o condiciones iniciales

necesarios para resolver el problema.

– Proceso : elaboración del procedimiento.

– Salida(s): Resultados que se desean obtener

Page 11: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Pseudocódigo: Representación descriptiva de las operaciones

de un algoritmo. Representa una secuencia lógica de actividades, que llevarán en conjunto a la solución de un problema. Los elementos que debe llevar un algoritmo son

– Cabecera del algoritmo: Existen pasos o procedimientos que se realizan para comenzar un programa. Siempre que se haga debe ponerse un encabezado de programa, en donde debe expresarse el identificador o nombre correspondiente con la palabra reservada que señale el lenguaje, generalmente ésta suele ser program que en algoritmia significa algoritmo

– Declaración de Variables: En este punto se describen todas las variables que son usadas en el algoritmo, haciendo una lista de sus nombres y especificando a qué tipo corresponde cada uno.

Page 12: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

– Declaración de Constantes: En este punto se declararán todas las constantes de carácter estándar; es decir, que tengan nombre y un valor ya conocido o valores que ya no pueden variar en el transcurso del algoritmo

– Cuerpo del algoritmo: Una vez añadidas la cabecera y la declaración de variables y constantes se procede a realizar los pasos del algoritmo

A continuación se muestra un ejemplo:

Page 13: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Algoritmo Área_Círculo

{Cálculo del área de un circulo

pidiendo el radio al usuario}

var r, A: real

cte: p:real

Inicio

Mostrar “Dame el radio”

Leer r

A <- p*r^2

Mostrar “El área es:”, A

Fin

Cabecera

– Nombre del algoritmo

– {Comentario con descripción

del problema}

Declaración de variables y

constantes

Cuerpo del algoritmo

Page 14: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Diagrama de flujo: Es la representación gráfica de las operaciones de un algoritmo. Contiene símbolos gráficos que se encuentran estandarizados. Los símbolos más comúnes son:

Page 15: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Dia

gra

mas d

e f

lujo

más c

om

ún

es

Page 16: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Dia

gra

ma

s d

e f

lujo

s c

om

ún

es

(c

on

t.)

Page 17: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Inicio

var r, A: real

cte: p:real

“Dame el

radio:”

r

A <- p*r^2

A

A

“El área es ”, A,

“u^2”

Fin

Page 18: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Instrucciones que se le dan a la Computadora

Un algoritmo se compone de muchos pasos, todos diferentes, los que son interpretados como instrucciones (lenguaje de bajo nivel), sentencias o proposiciones (lenguaje de alto nivel). Entonces, en un programa, la secuencia de instrucciones especifica las operaciones que la computadora debe realizar.

Page 19: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Las instrucciones básicas y comunes pueden dividirse en cuatro grupos: – Instrucciones de Entrada /Salida: Transferencia de datos

e información entre dispositivos periféricos (teclado, impresora, unidad de disco, etc.) y memoria central.

– Instrucciones Aritmético-Lógicas: Tienen la función de ejecutar operaciones aritméticas (suma, resta, multiplicación, división, potenciación), lógicas (operaciones and, or, not, etc.).

– Instrucciones Selectivas: Estas permiten la elección de una tarea entre varias alternativas en función de los resultados de diferentes expresiones condicionales.

– Instrucciones Repetitivas: Permiten la repetición de secuencias de instrucciones, un número determinado o indeterminado de veces.

Page 20: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

CONSTANTES Y VARIABLES

Las constantes son datos cuyos valores no cambian, pero existen datos cuyos valores sí varían durante la ejecución del programa, a éstos los llamamos variables. En la mayoría de los lenguajes de programación se permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean o lógicas, quienes representan datos de estos tipos.

Entonces una variable se conoce como un objeto, o partida de datos cuyo valor puede cambiar durante la ejecución del algoritmo o programa.

A las variables y a las constantes se les conoce o identifica por los atributos siguientes: nombre o identificador que lo asigna y tipo que describe el uso de la variable.

Page 21: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Identificadores: – Deben empezar con letra, excepto ñ o Ñ, o guión bajo

y estar seguidos de cero o más letras, números o guiones bajos

– No se permiten símbolos como

– $ ¡ ! ¿ ? ° | & - % # @ , . ‘ “ / \ o espacios en blanco y tabuladores

Palabras reservadas: Existe un conjunto palabras que se utilizan tanto en pseudocódigo como en los lenguajes de programación no pueden ser utilizadas como nombres de identificadores ni de funciones.

Page 22: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

OPERACION DE ASIGNACION

Se le otorgan valores a una variable. Esta operación de asignación se conoce como instrucción o sentencia de asignación, si es que está en un lenguaje de programación

La operación de asignación es representada por un símbolo u operador:

La acción de asignar puede ser destructiva ya que puede perderse el valor que tuviera la variable antes, siendo reemplazado por el nuevo valor. Las acciones de asignación se clasifican según sea el tipo de expresiones en: Asignación aritméticas, Asignación lógica y Asignación de caracteres

Page 23: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

EXPRESIONES

Son la combinación de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales, idea que puede ser utilizada en notaciones de matemática tradicional. Los valores de las variables nos permitirán determinar el valor de las expresiones, debido a que éstos están implicados en la ejecución de las operaciones indicadas. Estas constan de operandos y operadores.

Según el tipo de objetos que manipulan, pueden clasificarse en: – Aritméticas -> resultado tipo numérico.

– relacionales -> resultado tipo lógico.

– lógicas -> resultado tipo lógico.

– caracter -> resultado tipo caracter.

Page 24: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Expresiones Aritméticas

Estas expresiones son análogas a las fórmulas matemáticas. Las variables y constantes son numéricas (real o entera) y las operaciones son las aritméticas

Operadores aritméticos

Precedencia

- (operador monario)

^ (exponenciación), (radicación)

*, / (división real),

+, -

div o / (cociente de división entera) , mod o % (residuo de división entera)

Page 25: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Expresiones lógicas: Su valor es siempre verdadero o falso.

Se forman combinando constantes lógicas , variables lógicas y otras expresiones lógicas, utilizando los operadores lógicos y los operadores relacionales

Operadores relacionales

Precedencia

>, <

>=, <=

= o == (igualdad)

<> o != (desigualdad)

Page 26: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Operadores lógicos

Precedencia

! o ~ o not (negado)

and o && (conjunción)

or o || (disyunción)

Nota: En C un valor falso se toma como 0 y un valor verdadero se toma como cualquier valor diferente de cero

A NOT

F V

V F

A B AND OR

F F F F

F V F V

V F F V

V V V V

Page 27: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

ENTRADA Y SALIDA DE INFORMACION

El ingreso de datos es importante para que la computadora realice los cálculos; esta operación es la entrada, luego, estos datos se convertirán en resultados y serán la salida.

A la entrada se le conoce como operación de Lectura (read). La operación de lectura se realiza a través de los dispositivos de entrada que son (teclado, unidades de disco, CD-Rom, etc.).

La operación de salida se realiza por medio de dispositivos como (monitor, impresora, etc), a esta operación se le conoce como escritura (write).

Page 28: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

INTRODUCCION A LA PROGRAMACION ESTRUCTURADA

El entendimiento de los algoritmos y luego

de los programas, exige que su diseño sea

fácil de comprender y su flujo lógico un

camino fácil de seguir

La descomposición de programas en

módulos más simples de programar se dará

a través de la programación modular, y la

programación estructurada permitirá la

escritura de programas fáciles de leer y

modificar.

Page 29: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION MODULAR

Este es uno de los métodos para el diseño más flexible y de mayor performance para la productividad de un programa. En este tipo de programación el programa es dividido en módulos, cada uno de las cuales realiza una tarea específica, codificándose independientemente de otros módulos. Cada uno de éstos son analizados, codificados y puestos a punto por separado.

Los programas contienen un módulo denominado módulo principal, el cual supervisa todo lo que sucede, transfiriendo el control a submódulos (los que son denominados subprogramas), para que puedan realizar sus funciones. Sin embargo, cada submódulo devolverá el control al módulo principal una vez completada su tarea. Si las tareas asignadas a cada submódulo son demasiado complejas, se procederá a una nueva subdivisión en otros módulos más pequeños aún.

Page 30: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION MODULAR

Este procedimiento se realiza hasta que cada uno de los módulos realicen tareas específicas. Estas pueden ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de éstos. Puede ser que un módulo derive el control a otro mediante un proceso denominado bifurcación, pero se debe tomar en cuenta que esta derivación deberá ser devuelta a su módulo original.

Los módulos son independientes, de modo que ningún módulo puede tener acceso directo a cualquier otro módulo, excepto el módulo al que llama y sus submódulos correspondientes. Sin embargo, los resultados producidos por un módulo pueden ser utilizados por otro módulo cuando se transfiera a ellos el control.

Page 31: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION MODULAR

Page 32: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Cuando hablamos de Programación Estructurada, nos referimos a un conjunto de técnicas que con el transcurrir del tiempo han evolucionado. Gracias a éstas, la productividad de un programa se ve incrementada de forma considerable y se reduce el tiempo de escritura, de depuración y mantenimiento de los programas. Aquí se hace un número limitado de estructuras de control, se reduce la complejidad de los problemas y se minimiza los errores.

Gracias a la programación estructurada, es más fácil la escritura de los programas, también lo es su verificación, su lectura y mantenimiento. Esta programación es un conjunto de técnicas que incorpora: – diseño descendente (top-down)

– recursos abstractos

– estructuras básicas

Page 33: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Los recursos abstractos son utilizados como un apoyo en la programación estructurada, en vez de los recursos concretos de los que se dispone (lenguaje de programación determinado).

Para separar un programa en términos de recursos abstractos debemos descomponer acciones complejas en acciones más simples, las que son capaces de ejecutar o constituyen instrucciones de computadora disponible.

Page 34: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Diseño descendente (Top-Down)

Este es un proceso en el cual el problema se descompone en una serie de niveles o pasos sucesivos (stepwise). Esta metodología consiste en crear una relación entre las etapas de estructuración, las que son sucesivas, de tal forma que se interrelacionen mediante entradas y salidas de información. Considerando los problemas desde dos puntos de vista: ¿que hace? y ¿cómo lo hace?

Page 35: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Page 36: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

FUNDAMENTOS DE ALGORITMOS

Estructuras básicas de control

En un programa estructurado, el flujo lógico se gobierna por las estructuras de control básicas: – Secuenciales

– Selectivas o de selección

– Repetitivas

Teorema de la Programación Estructurada:

Un programa propio puede ser escrito utilizando sólo los tres tipos de estructuras de control antes mencionadas

Page 37: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

ESTRUCTURA SECUENCIAL

Es la estructura en donde una acción (instrucción) sigue a otra de manera secuencial.

Las tareas se dan de tal forma que la salida de una es la entrada de la que sigue y así en lo sucesivo hasta cumplir con todo el proceso.

Page 38: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

ESTRUCTURA DE DECISIÓN

Decisión: Elegir una alternativa o camino en el flujo del algoritmo cuando se cumpla o no una determinada condición.

El resultado de la condición se evalúa como falso o verdadero y se obtiene al comparar dos expresiones mediante operadores relacionales. De ser necesario realizar más de una comparación al mismo tiempo se asocian con operadores lógicos

Page 39: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Guía de referencia rápida de lenguaje C

Estructuras de control

Decisión

Simple

Doble

Anidada

Múltiple

Page 40: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Estructuras de control

Decisiones (cont.)

En algunas ocasiones para realizar las comparaciones también se hace uso de una variable booleana o bandera (flag). Una bandera es una variable que sólo puede tener dos valores: falso o verdadero

Page 41: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Estructuras de control

Ciclo, loop, lazo o bucle: Repetir un conjunto de instrucciones varias veces con base en que se cumpla o no una determinada condición.

A cada ejecución del conjunto de instrucciones en un ciclo se le llama iteración

Ciclos

simples

while

do-while

for anidados

Page 42: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Tipos de ciclos: – Mientras (while): Se lleva a cabo mientras se cumpla una

condición. Primero evalúa la condición y luego ejecuta el conjunto de instrucciones. De no cumplirse la condición desde el inicio, no hace nada y sigue con el flujo normal del algoritmo

– Hacer mientras (do while): Realiza un conjunto de instrucciones y continua mientras se cumpla una condición. A diferencia del anterior, este ciclo se ejecuta por lo menos una vez

– Desde hasta (for): Se utiliza cuando se conoce el número de veces que se va a repetir un conjunto de instrucciones. Requiere de un valor inicial, un valor final y un contador

Page 43: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Contador: variable que almacena el número de veces que se ha repetido un conjunto de instrucciones en un ciclo; en otras palabras, indica el número de veces que se ha ejecutado el ciclo

En un ciclo, también hay otro tipo de que se hacer usa frecuentemente

Acumulador: aquella variable que almacena el resultado de una operación anterior y se utiliza para obtener el siguiente resultado

Page 44: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Decisiones anidadas

Cuando se tiene una serie de

estructuras de control de la forma

Page 45: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

si condición1 entonces

– si condición2 entonces

si condiciónN entonces

sino

fin_si

– sino

– fin_si

sino

fin_si

Page 46: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Decisión múltiple o alternativa selectiva múltiple (según_sea, caso de/case)

Cuando una variable puede tomar varios valores, generalmente de tipo entero o caracter, se puede hacer uso de la decisión anidada para evaluar los distintos casos, sin embargo, se puede simplificar al poner una estructura del tipo

Page 47: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Page 48: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

PROGRAMACION ESTRUCTURADA

Arreglos Un arreglo es un conjunto ordenado de variables del

mismo tipo que se encuentran reunidas bajo un mismo nombre

La forma de declarar un arreglo en términos de algoritmos es – var arrNombre(7): arreglo de tipo

– var arrNombre(1..7):tipo

La forma de acceder a cada elemento del arreglo es por medio de un índice, p. ej.

var arrentero(1..7):entero

arrentero(4) 18

10 0 7 14 4 2 -10

0

1

2

3

4

5

6

Page 49: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Funciones comunes a todos los lenguajes de programación

Matemátic

a

Algorítmica Matemátic

a

Algorítmica

abs(x) sinh(x)

sqrt(x) cosh(x)

exp(x) tanh(x)

log(x) asinh(x)

log10(x) acosh(s)

sin(x) atanh(x)

cos(x)

tan(x)

asin(x)

acos(s)

atan(x)

x

x

ex

ln x( )

log10 x( )

sen x( )

cos x( )

tan x( )

sen-1 x( )

cos-1 x( )

tan-1 x( )

senh x( )

cosh x( )

tanh x( )

senh-1 x( )

cosh-1 x( )

tanh-1 x( )

Page 50: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Representación

Dependiendo del lenguaje las cadenas se

pueden representar entre comillas simples o

dobles

Por ejemplo:

‘cadena con comillas simples’

“cadena con comillas dobles”

Page 51: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Declaración y asignación de cadenas

En general, las cadenas son un tipo de

variable, sin embargo, depende del lenguaje

de programación la forma en que se

declaren y se asignen

En lenguaje algorítmico simplemente

podemos declararlas así:

var nombre_cadena: cadena

var nombre_cadena: string

Page 52: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Al declararlas de esta forma podemos hacer

uso de varias funciones y operaciones que

permiten manipularlas y que son comunes

en los lenguajes de programación.

La forma en como se asigna una cadena en

lenguaje algorítmico puede ser de la

siguiente manera:

var micadena: cadena

micadena <- “hola qué tal”

Page 53: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

En lenguaje algorítmico las funciones que

manipulan cadenas llevan un símbolo de “$”

al final de su nombre.

Longitud de una cadena: Devuelve el

número de caracteres que contiene la

cadena

var len:entero

len <- length$ micadena

{len=12}

Page 54: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Leer y mostrar cadenas: Para únicamente

leer o mostrar cadenas se hace uso de las

funciones read$ y print$, respectivamente.

Por ejemplo:

var micadena: cadena

micadena <- “hola qué tal”

print$ micadena

print$ “ahora introduce una nueva cadena”

read$ micadena

print$ “La nueva cadena es: “, micadena

Page 55: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Concatenación de cadenas

La concatenación es una operación especial

que consiste en la yuxtaposición de 2 o más

cadenas. En lenguaje algorítmico la

podemos representar como:

var cadena1, cadena2, cadena3: cadena

cadena1 <- “hola qué”

cadena2 <- “ tal”

cadena3 <- cadena1 + cadena2

print$ cadena3

{Muestra en pantalla hola qué tal}

Page 56: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Observe que la concatenación no es

conmutativa

cadena3 <- cadena2 + cadena1

print$ cadena3

{Muestra en pantalla talhola que}

Page 57: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Comparación de cadenas y ordenamiento

Se pueden comparar cadenas

lexicográficamente y determinar si son

iguales o no lo son,

si cadena2 = cadena1

print$ “Las cadenas son iguales”

sino

print$ “Las cadenas no son iguales.”

Page 58: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

o si una de ellas se encuentra en orden

alfabético primero que otra

si cadena2 > cadena1 print$ cadena2, “va después de ”

print$ cadena1

sino

print$ cadena1, “va después de ”

print$ cadena2

{podría usarse < pero habría que cambiar

el orden de las sentencias}

Page 59: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Obtención de una subcadena

Otra de las operaciones más comunes con

cadenas es la obtención de una subcadena

a partir de un caracter, por ejemplo:

var cadena1, cadena2: cadena cadena1 <- “hola qué tal”

cadena2 <- substr$ cadena1, ‘q’

print$ cadena2

{Muestra en pantalla la subcadena qué

tal}

Page 60: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Del ejemplo anterior se obtuvo una subcadena que

empieza con el caracter indicado, sin embargo, si no

existiera dicho caracter la función podría devolver el

valor NULL (nil, null)

NULL es un valor especial que, en este caso, indica

que la cadena está vacía o que no existe la cadena

solicitada y se debería de tratar como error

cadena2 <- substr$ cadena1, ‘z’

{Con el valor anterior de cadena 1,

cadena2 vale NULL porque no existe

z}

Page 61: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Pueden existir también cadenas vacías y su

longitud es de 0.

Asignar una cadena vacía a una variable de

tipo cadena podría servir para limpiar el

contenido de esa variable.

No todos los lenguajes permiten cadenas

vacías

Cadenas y sus operaciones

Page 62: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Es posible obtener una subcadena a partir de que se

le indique las posiciones inicial y final o solamente la

posición inicial

Podría regresar NULL si las posiciones de la cadena

exceden la longitud de la misma

Cadenas y sus operaciones

cadena2 <- substr$ cadena1,3,6

{cadena2 = “la q”}

cadena2 <- substr$ cadena1,3

{cadena2 = “la qué tal”}

Page 63: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Búsqueda de subcadenas

Una operación frecuente es tratar de localizar si una

cadena forma parte de una cadena más grande o

buscar la posición en que aparece determinado

caracter o secuencia de caracteres de texto

var cadena1: cadena

var posicion:entero

cadena1 <- “hola qué tal”

posicion <- instr$ cadena1, “la”

print posicion

{Muestra en pantalla 2}

Page 64: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

La función instr$ devuelve el índice de la

posición donde se encuentra el primer

elemento de la subcadena deseada

Si la subcadena no existe en la cadena

devuelve 0.

Page 65: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Inserción de una cadena dentro de otra.

Se inserta una cadena dentro de otra en la posición

indicada. Si la posición excede a la longitud de la

cadena devuelve NULL

var cadena1, cadena2, cadena3: cadena

cadena1 <- “hola qué tal”

cadena2 <- “ABC”

cadena3 <- insert$ cadena1, cadena2, 4

print$ cadena3

{Muestra en pantalla la cadena

holaABC qué tal}

Page 66: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Borrar una subcadena de una cadena.

Para eliminar una subcadena que comienza

en la posición p y tiene una longitud l.

var cadena1, cadena2, cadena3: cadena

cadena1 <- “hola qué tal”

cadena2 <- remove$ cadena1, 3, 4

print$ cadena2

{Muestra en pantalla la cadena

houé tal}

{p = 3, l = 4}

Page 67: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Sustitución de una subcadena por otra.

Para reemplazar una subcadena de una

cadena por otra subcadena se tiene:

var cadena1, cadena2, cadena3: cadena

cadena1 <- “hola qué tal”

cadena2 <- “ola”

cadena3 <- replace$ cadena1, cadena2, “ABC”

print$ cadena3

{Muestra en pantalla la cadena

hABC qué tal}

Page 68: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Obtención de un caracter de una cadena

La función chrstr$ obtiene un caracter de la posición

indicada. Si la posición es mayor que la longitud de

la cadena se devolvería NULL

var cadena1: cadena

var car: caracter

cadena1 <- “hola qué tal”

car <- chrstr$ cadena1, 4

print car

{Muestra en pantalla el caracter ‘a’}

Page 69: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Sustitución de un caracter en una cadena

var cadena1: cadena

var car: caracter

cadena1 <- “hola qué tal”

read car {Suponiendo que se leyó ‘w’}

cadena1 <- strchr$ cadena1, 4, car

print$ cadena1

{Muestra en pantalla la cadena holw

qué tal}

Page 70: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

La función strchr$ reemplaza el caracter de la

cadena en la posición indicada por un nuevo

caracter

Si se excede de la longitud de la cadena devolvería

el valor NULL.

Page 71: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Cadenas y sus operaciones

Inserción de un caracter en una cadena. Para

añadir un caracter a una cadena en una posición

dada tenemos.

var cadena1: cadena

var car: caracter

cadena1 <- “hola qué tal”

read car {Suponiendo que se leyó ‘w’}

cadena1 <- istrchr$ cadena1, 4, car

print$ cadena1

{Muestra en pantalla la cadena holwa

qué tal}

Page 72: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Conversión de cadenas a números

Cadenas y sus operaciones

var cadena1: cadena

var num: entero

cadena1 <- “1250”

num <- strtonum$ cadena1

print num

{Muestra en pantalla el número

convertido}

Page 73: UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICOuat.gustavoleon.com.mx/CPIU6 - Algoritmos.pdf · – Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un símbolo

Conversión de números a cadenas

Cadenas y sus operaciones

var cadena1: cadena

var num: entero

num <- 1250

cadena1 <- numtostr$ num

print$ cadena1

{Muestra en pantalla la cadena

convertida}