disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres...

32
Análisis y resumen

Transcript of disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres...

Page 1: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Análisis y resumenMontserrat Natzumi Lyshuan Navarro Velázquez

Estructura general básica de un Programa en Lenguaje C

Page 2: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Todo programa en C consiste de una o más funciones, una de las cuales se llama main. El programa comienza en la función main, la cual sirve para llamar a otras funciones.Algo así como se muestra en el siguiente ejemplo de la sintaxis:

comentarios en Lenguaje C

Un comentario sirve para generar notas al programador en el código, ya sea para instrucciones, o recordatorio de las funciones en el código, un comentario puede ser de mucha ayuda para facilitar el trabajo a otros programadores que puedan utilizar nuestro código.Para poner comentarios en un programa escrito en Lenguaje C, usamos los símbolos /* y */:

Palabras reservadas predefinidas en el Lenguaje C

Las palabras reservadas son identificadores predefinidos que tienen significados especiales y no pueden usarse como identificadores creados por el usuario en los programas.A continuación, se muestra algunas de estas palabras clave:

Char

Page 3: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

int float double if else do while for switch short long extern static default continue break register sizeof typedef

Identificadores para variables, constantes y funciones en C

Un identificador es un nombre que se asigna a los distintos elementos de un programa, como pueden ser variables, nombres de funciones, etc.A continuación, vemos algunos ejemplos de identificadores válidos y no válidos:

Tipos de Datos en Lenguaje C

C ofrece tres tipos de datos básicos: Números enteros definidos con la palabra clave int Letras o caracteres definidos con la palabra clave char Números reales o en coma flotante definidos con las palabras

claves float   o   double

Page 4: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Calificadores de Datos en C

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

Variables en Lenguaje C 

Page 5: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Una variable es un espacio en la memoria, en el cual el programador asigna un valor determinado por el tipo de dato que el lenguaje de programación va soportar.Una variable sólo puede pertenecer a un tipo de dato. Para poder utilizar una variable, primero tiene que ser declarada:

Ejemplo:

Constantes Lenguaje en C las constantes se declaran con la directiva #define, esto significa que esa constante tendrá el mismo valor a lo largo de todo el programaPara indicar al compilador que se trata de una constante, usaremos la directiva #define, como indica el siguiente ejemplo:

Ejemplo:

Page 6: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Secuencias de escape en C

Las secuencias de escape se utilizan para definir ciertos caracteres especiales dentro de cadenas de texto.A continuación, vemos una tabla de las más significativas:

Inclusión de archivos de cabecera

Se denomina  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.

Para indicar al compilador que vamos a incluir ficheros externos podemos hacerlo de dos maneras:

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

Page 7: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

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

OPERADORES ARITMÉTICOS BÁSICOS EN C

Los operadores más comunes son: Suma, resta, multiplicación, división, al igual existen los unarios, de asignación y su jerarquía.

Son esenciales para llevar operaciones matemáticas en lenguaje C.

Existen dos tipos de operadores aritméticos:

Operadores binarios:

+ Suma

- Resta

* Multiplicación

/ División

% Módulo

Operadores Unarios

++ Incremento(Suma)

-- Decremento(Resta)

- Cambio de signo

Page 8: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

SINTAXIS

Binarios

<variable1><operador><variable2>

Unitarios

<variable><operador> y al revés, <operador><variable>.

Operadores de asignación

La mayoría de los operadores anteriores tienen su correspondiente operador de asignación.

Signo Operación

Jerarquía de operadores

A continuación, la precedencia de los operadores:

Signo Precedencia

() Mayor procedencia

++, --

= Asignación simple

+= Suma

-= Resta

*= Multiplicación

/= División

%= Módulo

Page 9: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

*, /, % Menor procedencia

+, -

Las operaciones con mayor precedencia se realizan antes que las de menor precedencia.

FUNCIONES PRINTF () Y SCANF ()Las funciones Printf () y scanf () nos permitirá imprimir en pantalla u obtener datos mediante el teclado.

Salida de datos:Printf () Nos permite la impresión de datos en pantalla, desde números, caracteres y cadenas de texto.

Printf (control, arg1, arg2...);En la cadena de control, indicaremos por regla general los modificadores que harán referencia al tipo de datos de los argumentos; Al igual que en la sentencia Printf los modificadores estarán formados por el carácter % seguido de un carácter de conversión. Los argumentos indicados serán, nuevamente, las variables.

La principal característica de scanf (), es que debemos darle la posición de la variable a escanear y así obtener la información. Para indicarle la posición debemos utilizar el símbolo “&”, ampersand que se coloca delante del nombre de cada variable./* Uso de la sentencia scanf () */

#include <stdio.h>

main () /* Solicita dos datos */{

char nombre [10];int edad;Printf ("Introduce tu nombre: ");scanf ("%s", nombre);Printf ("Introduce tu edad: ");scanf ("%d”, &edad);

}

Page 10: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

¡OPERADORES RELACIONALES <, >, ==!,= Se les llama “Operadores relacionales”, porque nos permiten comparar el contenido de dos variables.

En C existen seis operadores básicos:

< Menor qué

> Mayor qué

<= Menor igual qué

>= Mayor igual qué

== Igual qué

!= Distinto de

El resultado de estos operadores es 1 para Verdadero y 0 para Falso.¡Si hay más de un operador, se evalúan de izquierda a derecha, además == y! = están por debajo del resto en cuanto al orden de procedencia.

#include <stdio.h>main () /* Compara dos números entre ellos */{ int a, b; Printf ("Introduce el valor de A: "); scanf ("%d”, &a); Printf ("Introduce el valor de B: "); scanf ("%d”, &b); if(a>b) Printf ("A es mayor que B"); else if(a<b) Printf ("B es mayor que A"); else Printf ("A y B son iguales");}

Page 11: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

OPERADORES CONDICIONALES EN C- IF, ELSE, ELSE IF, Y SWITCH

Es una sentencia de control, donde la condición es la expresión que será evaluada.

Este tipo de sentencias permiten variar el flujo del programa en base a unas determinadas condiciones.

Existen varias estructuras diferentes:

Estructura IF...ELSE

if(condición) sentencia;La sentencia solo se ejecuta si la condición se cumple la condición.

If (condición) sentencia 1;else sentencia 2;

Si no se cumple la primera condición, se ejecutará la segunda sentencia.

If(condition) sentencia 1;else if(condition) sentence 2;else (condition) sentence 3;

Con este formato el flujo del programa únicamente entra en una de las condiciones. Si una de ellas se cumple, se ejecuta la sentencia correspondiente y salta hasta el final de la estructura para continuar con el programa.Operador switch

Esta estructura se suele utilizar en los menús, de manera que según la opción seleccionada se ejecuten una serie de sentencias.

switch (variable) {case contenido_variable1:

sentencias;break;

case contenido_variable2:sentencias;break;

default:sentencias;

}

Cada case puede incluir una o más sentencias, sin la necesidad de ir entre llaves, y todo esto hasta llegar a “Break;”

Page 12: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Default: Ejecutará las sentencias que incluya en caso de que la opción escogida no esté en los case o no exista.

#include <stdio.h>Main () {Printf ("Introduce el día: ");

scanf ("%d”, &edad); switch(día) { case 1: Printf("Lunes"); break; case 2: Printf("Martes"); break; case 3: Printf("Miércoles"); break; case 4: Printf("Jueves"); break; case 5: Printf("Viernes"); break; case 6: Printf("Sábado"); break; case 7: Printf("Domingo"); break; }

OPERADORES LÓGICOS AND, OR, NOT Son tres operadores básicos: && AND

|| OR! NOT

Actúan sobre expresiones lógicas y permiten unir expresiones lógicas simples formando otras más complejas.Tabla de verdadOperando AND NOTV V V VV F F VF V F VF F F F

/* Uso de los op lógicos AND, OR, NOT. */

#include <stdio.h>

main () /* Compara un número introducido */{ int numero; Printf ("Introduce un número: "); scanf("%d",&numero); if(!(numero>=0))

Page 13: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

printf("El número es negativo"); else if((numero<=100)&&(numero>=25)) printf("El número está entre 25 y 100"); else if((numero<25)||(numero>100)) printf("El número no está entre 25 y 100");}

Bucles ejemplos y sintaxis - Ciclos While, Do While y ForSon estructuras de repetición que permiten realizar tareas recurrentes y se usan para el control de flujo de un proceso un número determinado de veces.

Los bucles son estructuras que permiten ejecutar partes del código de forma repetida mientras se cumpla una condición.

Sentencia / Bucle WhileWhile (condición) sentencia;Con esta sentencia se controla la condición antes de entrar en el bucle. Si ésta no se cumple, el programa no entrará en el bucle.

/* Uso de la sentencia WHILE. */

#include

main() /* Escribe los números del 1 al 10 */{ int numero=1; while(numero<=10) { printf("%d\n",numero); numero++; }}

Sentencia / Bucle DO...WHILE

do {sentencia1;sentencia2;} while (condición);

Con esta sentencia se controla la condición al final del bucle. Si ésta se cumple, el programa vuelve a ejecutar las sentencias del bucle./* Uso de la sentencia DO...WHILE. */

Page 14: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

#include <stdio.h>

main() /* Muestra un menú si no se pulsa 4 */{ char seleccion; do{ printf("1.- Comenzar\n"); printf("2.- Abrir\n"); printf("3.- Grabar\n"); printf("4.- Salir\n"); printf("Escoge una opción: "); seleccion=getchar(); switch(seleccion){

case '1':printf("Opción 1"); break; case '2':printf("Opción 2"); break; case '3':printf("Opción 3"); }

}while(seleccion!='4');}

Sentencia / Bucle For

for (inicialización;condición;incremento) {sentencia1;sentencia2;}

La inicialización indica una variable (variable de control) que condiciona la repetición del bucle. Si hay más, van separadas por comas:

/* Uso de la sentencia FOR. */

#include <stdio.h>

main() /* Escribe la tabla de multiplicar */{ int num,x,result; printf("Introduce un número: "); scanf("%d",&num); for (x=0;x<=10;x++){

Page 15: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

result=num*x; printf("\n%d por %d = %d\n",num,x,result); }}

Sentencia BreakEsta sentencia se utiliza para terminar la ejecución de un bucle o salir de una sentencia SWITCH.

Sentencia ContinueSe utiliza dentro de un bucle. Cuando el programa llega a una sentencia CONTINUE no ejecuta las líneas de código que hay a continuación y salta a la siguiente iteración del bucle.

Y aquí termina el capítulo dedicado a los bucles. Existe otra sentencia, GOTO, que permite al programa saltar hacia un punto identificado con una etiqueta, pero el buen programador debe prescindir de su utilización. Es una sentencia muy mal vista en la programación en 'C'

/* Uso de la sentencia CONTINUE. */

#include <stdio.h>

main() /* Escribe del 1 al 100 menos el 25 */{ int numero=1; while(numero<=100) { if (numero==25) {

numero++; continue;

} printf("%d\n",numero); numero++; }

}

Variables Locales y Globales en C

Una 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 dicha sección, y no se

Page 16: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

podrá hacer referencia fuera de dicha sección. Cualquier variable que se defina dentro de las llaves del cuerpo de una función se interpreta como una variable local a esa función.

Una 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, se puede hacer referencia a su dirección de memoria en cualquier parde del programa.

El uso de variables globales no es aconsejable a pesar de que aparentemente nos parezca muy útil, esto se debe a varias razones fundamentales:

-Legibilidad menor.- Nos condiciona en muchos casos que el programa sólo sirva para un conjunto de casos determinados.- El uso indiscriminado de variables globales produce efectos colaterales. Esto sucede cuando existe una alteración no deseada del contenido de una variable global dentro de una función, bien por invocación, bien por olvidar definir en la función una variable local o un parámetro formal con ese nombre. La corrección de dichos errores puede ser muy ardua. -Atenta contra uno de los principios de la programación, el modularidad. El bajo acoplamiento supone no compartir espacios de memoria con otras funciones, y potenciar el paso de información (llamadas) para que la función trate la información localmente.

Una función siempre es conocida por todo el programa, excepto cuando se declara como estática, en cuyo caso sólo la podrán utilizar las funciones del mismo módulo de compilación.

En C, todas las funciones están al mismo nivel de ámbito. Es decir, no se puede definir una función dentro de otra función. Esto es por lo que C no es técnicamente un lenguaje estructurado en bloques./* Variables globales y locales. */

#include <stdio.h>

int num1=1;main() /* Escribe dos cifras */

Page 17: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

{int num2=10;printf("%d\n",num1);printf("%d\n",num2);

}

FUNCIONES EN LENGUAJE C

Las funciones son bloques de código utilizados para dividir un programa en partes más pequeñas, cada una de las cuáles tendrá una tarea determinada.

Donde:• tipo_de_retorno: es el tipo del valor devuelto por la función, o, en caso de que lafunción no devuelva valor alguno, la palabra reservada void.• nombre_de_la_función: es el nombre o identificador asignado a la función.• lista_de_parámetros: es la lista de declaración de los parámetros que son pasadosa la función. Éstos se separan por comas. Debemos tener en cuenta que puedenexistir funciones que no utilicen parámetros.• cuerpo_de_la_función: está compuesto por un conjunto de sentencias que llevana cabo la tarea específica para la cual ha sido creada la función.• return expresión: mediante la palabra reservada return, se devuelve el valor de lafunción, en este caso representado por expresión.

Sintaxis:

tipo_función nombre_función (tipo y nombre de argumentos) {bloque de sentencias}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.

/* Declaración de funciones. */

#include <stdio.h>

void funcion(void); /* prototipo */int num=5; /* variable global */main() /* Escribe dos números */

Page 18: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

{int num=10; /* variable local */printf("%d\n",num);funcion(); /* llamada */

}

void funcion(void){

printf("%d\n",num);}

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

/* Paso de parámetros. */

#include <stdio.h>

int suma(int,int); /* prototipo */main() /* Realiza una suma */{

int a=10,b=25,t;t=suma(a,b); /* guardamos el valor */printf("%d=%d",suma(a,b),t);suma(a,b); /* el valor se pierde */

}

int suma(int a,int b){

return (a+b);

}

RECURSIVIDADEn 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. La recursividad es el proceso de definir algo en términos de sí mismo y a veces se llama definición circular.

Page 19: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Para que en lenguaje de computadora sea recursivo, una función debe ser capaz de llamarse a sí misma. Un sencillo ejemplo es la función fact (), que calcula la factorial de un entero. La factorial de un número N es el producto de todos los números entre 1 y N. Por ejemplo, la factorial de 3 es 1 x 2 x 3, o 6. a continuación se muestra fact () y su equivalente iterativo en 29FACT.CPP

12345678910111213141516171819202122232425262728293031

Long unsigned int fact (int n) /* recursiva */ { long unsigned int rasp; if(n==1) return (1); resp = fact(n--)*n; return (resp); } &nbsp; long unsigned int factiter(int n); { long unsigned int t, resp; resp=1; for(t=1; t<n; t++) resp = resp * t; return (resp); }

La principal ventaja de las funciones recursivas es que se pueden usar para crear versiones de algoritmo más claras y más sencillas. Por ejemplo, la ordenación rápida (quicksort) es difícil implementar en forma iterativa. Además, algunos problemas, especialmente los problemas relacionados con la inteligencia artificial parece que tienden ellos mismos hacia soluciones recursivas. Por último, algunas personas parece pensar más fácilmente de forma recursiva que de forma iterativa.

Cuando se escriben funciones recursivas, se debe tener una sentencia if en algún sitio que fuerce a la función a volver sin que se ejecute la llamada recursiva. Si no se hace así, la función nunca devolverá el control una vez que se le ha llamado. Es un error muy común el escribir funciones recursivas sin un if.

Page 20: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

ARRAYS

Los Arrays son variables estructuradas como cadena de caracteres, donde cada elemento se almacena de forma consecutiva en un número de notaciones.

Declarar y crear un array

El formato para declarar un array unidimensional es:tipo nombre[n];dónde: n >= 1Para acceder a un elemento del array:nombre[i];dónde: 0 <= i < n

Arrays de dos dimensiones

Un array en C puede tener una, dos o más dimensiones. Por ejemplo, un array de dosdimensiones también denominado matriz, es interpretado como un array(unidimensional) de dimensión "f" (número de filas), donde cada componente es unarray (unidimensional) de dimensión "c" (número de columnas). Un array de dosdimensiones, contiene, pues, "f*c" componentes.

Cadenas de caracteres

En C no existe un tipo predefinido para manipular cadenas de caracteres (string). Sinembargo, el estándar de C define algunas funciones de biblioteca para tratamiento decadenas.Una cadena en C es un array de caracteres de una dimensión (vector de caracteres) quetermina con el carácter especial ‘\0’ (cero).El formato para declarar una cadena es:char nombre[n];dónde: n >= 1 y representa a la longitud-1 real de la cadena.

Matrices:Una matriz es un vector de vectores o un también llamado array bidimensional. Una matriz bidimensional es una lista de matrices unidimensionales.Su sintaxis es la siguiente:

Tipo nombre [tamaño 1] [tamaño 2]...;

Page 21: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

La matriz bidimensional se puede representar con una columna y una fila sin embargo las matrices tridimensionales se utilizan más para objetos gráfico en 3D.

Algoritmos de Ordenación y búsqueda:Existen diferentes algoritmos de ordenación elementales o básicos cuyos detalles de implementación se pueden encontrar en diferentes libros de algoritmos. Los algoritmos básicos de ordenación más simples y clásicos son:

• Ordenación por selección.• Ordenación por inserción.• Ordenación por burbuja.

Existen diferentes algoritmos de búsqueda y la elección depende de la forma en que se encuentren organizados los datos: si se encuentran ordenados o si se ignora su disposición o se sabe que están al azar. También depende de si los datos a ordenar pueden ser accedidos de modo aleatorio o deben ser accedidos de modo secuencial.

Estructuras y uniones:Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aquí hay ejemplo de la declaración de una estructura:

struct mystruct variable; { int int_member; double double_member; char string_member[25]; } variable;La definición de "unión" es similar a la de "estructura", La diferencia entre las dos es que, en una estructura, los miembros ocupan diferentes áreas de la memoria, pero en una unión, los miembros ocupan la misma área de memoria. Entonces como ejemplo:

union { int i; double d; } u;

Puntero (Apuntadores):

En ciencias de la computación, un puntero es un objeto del lenguaje de programación, cuyo valor se refiere a (o "apunta a") otro valor almacenado en otra parte de la memoria del ordenador utilizando su dirección. Un puntero referencia a una ubicación en memoria, y a la obtención del valor almacenado en esa ubicación se la conoce como des referenciación del puntero.

La sintaxis básica para definir un puntero es:

Page 22: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

int * ptr;

En C y C++ los punteros son variables que almacenan direcciones y pueden ser null. Cada puntero tiene un tipo que apunta, pero el programador puede convertir libremente entre tipos de puntero (pero no entre un puntero a función y no la función de tipo de puntero). Debido a que el lenguaje C no especifica una inicialización implícita para los objetos de duración automática de almacenamiento, frecuentemente se debe prestar atención para asegurarse de que la dirección a la que ptr puntea es válida; por eso a veces se sugiere que un puntero pueda ser explícitamente inicializado al valor de puntero nulo, que es tradicionalmente especificado en C con la macro estandarizado NULL:

int *ptr = NULL;

Asignación dinámica de memoria:La reserva de memoria dinámica añade una gran flexibilidad a los programas porque permite al programador la posibilidad de reservar la cantidad de memoria exacta en el preciso instante en el que se necesite, sin tener que realizar una reserva por exceso en prevención a la que pueda llegar a necesitar.Dado que los punteros se pueden aplicar a cualquier tipo de variable se puede entonces realizar una asignación de memoria dinámica para cualquier variable. La función malloc es la que se utiliza para realizar una reserva de memoria y se encuentra en el archivo de cabecera <stdlib.h>.

Reserva de memoria de un dato simple: #include<stdlib.h>main() {

int *dato_simple;dato_simple = (int *) malloc (1*sizeof(int));}

Cadenas:Cadena, cadena de caracteres, palabras, ristra de caracteres o frase (string, en inglés) es una secuencia ordenada de elementos que pertenecen a un cierto lenguaje formal o alfabeto análogas a una fórmula o a una oración. Son de longitud arbitraria, aunque finitas. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos).Existen 2 tipos de cadenas; dinámicas (pueden alterar su longitud durante el tiempo de ejecución) y estáticas (su longitud es fija a lo largo del tiempo de ejecución).

Ejemplos de operaciones comunes:AsignaciónAsignar una cadena a otra.

Page 23: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

char *strcpy(char [], const char[]);

ConcatenaciónUnir dos cadenas de caracteres.

strcat(cadena1,cadena2); strcat(cadena1, cadena3);

Número de caracteres de una cadena

int strlen(const char[]);

ComparaciónComparar dos cadenas en orden lexicográfico.

int strcmp(const char[], const char[]);

Multiplicar una cadenaRepetir varias veces una cadena (aunque no se puede en C, aquí unos ejemplos en otros lenguajes).

$puntos ="." x 5 # pone 5 puntos en Perl.puntos: = Generator generateJoin: '.' repeat: 5. # Genera una cadena de 5 puntos en Smalltalk.puntos = "." * 5 # Genera una cadena de 5 puntos en Python.

Entrada y salida de archivos:Ficheros:

fopenEsta función sirve para abrir y crear ficheros en disco.

El prototipo correspondiente de fopen es:

FILE * fopen (const char *filename, const char *opentype);fcloseEsta función sirve para poder cerrar un fichero que se ha abierto.

El prototipo correspondiente de fclose es:

int fclose (FILE *stream);

feofEsta función sirve para determinar si el cursor dentro del archivo encontró el final (end of file). Existe otra forma de verificar el final del archivo que es comparar el carácter que trae fgetc del archivo con el macro EOF declarado dentro de stdio.h, pero este método no ofrece la

Page 24: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

misma seguridad (en especial al tratar con los archivos "binarios"). La función feof siempre devolverá cero (Falso) si no es encontrado EOF en el archivo, de lo contrario regresará un valor distinto de cero (Verdadero).

El prototipo correspondiente de feof es:

int feof (FILE *fichero);

Y finalmente, rewind.Literalmente significa "rebobinar", sitúa el cursor de lectura/escritura al principio del archivo.

El prototipo correspondiente de rewind es:

void rewind (FILE *fichero)Lectura:fgetcEsta función lee un carácter a la vez del archivo que está siendo señalado con el puntero *archivo. En caso de que la lectura sea exitosa devuelve el carácter leído y en caso de que no lo sea o de encontrar el final del archivo devuelve EOF.

El prototipo correspondiente de fgetc es:

char fgetc (FILE *archivo);fgetsEsta función está diseñada para leer cadenas de caracteres. Leerá hasta n-1 caracteres o hasta que lea un cambio de línea '\n' o un final de archivo EOF. En este último caso, el carácter de cambio de línea '\n' también es leído.

El prototipo correspondiente de fgets es:

char *fgets (char *buffer, int tamaño, FILE *archivo);

freadsize_t fread (void * ptr, size_t size, size_t count, FILE * stream);

Esta función lee un bloque de una "stream" de datos. Efectúa la lectura de un arreglo de elementos "count", cada uno de los cuales tiene un tamaño definido por "size". Luego los guarda en el bloque de memoria especificado por "ptr". El indicador de posición de la cadena de caracteres avanza hasta leer la totalidad de bytes. Si esto es exitoso la cantidad de bytes leídos es (size*count).

fscanfLa función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma de un fichero en lugar del teclado.

El prototipo correspondiente de fscanf es:

int fscanf (FILE *fichero, const char *formato, argumento, ...);

Page 25: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Escritura:

fputcEsta función escribe un carácter a la vez del archivo que está siendo señalado con el puntero *archivo. El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso contrario será EOF.

El prototipo correspondiente de fputc es:

int fputc (int carácter, FILE *archivo);

fputsLa función fputs escribe una cadena en un fichero. la ejecución de la misma no añade el carácter de retorno de línea ni el carácter nulo final. El valor de retorno es un número no negativo o EOF en caso de error. Los parámetros de entrada son la cadena a escribir y un puntero a la estructura FILE del fichero donde se realizará la escritura.

El prototipo correspondiente de fputs es:

int fputs (const char *buffer, FILE *archivo).

fwriteEsta función está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de la misma longitud almacenados a partir de una dirección de memoria determinada. El valor de retorno es el número de registros escritos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria de donde se obtendrán los datos a escribir, el tamaño de cada registro, el número de registros a escribir y un puntero a la estructura FILE del fichero al que se hará la escritura.

El prototipo correspondiente de fwrite es:

size_t fwrite (void *puntero, size_t tamano, size_t cantidad, FILE *archivo);

fprintfLa función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige a un archivo en lugar de a la pantalla.

El prototipo correspondiente de fprintf es:

int fprintf (FILE *archivo, const char *formato, argumento, ...);

Organización de datos en un archivo:Es la forma en que los registros se almacenan o también se conoce como la forma en que se va a estructuras los datos en un archivo especifico.

Page 26: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

Acceso Secuencial.Es el acceso a los archivos según el orden de su almacenamiento de los registros esto quiere decir que es uno tras otro.Acceso Directo.Este acceso implica que un registro determinado ya que esto no implica la consulta de los registros precedentes esto se refiere que el soporte o el almacenamiento son direccioanables.

Tipos de datos TAD/objetos.Un tipo de dato abstracto (TDA) o tipo abstracto de datos (TAD) es un modelo matemático compuesto por una colección de operaciones definidas sobre un conjunto de datos para el modelo. Algunos ejemplos del uso de TDA en programación son:Conjuntos: implementación de conjuntos con sus operaciones básicas (unión, intersección y diferencia), operaciones de inserción, borrado, búsqueda...Árboles Binarios de Búsqueda: Implementación de árboles de elementos, utilizados para la representación interna de datos complejos. Aunque siempre se los toma como un TDA separado son parte de la familia de los grafos.Pilas y Colas: Implementación de los algoritmos FIFO y LIFO.Grafos: Implementación de grafos; una serie de vértices unidos mediante una serie de arcos o aristas.

Listas enlazadas: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.

Tipos de listas enlazadas: Listas enlazadas lineales Listas simples enlazadas Listas doblemente enlazadas Listas enlazadas circulares Listas enlazadas simples circulares Listas enlazadas doblemente circulares Nodos centinelas

Pilas y Colas:Pilas:

Page 27: disenowebakus.net · Web viewEn general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Existen 2 tipos de cadenas; dinámicas

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.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. Para gestionar la cola utilizaremos 3 punteros (para la pila solo eran necesarios 2).