SlideShare una empresa de Scribd logo
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
Lenguaje c
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.

Más contenido relacionado

PPTX
Lenguaje ensamblador
PPT
Fundamentos de Programacion
PPSX
Lenguaje c diapositivas
PPTX
Fundamentos de programación.pptx
PPTX
Clase 2 - Introducción a la programación con Python I.pptx
PDF
Ingles Técnico II Informática
PPTX
1 introduccion a la programacion 1
Lenguaje ensamblador
Fundamentos de Programacion
Lenguaje c diapositivas
Fundamentos de programación.pptx
Clase 2 - Introducción a la programación con Python I.pptx
Ingles Técnico II Informática
1 introduccion a la programacion 1

La actualidad más candente (20)

PPTX
Unidad Aritmética Lógica
PPTX
Programación estructurada
PDF
Pseudocódigo
PPTX
Historia de los Lenguajes de Programacion
PDF
Generación código intermedio 2
PDF
Analisis lexico automatas i
PPTX
Lenguaje de programacion en c
PDF
Ejercicios de evaluación de fundametnos de programacion en JAva
ODP
Python básico
PPTX
PPTX
Programacion estructurada
PPTX
Compiladores
PDF
Ejercicios bucles
PPTX
Tipos de buses y microprocesadores
PPT
Presentacion Pseint
DOCX
Trabajo de compiladores completo alexandra
PPTX
ALGORITMOS
PPTX
Mapa Conceptual del Lenguaje C
PPTX
Clasificación de los lenguajes de programación
Unidad Aritmética Lógica
Programación estructurada
Pseudocódigo
Historia de los Lenguajes de Programacion
Generación código intermedio 2
Analisis lexico automatas i
Lenguaje de programacion en c
Ejercicios de evaluación de fundametnos de programacion en JAva
Python básico
Programacion estructurada
Compiladores
Ejercicios bucles
Tipos de buses y microprocesadores
Presentacion Pseint
Trabajo de compiladores completo alexandra
ALGORITMOS
Mapa Conceptual del Lenguaje C
Clasificación de los lenguajes de programación
Publicidad

Similar a Lenguaje c (20)

PPT
IntroLenguajeC.ppt
PPT
Lenguajec
PPT
2 estructura programa-c
PPT
Clase 3introduccion a_lenguace_c
PPT
Introduccion Lenguaje C Blanca
PPTX
Lenguaje c
PDF
Lenguaje C
PDF
Introducción
PDF
Programación en c
PDF
Guia en lenguaje c
PPTX
Lenguaje C
PPTX
Lenguaje c
PPT
Fpr Tema 3 www.fresymetal.com
DOC
Lenguaje c completo 6 g x revisar x los estudiantes
PDF
manual básico de programación en c
PPT
Curso lenguaje c_segundo_modulo_
PPT
Lenguajec intorduccionui
PDF
Trabajo Final de Programación
PDF
Introduccion del Lenguaje C
IntroLenguajeC.ppt
Lenguajec
2 estructura programa-c
Clase 3introduccion a_lenguace_c
Introduccion Lenguaje C Blanca
Lenguaje c
Lenguaje C
Introducción
Programación en c
Guia en lenguaje c
Lenguaje C
Lenguaje c
Fpr Tema 3 www.fresymetal.com
Lenguaje c completo 6 g x revisar x los estudiantes
manual básico de programación en c
Curso lenguaje c_segundo_modulo_
Lenguajec intorduccionui
Trabajo Final de Programación
Introduccion del Lenguaje C
Publicidad

Más de camilofigueroa14 (7)

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

Último (20)

PDF
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
PDF
Informe Estudio Final Apagon del 25 de febrero
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PPTX
Introduccion quimica del fuego.ffffffffffpptx
PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
DOCX
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PPTX
Presentacion_Palcoma_Alta energia solar eolica
PPTX
Software para la educación instituciones superiores
PDF
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PPTX
MODULO 1.SEGURIDAD Y SALUD CONCEPTOS GENERALES.pptx
PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PDF
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
Curso Introductorio de Cristales Liquidos
PPTX
DEBL Presentación PG 23.pptx [Autoguardado].pptx
PDF
Perfilaje de Pozos _20250624_222013_0000.pdf
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
Informe Estudio Final Apagon del 25 de febrero
clase MICROCONTROLADORES ago-dic 2019.pptx
Introduccion quimica del fuego.ffffffffffpptx
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
Presentacion_Palcoma_Alta energia solar eolica
Software para la educación instituciones superiores
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
MODULO 1.SEGURIDAD Y SALUD CONCEPTOS GENERALES.pptx
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
Módulo-de Alcance-proyectos - Definición.pdf
Curso Introductorio de Cristales Liquidos
DEBL Presentación PG 23.pptx [Autoguardado].pptx
Perfilaje de Pozos _20250624_222013_0000.pdf

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