La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

Presentaciones similares


Presentación del tema: "UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO"— Transcripción de la presentación:

1 UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar este tema es necesario bajar e imprimir el artículo Herramientas de Programación que se encuentra en el apartado Artículos PROF. ING. JAIME ALFONSO REYES CORTÉS

2 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

3 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

4 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í? Procedimiento De decisión Descripción SI HAY SOLUCIÓN NO

5 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 cojunto 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)

6 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

7 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

8 FUNDAMENTOS DE ALGORITMOS
Definición o análisis del problema: Descripción específica y comprensible del problema a resolver Diseño del algoritmo: Planteamiento de los pasos a seguir para resolver el problema Transformación del algoritmo en un programa independientemente del lenguaje de programación. Ejecución y validación del programa Mejoras y correcciones al programa

9 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

10 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

11 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.

12 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:

13 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

14 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:

15 Diagramas de flujo más comúnes

16 Diagramas de flujo más comúnes (cont.)

17 A Inicio A <- p*r^2 var r, A: real cte: p:real “El área es ”, A, “u^2” “Dame el radio:” r Fin A

18 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.

19 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.

20 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. Tipos de datos en algoritmos

21 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.

22 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

23 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.

24 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)

25 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)

26 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 A B AND OR F V

27 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).

28 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.

29 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.

30 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.

31 PROGRAMACION MODULAR

32 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

33 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.

34 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?

35 PROGRAMACION ESTRUCTURADA

36 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

37 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.

38 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

39 Guía de referencia rápida de lenguaje C
Estructuras de control Decisión Simple Doble Anidada Múltiple

40 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

41 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 Otros tipos de ciclos simples son: Do Loop-Until, Repeat-Until, For-each que no se tratan en este documento

42 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 Otros tipos de ciclos son: Do Loop-Until, Repeat-Until, For-each que no se tratan en este documento

43 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

44 PROGRAMACION ESTRUCTURADA
Decisiones anidadas Cuando se tiene una serie de estructuras de control de la forma

45 PROGRAMACION ESTRUCTURADA
si condición1 entonces si condición2 entonces si condiciónN entonces sino fin_si

46 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

47 PROGRAMACION ESTRUCTURADA

48 Funciones comunes a todos los lenguajes de programación
Matemática 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) Existen en todos los lenguajes de programación, sin embargo, su notación puede variar en la primera letra, que puede ser mayúscula o minúscula dependiendo del lenguaje.

49 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 que indica la posición del elemento dentro del arreglo, p. ej. var arrentero(1..7):entero arrentero(4)  18 La declaración de arreglos dependerá del lenguaje de programación, ésta es una notación propuesta Los índices de las posiciones del arreglo que se manejan pueden variar dependiendo del lenguaje, por ejemplo, para Pascal y Matlab el índice empieza en 1, mientras que para C el índice empieza en 0. 1 2 3 4 5 6 7 índices del arreglo 10 7 14 4 2 -10 arrentero

50 PROGRAMACION ESTRUCTURADA
dirección de memoria índices del arreglo memoria 0x2000 0x2001 10 1 0x2002 0x2003 2 Arreglos (cont.) Un arreglo se utiliza para manejar un conjunto de variables que están relacionadas entre sí como los componentes de un vector o los coeficientes de un polinomio. Los elementos de un arreglo ocupan direcciones contiguas en memoria, p. ej. 0x2004 0x2005 7 3 0x2006 0x2007 14 4 ¡Ojo! Todos los arreglos en C empiezan en el índice 0 y terminan hasta el índice tamaño-1 0x2008 0x2009 18 5 0x200A 0x200B 2 6 0x200C 0x200D -10 7

51 PROGRAMACION ESTRUCTURADA
Arreglos (cont.) La forma de declarar un arreglos de varias dimensiones en lenguaje logarítmico var nombredelarreglo(1..dimensión1) (1..dimensión2)…(1..dimensiónN): tipo La forma de acceder a cada elemento del arreglo es por medio del índice en cada dimensión, p. ej. var matriz(1..2)(1..2):entero matriz(1,1)<- 1 matriz(1,2)<- 0 matriz(2,1)<- 2 matriz(2,2)<- 1 Existen diversas maneras de declarar arreglos en lenguaje algorítmico

52 PROGRAMACION ESTRUCTURADA
dirección de memoria índices del arreglo memoria 0x200E 0x200F 1 1,1 0x2010 0x2011 1,2 Arreglos (cont.) También los elementos de un arreglo multidimensional ocupan direcciones contiguas en memoria, para el ejemplo anterior. 0x2012 0x2013 2 2,1 0x2014 0x2015 1 2,2

53 Registros PROGRAMACION ESTRUCTURADA
Conjunto de variables de distintos tipos agrupados bajo un mismo nombre. Cada uno de sus componentes se denomina campo La forma de declarar un registro en términos de algoritmos es: id_registro = REGISTRO id_campo1: tipo1 id_campo2: tipo2 id_campon: tipon {Fin de declaración del registro}

54 Registros (cont.) Ejemplos: Sea TIEMPO un registro formado por tres campos numéricos que nos permitan almacenar horas, minutos y segundos. TIEMPO = REGISTRO horas: entero minutos: entero segundos: entero {Fin de declaración del registro} Podemos declarar variables de tipo registro como: var t1, t2, ts: TIEMPO Asignamos valores a sus campos usando el operador . t1.horas = 5 t1.minutos = 31 t1.segundos = 22

55 Registros (cont.) O les asignamos valores por vía teclado
Leer (t2.horas, t2.minutos, t2.segundos) Con las variables definidas podemos hacer operaciones entre sus campos: ts.horas = t1.horas + t2.horas ts.minutos = t1.minutos + t2.minutos ts.segundos = t1.segundos + t2.segundos Y los podemos mostrar en pantalla Escribir (“Suma = “, ts.horas,”:”, ts.minutos,”:”, ts.segundos)

56 Registros (cont.) Otro ejemplo: Puedo definir un registro que me represente el domicilio de una persona DOMICILIO = REGISTRO calle: cadena número: entero ciudad: cadena país: cadena {Fin de declaración del registro}

57 Diferencias entre arreglos y registros
Un arreglo puede almacenar N elementos del mismo tipo, mientras que un registro puede almacenar N elementos de diferentes tipos Los elementos de una arreglo se accesan por medio de índices (posición del elemento en el arreglo) mientras que los elementos de un registro (campos) se acceden directamente por su nombre En un arreglo es posible establecer un orden entre sus elementos, mientras que en un registro no existe orden entre los campos

58 Cadenas y sus operaciones
Representación Dependiendo del lenguaje las cadenas se pueden representar entre comillas simples o dobles Por ejemplo: Se podría representar una cadena sin comillas, sin embargo, se puede prestar a ambigüedades ya que si las comillas no sería posible distinguir una cadena de una variable. ‘cadena con comillas simples’ “cadena con comillas dobles”

59 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

60 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”

61 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 Los nombres de las funciones y los operadores que manipulan cadenas dependen del lenguaje de programación por lo que deberás familiarizarte con dicho lenguaje antes de utilizarlas. var len:entero len <- length$ micadena {len=12}

62 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: En diagrama de flujo las funciones read$ y print$ no son necesarias, solamente en pseudocódigo.Ya vimos los símbolos para leer y escribir variables de cualquier tipo mediante diagramas de flujos. var micadena: cadena micadena <- “hola qué tal” print$ micadena print$ “ahora introduce una nueva cadena” read$ micadena print$ “La nueva cadena es: “, micadena

63 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: Recuerda que estas operaciones dependen del lenguaje de programación. El operador ‘+’ podría no ser el que se utilice en un lenguaje de programación sino una función. var cadena1, cadena2, cadena3: cadena cadena1 <- “hola qué” cadena2 <- “ tal” cadena3 <- cadena1 + cadena2 print$ cadena3 {Muestra en pantalla hola qué tal}

64 Cadenas y sus operaciones
Observe que la concatenación no es conmutativa cadena3 <- cadena2 + cadena1 print$ cadena3 {Muestra en pantalla talhola que}

65 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, El uso del operador de igualdad para cadenas depende del lenguaje si cadena2 = cadena1 print$ “Las cadenas son iguales” sino print$ “Las cadenas no son iguales.”

66 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} El uso de los operadores de comparación depende del lenguaje

67 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: El nombre substr es una propuesta, variará dependiendo del lenguaje de programación var cadena1, cadena2: cadena cadena1 <- “hola qué tal” cadena2 <- substr$ cadena1, ‘q’ print$ cadena2 {Muestra en pantalla la subcadena qué tal}

68 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}

69 Cadenas y sus operaciones
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

70 Cadenas y sus operaciones
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 cadena2 <- substr$ cadena1,3,6 {cadena2 = “la q”} cadena2 <- substr$ cadena1,3 {cadena2 = “la qué tal”}

71 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 instr$ es un nombre propuesto var cadena1: cadena var posicion:entero cadena1 <- “hola qué tal” posicion <- instr$ cadena1, “la” print posicion {Muestra en pantalla 2}

72 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.

73 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} insert$ es un nombre propuesto.

74 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} remove$ es un nombre propuesto

75 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} replace$ es un nombre propuesto

76 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’} chrstr$ es un nombre propuesto, puede variar de acuerdo al lenguaje de programación

77 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} strchr$ es un nombre propuesto

78 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.

79 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} istrchr$ es un nombre propuesto.

80 Cadenas y sus operaciones
Conversión de cadenas a números var cadena1: cadena var num: entero cadena1 <- “1250” num <- strtonum$ cadena1 print num {Muestra en pantalla el número convertido} strtonum$ es un nombre propuesto

81 Cadenas y sus operaciones
Conversión de números a cadenas var cadena1: cadena var num: entero num <- 1250 cadena1 <- numtostr$ num print$ cadena1 {Muestra en pantalla la cadena convertida} numtostr$ es un nombre propuesto


Descargar ppt "UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO"

Presentaciones similares


Anuncios Google