48
TEMAS DE EXPOSICION Centro Universitario de la Costa Ingeniería en Computación Programación Alumna: Yuliana Lizbeth Ruiz Cardenas

TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

TEMAS DE EXPOSICION Centro Universitario de la Costa

Ingeniería en Computación

Programación

Alumna:

Yuliana Lizbeth Ruiz Cardenas

Page 2: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 1 | 47

Índice

Lenguaje de programación C .................................................................................. 3

Estructura general básica de un programa en Lenguaje C ..................................... 4

Como insertar comentarios en Lenguaje C ............................................................. 5

Palabras reservadas predefinidas en el Lenguaje C ............................................... 6

Identificadores para variables, constantes y funciones en C ................................... 7

Tipos de Datos en Lenguaje C: Char, Int, Float y Double ....................................... 8

Calificadores de Datos en C: signed, unsigned, short y long ................................ 10

Variables en Lenguaje C - Declaración y ejemplos ............................................... 11

Constantes Lenguaje en C - Directiva #define y ejemplo ...................................... 12

Secuencias de escape en C - Saltos de línea ....................................................... 13

Inclusión de archivos de cabecera - Directiva #include ......................................... 14

Operadores Aritméticos básicos en C - Tipos y ejemplos ..................................... 15

Printf y Scanf - Funciones para imprimir y capturar datos ..................................... 17

Operadores relacionales o de comparación <, >, ==, !=........................................ 19

Operadores condicionales en C - if, else, elseif y switch ....................................... 20

Operadores lógicos y tabla de verdad - AND &&, OR ||, Not ! ............................... 22

Bucles ejemplos y sintaxis - Ciclos While, Do While y For .................................... 23

Variables Locales y Globales en C - Diferencias y ejemplo .................................. 25

Funciones en Lenguaje C - Declaración, sintaxis y ejemplos ............................... 26

Recursividad en el lenguaje C ............................................................................... 28

Arrays, arreglos, cadenas o vectores en C - Ejemplos y uso ................................ 29

Matrices en C - Bidimensional, tridimensional con ejemplo................................... 31

Algoritmos de ordenación y búsqueda .................................................................. 32

Estructuras y Uniones en C - Arrays de estructuras .............................................. 34

Punteros en Lenguaje C - ¿Qué son y cómo usarlos? .......................................... 36

Asignación dinámica de memoria .......................................................................... 37

Cadenas ................................................................................................................ 39

Ficheros - Abrir, cerrar, leer y agregar archivos de texto ...................................... 40

Organización de datos en un archivo .................................................................... 43

Tipos de datos TAD/objetos .................................................................................. 44

Page 3: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 2 | 47

Listas enlazadas .................................................................................................... 45

Asignación dinámica de memoria Malloc. Pilas, colas y listas .............................. 47

Page 4: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 3 | 47

Lenguaje de programación C

Es un Lenguaje de propósito general, desarrollado en 1972 por Dennis Ritchie en

los Laboratorios Bell, es considerado como un lenguaje de alto nivel. La primera

implementación de este la realizó sobre un computador DEC PDP-11 con sistema

operativo UNIX. Podemos decir que el lenguaje C es un lenguaje de nivel medio, ya

que combina elementos de lenguaje de alto nivel con la funcionalidad del lenguaje

ensamblador, esto lo hace un lenguaje potente, con un campo de aplicación

ilimitado y, sobre todo, se aprende rápidamente.

El lenguaje de programación C es un lenguaje de alto nivel que se puede

caracterizar por los siguientes puntos:

• Es de propósito general, esto significa que puede ser usado tanto para el

desarrollo de sistemas operativos como para programas científicos, programas

de aplicación o programas de educación y juegos.

• Posee una alta transportabilidad ya que los programas escritos en C pueden ser

llevados de un tipo de ordenador a otro y funcionarán. Los cambios que hay que

realizar son mínimos.

• Como solo tiene 32 palabras reservadas se dice que es compacto.

• Los compiladores generan ejecutables más pequeños porque por norma

general, los programas escritos en lenguaje C poseen menos líneas de código

que otros lenguajes de programación de alto nivel.

• El lenguaje de programación C es un lenguaje imperativo o procedimental. Esto

significa que indica secuencias de acciones con el fin de llegar a un objetivo.

Generalmente los lenguajes imperativos o procedimentales contienen una parte

declarativa. El lenguaje C da órdenes a la máquina.

• Es un lenguaje estructurado ya que los programas escritos con él se pueden

organizar en módulos.

Page 5: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 4 | 47

Estructura general básica de un programa en Lenguaje C

Un programa escrito en el lenguaje de programación C está formado siempre por

una o más funciones, una de las cuales, obligatoriamente debe ser la que

representa al programa principal y se designa la palabra reservada main, la cual es

la primera que se ejecuta al comenzar el programa, llamándose desde ella al resto

de funciones que compongan nuestro programa. El nombre de una función C

siempre va seguida de paréntesis, tanto si tiene argumentos como si no y debe ir

acompañada de dos llaves ({}) que determinan el principio y el fin del programa.

• La primera línea indica que se tengan en cuenta las funciones y tipos definidos

en la biblioteca stdio (standard input/output).

• En la función main se incluye una primera sentencia que llama a la función

printf. Ésta toma como argumento (encerrado entre paréntesis) una cadena de

caracteres limitados por dobles comillas " " y la imprime en la salida habitual. El

símbolo \n indica un cambio de línea.

• La segunda sentencia, return, termina el programa y devuelve un valor (cero) al

sistema operativo. Si bien no es obligatorio terminar el programa con un return,

es conveniente indicarle a quien lo haya invocado, sea el Sistema Operativo o

algún otro programa, si la finalización ha tenido éxito o no.

• Cada sentencia de programa queda finalizada por el terminador ";", que indica

al compilador el fin de esta. Esto es necesario ya que sentencias complejas

pueden llegar a tener más de un renglón, y habrá que avisar al compilador

donde terminan.

Page 6: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 5 | 47

Como insertar comentarios en Lenguaje C

Un comentario sirve para generar anotaciones al programador en el código fuente

del programa, así como también para desactivar una o más instrucciones. A la hora

de programar es conveniente añadir comentarios para poder saber que función tiene

cada parte del código, en caso de que no lo utilicemos durante algún tiempo. La

inclusión de comentarios en un programa es una saludable práctica, como lo

reconocerá cualquiera que haya tratado de utilizar el código fuente hecho por otro

programador. Para el compilador, los comentarios son inexistentes, por lo que no

generan líneas de código, permitiendo abundar en ellos tanto como se desee.

Existen distintas posibilidades para insertar comentarios en el código C como son:

• Comentarios en bloque: Su finalidad es servir de guía o información para una

mejor comprensión del programa. El bloque de comentario empieza con el

símbolo /* y termina obligatoriamente con el símbolo */. Un bloque puede tener

la extensión que se desee: una línea, dos líneas, cinco, diez, …, n líneas.

• Comentarios en línea: El comentario puede encontrarse en una línea

independiente o bien en una línea después del código existente en la línea. El

comentario empieza con el símbolo // y termina cuando termina la línea, sin que

exista un símbolo específico de terminación.

En un mismo programa pueden aparecer tantos comentarios en bloque o en línea

como se estimen oportunos, si bien lo más habitual es situar los comentarios en

bloque al comienzo de los ficheros o antes de la declaración de una función para

resaltar los aspectos más importantes, mientras que los comentarios en línea suelen

situarse en puntos intermedios del código informando sobre distintas cuestiones de

interés o que merezcan la pena ser aclaradas.

Page 7: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 6 | 47

Palabras reservadas predefinidas en el Lenguaje C

En el lenguaje C, como en cualquier otro lenguaje, existen una serie de palabras

clave que el usuario no puede utilizar como identificadores (nombres de variables

y/o de funciones). Estas palabras sirven para indicar al computador que realice una

tarea muy determinada (desde evaluar una comparación, hasta definir el tipo de una

variable) y tienen un especial significado para el compilador. Todas las palabras

reservadas son con minúsculas (este lenguaje es sensitivo al uso de mayúsculas y

minúsculas).

El C es un lenguaje muy conciso, con muchas menos palabras clave que otros

lenguajes. A continuación, se presenta una tabla con las 32 palabras clave del ANSI

C (algunos compiladores añaden otras palabras clave, propias de cada uno de ellos,

es importante evitarlas como identificadores):

auto break case char const continue default do

double else enum extern float for goto if

int long register return short signed sizeof static

struct switch typedef union insigned void volatile while

Page 8: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 7 | 47

Identificadores para variables, constantes y funciones en

C

Es necesario resaltar que C es un lenguaje sensible al contexto por lo que diferencia

entre mayúsculas y minúsculas, y, por tanto, diferencia entre una palabra escrita

total o parcialmente en mayúsculas y otra escrita completamente en minúsculas.

En el lenguaje C, un identificador es el nombre que damos a las variables y

funciones que no sea una palabra reservada que comience por una letra o por un

subrayado, pudiendo contener en su interior letras, números y subrayados. Por el

contrario, no acepta los acentos ni la ñ/Ñ y el primer carácter de un identificador no

puede ser un número. La longitud máxima de un identificador depende del

compilador que se esté usando, pero, generalmente, suelen ser de 32 caracteres,

ignorándose todos aquellos caracteres que compongan el identificador y

sobrepasen la longitud máxima.

A continuación, vemos algunos ejemplos de identificadores válidos y no válidos:

Para crear un identificador, especifíquelo en la declaración de una variable, un tipo

o una función. Una vez declarado, puede utilizar el identificador en instrucciones de

programa posteriores para hacer referencia al valor asociado.

En este ejemplo, result es un identificador para una variable de tipo entero:

Page 9: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 8 | 47

Tipos de Datos en Lenguaje C: Char, Int, Float y Double

El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su

ocupación en la memoria RAM y las operaciones que pueden realizarse con ella:

Para hacer uso de variables debemos declararlas previamente con algún tipo de

dato. Para definir variables en C se antepone la palabra reservada al identificador

de la variable. Se pueden definir las variables sin asignarles ningún valor. Si

tenemos varios datos que son del mismo tipo, se pueden definir todas en la misma

línea de código escribiendo una sola vez el tipo de dato, separando el nombre de

las variables por “,”. Una vez que se haya acabado de definir variables, se cierra la

línea de código con “;”.

En C existen básicamente cuatro tipos de datos:

• Tipo entero: representa números enteros con o sin signo, que estarán

compuestos por los dígitos del 0 al 9. Por ejemplo: 0, 23, -176, -1, etc. Para

definir datos enteros se antepone la palabra reservada int al identificador de la

variable:

• Tipo real: se emplea para representar números reales (con decimales). Se

definen con “float” o “double”. La diferencia entre ambas es la precisión que

ofrece su representación interna. Hay un número infinito de reales, pero se

representan con un número finito de bits. A mayor número de bits, mayor

número de reales se representan, y, por tanto, mayor precisión. Los reales

definidos con “double” tienen un tamaño doble a los definidos con “float”. Para

Page 10: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 9 | 47

definir datos reales se antepone la palabra reservada float o double al

identificador de la variable:

• Tipo carácter: este tipo de datos se emplea para representar un carácter

perteneciente a un determinado código utilizado por el ordenador (normalmente

el código ASCII). Para representar este tipo de dato se antepone la palabra

reservada char al identificador de la variable:

Un constante tipo char se representa como un solo carácter encerrado entre

comillas simples:

Page 11: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 10 | 47

Calificadores de Datos en C: signed, unsigned, short y

long

Los calificadores de tipo son las palabras clave que describen semánticas

adicionales sobre un tipo. Son una parte integral de las firmas de tipo. Los

calificadores de tipo tienen la misión de modificar el rango de valores de un

determinado tipo de variable. Estos calificadores son cuatro:

• Signed: le indica a la variable que va a llevar signo. Es el utilizado por defecto.

• Unsigned: le indica a la variable que no va a llevar signo (sin valores negativos).

• Short: rango de valores en formato corto (limitado). Es el utilizado por defecto.

• Long: rango de valores en formato largo (ampliado).

Page 12: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 11 | 47

Variables en Lenguaje C - Declaración y ejemplos

Una variable en C es un espacio que reservamos en memoria para poder guardar

información, se utilizan a menudo para guardar números, caracteres, entre otros

tipos de datos, no solo en C si no en cualquier lenguaje de programación, y dicha

información se representa por medio de un tipo de dato especifico, que determina

como la interpretará el lenguaje en sí. Su contenido podrá ser modificado a lo largo

del programa. Una variable sólo puede pertenecer a un tipo de dato. Para poder

utilizar una variable, primero tiene que ser declarada:

Es posible inicializar y declarar más de una variable del mismo tipo en la misma

sentencia:

¿Dónde se declaran las variables?

Las variables pueden ser de dos tipos según el lugar en que las declaremos:

• La variable global se declara antes de la main(). Puede ser utilizada en cualquier

parte del programa y se destruye al finalizar éste.

• La variable local se declara después de la main(), en la función en que vaya a

ser utilizada. Sólo existe dentro de la función en que se declara y se destruye al

finalizar dicha función

Ejemplo:

Page 13: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 12 | 47

Constantes Lenguaje en C - Directiva #define y ejemplo

Hasta ahora habíamos visto cómo definir constantes con una sintaxis del tipo const

int nombre = 10 pero existe otra manera de crear constantes en C basada en la

directiva #define, esto significa que esa constante tendrá el mismo valor a lo largo

de todo el programa y no puede ser modificado de ninguna manera. En

programación es una buena práctica escribir los identificadores de las constantes

en mayúsculas, de esta forma es más fácil localizarlos en el código de un programa.

Para indicar al compilador que se trata de una constante, usaremos la directiva

#define:

Nótese que, después de la declaración de una constante simbólica no se escribe un

carácter punto y coma (;), cosa que sí se debe hacer al declarar una variable.

Ejemplo:

Page 14: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 13 | 47

Secuencias de escape en C - Saltos de línea

Cuando estamos escribiendo un programa puede que necesitemos representar la

información de una forma especial, con ciertas alineaciones, tabulaciones o estilos,

en C es posible realizar estas tareas mediante las llamadas secuencias de escape.

Las combinaciones de caracteres que consisten en una barra invertida (\) seguida

de una letra o una combinación de dígitos se denominan "secuencias de escape".

Hay 33 símbolos que no se visualizan en la pantalla, esto es debido a que son del

tipo No Imprimibles y su papel es el de realizar una acción concreta o insertar un

carácter que no es posible visualizarlo. En C, todas las secuencias de escape

constan de dos o más caracteres, el primero de los cuales es la barra invertida

(\). Los caracteres restantes determinan la interpretación de la secuencia de

escape.

Tabla de las secuencias de escape

más significativas

Ejemplo

Page 15: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 14 | 47

Inclusión de archivos de cabecera - Directiva #include

En el lenguaje C es posible utilizar funciones que no estén incluidas en el propio

programa. Para ello utilizamos la directiva #include, que nos permite añadir librerías

o funciones que se encuentran en otros ficheros a nuestro programa.

Se denomina header file, al español fichero/archivo (de) cabecera, o include file, al

español fichero de inclusión al archivo, normalmente en forma de código fuente, que

el compilador incluye de forma automática al procesar algún otro archivo fuente. Un

header file contiene, normalmente, una declaración directa de clases, subrutinas,

variables, u otros identificadores. Para incluir un archivo de cabecera se debe usar

#Include.

Típicamente los programadores especifican la inclusión de los header files por

medio de pragmas al comienzo (head o cabecera) de otro archivo fuente, aquellos

que desean declarar identificadores estándares en más de un archivo fuente pueden

colocar esos identificadores en un único header file, que se incluirá cuando el código

que contiene sea requerido por otros archivos.

Para indicar al compilador que vamos a incluir ficheros externos podemos hacerlo

de dos maneras (siempre antes de las declaraciones):

1. Indicándole al compilador la ruta donde se encuentra el fichero.

2. Indicando que se encuentran en el directorio por defecto del compilador.

Page 16: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 15 | 47

Operadores Aritméticos básicos en C - Tipos y ejemplos

Operadores aritméticos

Existen dos tipos de operadores aritméticos:

• Operadores binarios:

Son aquellos operadores aritméticos que permiten realizar cálculos con valores

numéricos para obtener un resultado. Los más habituales son la suma, resta,

multiplicación y división, además disponemos de un operador adicional al que

denominamos operador módulo (%), que nos permite obtener el resto de una

división entre enteros.

La sintaxis es la siguiente: <variable1><operador><variable2>

• Operadores unarios:

Los operadores aritméticos de incremento y decremento son los únicos

operadores, además de los que involucran asignación, que tienen efectos

colaterales e incrementan o decrementan la variable en una unidad.

La sintaxis es la siguiente: <variable><operador> o <operador><variable>

Operadores de asignación

Un operador de asignación altera el valor de un objeto sin alterar su tipo. El operador

usual de asignación (=), copia el valor del operando de la derecha en el operando

de la izquierda, aplicando las conversiones de tipo usuales cuando es necesario.

La mayoría de los operadores aritméticos binarios explicados en el capítulo anterior

tienen su correspondiente operador de asignación:

Page 17: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 16 | 47

Jerarquía de operaciones

La jerarquía de operadores determina el orden en el que se resuelven las

expresiones cuando se involucran operaciones aritméticas como la suma, resta,

multiplicación, división, potencia, raíz y módulo de la división. Si en una operación

encontramos signos del mismo nivel de precedencia, dicha operación se realiza de

izquierda a derecha. Este orden es el que permite que una expresión aritmética

cualquiera siempre tenga la misma interpretación ya sea resolviéndola en papel, en

calculadora o en el computador.

Page 18: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 17 | 47

Printf y Scanf - Funciones para imprimir y capturar datos

Salida de datos (Sentencia / función Printf)

Una funcionalidad básica del lenguaje en C es la de mostrar mensajes por pantalla.

La salida de datos por pantalla más básica la conseguimos a través de la función

printf, esta nos permitirá mostrar mensajes al usuario del programa, visualizar el

resultado de cálculos, etc. Se puede introducir la cantidad de texto y la cantidad de

variables a mostrar por pantalla que se desee. La sintaxis básica para esta función

es la siguiente: printf(control, arg1, arg2...);

También podemos introducir una cadena de texto (sin necesidad de argumentos),

o combinar ambas posibilidades, así como secuencias de escape. En el caso de

que utilicemos argumentos deberemos indicar en la cadena de control tantos

modificadores como argumentos vayamos a presentar.

El modificador está compuesto por el carácter % seguido por un carácter de

conversión, que indica de qué tipo de dato se trata.

Page 19: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 18 | 47

Entrada de datos (Sentencia / función Scanf)

Mediante la función scanf podemos introducir cualquier combinación de valores

numéricos, caracteres sueltos y cadenas de caracteres a través del teclado. En

definitiva, scanf lee datos en distintos formatos de la entrada estándar. La función

devolverá el número de datos que se han introducido correctamente. La sintaxis

básica es la siguiente: scanf("%Modificador", &nombreVariable);

La principal característica es que necesita saber la posición de la memoria del

ordenador en que se encuentra la variable para poder almacenar la información

obtenida. Para indicarle esta posición utilizaremos el símbolo (&), que colocaremos

delante del nombre de cada variable. (Esto no será necesario en los arrays).

Page 20: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 19 | 47

Operadores relacionales o de comparación <, >, ==, !=

Se llaman operadores relacionales o de comparación a aquellos que permiten

comprobar si una relación especifica entre dos valores es verdadera. El resultado

de una expresión relacional es 1 si la relación probada es true y 0 si es false.

Este resultado se usa a menudo para afectar el flujo de control (a través

de if, while, for), pero también se puede almacenar en variables.

Los operadores de comparación o relacionales básicos en C son:

Si hay más de un operador se evalúan de izquierda a derecha. Además, los

operadores == y != están por debajo del resto en cuanto al orden de precedencia.

Page 21: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 20 | 47

Operadores condicionales en C - if, else, elseif y switch

El lenguaje C dispone de varias estructuras de control para modificar el flujo

secuencial de la ejecución: fundamentalmente las sentencias if y switch

implementan las bifurcaciones, que permiten elegir entre dos o más opciones según

ciertas condiciones y dependiendo del resultado seleccionan la instrucción a

ejecutar.

Estructura if – else

La sentencia if nos permite elegir si se ejecuta o no un bloque de instrucciones.

La sintaxis básica es la siguiente:

• if(condición) sentencia;

• if(condición){ bloque;

}

Donde bloque representa un bloque de instrucciones.

Una sentencia if, cuando incluye la cláusula else, permite ejecutar un bloque de

código si se cumple la condición y otro bloque de código diferente si la condición no

se cumple. La sintaxis básica es la siguiente:

• if(condición) sentencia1;

else sentencia2;

• if(condición){ bloque1;

} else{ bloque2; } Los bloques de código especificados representan dos alternativas complementarias

y excluyentes.

Page 22: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 21 | 47

La sentencia if-else pueden encadenarse haciendo que se evalúe un conjunto de

condiciones y se ejecute una sola de las opciones entre varias.

Estructura Switch

Esta estructura permite seleccionar entre varias alternativas posibles de manera que

según la opción seleccionada se ejecuten una serie de sentencias. La sintaxis

básica es la siguiente:

• switch(variable){ case contenido_variable1: sentencias; break; case contenido_variable2: sentencias; break; default: sentencias;

} Cada case puede incluir una o más sentencias sin necesidad de ir entre llaves, ya

que se ejecutan todas hasta que se encuentra la sentencia break. La variable

evaluada sólo puede ser de tipo entero o carácter. Default ejecutará las sentencias

que incluya, en caso de que la opción escogida no exista.

Page 23: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 22 | 47

Operadores lógicos y tabla de verdad - AND &&, OR ||,

Not !

Los operadores lógicos pueden crear condiciones compuestas en una fórmula,

como que se deben cumplir dos o más condiciones para elegir un determinado

método de cálculo. Este tipo de operadores permite obtener solo dos resultados

(Verdadero o Falso). Las expresiones conectadas con los operadores se evalúan

de izquierda a derecha y la evaluación se detiene cuando el resultado es verdadero

o falso.

Los operadores lógicos básicos son tres:

Tabla de verdad

Ejemplo:

Page 24: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 23 | 47

Bucles ejemplos y sintaxis - Ciclos While, Do While y For

Son estructuras de repetición que ejecutan un bloque de sentencias mientras se

cumpla una expresión lógica (condición que puede ser simple o compuesta de otras

condiciones unidas por operadores lógicos). Este bloque de sentencias que se

ejecuta repetidas veces, se denomina bucle, y cada ejecución se denomina

iteración. Las estructuras de control repetitivas utilizan dos tipos de variables:

Contadores y Acumuladores.

Sentencia / Bucle While

Permite la ejecución de un bloque de sentencias si se evalúa como verdadera una

expresión lógica que siempre aparece al principio del bloque de sentencias. Si ésta

no se cumple, el programa no entrará en el bucle. Su sintaxis es la siguiente:

• while (expresión lógica) sentencia;

• while(expresión lógica){ bloque de sentencias;

} Se lee de la siguiente forma: Mientras la evaluación de la expresión lógica sea

verdadera realice la secuencia de acciones.

Sentencia / Bucle Do...While

La sentencia es ejecutada repetidamente mientras la condición resulte verdadera.

Si no se especifica condición se asume que es "true", y el bucle se ejecutará

indefinidamente. A diferencia del bucle "while", la evaluación se realiza después de

ejecutar la sentencia, de modo que se ejecutará al menos una vez .

Su sintaxis es la siguiente:

• do{ sentencia1; sentencia2;

}while(expresión lógica) Se lee de la siguiente forma: Haga la secuencia de acciones mientras la expresión

lógica sea verdadera.

Page 25: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 24 | 47

Sentencia / Bucle For

La sentencia es ejecutada repetidamente hasta que la evaluación de la condición

resulte falsa. Su principal característica radica en el hecho de que dentro de sí

misma, constan la inicialización de variables, así como también las variables de

incremento/decremento, necesarias en un ciclo. Antes de la primera iteración se

ejecutará la iniciación del bucle, que puede ser una expresión lógica. Después de

cada iteración se ejecutará el incremento de las variables del bucle.

Su sintaxis es la siguiente:

• for(inicialización;condicion;incremento){ sentencia1; sentencia2;

} Se lee de la siguiente forma: Para la variable que empieza en valor_inicial, hasta

que llegue al valor_final, incrementándose o decrementándose en el valor de "paso"

haga la secuencia de acciones.

Sentencias de control break y continue

Permiten modificar y controlar la ejecución de los bucles anteriormente descritos:

• La sentencia break provoca la salida del bucle en el cual se encuentra y la

ejecución de la sentencia que se encuentra a continuación del bucle.

• La sentencia continue provoca que el programa vaya directamente a comprobar

la condición del bucle en los bucles while y do/while, o bien, que ejecute el

incremento y después compruebe la condición en el caso del bucle for.

Page 26: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 25 | 47

Variables Locales y Globales en C - Diferencias y ejemplo

Según el lugar donde son declaradas puede haber dos tipos de variables:

• Variable global: es aquella que se define fuera del cuerpo de cualquier función,

normalmente al principio del programa, después de la definición de los archivos

de biblioteca (#include), de la definición de constantes simbólicas y antes de

cualquier función. El ámbito de una variable global son todas las funciones que

componen el programa, cualquier función puede acceder a dichas variables

para leer y escribir en ellas. Es decir, puede ser utilizada en cualquier parte del

programa y se destruye al finalizar este. Las variables globales existen

permanentemente y retienen sus valores aun después de que las funciones que

las setean han terminado su ejecución, deben ser definidas exactamente una

vez, fuera de todas las funciones, esto les asigna almacenamiento.

• Variable local: es aquella cuyo ámbito se restringe a la función que la ha

declarado se dice entonces que la variable es local a esa función. Esto implica

que esa variable sólo va a poder ser manipulada en esa sección, y no se podrá

hacer referencia fuera de dicha sección. Cuando una variable x es local a una

función func1, significa que la función func1 es la propietaria de dicha variable,

y puede acceder a ella y modificarla. Si cualquier otra función del programa

necesita conocer el valor de la variable x, es la función func1 la que debe

transferir el valor de x a través del paso de argumentos en la llamada a la

función. Dos variables locales pueden tener el mismo nombre siempre que

estén declaradas en funciones diferentes.

Si dos variables, una global y una local, tienen el mismo nombre, la local prevalecerá

sobre la global dentro de la función en que ha sido declarada.

Page 27: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 26 | 47

Funciones en Lenguaje C - Declaración, sintaxis y

ejemplos En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir

un programa con el objetivo que, cada bloque realice una tarea determinada. Las

funciones que define el programador son conocidas como funciones de usuario.

La sintaxis de una función es la siguiente:

• tipo_funcion nombre_funcion (tipo y nombre de argumentos){ bloque de sentencias;

} donde:

• Tipo_funcion: Es el tipo de dato que devolverá esa función, que puede ser

real, entera, o tipo void (es decir que no devolverá ningún valor).

• Nombre_ funcion: Es el identificador que le damos a nuestra función.

• Tipo y nombre de argumentos: son los parámetros que recibe la función.

Los argumentos de una función no son más que variables locales que reciben

un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden

existir funciones que no reciban argumentos.

• Bloque de sentencias: Constituye el conjunto de acciones, de sentencias

que cumplirá la función, cuando sea ejecutada. Entre ellas están:

1. Asignaciones

2. Lecturas

3. Impresiones

4. Cálculos, etc.

Una función, termina con la llave de cerrar, pero antes de esta llave, debemos

colocarle la instrucción return, con la cual devolverá un valor específico. Si la función

es tipo void, no tiene que ir la sentencia return, ya que de lo contrario, nos dará un

error. Nunca se debe llamar a la función main desde otro lugar del programa.

Declaración de una función

Antes de empezar a utilizar una función se debe declarar. La declaración de una

función se conoce también como prototipo de la función. En este se tienen que

especificar los parámetros de la función, así como el tipo de dato que devuelve.

Page 28: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 27 | 47

Los prototipos de las funciones son utilizados por el compilador para verificar que

se accede a la función de la manera adecuada con respecto al número y tipo de

parámetros, y al tipo de valor de retorno de esta. Los prototipos de las funciones

pueden escribirse antes de la función main o bien en otro fichero. En este último

caso se lo indicaremos al compilador mediante la directiva #include.

Paso de parámetros a una función

Las funciones pueden retornar un valor, esto se hace mediante la instrucción return,

que finaliza la ejecución de la función, devolviendo o no un valor. En una misma

función podemos tener más de una instrucción return. La forma de retornar un valor

es la siguiente:

• return(valor o expresión);

El valor devuelto por la función debe asignarse a una variable. De lo contrario, el

valor se perderá.

Page 29: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 28 | 47

Recursividad en el lenguaje C

En C, las funciones pueden llamarse a sí mismas. Si una expresión en el cuerpo de

una función llama a la propia función, se dice que ésta es recursiva.

Cuando la función se llama a sí misma, se asigna un espacio en la pila para las

nuevas variables locales y parámetros, y el código de la función se ejecuta con estas

nuevas variables desde el principio. Una llamada recursiva no hace una nueva copia

de la función. Sólo son nuevos los argumentos. Al volver de una llamada recursiva

se recuperan de la pila las variables locales y los parámetros antiguos, y la ejecución

se reanuda en el punto de la llamada a la función dentro de la función.

La principal ventaja de las funciones recursivas es que se pueden usar para crear

versiones de algoritmo más claras y sencillas.

Ejemplo:

Page 30: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 29 | 47

Arrays, arreglos, cadenas o vectores en C - Ejemplos y uso

Un array (arreglo), es una variable estructurada que permite almacenar un conjunto

de datos del mismo tipo de forma consecutiva en memoria. A los datos almacenados

en un array se les denomina elementos; al número de elementos de un array se les

denomina tamaño o rango del vector. Para acceder a los elementos individuales de

un array se emplea un índice que será un número entero no negativo que indicará

la posición del elemento dentro del array.

Vectores

Un vector es un array unidimensional, es decir, sólo utiliza un índice para referenciar

a cada uno de los elementos. Su sintaxis basica es la siguiente:

• tipo nombre [tamaño];

donde:

• tipo: Tipo de dato que tiene el conjunto de variables: int, float, char, etc.

• nombre: Identificador con el nombre del array.

• tamaño: Cantidad de espacios de memoria que queremos reservar.

Podemos inicializar (asignarle valores) un vector en el momento de declararlo. Sus

sintaxis son las siguientes:

• tipo nombre [tamaño] = {varlor1, valor2, …}

El numero de valores entre llaves tiene que ser menor o igual al tamaño. Si es

menor el resto de los valores se quedan sin inicializar.

• tipo nombre [ ] = {valor1, valor2, …}

Si no se especifica el tamaño se reservarán tantos espacios como elementos

haya entre llaves.

Page 31: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 30 | 47

Una particularidad con los vectores de tipo char (cadena de caracteres) es que

termina con el carácter especial ‘\0’ (cero). En resumen, al declarar una cadena

deberemos reservar una posición más que la longitud que queremos que tenga

dicha cadena.

Llamadas a funciones con arrays

Un aspecto para tener muy en cuenta es que C no permite el paso de un array por

valor a una función, un array es siempre pasado por "referencia", pues en la llamada,

lo que se pasa es la dirección del primer elemento del array (recuérdese que el

nombre de un array es un puntero al primer elemento).

Page 32: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 31 | 47

Matrices en C - Bidimensional, tridimensional con ejemplo

Una matriz es un vector de vectores o un también llamado array bidimensional. Las

matrices en C se almacenan al igual que los vectores en posiciones consecutivas

de memoria. Usualmente uno se hace la idea que una matriz es como un tablero,

pero internamente el manejo es como su definición lo indica, un vector de vectores,

es decir, los vectores están uno detrás del otro juntos.

La manera de declarar una matriz en C es similar a un vector excepto que se

requiere un índice por cada dimensión. Su sintaxis es la siguiente:

• tipo nombre [tamaño 1][tamaño 2]...;

Una matriz bidimensional se podría representar gráficamente como una tabla con

filas y columnas.

La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos con objetos

3D.

Si al declarar una matriz también queremos inicializarla, habrá que tener en cuenta

el orden en el que los valores son asignados a los elementos de la matriz.

Ejemplo:

Page 33: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 32 | 47

Algoritmos de ordenación y búsqueda Ahora nos centraremos en algunos de los problemas más comunes que surgen en

la computación, los de búsqueda y ordenamiento.

Algoritmos de ordenación

Nos permiten ordenar información de una manera especial basándonos en un

criterio de ordenamiento. El objetivo de este proceso generalmente es facilitar la

búsqueda de uno o más elementos pertenecientes a un conjunto. Los más usados

son:

• Ordenamiento Burbuja: es un algoritmo que se aplica para poder ordenar un

array de datos enteros ya sea de forma ascendente o descendente.

• Ordenamiento por inserción (Insertion Sort): El algoritmo consiste en

ordenar los dos primeros elementos del array, luego se inserta el tercer

elemento en la posición correcta con respecto a los dos primeros ya clasificados

y así sucesivamente hasta llegar al último elemento del array.

• Ordenamiento rápido (Quick Sort): El algoritmo se basa en dividir los n

elementos de la lista a ordenar en dos particiones separadas por un elemento:

una partición izquierda, un elemento central (pivote o elemento de partición), y

una partición derecha. La partición se hace de tal forma que todos los elementos

de la primera sublista (partición izquierda) son menores que todos los elementos

de la segunda sublista (partición derecha). Las dos sublistas se ordenan

entonces independientemente.

En conclusión, se suele recomendar que para listas pequeñas los métodos más

eficientes son burbuja y selección; y para listas grandes, el Quicksort.

Algoritmos de búsqueda

La búsqueda de un elemento dentro de un array es una de las operaciones más

importantes en el procesamiento de la información, y permite la recuperación de

datos previamente almacenados. Todos los algoritmos de búsqueda tienen dos

finalidades:

1. Determinar si el elemento buscado se encuentra en el conjunto en el que se

busca.

2. Si el elemento está en el conjunto, hallar la posición en la que se encuentra.

Page 34: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 33 | 47

Los más usados son:

• Búsqueda secuencial o lineal: el algoritmo busca un elemento del array

utilizando un valor destino llamado clave comparando los elementos de forma

secuencial, uno después de otro, hasta que lo encuentra o bien hasta que se

determina que no se encuentra. Funciona bien con arreglos pequeños y con los

no ordenados.

• Búsqueda binaria: este algoritmo consiste en dividir paulatinamente el array

por su elemento medio en dos subarrays más pequeños, y comparar el

elemento con el del centro. Si coinciden, la búsqueda se termina pero si al final

de la búsqueda todavía no lo hemos encontrado, y el subarray a dividir está

vacío, el elemento no se encuentra en el array.

Page 35: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 34 | 47

Estructuras y Uniones en C - Arrays de estructuras

Una estructura es un conjunto de una o más variables, de distinto tipo, agrupadas

bajo un mismo nombre para que su manejo sea más sencillo. Esta capacidad de C

es una característica importante para la creación de programas potentes, tales como

bases de datos u otras aplicaciones que requieran grandes cantidades de datos. La

sintaxis de su declaración es la siguiente:

• struct tipo_estructura { tipo_variable nombre_variable1; tipo_variable nombre_variable2; tipo_variable nombre_variable3;

}; donde:

• tipo_estructura: es el nombre del nuevo tipo de dato que hemos creado.

• tipo_variable y nombre_variable: son las variables que forman parte de la

estructura.

Para definir variables del tipo que acabamos de crear lo podemos hacer de varias

maneras, aunque las dos más utilizadas son éstas:

La forma de acceder a estos campos es la siguiente:

• variable.campo;

donde:

• variable: es el nombre de la variable de tipo estructura que hemos creado.

• campo: es el nombre de la variable que forma parte de la estructura.

Declaramos la estructura, y en el

momento en que necesitamos las

variables, las declaramos.

Las declaramos al mismo tiempo

que la estructura.

Page 36: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 35 | 47

Es posible pasar el contenido de una estructura a otra, siempre que sean del mismo

tipo naturalmente, también inicializar variables de tipo estructura en el momento de

su declaración (si uno de los campos de la estructura es un array de números, los

valores de la inicialización deberán ir entre llaves).

Estructuras y funciones

Las estructuras pueden ser pasadas a funciones pasando miembros de estructura

individuales o pasando toda la estructura. Cuando se pasan estructuras o miembros

individuales de estructura a una función se pasan por llamada por valor. Para pasar

una estructura en llamada por referencia tenemos que colocar el ’*’ o ’&’.

Arrays de estructuras

Se puede crear un array de estructuras tal como se crea un array de otros tipos.

Permiten almacenar juntos diversos valores de diferentes tipos, agrupados como

estructuras. Son idóneos para almacenar un archivo completo de empleados, un

archivo de inventario, etc.

Page 37: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 36 | 47

Punteros en Lenguaje C - ¿Qué son y cómo usarlos? Un puntero es una variable que representa la posición (más que el valor) de otro

dato, tal como una variable o un elemento de un array. Se usan para pasar

información entre una función y puntos de llamada. Permiten código más compacto

y eficiente; utilizándolos en forma ordenada dan gran flexibilidad a la programación.

Declaración de Punteros

Su sintaxis es la siguiente:

• tipo *nombre;

Donde nombre es, naturalmente, el nombre de la variable, y tipo es el tipo del

elemento cuya dirección almacena el puntero.

Operadores

Existen dos operadores especiales para trabajar con punteros:

• & - operador dirección: me da la dirección de un objeto en la memoria. Sólo

sirve para posiciones de memoria (puede apuntar a variables o a vectores, pero

no a constantes o expresiones).

• * - operador indirección: me da el contenido de una posición de memoria

(generalmente almacenada en un puntero).

Los operadores * y & son unarios y tienen más prioridad a la hora de evaluarlos que

los operadores binarios.

Los punteros se asignan igual que el resto de las variables. Es posible desplazar un

puntero recorriendo posiciones de memoria. Para ello podemos usar los operadores

de suma, resta, incremento y decremento.

Page 38: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 37 | 47

Asignación dinámica de memoria

Una ventaja de la utilización de punteros es la posibilidad de realizar una asignación

dinámica de memoria. Esto significa que la reserva de memoria se realiza

dinámicamente en tiempo de ejecución, no siendo necesario entonces tener que

especificar en la declaración de variables la cantidad de memoria que se va a

requerir. En C, se asigna memoria en el momento de la ejecución en el montículo

o montón (heap), mediante las funciones malloc(), realloc(), calloc() y free(), que

asignan y liberan memoria de una zona denominada almacén libre:

• Función malloc(): La función asigna un bloque de memoria que es el numero

de bytes pasados como argumentos. Malloc() devuelve un puntero, que es la

dirección del bloque asignado de memoria. El puntero se utiliza para referencias

el bloque de memoria y devuelve un puntero del tipo void *.

Sintaxis de llamada a la función malloc() es:

• tipo *puntero;

puntero = (tipo *)malloc(tamaño en bytes);

• Función free(): Cuando se ha terminado de utilizar un bloque de memoria

previamente asignado por malloc(), u otras funciones de asignación, se puede

liberar el espacio de memoria y dejarlo disponible para otros usos, mediante

una llamada a la función free(). El bloque de memoria suprimido se devuelve al

espacio de almacenamiento libre, de modo que habrá más memoria disponible

para asignar a otros bloques de memoria. El formato de llamada es:

• free(puntero);

Hay otras funciones que permiten obtener memoria libre en tiempo de ejecución,

estas son calloc() y realloc(). Con ambas se puede asignar memoria, lo que cambia

en relación con la función malloc es la forma de trasmitir el numero de bytes de

memoria requeridos. Ambas devuelven un puntero tipo void * al bloque asignado de

memoria. El puntero se utiliza para referenciar el bloque de memoria.

• Función calloc(): Esta declarada en el archivo de cabecera stdlib.h, por lo que

será necesario incluir ese archivo de cabecera en todo programa que llame a la

función. Se puede reservar memoria dinámicamente para cualquier tipo de dato,

incluyendo char , float, arrays, estructuras e identificadores de typedef.

Page 39: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 38 | 47

Sintaxis de llamada a la función malloc() es:

• tipo *puntero;

puntero = (tipo *) calloc (numero_elementos, tamaño de cada elemento);

El tamaño de cada elemento se expresa en bytes, se utiliza para obtenerlo el

operador sizeof.

• Función realloc(): Esta función también es para asignar un bloque de memoria

libre pero tiene una variación con respecto a las otras, permite ampliar un bloque

de memoria reservado anteriormente.

Sintaxis de llamada a la función realloc() es:

• tipo *puntero;

puntero = (tipo *) realloc (puntero a bloque, tamaño total nuevo bloque);

El puntero hace referencia a un bloque de memoria reservado previamente con

malloc(), calloc() o la propia realloc().

Page 40: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 39 | 47

Cadenas El lenguaje C no dispone de un tipo de dato String para trabajar con cadenas de

texto como en otros lenguajes. Una cadena en C es un array de caracteres de una

dimensión (vector de caracteres) que termina con el carácter especial ‘\0’ (cero).

Podemos conocer la longitud de un array de caracteres usando la función sizeof,

siendo la sintaxis para emplear: sizeof (nombreDelArray).

El formato para declarar una cadena es:

• char nombre[n];

En el caso especial de los arrays de caracteres, podemos utilizar varias formas de

inicialización:

sin especificar el tamaño de la cadena, o especificando el tamaño:

Librería string.h

A través de la librería string.h podemos usar distintas funciones relacionadas con

cadenas. Para usar estas funciones debemos escribir #include <string.h> en

cabecera de nuestro programa. A continuación relacionamos algunas de las

funciones disponibles.

Page 41: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 40 | 47

Ficheros - Abrir, cerrar, leer y agregar archivos de texto

Los ficheros son estructuras de datos almacenadas en memoria secundaria. Para

para guardar o recuperar información de un fichero es necesario realizar una serie

de operaciones que describiremos en este apartado.

Apertura de archivos

Fopen()

Antes de abrir un fichero necesitamos declarar un puntero de tipo FILE, con el que

trabajaremos durante todo el proceso. Para abrir el fichero utilizaremos la función

fopen( ).Su sintaxis es:

• FILE *puntero;

puntero = fopen (nombre del fichero, "modo de apertura");

Donde puntero es la variable de tipo FILE, nombre del fichero es el nombre que

daremos al fichero que queremos crear o abrir. Este nombre debe ir encerrado entre

comillas. Un archivo puede ser abierto en dos modos diferentes:

Modo texto

Modo binario

Freopen()

Esta función cierra el fichero apuntado por el puntero y reasigna este puntero a un

fichero que será abierto. Su sintaxis es:

• freopen (nombre del fichero, "modo de apertura", puntero);

Page 42: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 41 | 47

Donde nombre del fichero es el nombre del nuevo fichero que queremos abrir, luego

el modo de apertura, y finalmente el puntero que va a ser reasignado.

Cierre de archivos

Una vez que hemos acabado nuestro trabajo con un fichero es recomendable

cerrarlo. Los ficheros se cierran al finalizar el programa pero el número de estos que

pueden estar abiertos es limitado. Para cerrar los ficheros utilizaremos la función

fclose( ); cuyo puntero le indicamos como parámetro. Si el fichero se cierra con éxito

devuelve 0 cierra el fichero. Su sintaxis es la siguiente:

• fclose(puntero);

Escritura y lectura de archivos

En C existen muchas y variadas operaciones para leer y escribir en un fichero; entre

ellas tenemos: fread - fwrite, fgetc - fputc, fgets - fputs, fscanf - fprintf, es aconsejable

utilizarlas por parejas.

Lectura y escritura de bloques ( fread – fwrite )

Para leer y escribir en ficheros que no sean de texto las operaciones que se deben

utilizar son fread y fwrite.

El formato de escritura en bloque es el siguiente:

• fwrite (direcc_dato, tamaño_dato, numero_datos, punt_fichero);

La sentencia de lectura de bloque es la siguiente:

• fread (direcc_dato, tamaño_dato, numero_datos, punt_fichero);

Lectura y escritura formateada de texto ( fscanf – fprintf )

Para que lo escrito con fprintf pueda ser correctamente leído con fscanf es

conveniente que el formato en el que se indican los tipos de datos que se van a leer

o escribir sean similares para ambas instrucciones, que los tipos de datos estén

separados, por ejemplo, por un blanco y que tengan un fin de línea al final.

Page 43: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 42 | 47

Lectura y escritura de caracteres ( fgetc – fputc ) y cadenas ( fgets – fputs )

Los formatos de las instrucciones de lectura y escritura de caracteres y cadenas

son:

• carácter_leido = fgetc (fichero);

fgetc lee un carácter del fichero, el carácter leído se almacenará en carácter leído.

Cuando se llega al final del fichero devuelve EOF.

• fputc (car, fichero);

fputc escribe el carácter car en el fichero. Devuelve el carácter escrito o EOF en

caso de error.

• fgets (cadena_leida, num_caracteres, fichero);

Lee num_caracteres del fichero y los almacena en cadena_leida colocando el

carácter de fin de cadena '\0' en la posición num_caracteres de la cadena leída.

Page 44: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 43 | 47

Organización de datos en un archivo

Las estructuras de datos aplicadas a colección de datos en almacenamiento

secundario se llaman organización de archivos

La organización de un archivo define la forma en que los registros se disponen sobre

el soporte de almacenamiento, o también se define la organización como la forma

en que se estructuran los datos en un archivo. En general se consideran tres

organizaciones fundamentales:

• Organización secuencial: es una sucesión de registros almacenados en forma

consecutiva sobre un soporte externo. Los registros están ubicados físicamente

en una secuencia usualmente fijada por uno o más campos de control

contenidos dentro de cada registro, en forma ascendente o descendente.

• Organización directa o aleatoria (random): los datos se colocan y se acceden

aleatoriamente mediante su posición, es decir, indicando el lugar relativo que

ocupan dentro del conjunto de posiciones posibles. En esta organización se

pueden leer y escribir registros, en cualquier orden y en cualquier lugar.

• Organización secuencial indexada: Un archivo con esta organización consta

de tres áreas:

-Área de índices: es una tabla que contiene los niveles de índice, la existencia

de varios índices enlazados se denomina nivel de indexación.

-Área primaria: contiene los registros en forma secuencial y esta organizada en

secuencia de claves sin dejar huecos intercalados.

-Área de excedentes (overflow): utilizada, si fuese necesario, para las

actualizaciones.

Page 45: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 44 | 47

Tipos de datos TAD/objetos

Un tipo abstracto de datos (TAD) es una colección de propiedades y de operaciones

que se definen mediante una especificación que es independiente de cualquier

representación. La abstracción se centra en la independencia de la representación.

Esto permite al programador modificar la representación del TAD sin que esto afecte

a su utilización. Se suele considerar que un tipo abstracto de datos es un tipo de

datos construido por el programador para resolver una determinada situación.

Una de las principales ventajas de los TADs es que permite construir programas

modularizados y estructurados, ya que las tareas lógicas para un tipo se encapsulan

en un módulo independiente, que se compila independientemente y cuya

representación, como se ha dicho, puede variar sin que afecte al programa que los

utiliza siempre y cuando no se modifique la interfaz.

Los TAD tienen, por lo tanto, dos partes:

• Especificación: Refleja qué hace el tipo. Es necesaria para que el programador

sepa cómo debe implementar el TAD. Suele coincidir con la interfaz, pero no es

necesario que esto ocurra, ya que la interfaz es un concepto de programación por

lo que puede añadir operaciones a la especificación (siempre que tengan

justificación).

• Implementación: La implementación a su vez se compone de una interfaz pública,

que permite al programador utilizar el TAD, y una implementación que puede variar

siempre y cuando la interfaz se mantenga.

Page 46: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 45 | 47

Listas enlazadas

Es una de las estructuras de datos fundamentales, y puede ser usada para

implementar otras estructuras de datos. Consiste en una secuencia de nodos, en

los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces

o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas

respecto a los vectores convencionales es que el orden de los elementos enlazados

puede ser diferente al orden de almacenamiento en la memoria o el disco,

permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto

de la lista en tiempo constante (suponiendo que dicho punto está previamente

identificado o localizado), pero no permiten un acceso aleatorio.

Tipos De Listas

1. Lista simplemente enlazada: Cada nodo, contiene un único apuntador hacia el

siguiente nodo, por lo cual hace de él una estructura muy eficiente, ya que el

último de la lista apunta hacia null, por ello, es fácil hacer recorridos directos.

2. Listas Doblemente enlazadas: Esta lista se caracteriza por que sus nodos

contienen dos punteros, uno hacia el nodo siguiente y otro hacia el nodo

anterior.

3. Listas Circulares: Este tipo de lista, es sólo una extensión de la lista

simplemente enlazada, con la diferencia que el último elemento se enlaza al

primer elemento de la lista, lo cual permite el recorrido en forma de anillo

4. Lista Circular Doblemente enlazada: Quizá este tipo de lista sea la más

compleja, ya que es la combinación de la lista circular y las doblemente

enlazadas, ya que es una lista doblemente enlazada donde el primer elemento

se conecta con el último y viceversa.

Operaciones con las listas

• P: puntero a un nodo.

• L: puntero a la lista.

• ListaVacia(L): Iniciliza la lista L, como lista vacía.

• empty(L): determina si la lista está vacía o no.

Page 47: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 46 | 47

• Insertar(L, x, p): Inserta al dato x, en un nuevo nodo de la lista L, después del

nodo apuntado por p.

• eliminar(L, x): elimina, de la lista L, el nodo que contiene a x.

• Nodo(p): Hace referencia al nodo que apunta p.

• Info(p): hace referencia al info del nodo.

• next(p): siguiente dirección si p no es NULL

• Info(next(p)): info del nodo que sigue a nodo (p) en la lista

Page 48: TEMAS DE EXPOSICION · Tipos de Datos en Lenguaje C: Char, Int, Float y Double El tipo de dato de la variable nos indica el conjunto de valores que puede tomar, su ocupación en la

P á g i n a 47 | 47

Asignación dinámica de memoria Malloc. Pilas, colas y

listas Estructuras dinámicas de datos

En función de la forma en que se relacionan existen varios tipos de estructuras de

datos. Este tipo de estructuras son autorreferenciadas, es decir, contienen entre sus

campos un puntero de su mismo tipo. Las más utilizadas son:

• Pilas: Este tipo de estructuras se caracteriza porque todas las operaciones se realizan

en el mismo lado. Es de tipo LIFO (Last In First Out), el último elemento en entrar es el

primero en salir. La estructura tipo que utilizaremos será ésta:

• Colas: Este tipo de estructuras se caracteriza porque insertamos los elementos

por un lado y los extraemos por el otro lado. Es de tipo FIFO (First In First Out),

el primer elemento en entrar es el primero en salir. La estructura que

utilizaremos será:

• Listas: Este tipo de estructuras se caracteriza porque los elementos están

enlazados entre sí, de manera que además de las acciones habituales de

insertar, extraer y visualizar también podremos buscar un elemento. La

estructura que utilizaremos será: