Estructuras y clases. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Documentos relacionados
Programación de Ordenadores

Técnicas Informáticas PRÁCTICA 7 Curso PRÁCTICA 7: Cadenas y Estructuras.

Elementos de un programa en C

Datos Elementales y formato de un programa en Java

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Introducción a los Computadores

Tema 2: La clase string. Índice. Notas. Programación 2. Curso Notas. Definición Declaración Entrada / salida Métodos Operaciones

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

26 de Octubre del 2013

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Tipos de datos y operadores en C++

Cadenas (strings) y Estructuras

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Introducción a c++ Introducción a la programación EIS Informática III

TEMA 8: Gestión dinámica de memoria

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

Laboratorio de Técnicas Informáticas FACULTAD DE FÍSICAS

LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Programación 1. Tema II. Diseño de los primeros programas. Lección 4. Diseño de algunos programas elementales

Índice. Estructuras de datos en Memoria Principal. Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Fundamentos de Informática 4. Primeros Programas, Primeros Diseños

Recursos predefinidos en C++ que son utilizados en la asignatura Cláusula include Recursos predefinidos visibles Observaciones

Hoja de ejercicios del Tema 3

Hoja de ejercicios del Tema 3

Programación 1 Tema 3. Información, datos, operaciones y expresiones

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Tema 2 Elementos básicos en C

Tema: Cadenas en C#.

Programación de Ordenadores

Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

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

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Índice. Estructuras de datos en Memoria Principal: Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa:

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Laboratorio de Informática GRADO EN FÍSICA

TEMA 7. ARRAYS (LISTAS Y TABLAS).

PROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos.

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas

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)

Conceptos Básicos. Programación

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Programación. Test Autoevaluación Tema 3

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Vectores y Matrices. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Guía básica de programación en C++ estructurado. Manejo básico de la parte estructurada de C++

Clase 7: Strings. Profesora de Cátedra: Niñas Pro

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 1ª Convocatoria. 21 de Enero de 2002

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I

Los parámetros: son los campos que se comunican a los métodos de los objetos.

UNIVERSIDAD TECNOLÓGICA DE LOS ANDES INGENIERÍA DE SISTEMAS E INFORMÁTICA ALGORITMOS Y ESTRUCTURAS DE DATOS

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programación 1 Tema 4. Diseño de programas elementales

Apuntadores en C/C++ INTRODUCTION TO PROGRAMMING

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Clase 2: Tipos de Datos y Condiciones. Profesora de Cátedra: Jocelyn Simmonds

Nociones básicas sobre C++ Agustín J. González Patricio Olivares ELO-329

Tipos de datos y Operadores Básicos

PROGRAMACIÓN EN LENGUAJE C VARIABLES Y CONSTANTES

CAPITULO 4: ENTRADA Y SALIDA DE DATOS.

Tema 6: Memoria dinámica

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

PROGRAMACIÓN ORIENTADA A OBJETOS

Informática I (2014-2) Taller Lenguaje C Prof. Sebastián Isaza Departamento de Ingeniería Electrónica Facultad de Ingeniería Universidad de Antioquia

Curso de Java Introducción a la Programación II

Introducción a C++. Asignatura Estructuras de Datos Curso 2017/2018 ETSISI UPM

Cadenas de caracteres. 1. Definición 2. Funciones para manejo de cadenas

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

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Práctica Nº 4 Entrada / Salida

Algoritmos y Programación I

FLEX: A FAST LEXICAL ANALYZER GENERATOR

Introducción a C++ Índice

Tema 11: Manejo de cadenas en C

Programación I Teoría III.

Introducción a C++ y Code::Blocks

Examen escrito de Programación 1

Algunas ideas básicas de C++ Agustín J. González ELO-329

TEMA 4: Estructuras de Control

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Ficha de Aprendizaje N 13

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

Teoría 8: Segunda Parte. Estructuras de Datos y Funciones de Entrada en Lenguaje C

Cadenas de caracteres

Programación En Lenguaje C

Transcripción:

TEMA Estructuras y clases Dept. Ciencias de la Computación e I.A. Universidad de Granada

ÍNDICE El tipo de datos string Operaciones usuales con strings Funciones para manipulación de strings Introducción a las estructuras Ejercicios.

Tipo de Datos String El tipo de datos string es uno de los tipos más utilizados por los programadores. Un string es una secuencia de caracteres, como por ejemplo "Hola", "Quimica". En C++, los strings se encierran entre comillas, las cuales NO son parte del string. El tipo string es parte del estandar de C++ y para poder utilizarlo debemos incluir el fichero de cabeceras "string" mediante la directiva #include <cstring>

Declaración y Asignación de Variables de tipo string Para declarar variables de tipo string, haremos: string cadena1, cadena2; Para asignar valores a una variable, tenemos dos opciones: 1. cadena1 = "mi primer string"; 2. cin >> cadena1; Para mostrar el valor de un string haremos : cout << cadena1; Cuando se lee un string desde el teclado, únicamente una palabra se almacena en la variable. Si ante un: cin >> cadena1; el usuario ingresa Ciudad de Granada solamente "Ciudad" se almacenará en cadena1.

Si quisieramos almacenar mas de una palabra en una variable, debemos utilizar una "función" llamada getline. getline(cin, cadena1); Esta función, lee el valor de todas las teclas que se presionaron hasta el "Intro" y se almacenan en cadena1. Si la cadena ingresada es "Quimica Organica", entonces diremos que cadena1 tiene una longitud de 16 caracteres: las 15 letras + 1 espacio (también cuenta como un caracter). Para saber la longitud de un string, podemos utilizar la función length de la siguiente manera: int n = cadena1.length(); cout << cadena1.length(); Primero escribimos el nombre de la variable que nos interesa, luego un punto '.' y luego el nombre de la función.

Operaciones usuales con strings: Concatenación Dos operaciones relevantes para la manipulación de strings o cadenas de caracteres son: la concatenación y la extracción de subcadenas. La concatenación es "pegar" dos cadenas para obtener una tercera. Ejemplo: string cad1 = "Jorge "; string cad2 = "Borges"; string cad3 = cad1 + cad2; La variable cad3 contendrá "Jorge Borges".

Operaciones usuales con strings: Concatenación Además se verifica que: cad3.length() == cad1.length() + cad.length() También podemos concatenar cualquier número de variables de tipo string y combinar con literales: cad3 = cad1 + "Luis " + cad2; La variable cad3 contendrá "Jorge Luis Borges".

Extracción de subcadenas Dada una cadena S, podemos obtener subcadenas (substrings) utilizando la función substr(). Así, la función S.substr(inicio, longitud), nos permitirá obtener la subcadena de S, que comienza en la posición inicio y tiene longitud caracteres. Ejemplo: string cad1 = "Programa de Hoy"; string cad2 = cad1.substr(0,3); La variable cad2 contendrá la subcadena "Pro". Al igual que ocurre con los vectores, la primera posición comienza en cero. P r o g r a m a d e H o y 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Operaciones Válidas Comparaciones Dadas dos cadenas c1 y c2, podemos compararlas con los operadores de comparación usuales. Igualdad: c1 == c2 Menor que: c1 < c2 Mayor que: c2 > c1 Las comparaciones por menor/mayor utilizan el orden lexicográfico (similar al orden alfabético, pero incluyendo números y carácteres de control).

Strings como Vectores de Caracteres Podemos asumir que un string es un vector de caracteres. Así, el string S, definido como: string S = "HOLA"; se puede interpretar como un vector de 4 caracteres: 'H', 'O', 'L', 'A'. Los valores para variables de tipo char, se encierran entre comillas simples, mientras que los valores para strings, utilizan comillas dobles. Por lo tanto 'H' "H"

Strings como Vectores de Caracteres Viendo un string como un vector, podemos acceder directamente a cada letra, para observar o cambiar su valor: string S = "Hello"; S[3] = 'p'; S[4] = '!'; Ahora el contenido de s es la cadena "Help!"

Naturalmente, el mismo resultado podemos obtenerlo utilizando funciones para strings: S = S.substr(0,3) + "p!"; Tomamos la subcadena formada por las 3 primeras letras y luego concatenamos un valor literal de string. Veamos un ejemplo que permite contar la cantidad de letras 'a' o 'A' que aparecen en una palabra.

Ejemplo: contar cuántas 'a' y 'A' aparecen #include <iostream> #include <cstring> using namespace std; int main() {string cadena = Informatica de Anaya"; int cant_letras, cant_a, i; cant_letras = cadena.length(); cant_a = 0; for(i=0; i < cant_letras; i++) {if((cadena[i] == 'a') (cadena[i] == 'A')) cant_a = cant_a + 1; } cout << " El nro de letras A es : " << cant_a; }

Más funciones de manipulación de strings Si queremos analizar una cadena carácter a carácter, es mejor utilizar la notación de vectores. Algunas funciones de manipulación de caracteres que pueden resultar de utilidad son (h es una variable de tipo char): isspace(h) isdigit(h) isalpha(h) toupper(h) tolower(h) es h un espacio? es h un dígito? es h una letra? transforma h a mayúsculas transforma h a minúsculas Si queremos utilizar estas funciones debemos utilizar la siguiente directiva: #include <cctype>

Ejemplo: pasar una cadena a mayúsculas #include <iostream> #include <cstring> #include <cctype> using namespace std; int main() {string cadena = Informatica de Matematicas"; int i, cant_letras; cant_letras = cadena.length(); for(i=0; i < cant_letras; i++) { cadena[i] = toupper(cadena[i]); } cout << " La cadena nueva es: " << cadena; }

Ejercicios 1. Implemente un programa que indique si una palabra es un palíndrome (se lee igual de izquierda a derecha que de derecha a izquierda). 2. Implemente una función que reciba un string S y una letra x, y ponga en mayúsculas cada ocurrencia de x en S. (la función debe modificar la variable S).

3. Defina un programa que reciba un string y lo muestre en orden inverso 4. Defina una función que reciba un string S y devuelva el mismo string S al que se le han eliminado los espacios

Estructuras en C++ Una estructura es un tipo de dato definido por el usuario Se utiliza para agrupar un conjunto de valores relacionados Son un tipo compuesto de datos Contienen dos o mas miembros con tipo de dato pre-existente El tipo de dato de los miembros puede ser: Un tipo de dato básico (int, double, char, ) Vectores Otra estructura

Declaración Para declarar una estructura haremos lo siguiente struct tag_name { data_type1 member1; data_type2 member2; data_typen membern; }; struct es una palabra reservada NO OLVIDAR EL PUNTO Y COMA

Ejemplo Declarar una estructura que permita almacenar una fecha con día, mes y año struct fecha { int anio; int mes; int dia; };

Declaración y Uso de Variables Para declarar variables de tipo fecha, haremos structfechamifecha; Dependiendo del compilador, puede ser suficiente indicar: fecha mifecha; Para acceder a las componentes de la estructura fecha utilizaremos el operador punto (.) mifecha.dia = 12; mifecha.mes = 4; mifecha.anio = 2008;

Ejemplo Declarar una estructura que permita almacenar el nombre y precio por kg. de un producto: struct articulo { string nombre; double precio; };

Cont.. Declarar una variable de este tipo: articulo a1; Almacenar Doritos, 1.50 en dicha variables: a1.precio = 1.50; a1.nombre = Doritos ; Es una variable de tipo double Es una variable de tipo string Mostrar el contenido de la variable por pantalla: cout << Nombre: << a1.nombre << Precio: << a1.precio << endl;

Vectores de Estructuras Naturalmente, es posible declarar vectores de tipos definidos por el usuario. Por ejemplo, podemos declarar un vector de 40 productos que se venden en una tienda: articulo tienda[40]; Guardar Manzana y 1.29 en la primer componente del vector: tienda[0].precio = 1.29; tienda[0].nombre = Manzana ;

Un simulador de báscula registradora Queremos simular una báscula registradora usando la estructura articulo. Disponemos de un vector (una base de datos) articulo productos[n]; El usuario ingresará códigos de artículo (podemos considerar que el códigoirepresenta el i-esimo producto) y peso, y el programa mostrará el nombre del artículo, el precio x kilo y el precio de la compra. Al final, mostrará el total.

Paso de Estructuras como Parámetros a funciones Escribir una función que permita mostrar los elementos de una variable de tipo articulo. El prototipo de la función podría ser: void mostrar (articulo a); mientras que la implementación sería: void mostrar (articulo a) {cout << Nombre: << a.nombre << Precio: << a.precio << endl; }

Vectores de Estructuras como parámetros a Funciones Para pasar vectores de estructuras como parametros a funciones, procedemos de la manera que ya hemos visto: void mostrartodos (articulo P[], int n) {int k; for (k = 0; k < n; k++) {cout << Nombre: << P[k].nombre << Precio: << P[k].precio << endl; } }

Anidamiento de Estructuras Un miembro de una estructura puede ser otra estructura. Por ejemplo, una biblioteca es un conjunto de secciones y cada sección un conjunto de libros. struct Libro{ string titulo; string autor; }; struct Seccion{ Libro elemento[max]; int cantidad; }; struct Biblioteca { Seccion secciones[max]; }; Como cargo/accedo a un libro particular?

Ejercicio Para realizar operaciones con números complejos, podemos definir el siguiente tipo: struct Complex{ }; float real; float imaginaria; Escribe funciones que realicen las operaciones de suma, resta y multiplicación de números complejos definidos con el tipo anterior.