Cursosindustriales. Curso de C / C++ Por Deimos_hack

Documentos relacionados
Instituto Tecnológico de Celaya

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

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

Algoritmos y Programación I

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

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

Programación. Test Autoevaluación Tema 3

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Cadena de caracteres. 1. Fundamentos de cadenas y caracteres

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

Prof. Dr. Paul Bustamante

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

Práctica 1 de Excel (Curso )

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Elementos de un programa en C

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

PHP: Lenguaje de programación

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

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Tema 2. El lenguaje JAVA

Cursosindustriales.net Página 1

Programación en java. Estructuras algorítmicas

Tema 14: Arreglos estáticos en C

Apuntadores (Punteros)

DAVID DIAZ VALDIVIA INFORMATICA APLICADA I

Ficha de Aprendizaje N 13

FUNDAMENTOS DE INFORMÁTICA

FUNCIONES EN EXCEL III

MANUAL Y ACTIVIDADES. Edublogg.wordpress.com. Caeiro Fábregas - Pérez

Tipos de Datos Estructurados

Tema 3. Aplicaciones de Tipo Consola

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

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

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Programación en Visual Basic Ricardo Rodríguez García

Programación Estructurada

Tema: Entorno a C# y Estructuras Secuenciales.

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

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

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

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

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

Tema 8 Vectores y Matrices

Tipos de datos para Campos

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Tema 13: Apuntadores en C

Profesor(a): Ing. Miriam Cerón Brito

LENGUAJE. Tema 2 Elementos de un programa

INTRODUCCIÓN DE DATOS EN LA HOJA DE CÁLCULO

PERIODO 3 HOJA DE CÁLCULO CONCEPTOS INTERMEDIOS OPERACIONES CON CELDAS, FILAS Y COLUMNAS EN EXCEL SELECCIONAR COPIAR MOVER BORRAR

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)

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

Introducción a los Computadores

Arreglos. Otra definición seria;

Escuela Politécnica Superior de Elche

El lenguaje C. 1. Identificadores, constantes y variables

Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.

Arduino. Teclado matricial. Col1 Col2 Col3 Col4

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

PROGRAMACION / Clave: 11214

TIPOS DE CAMPOS Cada Sistema de Base de Datos posee tipos de campos que pueden ser similares o diferentes.

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Operadores. Javier Fernández Rivera -

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Arrays dinámicos y arrays estáticos con Visual Basic y.net. Redim, Redim Preserve, Erase. Ejemplos (CU00342A)

Qué son las fórmulas de Excel?

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

Manual configuración aplicaciones

INICIACIÓN A LA PROGRAMACIÓN EN C

Manual Word Macros y Elementos rápidos

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Computación II. Introducción a Visual Basic

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

PROPIEDADES DE LOS CAMPOS. Cada campo de una tabla dispone de una serie de características que proporcionan un control

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

TIPOS DE DATOS EN ABAP

Tema 10: Tipos de datos definidos por el usuario

UNIDAD 4. MODIFICAR TABLAS DE DATOS

Calificaciones de Moodle

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

EJERCICIO 26 DE EXCEL

Estructuras de Datos Declaraciones Tipos de Datos

Manual de turbo pascal

INSTRUMENTACIÓN N AVANZADA. ARRAYS EN LABVIEW Relacionando Datos Arrays y Clusters

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Sesión No. 10. Contextualización INFORMÁTICA 1. Nombre: Gestor de Base de Datos (Access)

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

4. Operadores Operador asignación

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

TEMA 8: Gestión dinámica de memoria

I. E. NORMAL SUPERIOR SANTIAGO DE CALI ASIGNATURA DE TECNOLOGÍA E INFORMÁTICA LIC. CARLOS ANDRÉS CASTAÑEDA HENAO GRADO 8º

TEMA 4. ESTRUCTURAS DE CONTROL

Operaciones básicas con hojas de cálculo

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Truco para encontrar y reemplazar líneas manuales por marcas de párrafo

REFERENCIA DEL LENGUAJE

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Transcripción:

MÓDULO 1. ARRAYS. Es muy habitual que nuestro programa acumule ciertos datos en diferentes variables. En cada variable se almacena un dato y un tipo de dato y ocupa un espacio en memoria. Cuando en un programa se usan muchas variables del mismo tipo, lo que se está haciendo en el sistema es ocupar un espacio en la memoria del ordenador que no favorece en la resolución ni en la ejecución de la aplicación. Por ese motivo se crearon unas variables especiales llamadas Arrays, que son variables que se pueden redimensionar en el espacio y permiten la acumulación de varias variables en un mismo espacio de memoria. Por ejemplo imagina el siguiente código de un programa en el cual, todas las variables que se utilizan son del mismo tipo de datos. Por cada variable que utilizamos en nuestro programa, se almacenará un valor que más tarde usaremos para hacer la media de los números captados:

En este programa se calcula la media de los valores que introduzcas. Por cada variable se guarda un valor en una zona de memoria. Dicho valor se establece en el valor introducido por el usuario cuando se pide un valor. Como puedes ver hasta que no asignamos un valor real a cada variable, en memoria se establece un valor fijo por cada variable. El lenguaje de programación C, establece para una variable del tipo Integer un valor de 2 bytes en memoria. Por cada variable se almacena en memoria 2 Bytes, por lo que si tenemos, como en el caso anterior, nueve variables, tenemos en el sistema 2 Bytes por nueve = 18 Bytes de memoria. Este valor se reduce según se introduzcan los datos en las variables, pero aún así se está usando un valor muy superior al permitido por lo que utilizamos los arrays para el mismo fin pero reducir el espacio de memoria. Existen varios tipos de arrays, pero los que mas vamos a usar son los arrays unidireccionales, lo que indica que solo tendrán una dimensión en vez de dos o más dimensiones.

ARRAY UNIDIMENSIONALES Cuando hago referencia a un array unidimensional me estoy refiriendo a un array que solo tiene una dimensión en el espacio. En un array unidimensional se puede acumular tantas variables como números de celdas tenga. Una celda de un array es la zona dentro del array en la que se va a guardar un tipo de dato en concreto. Al igual que las variables, un array está compuesto de un identificador y un tipo de datos para cada celda que forma el array. Como puedes ver se muestra una representación gráfica del array de C en el esquema: Como puedes ver el array está formado por celdas. Todos los arrays unidimensionales empiezan por el número o celda 0, y van en progresión hasta el número de celdas máximas establecidas. Como en el ejemplo anterior, tenemos una celda cero y sube, decimos que la colección de celdas está indexada.

Manipulación de los arrays unidimensionales. Para declarar un array unidimensional se ha de seguir la siguiente sintaxis: Tipo + Identificador[tamaño del array] En Tipo, el tipo de dato que va a contener el array. Recuerda que el tipo de dato del array será el mismo para cada celda del array. Es muy habitual cometer el error de usar un tipo de datos no declarado en alguna celda. El identificador es el nombre que se le va a dar al array y que usaremos para llamarlo. El tamaño es el número de celdas que tendrá el array. Un ejemplo de array es: Int matriz[5]; Este array reserva en memoria un array con cinco celdas numeradas desde el 0 hasta el 4 (recuerda que los arrays son Ítems en los cuales el valor cero se tiene en cuenta). Al usar arrays para declarar ciertas variables en un mismo espacio de memoria, estamos ahorrando una gran cantidad de espacio que anteriormente a esto utilizábamos. Para acceder a un array simplemente escribimos el nombre del identificador y el índice del array (índice significa el Ítem del array), de la forma: Int matriz[2]; Esta instrucción anterior nos permitirá usar el valor contenido en el Ítem del array en concreto, ya que estamos haciendo referencia a él. Por defecto, si no has introducido ningún valor, el array rellenará el valor del Ítems o índice con el máximo permitido para el índice y el tipo de variable.

Cuando compilamos y ejecutamos nos muestra que el valor del Item en cuestión vale 50. Puedes ver que para insertar un valor en el índice determinado simplemente hay que llamar al identificador y entre paréntesis hacer que ese identificador esté el índice que queremos dar un valor. A continuación asignamos un valor que deseemos darle. En el código anterior puedes ver que hemos dado un valor de 50 al segundo índice del array. También podemos realizar operaciones aritméticas básicas para asignar el valor del array en cualquier índice del mismo: El compilador de C, asignará el resultado de la operación al segundo índice del array (en el caso de 50). También podemos usar el valor de un índice de un array para asignarle a otro índice otro valor. Podemos operar el índice de un array como si de un número se tratase:

También podemos hacer que en cualquier índice del array se guarde el valor que introduzcamos por teclado, de la forma que vimos en capítulos anteriores: Inicialización del array. Hasta ahora hemos visto que el array que hemos utilizado no estaba inicializado, es decir, no había valores iniciales. Esos valores los hemos asignado más adelante. Pero se puede inicializar un array con unos valores establecidos siguiendo una serie de reglas: No se puede asignar datos diferentes de los que tratará el array. No se pueden insertar más datos que índices tenga el array. Los índices deberán ir entre apertura y cierre de llaves y separadas por comas. La sintaxis básica es la siguiente: Que equivale a: Int mi_array[5] = {10, 20, 30, 40, 50};

Int mi_array[5]; mi_array[0] = 10; mi_array[1] = 20; mi_array[2] = 30; mi_array[3] = 40; mi_array[4] = 50; Puedes ver que inicializar arrays es más limpio y rápido que declarar el valor uno a uno. Imagina que quieres declarar en vez de números, letras. Para ello, deberías de cambiar el tipo de dato Integer a Char y tener en cuenta que los datos del array, al ser caracteres, deben de estar separados por comas y que tienen que estar entre dobles comillas: Char mi_array[5] = {"a", "b", "c", "d", "e"}; Cuando llamemos a cualquier Ítem del array, se nos mostrará el carácter en cuestión. Supón que queremos un programa que nos muestre todos los índices de un array. Podemos declarar mediante la instrucción PRINTF cada entrada o utilizar los bucles y condicionales ya establecidos: Como puedes ver en éste caso no hemos inicializado el array, pero hemos indicado al bucle que nos muestre los valores que nos deja cada elemento del

array. Por tanto necesitamos dos variables, una para definir el array en sí y otra para tratar a los elementos del array dentro del bucle. Si inicializáramos el array, no se produciría ningún error, en vez de mostrar los valores que reserva el programa para cada elemento, mostraría el valor asignado en la inicialización de cada elemento. ARRAYS BIDIMENSIONALES. Un array bidimensional es un array que tiene dos dimensiones en el espacio, es decir un alto y un ancho. Un array bidimensional es como una tabla Excel; está compuesto por filas y columnas. Cuando declaramos un tipo de array bidimensional debemos de utilizar la siguiente sintaxis: Tipo + identificador [número de filas] [número de columnas]; En el ejemplo anterior, tenemos un array de 49 índices (7 por 7), y se declara de la siguiente manera: Int mi_array[7] [7]; En cada elemento se pueden almacenar datos del tipo declarado.

Manipulación de elementos bidimensionales. Para acceder a cualquier elemento de éste array, hay que hacer referencia a sus coordenadas, es decir, si por ejemplo queremos obtener el valor del elemento 35 (anterior dibujo), tendríamos que hacer referencia a identificador[6] [4], para obtener el valor almacenado por defecto. Esto es de la forma: Identificador [fila del índice] [columna del índice] También podemos inicializar el array bidimensional asignando los valores del conjunto, a un valor específico: Int mi_array [6] [4] = 81; Por lo que la posición [6] [4] tendrá ahora el valor 81. Para mostrar el valor en pantalla en nuestro programa, se realiza de la forma anterior pero llamando a los elementos en cuestión: Teniendo en cuenta que ahora el array es bidimensional (y por tanto deberás de utilizar dos incógnitas para el desarrollo del elemento del array), puedes proceder de la misma forma que en el anterior array unidimensional para realizar las operaciones aritméticas de asignación de elementos y tratar los arrays. Inicialización de arrays bidimensionales. Aunque la inicialización se procede de igual forma que los arrays unidimensionales, existe un problema añadido con los arrays bidimensionales, ya que tienen dos valores de referencia para cada elemento. Cuando inicializamos un array bidimensional, estamos haciendo referencia a su conjunto, pues lo que hacemos es declarar todos los elementos que contenga el array.

En el ejemplo: Int mi_array [5] [2]; Hemos declarado el array bidimensional y le hemos asignado un tamaño. Ese tamaño está definido por las referencias de alto y ancho del array y contendrá (5 por 2), 10 elementos en su interior. Cuando inicialicemos este array debemos de insertar los elementos que ocuparán el lugar en cada elemento de la forma: Int mi_array [5] [2] = {1,2,3,4,5,6,7,8,9,10}; Así pues en el elemento [1] [1] estará almacenado el valor 1; en el elemento [2] [2], el valor 2, etc., etc. Para mostrar los valores del array (igual que en el ejercicio anterior con un array unidimensional), tenemos que declarar dos variables para asignar el alto y el ancho del array bidimensional, tal como te muestro a continuación:

EJERCICIO CON ARRAY. Un señor nos contrata para que le hagamos una base de datos en la cual se guarden un número de expediente del alumno y las puntuaciones en las materias de matemáticas, física y electrónica que han obtenido. Además nos pide que le saquemos la media de las puntuaciones de cada alumno. Tienes que hacer un programa que permita introducir datos, guardarlos en un array bidimensional y después mostrar dichos datos en pantalla. NOTA: hay un máximo de alumnos (5 alumnos) y un máximo de notas (5 áreas). El programa tendrá una estructura similar a esta: 1er Alumno 2º Alumno 3er Alumno 4º Alumno 5º Alumno Nº Expediente 001 002 003 004 005 Matemáticas 7 5 9 4 6 Física 5 9 3 2 7 Electrónica 8 9 10 10 8 Media 6 7 7 5 7 #include<stdio.h> int main (void) { //declaración de variables a utilizar int tabla [5][6]; //declaro un array bidimensional. int alumno; int nota; int suma; int media_mayor; int mejor_exp; //Empiezo a generar la estructura para los alumnos (preguntará 5 veces) for (alumno=0; alumno<5; alumno++) { printf("\nescriba el numero de expediente: "); scanf("%d", &tabla[0][alumno]); //Inserta el contenido dentro del

array en la //zona correspondiente. //Empiezo a generar la estructura para insertar la nota de los alumnos. for (nota=1; nota<=3; nota++) { printf("\nescriba la nota %d: ", nota); scanf("%d", &tabla[nota][alumno]); } } //Inicializo la variable suma de las notas de cada asignatura a cero para hace la media for (alumno=0; alumno<=5; alumno++) { suma=0; for (nota=1; nota <=3; nota++) { suma = suma + tabla[nota][alumno]; } tabla[4][alumno] = suma / 3; } media_mayor=0; for (alumno=0; alumno<=5; alumno++) { if (tabla[4][alumno] > media_mayor) { media_mayor = tabla[4][alumno]; mejor_exp = tabla[0][alumno]; } } //Expongo los resultados printf("\n\nla mejor media:"); printf("\n\texpediente: %d", mejor_exp); printf("\n\tnota media: %d", media_mayor); //Se hace una pausa hasta que se pulse el INTRO. fflush(stdin); getchar(); }

Puedes descargarte el ejecutable desde el menú Descargas de Cursosindustriales.net. } En C se pueden guardar variables alfanuméricas del tipo Char, pero la estructura del lenguaje las guarda en un array. En todo lenguaje de programación es necesario el uso de cadenas alfanuméricas, por lo tanto en éste capítulo nos centraremos en éste tipo de datos Char específicos que se guardan en un array. DECLARAR UNA CADENA. En C declarar una cadena alfanumérica (a partir de ahora una cadena), se procede de la misma forma que a la hora de guardar un array unidimensional de caracteres, en el cual el tamaño del array se corresponde al número máximo de caracteres que contenga la cadena almacenada en el array. Por tanto, cada carácter de la cadena quedará acumulado en una celda del array. Para declarar un array de cadena se procede al igual que para declarar un array normal, pero se utiliza el tipo correspondiente: Char cadena[5]; Según el anterior código hemos declarado un array para que acumule 5 caracteres alfanuméricos. Por tanto podemos acumular en este array la palabra "AVIÓN", "ÁRBOL", "TAZAS", "PUTÓN", etc., etc. Pero C, requiere que se cierre la cadena con un carácter específico para poder manipularla, ya que sino no tratará la cadena correctamente. Ese carácter especial es el \0 y claro, hay que declararlo en el interior del array. Por tanto en realidad el array anterior permitirá acumular cuatro caracteres y el carácter de cierre \0, lo que suma un total de 5 espacios en el array. Así que cuando quieras almacenar en un array una palabra específica, debes de tener el número de caracteres de esa palabra y añadirle un espacio más para el cierre.

Por ejemplo imagina que quieres acumular la palabra "TRANSISTOR" de 10 palabras. Deberás de declarar la variable para acumular 11 espacios: Char cadena[11]; Memoria virtual. Supón que establecemos el ancho de una cadena con un array de 10 caracteres como el anterior. Declararemos el array con 11 espacios tal cual se muestra a continuación: T R A N S I S T O R \0 Ahora supón que en un momento del programa cambia el valor acumulado de la variable, a un valor de mayores números de caracteres. Por ejemplo imagina que la variable inicial cambia a "TRANSISTORIZADO" de 15 palabras. Como hemos definido un espacio en concreto el array de auto dimensiona pero solo hasta el valor máximo de la forma: T R A N S I S T O R I Por lo que desplaza el comando de cierre del array de Char hacia la derecha. Pero, de verdad el nuevo valor del array es "TRANSISTORI"? Qué ha pasado con "ZADO" y el signo de cierre? La respuesta es fácil; se ha guardado en la memoria temporal del ordenador. Ten en cuenta que nosotros al declarar el array estamos reservando en memoria el número que pongamos entre corchetes. Si se redimensiona el array, C reorganiza la cadena desplazando los caracteres de más hacia la derecha guardándolos en la memoria virtual del ordenador, tal como se muestra a continuación: T R A N S I S T O R I Z A D O \0 Por lo que el array está compuesto por la parte reservada en memoria y la parte que se almacena temporalmente en otras zonas de memoria. Ten en cuenta que hemos indicado que el lenguaje C es un lenguaje que requiere las instrucciones adecuadas para su funcionamiento, por lo cual aunque C redimensiona automáticamente el array, se produciría un error en el programa al usar el array específico. Por lo que nos interesa declarar los arrays de Char con el número específicos de caracteres, y para que no tengamos que estar contando cada palabra se suele declarar los arrays con un número que nos de seguridad por si luego hay que modificar al mismo, como por ejemplo:

Char cadena [100]; FUNCIONES DE LECTURA. Ya hemos visto en capítulos anteriores que existen varias funciones para coger el valor de un carácter alfanumérico. C utiliza continuamente estas funciones para guardar en variables cadenas enteras escritas por el teclado del ordenador. Scanf. Recuerda que la sintaxis básica de la función para guardar o asignar a un array una cadena escrita mediante teclado es: scanf("%s", &identificador); En donde %s es un comando específico para leer las cadenas del teclado y la palabra identificador es el nombre del array del tipo Char que almacenará la cadena (si fuese a acumular solo números sería el nombre de la variable int). Observa cómo te pido que insertes una palabra de 10 caracteres ya que he declarado un array Char con 11 espacios para que el último carácter que inserta C sea el de cierre. Esta función solo acumula la información en memoria del ordenador. Para visualizarla deberías de utilizar la instrucción PRINTF en otro lugar. Ésta función tiene un problema principal y es que no está diseñada para tratar espacios, por lo que solo se utiliza para guardar palabras.

Supón que quieres acumular la frase "MI COCHE", que tiene 8 espacios. La representación de la memoria del ordenador sería: M I Es decir que SCANF guarda la primera parte y el primer espacio que se encuentra y deja vacío el resto del array. Gets. La librería de Stdio tiene otra función para manipular los caracteres del teclado y que además evita el anterior problema que ocasiona la función Scanf. Al igual que la anterior función, sirve para guardar cadenas pero ahora tiene en cuenta todos los espacios de la frase. Su sintaxis general es: gets(identificador); Siendo identificador el array del tipo Char que almacenará la cadena de texto procedente del teclado. Al pulsar Intro en memoria se guarda la cadena completa con los espacios. La representación visual es: M I C O C H E Para mostrar ambas cadenas usamos la instrucción PRINTF y el comando %s tal como se muestra a continuación:

Hay que decir que la función Printf no muestra el carácter de cierre \0, ya que es un carácter reservado del lenguaje de programación C. Eso sí, interpreta la cadena hasta que encuentra el carácter en concreto y la devuelve gracias a la instrucción %s. Las funciones de FFLUSH (STDIN) y GETCHAR () recuerda que servían para establecer una pausa y que no se cerrase el programa. FUNCIONES DE CADENAS. La biblioteca STRING que pertenece a C y C++, proporciona bastantes funciones para manipular las cadenas y trabajar con ellas. A continuación veremos algunas funciones para el trabajo de cadenas. Strcpy. Esta función sirve para copiar o asignar contenido a las cadenas. En el antiguo Basic, podíamos declarar un array y después asgnarle una cadena como por ejemplo: Char cadena[11]; cadena="mi coche"; NOTA: En el antiguo Basic no se terminaba la frase con punto y coma. En C, esa forma de proceder con cadenas no es correcta por lo que se usa ésta función Strcpy que entre otras cosas nos permite copiar una cadena en un array. La sintaxis es la siguiente: strcpy (destino, origen)

En donde destino es el identificador declarado anteriormente y origen es una cadena o un identificador de un array con una cadena. La función strcpy copia la cadena de origen en el array y añade el carácter \0 al final del mismo después de realizar la copia. Si previamente el array en el que se va a copiar la cadena tiene datos, se actualizarán y se borrarán los datos antiguos. Por supuesto hay que tener en cuenta el detalle de que el array de destino tenga espacio suficiente para acumular la cadena de origen. Para apreciar bien la función de ésta instrucción supón que quieres copiar el valor de una variable en otra: Observa que establezco el array cadena y después le asigno un valor que introduzca el usuario mediante la función Gets.

A continuación, con la función Strcpy copio el contenido de ésta última y se lo copio al segundo array copia. Strcat. Esta función sirve para concatenar dos cadenas en una. Concatenar significa realizar la unión de ambas cadenas para formar una cadena mayor, eso sí, deberás de reservar el espacio suficiente para la mezcla de ambas cadenas. La sintaxis es la siguiente: strcat (destino, origen) Al igual que en la anterior función, el origen es el identificador o array de una cadena, y destino el identificador de un array con otra cadena. La cadena de origen se añade a su destino a partir del carácter \0. Al resultado de la concatenación, muestra una unión de los signos y símbolos uno después de otro tal cual se muestra en la imagen. Como puedes ver se ha utilizado la función de strcpy, para pegar contendido en las variables. Después se utiliza la función strcat para establecer la concatenación, como puedes ver en pantalla se muestra mediante la función printf el valor de la misma. La concatenación realiza la unión de la segunda cadena en la primera por lo que deberás de dejar los espacios convenientes en la primera cadena para que se obtenga un resultado coherente.

Strlen. Esta función sirve para establecer el ancho de la cadena. Devuelve un Int, por lo que es necesario declarar una variable de éste tipo para que se pueda mostrar la longitud de la cadena. Como ves asigno el resultado de una variable a la otra variable para usarla después al final del programa. Esta función cuenta los espacios también. Strcmp Esta función se utiliza para comparar una cadena con otra. Esto implica una variable Bolean ya que se utiliza dicha función para establecer condicionales. Esta función comprueba si una cadena es diferente a otra según el código ASCII de que esté compuesto. Por ejemplo si dos cadenas, una con AA y otra con AB, se comparan mediante la función strcmp, resultará que la primera cadena es menor que la segunda cadena, ya que la primera cadena es (de acuerdo a valores ASCII), 65-65, y la segunda es 65-66, por lo que la primera cadena es menor que la segunda. Se suele ejecutar dicha función junto a condicionales que establezcan una condición:

Puedes ver como establecemos las cadenas mediante la función Gets y después como se realiza la comparación de sus valores dentro del condicional. En el ejemplo se ha puesto un condicional simple haciendo que si la primera cadena es de mayor valor que la segunda salga un mensaje; por defecto sale otro. Ten en cuenta que si te equivocas y pones mayor número de elementos que permite el array de la variable Char, no se ejecutará correctamente el programa. Supón que escogemos una primera cadena con 11 letras (en lugar de 9 letras): Al ejecutarlo nos muestra un error de lectura y nos devuelve el compilador un FALSE. Eso se debe a que la variable tenía un espacio para nueve caracteres y el operador de cierre especial, son diez. Al pasarse, la variable se redimensiona y el compilador no tiene en cuenta la nueva estructura de la cadena primera por lo que considera que la segunda cadena es de mayor tamaño. Para evitar ese error habría que copiar la primera cadena y utilizar una función para tratar la cadena.

Strstr. Esta función sirve para realizar la búsqueda de una cadena dentro de otra. La sintaxis general es: strstr (cadena1, cadena2); En donde la cadena1 es la cadena contenedora en la cual vamos a buscar la cadena2. Si no encuentra la cadena2 dentro de la primera, C devolverá un NULL. Si encuentra la cadena, mueve el puntero hacia dicha cadena. También se suele utilizar con condicionales: Observa que en el condicional hemos establecido la cadena de búsqueda dentro del valor de la primera cadena. En esta función no importa que el valor de la cadena sea mayor que el valor establecido en la longitud del array. Strlwr. Esta función sirve para convertir los caracteres en minúsculas. La sintaxis de esta función es: strlwr (cadena);

Strupr. Esta función es la inversa de la anterior, convierte un texto en minúscula en mayúscula. Strtok. Esta función permite coger fragmentos de una cadena delimitados por una marca o carácter específico. Su sintaxis general es: strtok (cadena, marca); Siendo la cadena, el identificador de la variable específica y la marca el carácter específico al que retorno el puntero del programa para seguir la cadena desde éste puntero. Por tanto se puede ordenar la cadena de acuerdo a un carácter específico:

El identificador *p, establece a la longitud de la cadena Char sin número definido. Cuando asignamos la variable p a la función strtok, debemos de establecer el texto y el símbolo que separará a la anterior. Como puedes ver en el programa se establece una coma (, ), como carácter específico. En el condicional, se establece que por cada símbolo se cree una lista en un salto de línea. El bucle establece la repetición del anterior condicional mientras existan cadenas y símbolos específicos para ello. Atoi. A veces en las cadenas de texto se incluyen números que es necesario tratar y manipular. Con esta función se consigue tratar los números en formato numérico. La sintaxis básica es: Atoi (cadena); Como devuelve un int, debes de crear una variable de ese tipo. Además esta función utiliza la librería <strlib.h> por lo que lo tendrás que incluir en el fichero de inicio en cobertura del preprocesador.

Observa que primero se copia en la cadena el número en cuestión y después se utiliza la función para coger el valor que está entre comillas dobles. Ahora después de esta función podemos coger el valor de dicho valor para usarlo, como puedes ver en la siguiente instrucción en la que multiplicamos el valor por 10. En el siguiente capítulo veremos las estructuras del lenguaje de programación C. Gracias por visitar cursosindustriales.net.