Sunteți pe pagina 1din 25

Fundamentos de Programacin

Profesor: Cristian Millacariz

GUIA DE LENGUAJE EN C

Fundamentos de Programacin

Profesor: Cristian Millacariz

ndice:
ndice:.................................................................................................................................................. 2
Lenguaje C .............................................................................................................................................. 3
Introduccin: ....................................................................................................................................... 3
CAPITULO I: Caractersticas del Lenguaje C ............................................................................... 4
CAPITULO II: Variables en C ....................................................................................................... 6
CAPITULO III: Operadores en C ................................................................................................... 8
CAPITULO IV: Asignaciones y Expresiones en C ........................................................................ 9
CAPITULO V: E/S por consola con Formato ............................................................................... 10
CAPITULO VI: Sentencias de Control ......................................................................................... 12
CAPITULO VII: Iteraciones en C ................................................................................................. 14
CAPITULO VIII: Arreglos en C ................................................................................................... 16
CAPITULO IX: Funciones de caracteres y strings ....................................................................... 17
CAPITULO X: Funciones y Procedimientos ................................................................................ 18
CAPITULO XI: E/S en Archivos .................................................................................................. 20
APENDICE A ................................................................................................................................... 22
FUNCIONES DE C .............................................................................................................................. 22
APENDICE B: .................................................................................................................................. 24

2|P age

Fundamentos de Programacin

Profesor: Cristian Millacariz

Lenguaje C
Introduccin:
C es un lenguaje de programacin de propsito general que ofrece como ventajas: economa
de expresin, sentencias de control y estructuras de datos modernas junto a un rico conjunto de
operadores.
C es un lenguaje de nivel medio, ya que combina elementos de lenguaje de alto nivel con la
funcionalidad del lenguaje ensamblador. El definir a C como lenguaje de nivel medio, no significa que
sea menos potente, ms difcil de usar o menos evolucionado que los lenguajes de alto nivel como
PASCAL, COBOL o FORTRAN; tampoco significa que C sea similar al lenguaje ensamblador
presentando al programador todos los problemas asociados a l.
Una caracterstica importante del lenguaje C, es que posee un cdigo muy portable, siendo posible
adaptar el software escrito para un tipo de computador en otro.
Durante muchos aos, el estndar de C fue la versin proporcionada por el Sistema Operativo Unix
(System V), pero con la popularidad de los Microcomputadores aparecieron variadas implementaciones
de C, altamente compatibles unas con otras. Debido a esto, en el ao 1983 el American National
Standars Institute (ANSI), estableci un comit para producir una definicin no ambigua del lenguaje C
e independiente de la mquina, el resultado final se obtuvo en 1990 con la definicin del estndar ANSI
de C.
En resumen, podramos decir que C ha demostrado ser un lenguaje agradable, expresivo, verstil para
una amplia variedad de programas y fcil de aprender.

3|P age

Fundamentos de Programacin

Profesor: Cristian Millacariz

CAPITULO I: Caractersticas del Lenguaje

La principal caracterstica de un lenguaje estructurado, es la capacidad de seccionar y esconder del


resto del programa las instrucciones e informacin para llevar a cabo alguna tarea. Una forma de
lograrlo, es usando subrutinas que empleen variables locales (temporales), de manera que lo que
ocurra en su interior no provoque efectos secundarios en otras partes del programa.
En un lenguaje estructurado, el uso de GOTO puede estar prohibido o desaprobado, no siendo una
forma normal de control, tal como lo es en BASIC o FORTRAN.
En base a lo anterior, C se denomina lenguaje sencillamente estructurado, dado que no permite la
creacin de funciones dentro de funciones. Adems, soporta varias construcciones de bucles (while, do
while y for) que permiten al programador no usar GOTO.
Programacin de Sistemas:
Los programas de sistemas ms comunes son: los Sistemas Operativos, Intrpretes, Editores,
Compiladores, Programas de Ensamblado y otros.
C permite la programacin de sistemas, ya que permite la manipulacin directa de bits, bytes, palabras
y punteros.

Compilador versus Intrprete


Intrprete: Utilitario que toma un programa escrito en un lenguaje de alto nivel, en el cual va leyendo y
ejecutando directamente cada lnea del cdigo fuente, sin generar cdigo de mquina. Las ventajas de
los intrpretes es que son fciles de construir. Su problema es que son lentos y requieren la presencia
del cdigo fuente cada vez que se desee ejecutar el programa.
Compilador: Utilitario que toma un programa escrito en un lenguaje de alto nivel y lo traduce a un
programa en lenguaje de bajo nivel o cdigo de mquina. El proceso de una compilacin puede
dividirse en dos etapas. En la primera se chequea correctitud de sintaxis y secuencia de las
instrucciones, generando un archivo de cdigo intermedio u objeto. En la segunda se toma este cdigo
objeto y se une a las rutinas del sistema que se haya indicado, generando el programa en su estado
final de cdigo ejecutable.
C normalmente es compilado, sin embargo, han ganado popularidad los intrpretes de C, como ayudas
en la depuracin durante las etapas de desarrollo en un programa.
TIPOS DE DATOS
Un tipo de dato define un conjunto de valores que puede tener una variable junto con un conjunto de
operaciones que se pueden realizar sobre esa variable.
C tiene cinco tipos de datos bsicos incorporados, entre ellos estn los enteros, los caracteres y los
reales.
Adems, C no es un lenguaje fuertemente tipificado como Pascal, ya que permite casi todas las
conversiones entre tipos. Por ejemplo, los tipos entero y carcter pueden ser entremezclados en la
mayora de las expresiones, siendo de responsabilidad del programador la comprobacin de la
incompatibilidad de los tipos.

4|P age

Fundamentos de Programacin

Profesor: Cristian Millacariz

Palabras Claves: Una palabra clave es aquella que tiene un significado especial dentro del lenguaje,
debido a esto, nunca deben ser usadas como nombres de variables o funciones. Las palabras claves de
C estn escritas en minsculas, siendo 32 las definidas por el estndar ANSI de C:
auto
break
case
char
const
continue
default
do

double
else
enum
extern
float
for
goto
if

int
long
register
return
short
signed
sizeof
static

struct
switch
typedef
union
unsigned
void (sin valor)
volatile
while

En C, las maysculas son diferentes con las minsculas, as: else es una palabra clave y ELSE no lo
es.
Forma de un Programa: Los programas en C consisten en una o ms funciones. La nica funcin que
siempre debe estar presente es la denominada main(), ya que es la primera en ser llamada cuando
comienza la ejecucin del programa.
La forma general de un programa en C es la siguiente:
declaraciones globales
funcion1()
{
variables locales
sentencias
}
.
.
.
funcionn()
{
variables locales
sentencias
}
main()
{
variables locales
sentencias
}

En cdigo C bien escrito, main() debe esbozar lo que el programa hace, utilizando los nombres de las
funciones f1(), f2(), f3(),...fn() definidas por el programador. Tcnicamente main() no forma parte del
lenguaje C, pero debe tratarse como si lo fuera. Por esta razn, no debe usarse como nombre para una
variable, ya que se puede confundir al compilador.
Biblioteca y Enlazado: Una biblioteca es una coleccin de funciones para llevar a cabo diversas
tareas. La biblioteca estndar de C, no forma parte del lenguaje, pero s es un entorno que proporciona
declaraciones, funciones y macrodefiniciones. C no proporciona dentro de la definicin real del lenguaje,
mtodos para llevar a cabo las operaciones de entrada/salida, debido a esto, la mayora de los
programas incluyen llamadas a variadas funciones contenidas en la biblioteca estndar del lenguaje C.
Cuando se llama a una funcin que no es parte del programa que se ha escrito, C recuerda su
nombre. Ms tarde, el enlazador combina el cdigo objeto producido al compilar el programa fuente,

5|P age

Fundamentos de Programacin

Profesor: Cristian Millacariz

con el cdigo objeto de la funcin que se encuentra en la biblioteca estndar. Este proceso se llama
enlazamiento.
Compilacin Separada: La mayora de los programas cortos de C estn enteramente contenidos en un
archivo fuente. A medida que aumenta la longitud del programa, tambin lo hace el tiempo de
compilacin, por ello, C permite dividir un programa en varios archivos y compilar cada uno de ellos por
separado. Una vez que todos han sido compilados se enlazan entre s junto con las rutinas de la
biblioteca para formar el cdigo objeto completo; la ventaja de este mtodo es que el cambio en el
cdigo de uno de los archivos no requiere de la recompilacin del programa completo.

CAPITULO II: Variables en

Los nmeros son los datos fundamentales usados en computacin, estos se representan internamente
en forma binaria. Dependiendo de la cantidad de bits o bytes, es posible representar diferentes tipos de
nmeros. La forma de almacenar nmeros es mediante el uso de variables, que corresponden a
representaciones lgicas de un grupo de bytes. Formalmente, una variable tiene un tipo y un
identificador. El tipo corresponde a una palabra reservada que indica la cantidad de bytes que se le
asignan a la variable. El identificador es el nombre que se le asocia a la variable.
Tipos: En C existen 5 tipos de datos: carcter, entero, coma flotante, coma flotante de doble precisin y
sin valor.
Tipo
Char
Int
Float
Double
Void

Tamao en bits
8
16
32
64
0

Rango
0 a 255
-32768 a 32767
-3.4E-38 a 3.4E+38
-1.7E-308 a 1.7E+308
sin valor

Los valores del tipo char se usan para guardar los valores definidos en el juego de caracteres ASCII;
las variables de tipo int se usan para guardar cantidades enteras; las variables tipo float o double se
usan para guardar nmeros reales; el tipo void se usa para declarar explcitamente que una funcin no
retorna valor o para declarar una funcin sin parmetros. C soporta varios tipos agregados, incluyendo
las estructuras, las uniones, las enumeraciones y los tipos definidos por el programador. Los tipos de
datos bsicos pueden ser alterados con el uso de modificadores, estos hacen que el tipo base se ajuste
ms a las necesidades de cada momento. Los modificadores son: signed, unsigned, short y long,
producindose las siguientes combinaciones:
Tipo
Char
Unsigned char
Signed char
Int
Unsigned Int
Signed Int
Short Int
Long Int
Float
Double
Long Double

6|P age

Tamao en bits
8
8
16
16
16
16
16
32
32
64
64

Rango
-128 a 127
0 a 255
-128 a 127
-32768 a 32767
0 a 65535
-32768 a 32767
-32768 a 32767
-2147783648 a 2147483647
-3.4E-38 a 3.4E+38
-1.7E-308 a 1.7E+308
-1.7E-308 a 1.7E+308

Fundamentos de Programacin

Profesor: Cristian Millacariz

Identificadores: Corresponden a los nombres usados para referirse a las variables, funciones ,
etiquetas y otros objetos definidos por el programador. La longitud de un identificador puede variar entre
1 y 32 caracteres. Para definirlos, se deben seguir las siguientes reglas:

Todo identificador debe empezar con una letra entre a y z o entre A y Z


El resto del identificador pueden ser letras o dgitos del 0 al 9 o underscore (_). Otros smbolos
no pueden ser usados.
Se consideran dgitos significativos slo a los primeros 32.
Los identificadores diferencian entre maysculas y minsculas.

Ejemplos:
Correcto
inc
nota
tot_ven

Incorrecto
9inc
nota?
tot..ven

Declaracin de Variables: Todas las variables deben ser declaradas antes de usarlas. La sintaxis para
ello es:

Tipo

lista_de_variables

Donde tipo debe ser un tipo vlido de C y lista_de_variables puede ser uno o ms nombres de
identificadores separados por comas.
Ejemplos:

int i,j,k;
float impuestos, IVA, calculo;
char opcion, letra;

Inicializacin: Es muy importante en el uso de variables el realizar una adecuada inicializacin de las
mismas, ya que al crearlas, stas pueden tomar cualquier valor, lo que puede afectar el correcto
funcionamiento del programa. La forma tradicional de inicializacin en los lenguajes de programacin
es:
int contador;
Contador = 0;
Sin embargo, en C es posible realizar dicha inicializacin en el momento de la declaracin de la
variable:
int contador = 0, loop = -1;
float IVA = 0.18;
Declaracin de Constantes: Para definir constantes en C, se debe seguir la siguiente sintaxis:
#define identificador valor;
Ejemplos:
#define maxlong 200;
#define step 20;
Comentarios: Tal como en la mayora de los lenguajes de programacin, en C es posible indicar
ciertas zonas como lugares donde no hay cdigo y que es usado para realizar acotaciones sobre l. La
prctica de comentar el cdigo es muy til, sobre todo si existe la posibilidad de futuras revisiones a los
programas realizados. En C, las formas de indicar que cierto texto es comentario es encerrndolo entre
/* y */ o comenzando la lnea con //.

7|P age

Fundamentos de Programacin

Profesor: Cristian Millacariz

Ejemplos:
a) /* Esta lnea es comentario y no afecta la ejecucin del programa */
int x=0; /* declaracin e inicializacin de la variable x */
b) // Este comentario slo es vlido hasta fin de lnea

CAPITULO III: Operadores en C


Definicin: Un operador es un smbolo que le indica al compilador que lleve a cabo ciertas
manipulaciones matemticas o lgicas. En C, hay 3 clases generales de operadores: aritmticos,
relacionales y lgicos.
Operadores Aritmticos:

Accin
Resta
Suma
Multiplicacin
Divisin
Divisin en mdulo
Decremento
Incremento

Operador

+
*
/
%
-++

Ejemplos:

10/3 =3
10%3 =1
x++ x = x+1
y-y = y-1
si x = 10
y = ++x
x=11; y = 11(incrementa y asigna)
y = x ++
y = 10; x = 11(asigna e incrementa)
Operadores Relacionales:
Accin
Mayor
Mayor o igual
Menor
Menor o igual
igual
Distinto

8|P age

Operador

>
>=
<
<=
==
!=

Fundamentos de Programacin

Profesor: Cristian Millacariz

Operadores Lgicos:
Accin
And
Or
Not

Operador

&&
||
!

Precedencia: Es el orden en que se evalan las expresiones.

1
2
3
4
5
6
7
8

++ -*/%
+ !
> >= < >=
= = !=
&&
||

Los operadores del mismo nivel de precedencia, son evaluados por el compilador de izquierda a
derecha. Al utilizar parntesis, se altera el orden de las evaluaciones, ejecutndose primero las
operaciones que se encuentran dentro de ellos.
Ejemplos:
10 > 1 +12
10 > (1+12)
En ambos casos el resultado es falso (0)
10 > 5 && !(10 < 9) || 3 <= 4
Da como resultado Verdadero (1)

CAPITULO IV: Asignaciones y Expresiones en C


Asignacin: La asignacin de valores a las variables definidas y el cmputo de operaciones aritmticas
y/o lgicas, son las instrucciones bsicas en C.
variable

= expresin ;

Cada cmputo debe realizarse en una lnea y al finalizar se debe colocar el carcter ; lo que indica fin
de la operacin.
Ejemplos:
x = 200;
y = x + 7;
balance = (8 * x) + (4 / y);
Tambin es posible realizar operaciones lgicas y/o de comparacin, teniendo presente que la variable
de asignacin toma valores de verdad. En C, los valores de verdad se representan como nmeros
enteros, cuyo valor es: 0 (FALSE), 1 (TRUE).
Ejemplos:
es_mayor = (x > y);
(Si x=5 e y=2 entonces es_mayor toma el valor 1
9|P age

Fundamentos de Programacin

Profesor: Cristian Millacariz

pare = (i == 2) && (!ultimo)


(notar que en esta expresin, la
dependiendo de la evaluacin de la expresin).

variable

pare

toma

un

valor

de

verdad,

Abreviaturas: C permite abreviaturas que simplifican la escritura de ciertos tipos de sentencias de


asignacin. La sintaxis es:
Expresin operador = expresin;
Ejemplos:
x = x +10;
x = x 2;
x = x * (y + 1);

x + = 10;
x - = 2;
x * = y + 1;

En programas profesionales de C, la notacin abreviada es muy usada, as que conviene familiarizarse


con ella.
Operador Coma: Produce una secuencia de operaciones, la parte izquierda del operador siempre se
evala como void, y el valor asignado, es el valor de la ltima expresin de la lista separada por comas.
La sintaxis es:
Variable = (lista_de_expresiones);
Ejemplos:
y = 10;
x = (y = y 5, 25/y);
Despus de la ejecucin x toma el valor 5.

CAPITULO V: E/S por consola con Formato


Biblioteca Estndar: Las funciones de E/S por consola, se encuentran declaradas en el header
<stdio.h> de la biblioteca estndar de C. Los header deben ser declarados antes de usar las funciones
contenidas en l, la sintaxis para ello es:
#include <header>
printf() : Es una funcin que permite enviar a la pantalla (output estndar), caracteres con algn
formato. Una orden de formato comienza con un signo de porcentaje y va seguido por el cdigo del
formato. Algunas rdenes de formato son:

Codigo
%c
%d
%ld
%f
%s
%x

10 | P a g e

Operacin
carcter nico
decimal (entero)
decimal (entero largo)
decimal (punto flotante)
cadena de caracteres
direccin de memoria

Fundamentos de Programacin

Profesor: Cristian Millacariz

Sintaxis: printf(formato, lista_variables);


Ejemplos:
Printf(Hola %c %d %s, c,10 , qu tal!);
Imprime en pantalla Hola c 10 qu tal!
Printf(%6.2f, 228.3415);
Imprime 228.34
printf(%10s, hola);
Imprime 6 blancos y hola
printf(%-10s, hola);
Imprime hola y 6 blancos
En ambos casos se imprime el string hola, con la diferencia que el signo - hace que se ajuste de
izquierda a derecha.
Printf(%5.7s, 1234567890);
Imprime 1234567
(Imprime el string 1234567, bajo el concepto de al menos 5 caracteres con un mximo de 7).

Barra Invertida: Algunos cdigos de barra invertida son:

Cdigo
\b
\f
\n
\t
\v
\r

Operacin
Espacio atrs
Salto pagina
Salto lnea
Tabulacin horizontal
Tabulacin vertical
Retorno de Carro

scanf() : Es una funcin que permite leer la entrada de caracteres desde el teclado (input estndar),
siguiendo algn formato. Los cdigos de los formatos son similares al de la funcin printf().
Ejemplos:
scanf(%d,&numero);
(Lee el entero ingresado asignndolo a la variable numero)
scanf(Sr. %s %s, nombre, apellido);
(Descarta la entrada Sr. y asigna los caracteres correspondientes a las variables nombre y
apellido).
scanf(%[A-Z],s1);
(Acepta slo caracteres entre A y la Z, y se lo asigna a la variable s1).

11 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

CAPITULO VI: Sentencias de Control


Sentencia: Es una asignacin o expresin, pero, terminadas con un ;
Ejemplos:
x = 1;
y = (y-3,4*4);
--j;
Bloque: Es un grupo de sentencias que se encuentran entre { y }.
Ejemplos:

{
int x;
x = 0;
x + = 3;
}

Despus de la llave que termina un bloque } no se debe colocar ; , a menos que vaya otra instruccin
a continuacin.
Sentencia if-else : En C, la forma general de la sentencia if es:
if expresin_logica
bloque_de_sentencias
[else
bloque_de_sentencias ]
y donde se tiene que:
bloque_de_sentencias = sentencia;
bloque_de_sentencias = {sentencia;
[sentencia;
]}
if (a > b)
a = a +1;
else
b = b*10;

Ejemplos:

Programa ejemplo:
#include <stdio.h>
/*Programa del nmero Mgico*/
main()
{
int magico = 50;
int intento;
printf(Adivina un nmero: );
scanf(%d, &intento);
if (intento == magico)
printf(Adivinaste!!!!!!);
else
printf( Trata de nuevo........); getch();
}
Operador ?
operador es:

: Es una alternativa a la sentencia if/else en la forma general. La sintaxis de este

Exp1 ? exp2 : exp3

12 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

Donde exp1, exp2 y exp3 son expresiones.


Ejemplo:
x = 10;
y = x>9 ? 100 : 200
(Asigna a y el valor 100).
La sentencia if/else equivalente es:
x = 10;
if (x>9)
y = 100;
else
y = 200;
Sentencia switch: En caso de tener una variable que puede tener mltiples valores, la forma cmo
operar con cada uno de ellos puede ser mediante if anidados, o bien con la sentencia switch.
switch(variable)
{
case valor1: bloque_de_sentencias;
case valor2: bloque_de_sentencias;
.
default
: bloque_de_sentencias;
Donde se entiende a un bloque de sentencias como a un grupo de una o ms instrucciones. Se
recomienda que si es ms de una sentencia, las instrucciones se agrupan entre llaves. Una de las
caractersticas de la instruccin switch de C, es su comportamiento en cascada, es decir, al encontrar
una seccin en que el valor de la variable calze, entra al bloque de instrucciones y las ejecuta todas de
ah hacia abajo, hasta el final del switch. Para evitar este comportamiento, a veces no deseado, se
acostumbra a poner como ltima instruccin de un bloque a la instruccin break; la cual indica que
termina la ejecucin del bloque y se sale del switch. La sentencia default, se ejecuta si no se encuentra
ninguna correspondencia. Colocar default es opcional.
Ejemplo:

switch(numero)
{
case 1: a= a+1;
break;
case 2: a = a+2;
b = b-1;
break;
case 3: c = c+2;
d = d-1;
break;}
case 4 : x = 1;
y = y+2;
break;
case 5 : y = y+3
break;
default : y = 0;
}

13 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

CAPITULO VII: Iteraciones en C


Iteraciones Fijas : Es una estructura de control, que define un nmero fijo de iteraciones sobre un
grupo de expresiones. En C, la sentencia es for y su sintaxis es:
for (inicializacin; condicin; incremento)
{
grupo_de_instrucciones;
}
Ejemplo:
a=1 ;
b = 5;
for (i = 1; i <= b; i++)
a = a * i;
Iteracin while: Es una estructura de control, que realiza una iteracin con ingreso condicionado sobre
un grupo de expresiones. En C su sintaxis es:
while (condicin)
{
sentencias;
}
Mientras la evaluacin de la condicin sea verdadera, se ejecutarn las sentencias del bloque.
Ejemplo:
Loop = 10;
While (loop >= 1)
{
loop = loop 1;
}
Iteracin do-while: Es una estructura de control, que realiza una iteracin con salida condicionada. (Se
ejecuta al menos una vez, sirve para validaciones). En C, su sintaxis es:
do
{
sentencias;
}
while (condicin);
Ejemplo:

loop=10;
do
{
loop = loop 1;
}
while (loop >=1)

Importante: Cul es la diferencia entre una sentencia while y una do-while?


La sentencia while realiza la evaluacin de la expresin y, slo si ella es verdadera, ejecuta la accin.
La sentencia do-while ejecuta las sentencias y luego evala la expresin. Siempre las sentencias se
realizan al menos una vez.
Saltos Incondicionados: Existen dos instrucciones en C que permiten saltos incondicionados dentro
de las sentencias de una iteracin. Estas, algunas veces, son necesarias, ante la deteccin de una

14 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

condicin anmala, necesidad de rechequear la condicin de iteracin o, an peor, salir de la iteracin


en forma abrupta. Para las situaciones anteriores, C provee las siguientes instrucciones:
break;
1. Usada para finalizar un case en una sentencia switch.
2. Se puede usar para forzar una salida inmediata dentro de una iteracin (for, while, do while).
Ejemplos:
for (t =0; t < 100; t ++)
{
cont = 1;
for ( ; ; )
{
printf(%d, cont);
cont ++;
if (cont = = 10)
break;
}
}
Este programa imprime los nmeros del 1 al 9, cien veces. Cada vez que el compilador encuentre
break; el control vuelve a la iteracin externa.
continue;
Realiza un salto hasta la condicin de chequeo de la iteracin.

do
{ scanf(%d,&x);
if (x < 0)
continue;
printf(%5d,x);
} while (x != 100);
Este programa muestra slo nmeros positivos. Se sale cuando se ingresa el nmero 100.
Uso apropiado de una iteracin: Dadas las tres formas de estructuras de control que provee C, cabe
realizar la siguiente pregunta: Cundo usar cada una?
a) Si usted no quiere que el cuerpo de la iteracin sea realizado cuando la condicin empieza con
valor falso, usar while.
b) Si usted quiere que las sentencias siempre sean ejecutadas, al menos una vez, use do-while.
c) Si el nmero de iteraciones que se va a realizar est determinado por una constante, o una
variable que no va a modificarse en el cuerpo del bloque, utilice for.

15 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

CAPITULO VIII: Arreglos en C


Definicin: Un arreglo es una coleccin de variables del mismo tipo, denominados por un nombre en
comn. En C, todos los elementos de un Array constan de espacios de memoria contigua.
Al especificar un arreglo se deben indicar: el tipo de los datos que sern almacenados, el nombre del
arreglo y el nmero de elementos que tendr el Array, encerrado entre parntesis cuadrados:
tipo

nombre_de_variable [tamao];

int
char
float

numeros[10];
sexo[25];
ing[20], egr[20], saldo[20];

Ejemplos:

Acceso: La forma de accesar los elementos del arreglo es mediante el manejo de un subndice, que
corresponde al nmero entre parntesis. El subndice, puede ser cualquier variable o constante entera.
Ejemplo:
i = 3;
saldo[i] = ing[i] egr[i] + saldo[i-1];
Elementos: En C, todos los arreglos tienen el 0 como subndice, y comienzan siempre desde l. As, al
definir un arreglo de N elementos, los subndices varan entre el 0 y (N 1).
Ejemplo:

char sex[10];

Declara un array de caracteres de 10 elementos, desde sex[0] hasta sex[9].


Inicializacin: Tal como en otras variables, los arreglos deben ser inicializados adecuadamente. Esta
inicializacin puede realizarse al momento de la declaracin o despus de ella.
Ejemplos: int lista[4] = {10,38,5,20};

int
x[10];
for (i = 0; i < 10; i++)
x[i] = i;
(Nota: Ver programas de Arreglos en el Apndice)
Arreglos Multidimensionales.
El lenguaje C, permite definir arreglos multidimensionales. Estos permiten el manejo de matrices u otros
elementos de mltiples dimensiones. La sintaxis de un arreglo multidimensional es:
tipo nombre[tamao] [tamao] ... [tamao];
Ejemplo:

int ventas_anuales[12][31];

Este es un arreglo bidimensional, que contiene las ventas diarias de los 12 meses del ao.
Acceso: La forma de accesar los elementos del arreglo es mediante el manejo de sus subndices.
Ejemplo:
int a[10][20];

16 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

Define un arreglo cuyo primer ndice vara entre 0 y 9, y el segundo entre 0 y 19.
El primer elemento se encuentra en: a[0][0].
Para referirse al elemento en la posicin 8,15, se debe usar: a[7][14];
Para accesar el punto 8,15 del array, se debe usar: a[8][15];
(Nota: Ver programas de Matrices en el Apndice)
Arreglos y Strings: Un string es simplemente un arreglo de char con carcter nulo que indica el fin del
string. As, la declaracin:
char nombre[30];
Tiene 29 elementos usables.
Todo array de caracteres en C, debe finalizar con el carcter nulo, usted debe asegurarse de definir un
tamao suficiente para incluirlo.
Ejemplos:
char
letras[5] = ABCD;
char letras[5] = {A, B, C, D, \0};
Observe que en la ltima declaracin de letras, se debe incluir explcitamente el carcter nulo.

CAPITULO IX: Funciones de caracteres y strings


Definicin: Un string es un array de caracteres que finaliza con el carcter nulo, y un carcter es el
valor de un byte. Las funciones de manipulacin de strings usan el header <string.h> y las que
manipulan caracteres, el header <ctype.h>. Ambos se encuentran en la biblioteca estndar definida
por el ANSI C.
<string.h> : Algunas de las funciones definidas en este header son:
a)

strcpy(S1,S2): Copia el string S2 en S1, incluyendo el carcter nulo; regresa a S1.

b)

Strcat(S1,S2): Concatena el string S2 al final del string S1; regresa a S1.

c)

Strcmp(S1,S2): Compara el string S1 con el string S2; regresa un nmero entero: < 0
>S2; 0 si S1 = S2; >0 si S1 >S2.

d)

Strlen(S1) : Regresa la longitud del string S1.

si S1

<ctype.h> : Las funciones definidas en este header, regresan un entero distinto de cero(0); si el
carcter c que tiene como argumento satisface a la condicin descrita. Algunas funciones son:
a)
b)
c)
d)

17 | P a g e

isalnum(c): Chequea que el carcter c sea una letra (mayscula o minscula) o un dgito.
isalpha(c): Chequea que c sea una letra (mayscula o minscula).
iscntrl(c): Chequea que c sea un carcter de control.
isdigit(c): Chequea que c sea un dgito.

Fundamentos de Programacin

Profesor: Cristian Millacariz

e) islower(c): Chequea que c sea una letra minscula.


f) isupper(c): Chequea que c sea una letra mayscula.
g) isspace(c): Chequea que c sea un espacio, retorno, tabulador, avance de pgina o nueva lnea.

CAPITULO X: Funciones y Procedimientos


Introduccin: Una de las ideas ms importantes en la codificacin de un programa, es la de dividir un
programa complejo en subtareas menos difciles, con el fin de atacar el problema desde sus aspectos
ms generales a los ms particulares (Diseo TOP-DOWN). Tambin es importante distinguir que
muchas de estas subtareas en que se divide nuestro problema, presentan estructuras similares con
variacin de algunos parmetros. Otro aspecto que cabe sealar, es el uso de las libreras de funciones.
Por ejemplo, cada vez que necesitamos realizar operaciones de E/S, utilizamos una librera de
funciones. Es decir, estamos aprovechando la codificacin que otra persona realiz, simplificando en
gran medida nuestra codificacin. Los procedimientos y las funciones son los elementos de
programacin que ponen en prctica las tres ideas anteriores:
a) Descomposicin de un gran problema en subtareas.
b) Tareas similares con slo parmetros de entrada diferentes.
c) Reutilizacin del cdigo.

Funciones: La idea de funcin, est generalmente asociada a una idea matemtica, es decir, a una
expresin matemtica que, dados unos parmetros, nos entrega un valor. En C, una funcin es mucho
ms que una expresin matemtica. Podramos decir que se trata de un trozo de cdigo independiente
de nuestro programa, que puede tener o no parmetros, que dados los valores de entrada ejecuta una
serie de acciones que finalmente se expresan en el valor de la funcin.
Procedimientos: Un procedimiento es similar a una funcin a excepcin de que no retorna valor. Sin
embargo, contiene un cuerpo con cierta funcionalidad, pudiendo retornar los valores en sus
argumentos.
Sintaxis en C: Las funciones en C, presentan la siguiente forma:
tipo_funcin nombre(lista_parmetros)
{
cuerpo_de_la_funcin
return (valor);
}
Donde, tipo_funcin, corresponde al tipo de valor que devuelve la funcin, pudiendo ser cualquier tipo
vlido (int,float, char, etc.). Si se trata de un procedimiento, existe un tipo especial que define el no
retornar nada: void.
La sentencia return, tiene dos usos importantes. Primero, fuerza una salida inmediata de la funcin en
que se encuentra, siguiendo la ejecucin en el cdigo que llam a la funcin. El otro uso, es para
devolver un valor.
En C, todas las funciones, excepto las de tipo void, devuelven un valor. Este valor, se especifica
explcitamente en la sentencia return. Cuando una funcin no se define de tipo void y adems no se
especifica un valor de vuelta, entonces el valor devuelto por la funcin queda tcnicamente indefinido.
Toda funcin que no se declare como void, puede ser usada como operando en cualquier expresin
vlida de C. Por ejemplo:
if (max(x,y) > 100) printf(Mayor:,max);

18 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

No es necesario asignar siempre el valor devuelto por alguna funcin. Cuando esto ocurre, el valor
devuelto simplemente se ignora.
En C, es fundamental colocar el tipo de la funcin, pues de lo contrario, se interpretar que la funcin
retorna un entero.
En main(), la sentencia return devuelve un cdigo de terminacin al proceso de llamada, un valor 0
(cero) indica que el programa ha terminado normalmente. Todos los dems valores indican que se ha
producido algn tipo de error.
Declarar una sentencia return en main(), es opcional. Pero, es una buena costumbre hacerlo.
Argumentos de funciones: Cada funcin que use argumentos, debe declarar variables que acepten
los valores de los argumentos. Estas variables se llaman parmetros formales de la funcin.
Ejemplos:
mul(int a, int b)
{
return a*b;
}
La funcin mul, tiene dos parmetros: a y b
Al igual que, como en otro tipo de variables, se pueden hacer asignaciones a los parmetros formales
de una funcin o usarlos en cualquier expresin vlida en C.
Llamada por Valor: En esta forma de pasar argumentos, se copia el valor del argumento en el
parmetro formal de la sub-rutina. De esta manera, los cambios producidos en los parmetros de la
sub-rutina no afectan a las variables que se usan en la llamada.
Ejemplo:

#include <stdio.h>
void cambiar(int x, int y);
main()
{
int a,b;
a = 5;
b = 8;
cambiar(a,b);
printf(%d,a);
return 0;
}
/* Coloca el valor del segundo parmetro en el primero y viceversa */
void cambiar(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}

Llamada por Referencia: Es otra forma de pasar argumentos a una sub-rutina. En este mtodo, se
copia la direccin del argumento en el parmetro formal, cualquier cambio producido en los parmetros
de la sub-rutina, modifican a la variable usada en la llamada.

19 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

Para causar una llamada por referencia se debe pasar un puntero al argumento, esto se hace
incorporando un amppersand (&) delante de l. Adems, se debe declarar el respectivo parmetro
formal de tipo puntero.
Ejemplo:
#include <stdio.h>
void cambiar(int *x, int *y);
main()
{
int a,b;
a = 5;
b = 8;
cambiar(&a,&b);
printf(%d,a);
return 0;
}
/* Coloca el valor del segundo parmetro en el primero y viceversa */
void cambiar(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
Cuerpo de una funcin: El cuerpo de una funcin corresponde al cdigo de implementacin de la
funcin. Este cdigo, al igual que cuando es implementado en el main(), puede contener variables de
uso auxiliar en sus primeras lneas. Sin embargo, a diferencia del main(), estas variables sern locales
a esta funcin, vale decir slo pertenecen a la funcin, no pudiendo ser accesada desde otra funcin o
desde el main().

CAPITULO XI: E/S en Archivos


El sistema de archivos en ANSI C, se compone de varias funciones que se encuentran en el header
<stdio.h>.
Puntero a Archivo: Se debe indicar sobre qu archivo se desea realizar la lectura o escritura. Para
esto, hay que emplear una variable de tipo puntero que representar al archivo. Un puntero a un archivo
es un puntero a una informacin que define varias cosas sobre l, incluyendo su nombre, su estado y su
posicin actual. La variable de tipo puntero se declara bajo la siguiente sintaxis:
FILE *nombre;
Abrir un Archivo: Consiste en asociar un archivo externo (desde un directorio de nuestro sistema), con
la variable de tipo puntero que lo referencia en el programa. Para esto, se utiliza la funcin fopen() que
devuelve un puntero de tipo FILE. La asociacin se logra a travs de la siguiente declaracin:
fp = fopen (nombre_archivo, tipo_acceso);
Donde fp corresponde a la variable de tipo FILE ya declarada, y a la que se le asociar el puntero que
retorna fopen().
El nombre del archivo se especifica en nombre_archivo y el tipo_acceso corresponde al modo en que
se trabajar sobre el archivo.

20 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

Se puede abrir un archivo en modo texto o en modo binario. En modo texto, las secuencias de salto de
lnea se convierten a caracteres de salto de lnea en la lectura. En la escritura ocurre lo contrario, los
caracteres de salto de lnea se convierten en saltos de lnea. Estas conversiones no ocurren en archivos
binarios.
A continuacin, se indicarn los distintos tipos_acceso :
Archivos de Texto
r
w
a
r+
w+
a+

Abre para lectura.


Crea para escritura
Abre para aadir
Abre para lectura/escritura
Crea para lectura/escritura
Abre o crea para lectura/escritura

Para archivos binarios se debe agregar una letra b al final.


Ejemplo:
fp = fopen(prueba, w)
Se crea el archivo prueba para escritura. Si el archivo existe se borra y se crea uno nuevo, si no existe,
simplemente se crea. Para abrir archivos de lectura estos deben existir, de lo contrario devuelve un
error.
Validacin: Si por alguna razn la funcin fopen() fallara, retornar una referencia nula NULL. Por
esto, es conveniente al abrir un archivo, usar la siguiente operacin:
if (( fp = fopen(prueba,w)) = = NULL)
printf(Error: Al abrir el archivo prueba);
Escritura de archivos: Se utiliza la funcin fprintf(), su sintaxis es similar a printf() salvo que como
primer argumento debe llevar la variable de tipo FILE que se asoci al archivo:
fprintf(var_FILE,str_control, arg1, arg2, ...);
Lectura de Archivos: Se utiliza la funcin fscanf() que es similar a scanf(). Tambin, se debe incluir la
variable de tipo FILE a la que se asoci el archivo:
fscanf(var_FILE, s_control, &arg1, &arg2, ...);
Cerrar un Archivo: Se utiliza la funcin fclose(), que elimina la referencia al archivo abierto con fopen()
y realiza un cierre formal del archivo. La sintaxis es la siguiente:
fclose(var_FILE);
Cuando fclose() tiene xito, se devuelve un 0 y si ocurre un error se devuelve EOF. Generalmente,
fclose() falla cuando se ha retirado antes de tiempo un diskette o cuando no queda espacio libre en l.

21 | P a g e

Fundamentos de Programacin

Profesor: Cristian Millacariz

APENDICE A

FUNCIONES DE C

FUNCION
abs(i)
atof(s)
atoi(s)
atol(s)
exit(u)
rand(void)
acos(d)
asin(d)
atan(d)
atand2(d1,d2)
cos(d)
cosh(d)
exp(d)

TIPO
int
double
int
long
void
int
double
double
double
double
double
double
double

fabs(d)
floor(d)

double
double

fmod(d1/d2)
labs(l)
log(d)
log10(d)
pow(d1,d2)
sin(d)
sinh(d)
sqrt(d)
tan(d)
fclose(f)

double
long int
double
double
double
double
double
double
double
int

feof(f)

int

fopen(s1,s2)

file*

fread(s,i1,i2,,f)

int

22 | P a g e

PROPOSITO
Retorna el valor absoluto de i
Convierte la cadena a una cantidad en doble precisin
Convierte la cadena a un entero
Convierte la cadena s en un entero largo
Cerrar todos los archivos y buffers y terminar el programa
Retorna un valor aleatorio positivo
Retorna el arcoseno de d
Retorna el arco seno de d
Retorna el arco tangente de d
Retorna el arco tangente de d1/d2
Retorna el coseno de d
Retorna el coseno hiperblico de d
Elevar d a la potencia de e=2.711182818 es la base de los
logaritmos naturales
Retorna el valor absoluto de d
Retorna el valor redondeado por defecto al entero menor
ms cercano
Retorna el resto de d1/d2 con el mismo signo que d1
Retorna el valor absoluto de l
Retorna el logaritmo natural de d
Retorna el logaritmo (en base 10)
Retorna d1 elevado a d2
Retorna el seno de d
Retorna el seno hiperblico de d
Retorna la raz cuadrada de d
Retorna la tangente de d
Cierra el archivo f. Retorna un 0 si el archivo se ha cerrado
con xito
Determina si se ha encontrado un fin de archivo. Si es as,
devuelve un valor distinto de 0
Abre un archivo llamado s1, del tipo s2. Retorna un puntero
al archivo
Leer i2 elementos, cada uno de tamao i1 bytes, desde el
archivo f hasta la cadena s

INCLUDE
stdlib.h
stdlib.h
stdlib.h
stdlib.h
stdlib.h
stdlib.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
math.h
stdio.h
stdio.h
stdio.h
stdio.h

Fundamentos de Programacin

Profesor: Cristian Millacariz

FUNCION
fwrite(s,i11,i2,f)

TIPO
int

getchar(void)
gets(s)
printf(...)
putchar(s)
puts(s)
rewind(f)
scanf(...)
getch()

int
char*
int
int
int
void
int
int

getche()

int

isalnum( c)

int

isalpha( c)

int

isdigit( c)

int

islower( c)

int

isspace( c)

int

isupper(c )

int

tolower

int

PROPOSITO
Escribir i2 elementos, cada uno de i1 byte desde la cadena s
hasta el archivo f
Lee un carcter desde dispositivo estndar
Lee una cadena desde dispositivo estndar
Escribe datos en el dispositivo de salida estndar
Escribe un carcter en el dispositivo de salida estndar
Escribe una cadena en el dispositivo estndar
Mueve el puntero al principio del archivo f
Lee datos desde el dispositivo de entrada estndar
Espera que se le ingrese un carcter y devuelve el valor,
pero no lo muestra en pantalla
Espera que se le ingrese un carcter y de vuelve el valor,
mostrndolo en pantalla
Determina si el argumento es alfanumrico. Retorna un valor
distinto de 0 si es cierto; en otro caso, devuelve 0
Determina si el argumento es alfabtico. Retorna un valor
distinto de 0 si es cierto en otro caso, devuelve 0.
Determina si el argumento es un dgito decimal. Retorna un
valor distinto de 0 si es cierto; en otro caso devuelve 0
Determina si el argumento es una minscula .Retorna un
valor distinto de 0 si es cierto; en otro caso devuelve 0
Determina si el argumento es un espacio en blanco. Retorna
un valor distinto de 0 si es cierto; en otro caso devuelve 0
Determina si el argumento es una mayscula. Retorna un
valor distinto de 0 si es cierto, en otro caso devuelve 0
Convierte una letra a minscula

toupper

int

Convierte una letra a mayscula

strcmp(s1,s2)

int

strcmpi(s1,s2)

int

strcpy(s1,s2)
strlen(s,c)
strset(s,c)

char*
int
char*

Compara dos cadenas lexicogrficamente Retorna un valor


negativo si s1<s2; un 0 si s1=s2; y un valor positivo si s1>s2
Esta sentencia considera las maysculas y las minsculas
Compara dos cadenas lexicogrficamente. Retorna un valor
negativo si s1<s2; un 0 si s1=s2 y un valor positivo si s1>s2
Compara sin considerar las maysculas y las minsculas
Copia la cadena s2 en s1
Retorna el nmero de caracteres de la cadena
Pone todos los caracteres de s en c, (excluyendo el carcter
nulo del final \0)

NOTAS:
Tipo se refiere al tipo de la cantidad devuelta por la funcin.
Un asterisco (*) denota un puntero.
c
d
f
i
l
p
s
u
23 | P a g e

denota un argumento de tipo carcter


denota un argumento de doble precisin
denota un argumento archivo
denota un argumento entero
denota un argumento entero largo
denota un argumento puntero
denota un argumento cadena o string
denota un argumento entero sin signo

INCLUDE
stdio.h
stdio.h
stdio.h
stdio.h
stdio.h
stdio.h
stdio.h
stdio.h
conio.h
conio.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
stdlib.h
ctype.h
stdlib.h
string.h

string.h

string.h
string.h
string.h

Fundamentos de Programacin

Profesor: Cristian Millacariz

APENDICE B:
A continuacin un programa sin procedimientos ni funciones que incluye algunos comandos:
/* MENU-NUM.C*/
# include <stdio.h>
#include <conio.h>
int n1,n2,n3,may,prom,suma,m1,m2,m3;
char op1;
main()
{
do
{
clrscr();
gotoxy(30,2);printf("Men Principal");
gotoxy(30,3);printf("==============");
gotoxy(30,4);printf("1....Encontrar el mayor");
gotoxy(30,5);printf("2....Calcular el Promedio");
gotoxy(30,7);printf("3....Salida");
gotoxy(30,9);printf("Opcin [ ]\b\b");op1=getch();
switch(op1)
{
case '1':
clrscr();
gotoxy(30,1); printf("Ingresar 3 Nmeros y encontrar el Mayor");
gotoxy(30,2); printf(---------------------------------------);
gotoxy(10,5); printf("Primer Nmero : ");
gotoxy(10,7); printf("Segundo Nmero: ");
gotoxy(10,9); printf("Tercer Nmero : ");
gotoxy(26,5);scanf("%d",&n1);
gotoxy(26,7);scanf("%d",&n2);
gotoxy(26,9);scanf("%d",&n3);
may=n1;
if (n2>may)
may=n2;
if (n3>may)
may=n3;
gotoxy(10,12);printf("El nmero Mayor es: %d",may);getch();
break;
case '2':
clrscr();
n1=0;n2=0;n3=0;prom=0;suma=0;
gotoxy(30,1);printf("Ingresar 3 Nmeros y Calcular el Promedio");
gotoxy(30,2);printf("=========================================");
gotoxy(10,5);printf("Primer Nmero: ");
gotoxy(10,7);printf("Segundo Nmero: ");
gotoxy(10,9);printf("Tercer Nmero: ");
gotoxy(26,5);scanf("%d",&n1);
gotoxy(26,7);scanf("%d",&n2);
gotoxy(26,9);scanf("%d",&n3);
suma=n1+n2+n3;
prom=suma/3;
gotoxy(10,12);printf("El Promedio es : %d",prom);
getch();
break;
}

24 | P a g e

Fundamentos de Programacin
}
while (op1!='3');
}

25 | P a g e

Profesor: Cristian Millacariz

S-ar putea să vă placă și