Cadenas de Caracteres

Documentos relacionados
ARREGLOS Y MATRICES 1. Arreglos

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Trabajo Práctico 5 Estructura Repetitiva

Instituto Tecnológico de Celaya

TEMA V SISTEMAS DE NUMERACIÓN

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente:

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Programación en java. Estructuras algorítmicas

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Trabajo Práctico N 9 Recursividad

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

FUNDAMENTOS DE INFORMÁTICA

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Cadenas y Caracteres. Universidad Católica de Honduras Nuestra Señora Reina de la Paz. Asignatura. Programación Científica. Tema de Exposición

Estructuras Secuénciales

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica.

Universidad Autónoma del Estado de México Facultad de Medicina

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

Tema 2 Introducción a la Programación en C.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

[ GUÍA DIDÁCTICA: DESARROLLO DE ALGORITMOS PSEINT] 11 de julio de 2013

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Introducción a la programación: Algoritmos

Tema: Uso del programa DFD

INSTITUTO POLITECNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE BIOTECNOLOGIA DEPARTAMENTO DE CIENCIAS BASICAS

#include <stdio.h> /*..\me2000\ejemp12.cpp */ #include <ctype.h> #define MF '.' /* defino la constante Marca Final */

Maquina de Turing. 5. Fundamentos de algoritmos. Turing TURING TURING 10/08/2010. MI Elizabeth Fonseca Chávez

Escribir programas a partir de un diagrama de flujo

Principios de Computadoras II

Estructuras de control

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Universidad Rafael Urdaneta Escuela de Ingeniería de Computación

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:

Los números enteros. Identificación. Propuesta didáctica: unidad Didáctica. Resumen: Sexto de primaria matemática. Grado: Sexto.

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Informática Ingeniería en Electrónica y Automática Industrial

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Informática II Vectores y Matrices

Lenguajes y Gramáticas

Introducción a la programación

CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)

Capítulo 9. Introducción a los lenguajes formales. Continuar

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Programación Funcional Haskell Clase 21

Elabore un diagrama de flujo y la codificación de un programa para:

PSEUDOCÓDIGO. En este documento se recopilan los elementos conceptuales esenciales acerca PSEUDOCÓDIGO en la programación.

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Fundamentos de Programación Visual Basic

Entrada de ejemplo

Sistemas Numéricos Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Guía práctica de estudio 03: Algoritmos

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

SISTEMAS NUMÉRICOS. Conocer los diferentes sistemas numéricos y su importancia en la informática y la computación

Formulación del problema de la ruta más corta en programación lineal

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

ESCUELA DE INFORMÁTICA

TécniquesInformàtiques PRÀCTICA 6 (2 Sessions) Curs

REFERENCIA DEL LENGUAJE

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Teoría de Conjuntos y Conjuntos Numéricos

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

DIAGRAMAS DE FLUJO ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO

XVI Olimpiada Colombiana de Computación Nivel Superior Prueba Final Dia 2

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

TEMA 1: Algoritmos y programas

La segunda observación permite reformular el problema de una manera más simple:

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

Departamento de Tecnologías de la Información. Tema 4. Máquinas de Turing. Ciencias de la Computación e Inteligencia Artificial

Tema 2. Fundamentos de la Teoría de Lenguajes Formales

Algoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira

CAPÍTULO II SISTEMAS NUMÉRICOS. Este método de representar los números se llama sistema de numeración decimal, donde 10 es la base del sistema.

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES

ESTRUCTURAS ALGORITMICAS

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

06 Análisis léxico II

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Práctica 1 de Excel (Curso )

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

Teoría de la Computación

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

UNIDAD I. ALGORITMOS

MatemáticaDiscreta&Lógica 1

Representación de números enteros: el convenio exceso Z

Manual Excel. RGA Training & Solutions

Transcripción:

1 Cadenas de Caracteres 2013 Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas

2 Objetivos Conocer las propiedades de los arreglos de caracteres así como las diferentes operaciones que pueden ser realizadas en ellos. Solucionar problemas utilizando arreglos de caracteres Introducción Los elementos del tipo carácter (tipo char en lenguaje C) se pueden agrupar para formar secuencias que se denominan cadenas de caracteres, o simplemente cadenas. En la memoria del computador una cadena se guarda en un arreglo de tipo carácter. Un arreglo es una estructura de datos, o más técnicamente, un espacio de memoria que permite almacenar una colección de elementos, todos del mismo tipo. Conviene imaginar un arreglo como una secuencia contigua de celdas (espacios de memoria), o casillas, en cada una de las cuales se puede guardar un elemento de la colección. 1. Definición Los elementos del tipo caracter (tipo char en lenguaje C) se pueden agrupar para formar secuencias que se denominan cadenas de caracteres, o simplemente cadenas. En este texto, y también en el texto de un programa en C, las cadenas se delimitan por dobles comillas. Por ejemplo, CH?*$A7! y soy cadena son dos cadenas, la primera formada por 8 caracteres y la segunda por 10. En la memoria del computador una cadena se guarda en un arreglo de tipo caracter, de tal manera que cada símbolo de la cadena ocupa una casilla del arreglo. Sin embargo, se utiliza una casilla adicional del arreglo para guardar un carácter especial que se llama terminador de cadena. En C y en el seudo lenguaje este carácter especial es \0. Como lo indica su nombre, la función de este carácter especial es indicar que la cadena termina. Las dos cadenas mencionadas arriba, se representan en la memoria del computador como lo indica la siguiente figura: C H? * $ A 7! \0 0 1 2 3 4 5 6 7 8 s o y c a d e n a \0 0 1 2 3 4 5 6 7 8 9 10 La longitud de una cadena se define como el número de símbolos que la componen, sin contar el terminador de cadena. Es muy importante tener en cuenta que aunque el terminador de cadena no hace parte de la cadena, sí ocupa una casilla de memoria en el arreglo.

3 Dado que la representación de cadenas es mediante arreglos de tipo carácter, aplican todos los conceptos que ya explicaron para esta estructura de datos. Por otra parte, por el hecho de que las cadenas son de uso muy frecuente y generalizado en programación, en muchos lenguajes se dispone de muchas operaciones (funciones) sobre estas. La siguiente es una lista corta de estas operaciones para el seudolenguaje, en la cual debe suponerse que cad, cad1 y cad2 son nombres de arreglos de tipo carácter. Operación leercadena(cad) escribircadena(cad) longitudcadena( cad) copiarcadena( cad1, cad2 ) concatenarcadena( cad1, cad2 ) compararcadena( cad1, cad2 ) Descripción Guarda la cadena digitada por el usuario en el arreglo cad Escribe en la pantalla la cadena cad Retorna la longitud de la cadena cad Copia la cadena cad2 en la cadena cad1 Retorna la concatenación de cad1con cad2, en la cadena cad1 Retorna menos uno ( 1) si cad1 es menor que cad2, cero (0) si son iguales y uno (1) si cad2 es menor que cad1 Para determinar si una cadena es menor que otra se usa el orden lexicográfico, es decir, el mismo que usan los diccionarios. Así por ejemplo, casa es menor casita, y esta a su vez es menor que caza. De otra parte, la operación leercadena pone automáticamente el terminador de cadena, lo mismo que las operaciones copiarcadena y concatenarcadena. Ejemplos A continuación se muestran algunos ejemplos con el objeto de esclarecer la teoría antes presentada Ejemplo Uno Un palíndromo es una palabra o frase, si se quiere del idioma español, que se puede leer igual de izquierda a derecha y de derecha a izquierda, obviando signos de puntuación y espacios. Para aclarar, son palíndromas las siguientes frases y palabras: Anilina Amor a Roma Dábale arroz a la zorra el abad Reconocer Anita lava la tina Ala Considere el problema de construir un algoritmo que lea una PALABRA, de longitud máxima 30, y determine si es palíndromo o no. Las entradas (datos conocidos) para el algoritmo son: La palabra a considerar La salida esperada (dato desconocido) es: Un mensaje que indica si es palíndromo o no

4 La siguiente gráfica resume las entradas y las salidas del algoritmo que se pretende diseñar. Además bautiza las variables principales: Palabra Respuesta Las condiciones iniciales y finales se pueden expresar mediante dos cláusulas: REQUIERE y GARANTIZA, de la siguiente manera: REQUIERE: Una palabra, llamada pal, que puede tener hasta 30 caracteres GARANTIZA: Escribe en pantalla un mensaje, respuesta, que indica si pal es palíndromo o no Una primera versión del algoritmo solución puede ser simplemente la siguiente: Inicio Paso 1. Leer la palabra Paso 2. Determinar si es palíndromo Paso 3. Escribir en pantalla el mensaje apropiado Fin Los pasos 1 y 3 son interacciones con el usuario que se implementan usando las operaciones sobre cadenas disponibles. La versión inicial se puede refinar detallando estos pasos y además, definiendo las variables necesarias para hacerlo: Procedimiento principal Variables pal: arreglo [31] de caracter respuesta: arreglo [20] de caracter Inicio escribir( Por favor digite una frase de máximo 30 letras ) leercadena(pal) Paso 2. Determinar si pal es palíndromo Paso 3. Escribir en pantalla el mensaje apropiado Fin Note que el arreglo pal se define de dimensión 31. Puede explicar cuál es el propósito de esto?. La parte nuclear de la solución es el Paso 2 (determinar si el arreglo pal contiene un palíndromo). Para esto se deben comparar el primer carácter con el último, el segundo con el penúltimo, y así sucesivamente. En seudo lenguaje, este proceso puede ser:

5 i:= 0 // i señala el primer caracter de la cadena j:= longitudcadena(pal) 1 // j señala el último caracter de la cadena siga:= verdadero //variable que indica cuándo parar el proceso mientras (i<j y siga) hacer si (pal[i]=pal[j]) entonces i:= i+1 j:= j 1 siga:= falso fin mientras si i<j entonces copiarcadena(respuesta, no es palindromo ) copiarcadena(respuesta, es palindromo ) El arreglo respuesta queda con la respuesta apropiada para el usuario. El algoritmo completo se presenta enseguida. Se han definido algunas constantes para permitir que el programa sea más fácilmente modificable. Procedimiento principal Constantes N 30 // N es la máxima longitud de la palabra dada por el usuario Variables pal: arreglo [31] de caracter respuesta: arreglo [20] de caracter i,j: entero siga: booleano Inicio escribir( Por favor digite una palabra de máximo 30 letras ) leercadena(pal) i:= 0 // i señala el primer carácter de la cadena j:= longitudcadena(pal) 1 // j señala el último carácter de la cadena siga:= verdadero //variable bandera que indica cuándo parar el proceso mientras (i<j y siga) hacer si (pal[i]=pal[j]) entonces i:= i+1 j:= j 1 siga:= falso fin mientras si i<j entonces

6 copiarcadena(respuesta, no es palindromo ) copiarcadena(respuesta, es palindromo ) escribircadena(respuesta) Fin Problema complementario para clase Transcriba el código del ejemplo anterior a lenguaje C++. Ejercicios para desarrollar en clase 1. Construya un algoritmo que lea una FRASE, de longitud máxima 30, y determine si es palíndromo o no. El algoritmo debe procesar correctamente frases de más de una palabra. 2. Construya un algoritmo que lea una frase del español de máximo 100 caracteres y determine cuántas palabras, vocales y consonantes tiene. 3. Construya un algoritmo que lea dos palabras del español y determine si la primera es sufijo de la segunda. Por ejemplo, lote es prefijo de casalote. 4. Construya un algoritmo que lea dos palabras del español y determine si la primera es parte de la segunda. Por ejemplo, alo es parte de casalote. Ejercicios para desarrollar en casa 1. Suponga que la operación longitudcadena no está disponible. Escriba un algoritmo que calcule la longitud de una cadena, bajo el supuesto de que el terminador de cadena aparece en alguna casilla del arreglo. 2. Suponga que la operación compararcadena no está disponible. Escriba un algoritmo que compare dos cadenas, bajo el supuesto de que ambas tienen el terminador de cadena. 3. Escriba un algoritmo que invierta una cadena. Por ejemplo, si la cadena es épica, su inversa es acipé. Anexos En esta sección se mostrara como es la codificación de la teoría vista en clase, para ello se utilizara como herramienta de codificación: C++.

7 Codificación en C++ de arreglos y matrices Seudocódigo C++ Cadena <NOMBRE> : arreglo [<N>] de caracter char <NOMBRE>[<N>]; Referencias Lectura de Profundización http://ocw.unican.es/ensenanzas-tecnicas/fundamentos-de-informatica/curso-fortran-6.pdf http://www.slideshare.net/wladimirclipper/cadena-caracteres Imágenes: Las imágenes utilizadas en este documento fueron tomadas de www.google.com Fuentes: http://www.diatel.upm.es/cgonzalez/presentaciones/cadenas_de_caracteres.pdf http://msanchez.usach.cl/lcc/computacion/cadena caracteres.pdf http://www.tonahtiu.com/notas/estructuras/alto_constantes_caracter.htm https://info1utnfrc.wikispaces.com/file/view/apunte+cadenas+de+caracteres.pdf