SlideShare uma empresa Scribd logo
1 de 66
Lenguaje C
Realizado por:
Camilo figueroa
Preliminares
Presentación
 El lenguaje C es uno de los lenguajes de programación más utilizados a
nivel universal y es el punto de partida incluso de otros lenguajes y
aplicaciones informáticas.
 En este curso contarás con la teoría suficiente para desarrollar e
implementar algoritmos en lenguaje C y adentrarte en el maravilloso
mundo de la programación.
 El lenguaje C no se puede considerar un lenguaje difícil pero su alto
potencial, elevada flexibilidad y sus enormes posibilidades deben ser
manejadas con precaución. Para esto se requiere un correcto
conocimiento de todos los conceptos que maneja, con el objeto de
realizar una programación satisfactoria.
Preliminares
Recursos
Los recursos que vamos a utilizar en lenguaje c :
 Computador.
 Software Borland C cuyo instalador se encuentra incluido en el CD en el
directorio software.
 Ejercicios propuestos con el fin de aplicar los conocimientos adquiridos.
Contenido
Temas
 Introducción.
 Características del Lenguaje C
 Estructura de un Programa en C
 Tipos de Datos
 Entrada y Salida por consola
 Operadores y Expresiones
 Tipos de Sentencias
 Punteros
 Arreglos
 Cadena de Caracteres
 Funciones
 Estructuras
Conceptos Básicos del Lenguaje C
enorme biblioteca de funciones para entrada/salida, tratamiento de
textos, matemáticas, etc.
 C es apreciado por la eficiencia del código que produce y es el lenguaje
de programación más popular para crear software de sistemas, aunque
también se utiliza para crear aplicaciones.
Introducción
 El Lenguaje C fue creado entre 1970 y 1972 por Brian Kernighan y
Dennis Ritchie.
 Desde su nacimiento se fue implantando como el lenguaje de
programación universal, ya que conjugaba tanto los lenguajes de alto
nivel como los de bajo nivel.
 A mediados de los ochenta el C se convierte en un estándar internacional
ISO. Este estándar incluye tanto la definición del lenguaje como una
Conceptos Básicos del Lenguaje C
Características del Lenguaje C
Sus principales características son:
Programación estructurada
Economía de las expresiones
Abundancia en operadores y tipos de datos.
Codificación en alto y bajo nivel simultáneamente.
Reemplaza ventajosamente la programación en ensamblador (assembler).
Utilización natural de las funciones primitivas del sistema.
No está orientado a ningún área en especial.
Producción de código objeto altamente optimizado.
Facilidad de aprendizaje.
Ingreso a Borland C
Archivo Nuevo
Guardar Programa
Conceptos Básicos del Lenguaje C
Estructura de un programa en C
En general, un programa en C consta de las siguientes partes:
 Directivas al preprocesador o librerías.
 Definición de tipos de datos.
 Declaración de variables.
 Definición de funciones.
Cualquier programa debe poseer una función, llamada main, que es la
función que toma el control cuando se ejecuta el programa.
Conceptos Básicos del Lenguaje C
Estructura de un programa en C
Veamos ahora el código línea por línea:
#include: es lo que se denomina una directiva de preprocesador o librería, y le indica al compilador
que "incluya" el archivo o biblioteca stdio.h (standard input - output, entrada y salida estándar),
donde se encuentra definida la función printf que se utilizaen el programa.
main(): es una función. Se encuentra en todos los programas en C y es siempre la primera que
toma el control de estos.
"{}": las llaves delimitan el código que corresponde a la funciónmain.
printf: muestra en pantalla el texto que se encuentra entre los paréntesis y las comillas, en este
caso Mi primer programa.
getch(): permite que el programa haga una pausa y no se cerrará hasta que se pulse una tecla.
Conceptos Básicos del Lenguaje C
Terminología y Elementos
 Variables: son un espacios de almacenamiento para guardar valores.
Una variable también es llamada identificador cuyo nombre se puede
conformar por letras, dígitos, guiones bajo y no debe tener caracteres
especiales.
 Constantes: a diferencia de las variables, guardan un valor que no se
puede alterar a lo largo del programa.
 Sentencias: es un conjunto de identificadores, etc., escritos en una línea.
En C las sentencias terminan con punto y coma ";".
 Operadores: son todos aquellos símbolos para realizar operaciones
aritméticas o lógicas: +, *, /, etc.
Conceptos Básicos del Lenguaje C
Terminología y Elementos
 Comentarios: sirven sólo para aclarar aspectos del código y son
ignorados por el compilador. Son de gran importancia, ya que si el código
fuente debe ser modificado después de un tiempo, o si es pasado de un
programador a otro, los comentarios pueden facilitarle mucho la tarea de
entenderlo. Los comentarios van delimitados por las marcas "/*" y "*/“ si
es un párrafo o // si es una sentencia, por ejemplo:
// Esto es un comentario
 Tabulación: Consiste en estructurar mediante tabulaciones el código del
programa para facilitar su lectura. El criterio general de tabulación es
tabular más las sentencias subordinadas a otras.
 Nota: es importante que al escribir un programa se lo haga en
minúsculas ya que C es sensible a mayúsculas y minúsculas. Además no
se deberá utilizar palabras reservadas como variables.
Conceptos Básicos del Lenguaje C
Tipos de Datos
 Dentro del Lenguaje C se puede manipular los siguientes datos.
TIPO EJEMPLO TAMAÑO
EN
BYTES
VALOR MINIMO VALOR MAXIMO
char ´e´ 1 0 255
short -17 2 -128 127
int 1456 2 -32768 32767
unsigned int 4653 2 0 65535
long 36214 2 -214748368 2147483637
float 12.5 4 3.4 * 10-38 3.4 * 1038
double 0.00006 8 1.7*10-308 1.7*10-308
long double 1 e-8 8 3.4 * 10-4932 1.1 *104932
Conceptos Básicos del Lenguaje C
Variables
 Una variable es un espacio de almacenamiento o posición de memoria
donde se almacena un valor de cierto tipo de dato. Para hacer uso de
una variable es necesario declararla al inicio del programa como se
muestra en el ejemplo:
 Existen variables locales y variables
globales. Las variables locales son
aquellas que se declaran dentro de
las funciones y solo pueden ser
visualizadas dentro de ellas
mientras que las globales se
declaran fuera de la función y
pueden ser visualizadas desde
cualquier parte del programa.
Entrada y Salida por Consola
Entrada/Salida Standard
 Los programas interactúan con el exterior a través de datos de entrada y
salida. La biblioteca que proporciona estas facilidades es la <stdio.h>. La
salida de los programas se lo hace a través del monitor y la entrada a
través del teclado.
 La función printf() visualiza los datos en pantalla los datos del programa.
 Para colocar mensajes se debe colocar: printf(“mensaje”); pero si se
desea imprimir un dato se necesita especificar el tipo de dato a través de
una cadena de control: printf( cadena_de_control,dato);
Entrada y Salida por Consola
Salida
 Las cadenas de control que
acompañan al printf() de acuerdo
al tipo de dato son los siguientes:
Cadena de
control
Dato
%d dato entero decimal
%o El dato entero se convierte a octal
%x El dato entero se conviertea
hexadecimal
%u Dato unsigned int
%c Dato char
%e Dato en notación científica
%f Dato tipo float
%g Dato tipo float
%s Cadena de caracteres
%ld Dato tipo long int
%lf Dato double
Entrada y Salida por Consola
 printf(); también utiliza
secuencias de escape para
visualizar caracteres que no
están representados por
símbolos y son:
Salida
Secuencia
de Escape
Significado
a alarma
b retroceso de espacio
f avance de página
n retorno de carro y avance de línea
r retorno de carro
t tabulación
v tabulación vertical
 barra inclinada
? signo de interrogación
” comillas
Entrada y Salida por Consola
Entrada
 Para la entrada o ingreso de datos se lo hace a través de: scanf(); al igual que
el printf(); necesita una cadena de control, el & y el nombre de la variable:
scanf(“%d”,&a);
Operadores y Expresiones
Operadores
 Los programas de computadora se apoyan esencialmente en la realización de
numerosas operaciones aritméticas y matemáticas de diferente complejidad.
 Existen varios tipos de operadores:
- Operadores aritméticos, lógicos y relacionales
- Operadores condicionales
- Operador asignación, incrementación y decrementación
Operadores y Expresiones
Operadores Áritméticos
 Sirven para hacer operaciones aritméticas básicas. Los operadores aritméticos siguen
reglas de prioridad, que especifican la precedencia de las operaciones artiméticas. Los
operadores aritméticos son:
operador tipo ejemplo
+ suma x+y
- resta b-d
* multiplicación a*3
/ división i/2
% mod s%2
Operadores y Expresiones
Operadores Lógicos
 Se utilizan con expresiones para devolver un valor verdadero o un valor falso. También se
denominan booleanos.
operador tipo ejemplo
! not !(x+y) Produce falso si su
operando es verdadero
&& and (b-d) && (c==-1) Produce verdadero si
ambos operandos son
verdadero y falso si
cualquiera de los
operandos es falso.
¦¦ or (a*3) ¦¦ (z==5) Produce verdadero si
cualquiera de los operando
es verdadero y falso si
ambos operandos son
falsos
Operadores y Expresiones
Operadores Relacionales
 Son utilizados normalmente en sentencias de selección o repetición. Utilizando estos
operadores se realizan operaciones de igualdad, desigualdad y diferencias relativas.
operador tipo ejemplo
== igual a d==3;
!= diferente f!=g;
> mayor a>4;
< menor b<7;
>= mayor igual a>=9;
<= menor igual c<=10;
Operadores y Expresiones
Operador Condicional
 Es un operador ternario que devuleve un valor dependiendo de la condición:
 Sintaxis:
expresion_c ? expresion_v : expresion_f;
Si la expresion_c es verdadera se realiza la expresion_v y es falsa se realiza la expresion_f
Ejm:
(ventas >5000) ? comision=100 : comision=0;
Si la variable ventas es mayor que 5000 la condición es verdadera y en la variable comisión
se asigna el valor de 100, pero si la variable ventas no es mayor que 5000 entonces en
comisión de coloca 0;
Operadores y Expresiones
Operador Asignación, Incremento, Decremento y Especiales
 Operador Asignación asigna el valor de la expresión derecha a la variable situada a su
izquierda.
Ejm:
i=0;
a=b;
a=b=c=3;
z=z*5;
 Operadores de Incremento y Decremento suman o restan 1 a su argumento.
Ejm:
++n;
--m;
 Operadores Especiales () para llamadas a funciones y el [] para dimensionar arreglos o
cadenas de caracteres.
Ejm:
clrscr();
getch();
sumar(a,b);
Operadores y Expresiones
Expresiones
 Al combinarse operandos y operadores forman las llamadas expresiones. Las mismas que
siguen ciertas reglas de prioridad para ser resueltas y son:
PRECEDENCIA OPERADORES ASOCIATIVIDAD
0 ()[] -> . izq. a derecha
1 sizeof (tipo) ! ~ ++ -- signo* & derecha a izq.
2 * / % izq. a derecha
3 + - izq. a derecha
4 > izq. a derecha
5 >= izq. a derecha
6 == != izq. a derecha
7 & izq. a derecha
8 ^ izq. a derecha
9 | izq. a derecha
10 && izq. a derecha
11 || izq. a derecha
12 ?: derecha a izq.
13 = += -= *= etc derecha a izq.
Estructuras de Control
Tipos de Sentencias
 Tenemos tres tipos de sentencias de programación:
- Sentencias Secuenciales
- Sentencias Repetitivas
- Sentencias Selectivas
 Todos los programas vistos son ejemplos de sentencias secuenciales es decir
tienen instrucciones que se ejecutan una después de la otra.
Estructuras de Control
Sentencias de Selección
 Dentro de las sentencias de selección tenemos la sentencia if.
Sintaxis:
if (expresión)
instrucción;
 La sentencia if funciona de la siguiente manera: cuado se ejecuta una sentencia if
se evalúa la expresión del paréntesis, si esta expresión es verdadera se cumple
la o las instrucciones.
Estructuras de Control
Sentencias de Selección
 Ejemplo:
Estructuras de Control
Sentencias de Selección
El segundo formato de if es if-else y tiene la siguiente sintaxis.
if (expresión)
accion1;
else
accion2;
Ejm:
Estructuras de Control
Sentencias de Selección
La sentencia if también puede ser utilizada para implementar decisiones
que impliquen diferentes alternativas mediante if anidados.
Estructuras de Control
Sentencias de Selección
En la sección de selector solo se podrá trabajar con variables de tipo int o
char. Este tipo de instrucción es ideal para la elaboración de menús.
Ejemplo:
Estructuras de Control
Sentencias de Repetición
 Estas sentencias realizan la repetición o iteración de acciones. Existen tres tipos de ciclos
de repetición: while, do-while, for.
 Sintaxis:
while (condición)
{
instrucción1;
Instrucción2;
}
do
{
instrucción1;
Instrucción2;
} while (condición);
for (inicio; condición; incremento)
{
instrucción1;
Instrucción2;
}
Estructuras de Control
While
 Este bucle tiene una condición la misma que es evaluada en primer lugar, si la
condición es verdadera se ejecuta las instrucciones internas pero si es falsa
salta hacia la siguiente instrucción fuera del bucle.
Estructuras de Control
Do - While
 A diferencia del while este bucle cumple con las instrucciones y luego pregunta
por la condición, si es verdadera regresa al bucle y si es falsa salta a la
siguiente instrucción fuera del bucle.
Estructuras de Control
For
 Este bucle sirve para ejecutar un bloque de sentencias en número fijo de veces.
 En el for tenemos una sección de inicialización de variables, una condición que
permite repetir siempre y cuando sea verdadera,el incremento en donde se
incrementa o decrementa la variable inicializada, y finalmente tenemos las
sentencias las cuales serán ejecutadas en cada iteración.
Estructuras de Control
For
 En el for puedo inicializar una o más variables, así como también colocar 2 o
más condiciones y hasta colocar incementos o decrementos de variables
diferentes.
Así:
for (int i=0; int j=1; i<=n, j==0;i++,j++)
printf(“holan”);
Cuando for no tiene ninguna instrucción se denomina ciclo infinito.
Así:
for( ; ; )
 No se debe colocar punto y coma luego del paréntesis del for debido a que no
se ejecuta.
Punteros
 El valor de cada variable está almacenado en un lugar determinado de
la memoria, caracterizado por una dirección (que se suele expresar con
un número hexadecimal). El computador mantiene una tabla de
direcciones que relaciona el nombre de cada variable con su dirección
en la memoria.
Nombre variable Dirección
nombre 0x0013ff70
edad 0x0013ff7c
Ejemplo de direcciones de memoria de
las variables nombre y edad
Punteros
Los punteros son un tipo especial de variables destinadas a contener
direcciones de variables.
Por tanto, la variable de tipo puntero:
 contiene la dirección de una variable.
 permite una codificación más compacta y eficiente.
Ejm:
int *p; //declaración del puntero p
Un puntero ocupa 2 bytes de memoria indiferentemente de la dirección
que contenga o la variable a la que apunte.
Punteros
Cuando se trabaja con punteros hay dos operadores que se debe tomar
muy en cuenta el operador & y el operador *.
 El operador dirección (&):
- Permite hallar la dirección de la variable a la que se aplica.
- Solo es aplicable a objetos que están en memoria
 El operador de indirección (*):
- Permite acceder al valor depositado en la zona de memoria a la que
apunta un puntero.
Punteros
Es de importancia saber que los punteros deben declarar o
definir de acuerdo con el tipo del dato al que apunta.
Por ejemplo, un puntero a una variable de tipo int se declara del
siguiente modo:
int *puntero;
Ahora que está claro el concepto de puntero vamos a ver su
funcionamiento a través de un ejemplo.
void main() {
int x=1,y=2;
int *p;
p=&x;
y=*p;
*p=(y+2);
}
0x0018ff04
0x0018ff00
0x0018ff02
p
RAM
1
Y=2
3
X=1
Arreglos
 Un arreglo permite agrupar datos del mismo tipo y bajo un mismo
nombre.
Sintaxis:
double a[5];
En esta sentencia se declara un arreglo de tipo double llamado “a” de
diez posiciones, donde cada posición puede almacenar un double.
Para poder acceder a las posiciones del arreglo se lo realiza a través de
subíndices.
Graficamente un arreglo se representa:
0 1 2 3 4 subíndices
5.4 8.2 3.4 5.8 7.5
Valores del arreglo
Arreglos
 El tamaño de un vector puede definirse con cualquier expresión
constante entera.
 En C no se puede operar con todo un vector o toda una matriz como
una única entidad, sino que hay que tratar sus elementos uno a uno por
medio del ciclo for.
 Lectura de una arreglo:
for (int i=0; i<n; i++) {
printf(“Ingrese el elemento:n“);
scanf(“%d“,&a[i]);
}
donde n es la dimensión del arreglo.
 Impresión de una arreglo:
for (int i=0; i<n; i++) {
printf(“%d“,a[i]);
}
donde n es la dimensión del arreglo.
Matrices
0
1
4 7 1 3
5 8 10 2
filas
 Las matrices se declaran de forma análoga a los vectores, con
corchetes independientes para cada subíndice. Los valores tanto de filas
como de columnas comienzan desde cero, al igual que los vectores.
columnas
0 1 2 3
Declaración:
tipo_dato nom_matriz [filas][columnas];
Ejm:
int matriz [2][4];
Matrices
 Lectura de una matriz:
for (int i=0; i<nfilas; i++) {
for (int j=0; j<ncolumnas; j++){
printf(“Ingrese el elemento:n“);
scanf(“%d“,&a[i][j]);
}
}
 Impresión de una matriz:
for (int i=0; i<nfilas; i++) {
for (int j=0; j<ncolumnas; j++)
printf(“%d“,a[i][j]);
}
Cadena de Caracteres
Una cadena de caracteres es un arreglo de tipo char, pero se diferencia de un
arreglo en que posee un último caracter NULL que marca el final de mi cadena
de caracteres. Además dentro de las cadenas de caracteres tenemos funciones
especiales para el manejo de las mismas.
- Entre las principales funciones de cadena de carcteres están:
strlen()
strcat()
strcmp()
strcpy()
Se debe incluir la biblbioteca string.h para poder utlizarlas
Cadena de caracteres
Función strlen();
 El prototipo de esta función es como sigue: unsigned strlen(const char *s);
 Su nombre proviene de string length, y su misión es contar el número de
caracteres de una cadena, sin incluir el '0' final.
 El paso del argumento se realiza por referencia, pues como argumento se
emplea un puntero a la cadena (tal que el valor al que apunta es constante
para la función; es decir, ésta no lo puede modificar), y devuelve un entero sin
signo que es el número de caracteres de la cadena.
Cadena de caracteres
Función strcat();
 El prototipo de esta función es como sigue:
char *strcat(char *s1, const char *s2);
 Su nombre proviene de string concatenation, y se emplea para unir dos
cadenas de caracteres poniendo s2 a continuación de s1. El valor de retorno
es un puntero a s1.
 Los argumentos son los punteros a las dos cadenas que se desea unir. La
función almacena la cadena completa en la primera de las cadenas. Por esta
razón se debe procurar tener suficiente espacio para guardar toda la cadena
Cadena de caracteres
Función strcmp(); strcat();
El prototipo de la función strcmp() es como sigue:
int strcmp(const char *s1, const char *s2)
 Su nombre proviene de string comparison.
 Sirve para comparar dos cadenas de caracteres.
 Como argumentos utiliza punteros a las cadenas que se van a comparar.
 La función devuelve cero si las cadenas son iguales,
 Un valor menor que cero si s1 es menor en orden alfabético que s2,
 y un valor mayor que cero si s1 es mayor que s2.
Funciones
Función strcpy();
 El prototipo de la función strcpy() es como sigue:
char *strcpy(char *s1, const char *s2)
 Su nombre proviene de string copy y se utiliza para copiar cadenas.
 Utiliza como argumentos dos punteros a carácter: el primero es un puntero a la
cadena copia, y el segundo es un puntero a la cadena original.
 El valor de retorno es un puntero a la cadena copia s1.
 Es muy importante tener en cuenta que en C no se pueden copiar cadenas de
caracteres directamente, por medio de una sentencia de asignación. Por
ejemplo, sí se puede asignar un texto a una cadena en el momento de la
declaración:
char cadena[] = "Esto es una cadena"; //correcto
 Otro ejemplo
 char cadena1[20] = "Esto es una cadena";
 char cadena2[20];
Funciones
Funciones
En forma general podríamos decir que:
 Una función es un código independiente del programa principal, y su objetivo
es la realización de una tarea específica.
 Para llamar a una función se debe invocar con el nombre acompañado por los
parámetros (en el caso que los necesite).
 Con el uso de funciones se puede dividir el programa en partes de finalidad
concreta.
 Las funciones facilitan el desarrollo y mantenimiento de programas.
 Ahorran memoria.
Funciones
Definición de una función
Para definir una función se debe hacer de la siguiente forma:
Tipo_valor_retorno nombre_funcion(lista de argumentos con tipos)
{
declaración de variables y/o de otras funciones
código ejecutable
return (expresión); // optativo
}
 La declaración de variables se hace al comienzo y ellas sólo son visibles dentro
de la función.
 El código ejecutable es el conjunto de instrucciones que deben ejecutarse cada
vez que la función es llamada.
 La lista de argumentos con tipos, es una lista de declaraciones de variables,
precedidas por su tipo correspondiente y separadas por comas (,).
Funciones
Una vez ejecutada la función, ésta puede que retorne un valor, este valor
debe quedar especificado antes del nombre de la función.
Si no se especifica un tipo especial se asume por defecto el tipo int. En el
caso de no querer retornar valor alguno la función debe declararse como
void.
La sentencia return permite volver al procedimiento donde fue llamada la
función.
 Return permite devolver valores de variables como resultado de la
función
 No puede devolver matrices o arreglos, para esto se pueden retornar
punteros a estos arreglos.
 Return permite devolver estructuras.
Funciones
Paso de argumentos y parámetros de funciones
Cuando es llamada una función los argumentos que le son entregados
desde del programa principal pueden ser de dos formas por valor o por
dirección.
Se envía parámetros por valor cuando se necesita que estos valores sean
usados dentro de la función. Ejm: función sumar, restar, factorial,etc.
Se envía parámetros por dirección o referencia cuando estos valores va a
ser modificados dentro de la función. Ejm: función intercambio de valores.
A continuación vamos a ver unos ejemplos para poder diferenciar los dos
tipos de envío de argumentos.
Funciones
int sumar(int x,int y)
{
return(x+y);
}
Paso de argumentos por valor
void main(){
int a,b;
printf(“nIngrese el primer valor”);
scanf(“%d”,&a);
printf(“nIngrese el segundo valor”);
scanf(“%d”,&b);
c=sumar(a,b);
printf(“nEl resultado es:%d”,c);
getch();
}
Funciones
void intercambio(int *x,int *y)
{
int aux;
aux=*x;
*x=*y;
*y=aux;
}
Paso de argumentos por dirección o referencia
void main(){
int a,b;
printf(“nIngrese el primer valor”);
scanf(“%d”,&a);
printf(“nIngrese el segundo valor”);
scanf(“%d”,&b);
intercambio(&a,&b);
printf(“n%d”,a);
printf(“n%d”,b);
getch();
}
Estructuras
Definición
 Es un tipo de dato compuesto por un grupo de datos donde cada uno de
los cuales puede ser un tipo distinto.
 Sirven para organizar datos complicados
 A cada componente de la estructura se le llama campo
 A través de las estructuras podemos crear nuestros propios tipos de datos.
Ejemplos:
Datos de una persona
- nombre
- dirección
- teléfono
Punto en el plano cartesiano
- componentex
- componentey
Estructuras
Creación de una estructura
Para crear una estructura se utiliza la palabra reservadastruct.
Ejm:
struct fecha{
int dia;
char mes[14];
int anyo;
};
Otro ejemplo:
struct punto{
int x;
int y;
};
struct rectangulo{
struct punto pt1;
struct puntopt2;
};
Estructuras
Trabajar con estructuras
La declaración de la estructura se la realiza fuera del void main(); luego de las bibliotecas. Y
las variables se definen dentro del void main().
struct complejo{
double x;
double y;
} ;
void main() {
complejo a,b;
}
Estructuras
Acceso a los campos de una estructura
 Como la estructura es un conjunto de diferentes tipos de datos llamados campos, a
cada uno de esos se accede mediante un punto.
struct complejo{
double x;
double y;
} ;
void main() {
complejo a; // a es una variable de tipo complejo por lo tanto tiene los camposx,y
printf (“Ingrese la parte racional”);
scanf(“%d”,&a.x);
printf (“Ingrese la parteimaginaria”);
scanf(“%d”,&a.b);
}
Estructuras
Punteros a estructuras
 La utilización de pnteros para apuntar estructuras es muy utilizado de esta manera se
optimiza el ingreso y la manipulación de los datos. El acceso a los puntos se realiza a
través del operador flecha ->.
Ejm:
struct complejo{
doublex;
doubley;
} ;
void main() {
complejo a;
complejo*p;
p=&a;
p->a=4;
p->b=5;
}
Estructuras
Listas Simples
 Una lista enlazada simple es una colección o secuencia de elementos
dispuestos uno detrás de otro conectados entre sí a través de punteros.
Los elementos de una lista se denominan nodos, un nodo se compone
de dos campos: el primero contiene la información y el segundo es el
puntero que se conecta con los demás nodos de la lista.
 Una lista enlazada simple tiene un inicio y un final, el inicio es un
puntero llamado cab que es la cabecera de mi lista y el final de la
misma es el último nodo cuyo campo sig apunta a NULL.
6
cab
4 1 7
Estructuras
Listas Simples
 Para crear una lista enlazada simple partimos de un puntero cabecera cab,
al cual se insertan los demás nodos conforme se van creando.
 En este tipo de listas tenemos funciones para insertar o crear nodos,
eliminar nodos, buscar nodos, vaciar la lista, etc. Todas esto se realiza a
través de funciones ya que se trabaja con memoria dinámica, la misma
que así como se crea o reserva memoria también se tiene que eliminar o
liberar memoria.
Estructuras
Listas Circulares
 Este tipo de lista se diferencia de la anterior en que la cabecera se
encuentra en el útlimo nodo y el campo siguiente del último nodo se
encuentra conectado al primer nodo de la lista, formando así una lista
circular. La principal ventaja es que se puede recorre la lista en modo
circular. Al igual que las anteriores, las listas circulares también tiene
sus propias funciones para insertar, buscar, eliminar y vaciar nodos.
6
cab
4 1 7
Estructuras
Listas Doblemente enlazadas
 Es una lista que tiene dos campos punteros el uno que apunta al anterior
nodo y el otro al siguiente, de manera que se pueda realizar un recorrido
de la lista hacia adelante y hacia atrás.También podemos hacer la
inserción de un nodo, la eliminación, búsquedas y vaciado de estas listas.
6
cab
4 1 7
 Para comprender un poco más sobre el tema de listas simples, circulares y
doblemente enlazadas le invito a estudiar el manual diponible en el CD en
formato pdf directorio Listas, en donde se encuentran todas las funciones
con respecto al tema de listas.

Mais conteúdo relacionado

Mais procurados

Lenguaje c
Lenguaje cLenguaje c
Lenguaje cwuaro1
 
Bucles en python
Bucles en pythonBucles en python
Bucles en pythonElim Aqp
 
diapositivas algoritmos
diapositivas algoritmos diapositivas algoritmos
diapositivas algoritmos TiffanyMartinez
 
CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION Katherine Parra
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
Tipos De Ensambladores
Tipos De EnsambladoresTipos De Ensambladores
Tipos De EnsambladoresSpiderHal
 
Introducción a html
Introducción a htmlIntroducción a html
Introducción a htmlromeprofe
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpuIsaí Beto Matz Mijes
 
Mapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CMapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CCésar Ojeda
 
Resolver Problemas Por Medio De La Ingeniería De Sistemas
Resolver Problemas Por Medio De La Ingeniería De SistemasResolver Problemas Por Medio De La Ingeniería De Sistemas
Resolver Problemas Por Medio De La Ingeniería De SistemasAndrés Felipe Montoya Ríos
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srtCarlos Solano
 
Microsoft solutions framework
Microsoft solutions frameworkMicrosoft solutions framework
Microsoft solutions frameworkNinoska18
 
Principios de programa en lenguaje C
Principios de programa en lenguaje CPrincipios de programa en lenguaje C
Principios de programa en lenguaje CUNLaR
 

Mais procurados (20)

Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Bucles en python
Bucles en pythonBucles en python
Bucles en python
 
diapositivas algoritmos
diapositivas algoritmos diapositivas algoritmos
diapositivas algoritmos
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION
 
Programación 1: funciones en C
Programación 1: funciones en CProgramación 1: funciones en C
Programación 1: funciones en C
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Tipos De Ensambladores
Tipos De EnsambladoresTipos De Ensambladores
Tipos De Ensambladores
 
Introducción a html
Introducción a htmlIntroducción a html
Introducción a html
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpu
 
Mapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CMapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje C
 
Resolver Problemas Por Medio De La Ingeniería De Sistemas
Resolver Problemas Por Medio De La Ingeniería De SistemasResolver Problemas Por Medio De La Ingeniería De Sistemas
Resolver Problemas Por Medio De La Ingeniería De Sistemas
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
 
Microsoft solutions framework
Microsoft solutions frameworkMicrosoft solutions framework
Microsoft solutions framework
 
Principios de programa en lenguaje C
Principios de programa en lenguaje CPrincipios de programa en lenguaje C
Principios de programa en lenguaje C
 
Analizador Léxico en C++
Analizador Léxico en C++Analizador Léxico en C++
Analizador Léxico en C++
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 

Semelhante a Lenguaje c

manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c Liz O
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Jennybeatriz1
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++Tensor
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++Tensor
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++Tensor
 
Tema vi guia de c
Tema vi guia de cTema vi guia de c
Tema vi guia de cMaye Re
 
Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguajeg_torrealba
 
Repaso del lenguaje C++
Repaso del lenguaje C++Repaso del lenguaje C++
Repaso del lenguaje C++g_torrealba
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacionrotflol
 

Semelhante a Lenguaje c (20)

manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c
 
IntroLenguajeC.ppt
IntroLenguajeC.pptIntroLenguajeC.ppt
IntroLenguajeC.ppt
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Practica
PracticaPractica
Practica
 
presentacion
presentacionpresentacion
presentacion
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
 
Lenguajec
LenguajecLenguajec
Lenguajec
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++
 
Clase 1 Lenguaje C++
Clase 1 Lenguaje C++Clase 1 Lenguaje C++
Clase 1 Lenguaje C++
 
Programación en c
Programación en cProgramación en c
Programación en c
 
Tema vi guia de c
Tema vi guia de cTema vi guia de c
Tema vi guia de c
 
Introducción
IntroducciónIntroducción
Introducción
 
Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguaje
 
Repaso del lenguaje C++
Repaso del lenguaje C++Repaso del lenguaje C++
Repaso del lenguaje C++
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Dev c 1 2011
Dev c  1 2011Dev c  1 2011
Dev c 1 2011
 
Turbo c
Turbo cTurbo c
Turbo c
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 

Mais de camilofigueroa14

Metodologia trabajo de investigación
Metodologia trabajo de investigación Metodologia trabajo de investigación
Metodologia trabajo de investigación camilofigueroa14
 
Ejercicios de Estructuras repetitivas
Ejercicios de Estructuras repetitivas Ejercicios de Estructuras repetitivas
Ejercicios de Estructuras repetitivas camilofigueroa14
 
Ejercicios secuenciales (1)
Ejercicios secuenciales (1)Ejercicios secuenciales (1)
Ejercicios secuenciales (1)camilofigueroa14
 
Ejercicios secuenciales (1) cammilo
Ejercicios secuenciales (1) cammiloEjercicios secuenciales (1) cammilo
Ejercicios secuenciales (1) cammilocamilofigueroa14
 
Estructura del Computador
Estructura del Computador Estructura del Computador
Estructura del Computador camilofigueroa14
 

Mais de camilofigueroa14 (7)

Matematica
MatematicaMatematica
Matematica
 
Metodologia trabajo de investigación
Metodologia trabajo de investigación Metodologia trabajo de investigación
Metodologia trabajo de investigación
 
Ejercicios de Estructuras repetitivas
Ejercicios de Estructuras repetitivas Ejercicios de Estructuras repetitivas
Ejercicios de Estructuras repetitivas
 
Ejercicios secuenciales (1)
Ejercicios secuenciales (1)Ejercicios secuenciales (1)
Ejercicios secuenciales (1)
 
Ejercicios secuenciales (1) cammilo
Ejercicios secuenciales (1) cammiloEjercicios secuenciales (1) cammilo
Ejercicios secuenciales (1) cammilo
 
Ingenieria griega
Ingenieria griegaIngenieria griega
Ingenieria griega
 
Estructura del Computador
Estructura del Computador Estructura del Computador
Estructura del Computador
 

Último

Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx170766
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptNombre Apellidos
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processbarom
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potableFabricioMogroMantill
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfssuser202b79
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOwillanpedrazaperez
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxmiguelmateos18
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfalfredoivan1
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALEdwinC23
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacionesRamon Bartolozzi
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZgustavoiashalom
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.pptjacnuevarisaralda22
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOeldermishti
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónmaz12629
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...WeslinDarguinHernand
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 

Último (20)

Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potable
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 

Lenguaje c

  • 2. Preliminares Presentación  El lenguaje C es uno de los lenguajes de programación más utilizados a nivel universal y es el punto de partida incluso de otros lenguajes y aplicaciones informáticas.  En este curso contarás con la teoría suficiente para desarrollar e implementar algoritmos en lenguaje C y adentrarte en el maravilloso mundo de la programación.  El lenguaje C no se puede considerar un lenguaje difícil pero su alto potencial, elevada flexibilidad y sus enormes posibilidades deben ser manejadas con precaución. Para esto se requiere un correcto conocimiento de todos los conceptos que maneja, con el objeto de realizar una programación satisfactoria.
  • 3. Preliminares Recursos Los recursos que vamos a utilizar en lenguaje c :  Computador.  Software Borland C cuyo instalador se encuentra incluido en el CD en el directorio software.  Ejercicios propuestos con el fin de aplicar los conocimientos adquiridos.
  • 4. Contenido Temas  Introducción.  Características del Lenguaje C  Estructura de un Programa en C  Tipos de Datos  Entrada y Salida por consola  Operadores y Expresiones  Tipos de Sentencias  Punteros  Arreglos  Cadena de Caracteres  Funciones  Estructuras
  • 5. Conceptos Básicos del Lenguaje C enorme biblioteca de funciones para entrada/salida, tratamiento de textos, matemáticas, etc.  C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Introducción  El Lenguaje C fue creado entre 1970 y 1972 por Brian Kernighan y Dennis Ritchie.  Desde su nacimiento se fue implantando como el lenguaje de programación universal, ya que conjugaba tanto los lenguajes de alto nivel como los de bajo nivel.  A mediados de los ochenta el C se convierte en un estándar internacional ISO. Este estándar incluye tanto la definición del lenguaje como una
  • 6. Conceptos Básicos del Lenguaje C Características del Lenguaje C Sus principales características son: Programación estructurada Economía de las expresiones Abundancia en operadores y tipos de datos. Codificación en alto y bajo nivel simultáneamente. Reemplaza ventajosamente la programación en ensamblador (assembler). Utilización natural de las funciones primitivas del sistema. No está orientado a ningún área en especial. Producción de código objeto altamente optimizado. Facilidad de aprendizaje.
  • 10.
  • 11. Conceptos Básicos del Lenguaje C Estructura de un programa en C En general, un programa en C consta de las siguientes partes:  Directivas al preprocesador o librerías.  Definición de tipos de datos.  Declaración de variables.  Definición de funciones. Cualquier programa debe poseer una función, llamada main, que es la función que toma el control cuando se ejecuta el programa.
  • 12. Conceptos Básicos del Lenguaje C Estructura de un programa en C Veamos ahora el código línea por línea: #include: es lo que se denomina una directiva de preprocesador o librería, y le indica al compilador que "incluya" el archivo o biblioteca stdio.h (standard input - output, entrada y salida estándar), donde se encuentra definida la función printf que se utilizaen el programa. main(): es una función. Se encuentra en todos los programas en C y es siempre la primera que toma el control de estos. "{}": las llaves delimitan el código que corresponde a la funciónmain. printf: muestra en pantalla el texto que se encuentra entre los paréntesis y las comillas, en este caso Mi primer programa. getch(): permite que el programa haga una pausa y no se cerrará hasta que se pulse una tecla.
  • 13. Conceptos Básicos del Lenguaje C Terminología y Elementos  Variables: son un espacios de almacenamiento para guardar valores. Una variable también es llamada identificador cuyo nombre se puede conformar por letras, dígitos, guiones bajo y no debe tener caracteres especiales.  Constantes: a diferencia de las variables, guardan un valor que no se puede alterar a lo largo del programa.  Sentencias: es un conjunto de identificadores, etc., escritos en una línea. En C las sentencias terminan con punto y coma ";".  Operadores: son todos aquellos símbolos para realizar operaciones aritméticas o lógicas: +, *, /, etc.
  • 14. Conceptos Básicos del Lenguaje C Terminología y Elementos  Comentarios: sirven sólo para aclarar aspectos del código y son ignorados por el compilador. Son de gran importancia, ya que si el código fuente debe ser modificado después de un tiempo, o si es pasado de un programador a otro, los comentarios pueden facilitarle mucho la tarea de entenderlo. Los comentarios van delimitados por las marcas "/*" y "*/“ si es un párrafo o // si es una sentencia, por ejemplo: // Esto es un comentario  Tabulación: Consiste en estructurar mediante tabulaciones el código del programa para facilitar su lectura. El criterio general de tabulación es tabular más las sentencias subordinadas a otras.  Nota: es importante que al escribir un programa se lo haga en minúsculas ya que C es sensible a mayúsculas y minúsculas. Además no se deberá utilizar palabras reservadas como variables.
  • 15. Conceptos Básicos del Lenguaje C Tipos de Datos  Dentro del Lenguaje C se puede manipular los siguientes datos. TIPO EJEMPLO TAMAÑO EN BYTES VALOR MINIMO VALOR MAXIMO char ´e´ 1 0 255 short -17 2 -128 127 int 1456 2 -32768 32767 unsigned int 4653 2 0 65535 long 36214 2 -214748368 2147483637 float 12.5 4 3.4 * 10-38 3.4 * 1038 double 0.00006 8 1.7*10-308 1.7*10-308 long double 1 e-8 8 3.4 * 10-4932 1.1 *104932
  • 16. Conceptos Básicos del Lenguaje C Variables  Una variable es un espacio de almacenamiento o posición de memoria donde se almacena un valor de cierto tipo de dato. Para hacer uso de una variable es necesario declararla al inicio del programa como se muestra en el ejemplo:  Existen variables locales y variables globales. Las variables locales son aquellas que se declaran dentro de las funciones y solo pueden ser visualizadas dentro de ellas mientras que las globales se declaran fuera de la función y pueden ser visualizadas desde cualquier parte del programa.
  • 17. Entrada y Salida por Consola Entrada/Salida Standard  Los programas interactúan con el exterior a través de datos de entrada y salida. La biblioteca que proporciona estas facilidades es la <stdio.h>. La salida de los programas se lo hace a través del monitor y la entrada a través del teclado.  La función printf() visualiza los datos en pantalla los datos del programa.  Para colocar mensajes se debe colocar: printf(“mensaje”); pero si se desea imprimir un dato se necesita especificar el tipo de dato a través de una cadena de control: printf( cadena_de_control,dato);
  • 18. Entrada y Salida por Consola Salida  Las cadenas de control que acompañan al printf() de acuerdo al tipo de dato son los siguientes: Cadena de control Dato %d dato entero decimal %o El dato entero se convierte a octal %x El dato entero se conviertea hexadecimal %u Dato unsigned int %c Dato char %e Dato en notación científica %f Dato tipo float %g Dato tipo float %s Cadena de caracteres %ld Dato tipo long int %lf Dato double
  • 19. Entrada y Salida por Consola  printf(); también utiliza secuencias de escape para visualizar caracteres que no están representados por símbolos y son: Salida Secuencia de Escape Significado a alarma b retroceso de espacio f avance de página n retorno de carro y avance de línea r retorno de carro t tabulación v tabulación vertical barra inclinada ? signo de interrogación ” comillas
  • 20. Entrada y Salida por Consola Entrada  Para la entrada o ingreso de datos se lo hace a través de: scanf(); al igual que el printf(); necesita una cadena de control, el & y el nombre de la variable: scanf(“%d”,&a);
  • 21. Operadores y Expresiones Operadores  Los programas de computadora se apoyan esencialmente en la realización de numerosas operaciones aritméticas y matemáticas de diferente complejidad.  Existen varios tipos de operadores: - Operadores aritméticos, lógicos y relacionales - Operadores condicionales - Operador asignación, incrementación y decrementación
  • 22. Operadores y Expresiones Operadores Áritméticos  Sirven para hacer operaciones aritméticas básicas. Los operadores aritméticos siguen reglas de prioridad, que especifican la precedencia de las operaciones artiméticas. Los operadores aritméticos son: operador tipo ejemplo + suma x+y - resta b-d * multiplicación a*3 / división i/2 % mod s%2
  • 23. Operadores y Expresiones Operadores Lógicos  Se utilizan con expresiones para devolver un valor verdadero o un valor falso. También se denominan booleanos. operador tipo ejemplo ! not !(x+y) Produce falso si su operando es verdadero && and (b-d) && (c==-1) Produce verdadero si ambos operandos son verdadero y falso si cualquiera de los operandos es falso. ¦¦ or (a*3) ¦¦ (z==5) Produce verdadero si cualquiera de los operando es verdadero y falso si ambos operandos son falsos
  • 24. Operadores y Expresiones Operadores Relacionales  Son utilizados normalmente en sentencias de selección o repetición. Utilizando estos operadores se realizan operaciones de igualdad, desigualdad y diferencias relativas. operador tipo ejemplo == igual a d==3; != diferente f!=g; > mayor a>4; < menor b<7; >= mayor igual a>=9; <= menor igual c<=10;
  • 25. Operadores y Expresiones Operador Condicional  Es un operador ternario que devuleve un valor dependiendo de la condición:  Sintaxis: expresion_c ? expresion_v : expresion_f; Si la expresion_c es verdadera se realiza la expresion_v y es falsa se realiza la expresion_f Ejm: (ventas >5000) ? comision=100 : comision=0; Si la variable ventas es mayor que 5000 la condición es verdadera y en la variable comisión se asigna el valor de 100, pero si la variable ventas no es mayor que 5000 entonces en comisión de coloca 0;
  • 26. Operadores y Expresiones Operador Asignación, Incremento, Decremento y Especiales  Operador Asignación asigna el valor de la expresión derecha a la variable situada a su izquierda. Ejm: i=0; a=b; a=b=c=3; z=z*5;  Operadores de Incremento y Decremento suman o restan 1 a su argumento. Ejm: ++n; --m;  Operadores Especiales () para llamadas a funciones y el [] para dimensionar arreglos o cadenas de caracteres. Ejm: clrscr(); getch(); sumar(a,b);
  • 27. Operadores y Expresiones Expresiones  Al combinarse operandos y operadores forman las llamadas expresiones. Las mismas que siguen ciertas reglas de prioridad para ser resueltas y son: PRECEDENCIA OPERADORES ASOCIATIVIDAD 0 ()[] -> . izq. a derecha 1 sizeof (tipo) ! ~ ++ -- signo* & derecha a izq. 2 * / % izq. a derecha 3 + - izq. a derecha 4 > izq. a derecha 5 >= izq. a derecha 6 == != izq. a derecha 7 & izq. a derecha 8 ^ izq. a derecha 9 | izq. a derecha 10 && izq. a derecha 11 || izq. a derecha 12 ?: derecha a izq. 13 = += -= *= etc derecha a izq.
  • 28. Estructuras de Control Tipos de Sentencias  Tenemos tres tipos de sentencias de programación: - Sentencias Secuenciales - Sentencias Repetitivas - Sentencias Selectivas  Todos los programas vistos son ejemplos de sentencias secuenciales es decir tienen instrucciones que se ejecutan una después de la otra.
  • 29. Estructuras de Control Sentencias de Selección  Dentro de las sentencias de selección tenemos la sentencia if. Sintaxis: if (expresión) instrucción;  La sentencia if funciona de la siguiente manera: cuado se ejecuta una sentencia if se evalúa la expresión del paréntesis, si esta expresión es verdadera se cumple la o las instrucciones.
  • 30. Estructuras de Control Sentencias de Selección  Ejemplo:
  • 31. Estructuras de Control Sentencias de Selección El segundo formato de if es if-else y tiene la siguiente sintaxis. if (expresión) accion1; else accion2; Ejm:
  • 32. Estructuras de Control Sentencias de Selección La sentencia if también puede ser utilizada para implementar decisiones que impliquen diferentes alternativas mediante if anidados.
  • 33. Estructuras de Control Sentencias de Selección En la sección de selector solo se podrá trabajar con variables de tipo int o char. Este tipo de instrucción es ideal para la elaboración de menús. Ejemplo:
  • 34. Estructuras de Control Sentencias de Repetición  Estas sentencias realizan la repetición o iteración de acciones. Existen tres tipos de ciclos de repetición: while, do-while, for.  Sintaxis: while (condición) { instrucción1; Instrucción2; } do { instrucción1; Instrucción2; } while (condición); for (inicio; condición; incremento) { instrucción1; Instrucción2; }
  • 35. Estructuras de Control While  Este bucle tiene una condición la misma que es evaluada en primer lugar, si la condición es verdadera se ejecuta las instrucciones internas pero si es falsa salta hacia la siguiente instrucción fuera del bucle.
  • 36. Estructuras de Control Do - While  A diferencia del while este bucle cumple con las instrucciones y luego pregunta por la condición, si es verdadera regresa al bucle y si es falsa salta a la siguiente instrucción fuera del bucle.
  • 37. Estructuras de Control For  Este bucle sirve para ejecutar un bloque de sentencias en número fijo de veces.  En el for tenemos una sección de inicialización de variables, una condición que permite repetir siempre y cuando sea verdadera,el incremento en donde se incrementa o decrementa la variable inicializada, y finalmente tenemos las sentencias las cuales serán ejecutadas en cada iteración.
  • 38. Estructuras de Control For  En el for puedo inicializar una o más variables, así como también colocar 2 o más condiciones y hasta colocar incementos o decrementos de variables diferentes. Así: for (int i=0; int j=1; i<=n, j==0;i++,j++) printf(“holan”); Cuando for no tiene ninguna instrucción se denomina ciclo infinito. Así: for( ; ; )  No se debe colocar punto y coma luego del paréntesis del for debido a que no se ejecuta.
  • 39. Punteros  El valor de cada variable está almacenado en un lugar determinado de la memoria, caracterizado por una dirección (que se suele expresar con un número hexadecimal). El computador mantiene una tabla de direcciones que relaciona el nombre de cada variable con su dirección en la memoria. Nombre variable Dirección nombre 0x0013ff70 edad 0x0013ff7c Ejemplo de direcciones de memoria de las variables nombre y edad
  • 40. Punteros Los punteros son un tipo especial de variables destinadas a contener direcciones de variables. Por tanto, la variable de tipo puntero:  contiene la dirección de una variable.  permite una codificación más compacta y eficiente. Ejm: int *p; //declaración del puntero p Un puntero ocupa 2 bytes de memoria indiferentemente de la dirección que contenga o la variable a la que apunte.
  • 41. Punteros Cuando se trabaja con punteros hay dos operadores que se debe tomar muy en cuenta el operador & y el operador *.  El operador dirección (&): - Permite hallar la dirección de la variable a la que se aplica. - Solo es aplicable a objetos que están en memoria  El operador de indirección (*): - Permite acceder al valor depositado en la zona de memoria a la que apunta un puntero.
  • 42. Punteros Es de importancia saber que los punteros deben declarar o definir de acuerdo con el tipo del dato al que apunta. Por ejemplo, un puntero a una variable de tipo int se declara del siguiente modo: int *puntero; Ahora que está claro el concepto de puntero vamos a ver su funcionamiento a través de un ejemplo. void main() { int x=1,y=2; int *p; p=&x; y=*p; *p=(y+2); } 0x0018ff04 0x0018ff00 0x0018ff02 p RAM 1 Y=2 3 X=1
  • 43. Arreglos  Un arreglo permite agrupar datos del mismo tipo y bajo un mismo nombre. Sintaxis: double a[5]; En esta sentencia se declara un arreglo de tipo double llamado “a” de diez posiciones, donde cada posición puede almacenar un double. Para poder acceder a las posiciones del arreglo se lo realiza a través de subíndices. Graficamente un arreglo se representa: 0 1 2 3 4 subíndices 5.4 8.2 3.4 5.8 7.5 Valores del arreglo
  • 44. Arreglos  El tamaño de un vector puede definirse con cualquier expresión constante entera.  En C no se puede operar con todo un vector o toda una matriz como una única entidad, sino que hay que tratar sus elementos uno a uno por medio del ciclo for.  Lectura de una arreglo: for (int i=0; i<n; i++) { printf(“Ingrese el elemento:n“); scanf(“%d“,&a[i]); } donde n es la dimensión del arreglo.  Impresión de una arreglo: for (int i=0; i<n; i++) { printf(“%d“,a[i]); } donde n es la dimensión del arreglo.
  • 45. Matrices 0 1 4 7 1 3 5 8 10 2 filas  Las matrices se declaran de forma análoga a los vectores, con corchetes independientes para cada subíndice. Los valores tanto de filas como de columnas comienzan desde cero, al igual que los vectores. columnas 0 1 2 3 Declaración: tipo_dato nom_matriz [filas][columnas]; Ejm: int matriz [2][4];
  • 46. Matrices  Lectura de una matriz: for (int i=0; i<nfilas; i++) { for (int j=0; j<ncolumnas; j++){ printf(“Ingrese el elemento:n“); scanf(“%d“,&a[i][j]); } }  Impresión de una matriz: for (int i=0; i<nfilas; i++) { for (int j=0; j<ncolumnas; j++) printf(“%d“,a[i][j]); }
  • 47. Cadena de Caracteres Una cadena de caracteres es un arreglo de tipo char, pero se diferencia de un arreglo en que posee un último caracter NULL que marca el final de mi cadena de caracteres. Además dentro de las cadenas de caracteres tenemos funciones especiales para el manejo de las mismas. - Entre las principales funciones de cadena de carcteres están: strlen() strcat() strcmp() strcpy() Se debe incluir la biblbioteca string.h para poder utlizarlas
  • 48. Cadena de caracteres Función strlen();  El prototipo de esta función es como sigue: unsigned strlen(const char *s);  Su nombre proviene de string length, y su misión es contar el número de caracteres de una cadena, sin incluir el '0' final.  El paso del argumento se realiza por referencia, pues como argumento se emplea un puntero a la cadena (tal que el valor al que apunta es constante para la función; es decir, ésta no lo puede modificar), y devuelve un entero sin signo que es el número de caracteres de la cadena.
  • 49. Cadena de caracteres Función strcat();  El prototipo de esta función es como sigue: char *strcat(char *s1, const char *s2);  Su nombre proviene de string concatenation, y se emplea para unir dos cadenas de caracteres poniendo s2 a continuación de s1. El valor de retorno es un puntero a s1.  Los argumentos son los punteros a las dos cadenas que se desea unir. La función almacena la cadena completa en la primera de las cadenas. Por esta razón se debe procurar tener suficiente espacio para guardar toda la cadena
  • 50. Cadena de caracteres Función strcmp(); strcat(); El prototipo de la función strcmp() es como sigue: int strcmp(const char *s1, const char *s2)  Su nombre proviene de string comparison.  Sirve para comparar dos cadenas de caracteres.  Como argumentos utiliza punteros a las cadenas que se van a comparar.  La función devuelve cero si las cadenas son iguales,  Un valor menor que cero si s1 es menor en orden alfabético que s2,  y un valor mayor que cero si s1 es mayor que s2.
  • 51. Funciones Función strcpy();  El prototipo de la función strcpy() es como sigue: char *strcpy(char *s1, const char *s2)  Su nombre proviene de string copy y se utiliza para copiar cadenas.  Utiliza como argumentos dos punteros a carácter: el primero es un puntero a la cadena copia, y el segundo es un puntero a la cadena original.  El valor de retorno es un puntero a la cadena copia s1.  Es muy importante tener en cuenta que en C no se pueden copiar cadenas de caracteres directamente, por medio de una sentencia de asignación. Por ejemplo, sí se puede asignar un texto a una cadena en el momento de la declaración: char cadena[] = "Esto es una cadena"; //correcto  Otro ejemplo  char cadena1[20] = "Esto es una cadena";  char cadena2[20];
  • 52. Funciones Funciones En forma general podríamos decir que:  Una función es un código independiente del programa principal, y su objetivo es la realización de una tarea específica.  Para llamar a una función se debe invocar con el nombre acompañado por los parámetros (en el caso que los necesite).  Con el uso de funciones se puede dividir el programa en partes de finalidad concreta.  Las funciones facilitan el desarrollo y mantenimiento de programas.  Ahorran memoria.
  • 53. Funciones Definición de una función Para definir una función se debe hacer de la siguiente forma: Tipo_valor_retorno nombre_funcion(lista de argumentos con tipos) { declaración de variables y/o de otras funciones código ejecutable return (expresión); // optativo }  La declaración de variables se hace al comienzo y ellas sólo son visibles dentro de la función.  El código ejecutable es el conjunto de instrucciones que deben ejecutarse cada vez que la función es llamada.  La lista de argumentos con tipos, es una lista de declaraciones de variables, precedidas por su tipo correspondiente y separadas por comas (,).
  • 54. Funciones Una vez ejecutada la función, ésta puede que retorne un valor, este valor debe quedar especificado antes del nombre de la función. Si no se especifica un tipo especial se asume por defecto el tipo int. En el caso de no querer retornar valor alguno la función debe declararse como void. La sentencia return permite volver al procedimiento donde fue llamada la función.  Return permite devolver valores de variables como resultado de la función  No puede devolver matrices o arreglos, para esto se pueden retornar punteros a estos arreglos.  Return permite devolver estructuras.
  • 55. Funciones Paso de argumentos y parámetros de funciones Cuando es llamada una función los argumentos que le son entregados desde del programa principal pueden ser de dos formas por valor o por dirección. Se envía parámetros por valor cuando se necesita que estos valores sean usados dentro de la función. Ejm: función sumar, restar, factorial,etc. Se envía parámetros por dirección o referencia cuando estos valores va a ser modificados dentro de la función. Ejm: función intercambio de valores. A continuación vamos a ver unos ejemplos para poder diferenciar los dos tipos de envío de argumentos.
  • 56. Funciones int sumar(int x,int y) { return(x+y); } Paso de argumentos por valor void main(){ int a,b; printf(“nIngrese el primer valor”); scanf(“%d”,&a); printf(“nIngrese el segundo valor”); scanf(“%d”,&b); c=sumar(a,b); printf(“nEl resultado es:%d”,c); getch(); }
  • 57. Funciones void intercambio(int *x,int *y) { int aux; aux=*x; *x=*y; *y=aux; } Paso de argumentos por dirección o referencia void main(){ int a,b; printf(“nIngrese el primer valor”); scanf(“%d”,&a); printf(“nIngrese el segundo valor”); scanf(“%d”,&b); intercambio(&a,&b); printf(“n%d”,a); printf(“n%d”,b); getch(); }
  • 58. Estructuras Definición  Es un tipo de dato compuesto por un grupo de datos donde cada uno de los cuales puede ser un tipo distinto.  Sirven para organizar datos complicados  A cada componente de la estructura se le llama campo  A través de las estructuras podemos crear nuestros propios tipos de datos. Ejemplos: Datos de una persona - nombre - dirección - teléfono Punto en el plano cartesiano - componentex - componentey
  • 59. Estructuras Creación de una estructura Para crear una estructura se utiliza la palabra reservadastruct. Ejm: struct fecha{ int dia; char mes[14]; int anyo; }; Otro ejemplo: struct punto{ int x; int y; }; struct rectangulo{ struct punto pt1; struct puntopt2; };
  • 60. Estructuras Trabajar con estructuras La declaración de la estructura se la realiza fuera del void main(); luego de las bibliotecas. Y las variables se definen dentro del void main(). struct complejo{ double x; double y; } ; void main() { complejo a,b; }
  • 61. Estructuras Acceso a los campos de una estructura  Como la estructura es un conjunto de diferentes tipos de datos llamados campos, a cada uno de esos se accede mediante un punto. struct complejo{ double x; double y; } ; void main() { complejo a; // a es una variable de tipo complejo por lo tanto tiene los camposx,y printf (“Ingrese la parte racional”); scanf(“%d”,&a.x); printf (“Ingrese la parteimaginaria”); scanf(“%d”,&a.b); }
  • 62. Estructuras Punteros a estructuras  La utilización de pnteros para apuntar estructuras es muy utilizado de esta manera se optimiza el ingreso y la manipulación de los datos. El acceso a los puntos se realiza a través del operador flecha ->. Ejm: struct complejo{ doublex; doubley; } ; void main() { complejo a; complejo*p; p=&a; p->a=4; p->b=5; }
  • 63. Estructuras Listas Simples  Una lista enlazada simple es una colección o secuencia de elementos dispuestos uno detrás de otro conectados entre sí a través de punteros. Los elementos de una lista se denominan nodos, un nodo se compone de dos campos: el primero contiene la información y el segundo es el puntero que se conecta con los demás nodos de la lista.  Una lista enlazada simple tiene un inicio y un final, el inicio es un puntero llamado cab que es la cabecera de mi lista y el final de la misma es el último nodo cuyo campo sig apunta a NULL. 6 cab 4 1 7
  • 64. Estructuras Listas Simples  Para crear una lista enlazada simple partimos de un puntero cabecera cab, al cual se insertan los demás nodos conforme se van creando.  En este tipo de listas tenemos funciones para insertar o crear nodos, eliminar nodos, buscar nodos, vaciar la lista, etc. Todas esto se realiza a través de funciones ya que se trabaja con memoria dinámica, la misma que así como se crea o reserva memoria también se tiene que eliminar o liberar memoria.
  • 65. Estructuras Listas Circulares  Este tipo de lista se diferencia de la anterior en que la cabecera se encuentra en el útlimo nodo y el campo siguiente del último nodo se encuentra conectado al primer nodo de la lista, formando así una lista circular. La principal ventaja es que se puede recorre la lista en modo circular. Al igual que las anteriores, las listas circulares también tiene sus propias funciones para insertar, buscar, eliminar y vaciar nodos. 6 cab 4 1 7
  • 66. Estructuras Listas Doblemente enlazadas  Es una lista que tiene dos campos punteros el uno que apunta al anterior nodo y el otro al siguiente, de manera que se pueda realizar un recorrido de la lista hacia adelante y hacia atrás.También podemos hacer la inserción de un nodo, la eliminación, búsquedas y vaciado de estas listas. 6 cab 4 1 7  Para comprender un poco más sobre el tema de listas simples, circulares y doblemente enlazadas le invito a estudiar el manual diponible en el CD en formato pdf directorio Listas, en donde se encuentran todas las funciones con respecto al tema de listas.