Está en la página 1de 35

HISTORIA DEL LENGUAJE C El lenguaje C naci en los laboratorios de la Bell Telephone y fu escrito por Brian Kernighan y Dennis Rirchie.

Ha sido estrechamente asociado con el sistema operativo UNIX, ya que este sistema se desarrollo en este lenguaje, lo mismo que casi la totalidad de los programas y herramientas de UNIX. Tambin el propio compilador de C fue escrito en C. C es un lenguaje de programacin de propsito general conocido por su eficiencia, economa y portabilidad. EFICIENCIA . Programacin estructurada. . Abundancia en operadores y tipos de datos. . Codificacin en alto y bajo nivel simultneamente. . Reemplaza ventajosamente la programacin en ensamblador. . Utilizacin natural de las funciones primitivas del sistema. . No est orientado a ningn rea en especial. . Produccin de cdigo objeto altamente optimizado. . Facilidad de aprendizaje. . Permite trabajar fcilmente a nivel de bits . "C" combina los elementos propios de un lenguaje de alto nivel como BASIC, PASCAL, FORTRAN con los elementos funcionales de un lenguaje de bajo nivel (como el lenguaje Ensamblador) "se dice que C es un lenguaje de medio nivel" ECONOMIA . Un programa en *C* en general requiere menos cdigo que el equivalente en otros lenguajes, ya que consta de muy pocas instrucciones . La ejecucin es muy rpida y adems el programa ejecutable gasta machismo menos espacio en disco y en memoria que otros lenguajes de alto nivel. . Economa en las expresiones. PORTABILIDAD . un programa escrito en *c* corre con cuy pocos cambios en cualquier mquina que posea dicho compilador. . El diseo de "C* lo hace independiente de cualquier sistema operacional. . "C" maneja un preprocesador para efectuarle cambios al texto fuente antes del proceso de compilacin. . Maneja adems Macros y compilacin condicional. . En *C* se puede escribir cualquier ambiente de programacin: Compiladores, Sistemas Operativos, Sistemas de Archivos, Sistemas Expertos.

TRMINOS EN C
Cdigo Fuente Es el texto de programa que el usuario realiza. Cdigo Objeto Es el programa traducido a lenguaje de mquina. Compilador Es el encargado de traducir el cdigo fuente en cdigo objeto, de esta manera la ejecucin de los programas es ms rpida que la que se realiza a travs de los lenguajes interpretados. Interpretador 1

Es el que lee el cdigo fuente de un programa lnea a lnea realizando las instrucciones contenidas en esa lnea; cuando se desea correr un programa en forma interpretada el cdigo fuente debe estar siempre presente. Tiempo de compilacin Es el tiempo durante el cual el compilador traduce a lenguajes de mquina el cdigo fuente, durante este periodo suelen detectase los diferentes tipos de errores de compilacin (sintcticos y lxicos). Tiempo de ejecucin Es el tiempo en que se ejecuta el programa. Libreras Conjunto de programas predefinidos por el lenguaje con el fin de realizar ciertas funciones, cuando son usadas desde un programa.

CONJUNTO DE CARACTERES DEL LENGUAJE


Letras : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz Dgitos decimales : 0 1 2 3 4 5 6 7 8 9 Carcter de subrayado (_) Estos caracteres son utilizados para formar los identificadores. Caracteres especiales y signos de puntuacin , . ; = ? ' " ( ) { } [ ] < ! | / \ ~ + # % & *-=> Caracteres espacio en blanco

Espaciado en blanco, tabulador (tab), retomo de carro (CR), avance de pgina (form feed), son caracteres denominados espacios en blanco, porque la labor que desempean es la misma que la del espacio en blanco, esto es, actuar como separadores entre los elementos de un programa. Los espacios en blanco en exceso son ignorados por el compilador, lo cual nos permite escribir programas ms legibles. El carcter CTRL + Z (bajo DOS) es tratado por el compilador como un indicador de fin de fichero (End Of File EOF), en otros compiladores es CTRL + C

SECUENCIAS DE ESCAPE
Una secuencia de escape est formada por el carcter \ seguido de una letra o una combinacin de dgitos. Son utilizadas en constantes string para acciones como nueva lnea, tabulador y para representar caracteres no imprimibles. Secuencia \n \t \v \b \r \f Nombre Salta a la prxima lnea en el dispositivo de salida de datos Tabulador horizontal (defecto 6 espacios) Tabulador vertical (solo para impresora) Backspace (retroceso) Retomo de carro Salta a una nueva hoja , o borra la terminal

\a 007 \' \" \\ \0

Bell (alerta, pitido) Comilla simple Comilla doble Backslash (barra hacia atrs) Identifica el final de un arreglo o de un string. Es el carcter nulo.

IDENTIFiCADORES O CAMPOS
Los identificadores son nombres para identificar reas de datos, programas, procedimientos, funciones, archivos de datos, constantes, macros etc. El compilador C trata las letras maysculas y minsculas como caracteres diferentes. Por ejemplo los identificadores Materia y MATERIA son diferentes.

REGLAS O SINTAXIS PARA DEFINIR IDENTIFICADORES O CAMPOS


Un identificador consta de uno o ms caracteres (letras, dgitos, y el carcter de subrayado) No deben contener caracteres especiales. El primer carcter debe ser una letra o el carcter de subrayado. Las letras pueden ser maysculas o minsculas y se consideran como caracteres diferentes. Los identificadores pueden tener cualquier nmero de caracteres pero solamente para su identificacin se tienen en cuenta los primeros 8 caracteres. Los nombres de variables no pueden ser palabras reservadas, o sea aquellas que tienen un significado especial para el compilador C.

PALABRAS CLAVES
El lenguaje C, tiene las siguientes palabras claves: auto break case char const continue default do double enum extem float for goto if int long register retum short sizeof static struct switch typedef union unsigned void volatile while Tambin para el compilador C de Microsoft, son palabras clave: Far fortran huge near pascal entry else signed

Las palabras claves deben escribirse siempre en minsculas

COMENTARIOS
Un comentario es una secuencia de caracteres cualesquiera encerrados entre los smbolos /* y */ colocando antes del comentario // Los comentarios pueden ocupar ms de una lnea, pero no pueden anidarse, pueden aparecer en cualquier lugar donde se permita aparecer un espacio en blanco. El compilador trata a un comentario como un espacio en blanco. Ejemplo: /* Funcin principal */ // Funcin principal

TIPOS DE DATOS EN C
Un dato es toda aquella informacin con la que puede trabajar el computador. Un tipo de dato define el conjunto de valores que puede tomar una variable de dicho tipo. Existen cuatro tipos de datos bsicos en C: Carcter Entero Float y Double. El tamao y rango de datos varia de acuerdo al tipo de procesador y compilador de C.

Tipo Char
Consiste en cualquier carcter que se encuentre encerrado entre comillas sencillas. Ejemplo: 'a', '1', ' ','A','&', 'r. El valor de un dato de tipo char, corresponde al valor numrico de ese carcter dentro del set de caracteres de la mquina. (ASCII), por ejemplo, el carcter 'A' tiene el valor 65, o el carcter ' : ' tiene el valor 58. El tipo char puede involucrarse en clculos numricos. Las secuencias de escape tambin son consideradas datos de tipo carcter aunque sean dos caracteres encerrados entre comillas simples.

Tipo Int
Un dato de tipo int corresponde a un valor numrico entero. Ejemplo: 4555 5 -286 141

Los datos de tipo int en C pueden ser de tres tipos:

Short Int
(De Precisin Corta). Este tipo de dato ocupa 8, 16, 32 o 36 bits, esto est determinado por la arquitectura de la mquina. En mquinas de ocho bits se puede definir un rango entre -128 a 127.

Long lnt
(De Precisin Larga). Ocupa 32 o 36 bits de acuerdo a la arquitectura de la mquina. En mquinas de 32 bits se define un rango de -4294967296 a 4294967295,

Unsigned Int
(Entero sin Signo). Ocupa 16, 32 o 36 bits; se puede definir un rango entre 0 a 65535 para mquinas de 16 bits. Los datos que se encuentran definidos slo como int determinan un rango entre -32768 a 32767,

Tipo Float
Corresponde a los valores reales. Aproximadamente 6 dgitos de precisin Ejemplo: 623571.565 32223.5 342.65 -46754.6 -767.6

Tipo Double
Es un nmero real con mayor precisin que un dato de aproximadamente 12 dgitos de precisin en mquinas de 64 bits. TIPO char unsigned char int unsigned int long int unsigned long int float double ABREVIACION TAMAO 1 byte 1 byte 2 byte 2 byte 4 byte 4 byte 4 byte 8 byte tipo Float, posee

unsigned long unsigned long

RANGO -128 a 127 0 a 255 -32768 a +32767 0 a 65535 -2147483648 a ..... 0 a 4294967295 3.4E-38 a 3.4E+38 1.76E-308 a 1.76E+308

CAMPOS VARIABLES Y CONSTANTES EN C


Concepto de un campo variable
Son posiciones de memoria identificadas con un nombre nico. Su funcin es la de almacenar datos en forma temporal ya que puede cambiar su valor durante la ejecucin del programa.

Definicin de campos variables


Definir una variable es darle un nombre a una localizacin de almacenamiento. Se pueden definir variables de tipo char, int, long, short, unsigned, double y float, y en cada caso tendr capacidad de almacenar datos de acuerdo al tipo indicado. En C todas las variables deben haber sido declaradas antes de usarlas. FORMATO tipo de dato y posteriormente el nombre del campo variable correspondiente. Ejemplos: int y; /* y campo variable que almacenar datos de tipo entero */ char x; /* x campo variable que almacenar datos de tipo carcter */ float w; /* w campo variable que almacenar datos de tipo real */ unsigned alfa, beta, gama ; /* alfa, beta, gama, campos variables que almacenaran datos de tipo entero sin signo */

Campos Constantes en C
Un campo constante es una localizacin de memoria cuya funcin es la de almacenar datos bajo un nombre nico. La caracterstica de los campos constantes es que el valor de stos no puede variar durante la ejecucin del programa. 5

Definicin de constante
Para declarar una constante se realiza de la siguiente manera: # define nombre del campo constante valor o dato Ejemplos: # define Salario 235479

El #define obliga al compilador a hacer una sustitucin en el programa cada vez que encuentre la cadena Salario, por el valor que tiene almacenado (235479) Tambin son constantes: Los nmeros enteros Ejemplo : 35 ocupa menos de 16 bits, lo cual implica que es una constante de tipo entero Los caracteres Ejemplo : 'a' '2' ', ' '\n'

Los string o cadenas Son una cadena de caracteres encerrados entre comillas dobles. Ejemplo : "Tal como pienses hoy, as ser tu maana" "a" "valor \" 100 \" pesos" (representa valor " 100" pesos) Los flotantes Es un numero escrito en notacin cientfica o simplemente con punto decimal Ejemplo : 48.3E+5 -32.8E-3

EJERCICIOS
1. Definir de que tipo son los siguientes nmeros : -282 0 8420 33950 -2.0 0.1 e -40 0.2 e -3 4. e 10 23.001 '1' '?' int int int unsigned float double float float float char char

2. Diga que datos quedan almacenados en las variables int a=4,b=2,c=3,d; a = ++ b; d = c ++; a 4 3 b 2 3 c 3 4 c d 3 d letra real

3. a int a,b,c,d ; char letra ; float real ; real=3.5; letra ='m'; a=38;b=10; 38 c=4;d=1; a-=2; 36 b=a/9; c%=2 ; d=a+b/2*c+b ++a ; 37 a++ ; 38 a= ++c/b*--d; 0 a%=5; 0 a%=real; error modulo a = c ++ / b * d -- ; 0

m 10 4 0 40 39 4 1

3.5

es entre enteros 2 38

NOTA : Para saber el tamao en bytes de un tipo de variable se usa la funcin sizeof() 4. char numero, caso ; int ojo ; numero = 160 ; caso = '' ; ojo = '' ; ojo += 20 ; ojo += 32767 ; caso = '\n' ; numero 160 caso i 161 181 ? \n ojo

5. int num1, num2, num1 = 10 ; num2 = 25 ; num3 = num2 > num1 ; num3 = num1 > num2 ; numl = (num2 -15) ==10 ; num3 = num1 != num3; 6. int a=1; b=1;c=1;d; d = ( a>=b) && (b==c) ; d=(a<b) ||(c!=a)&&( ! (c==d)); d=(a<b) ||(c!=a)&&( ! (c=o)); 7. Sea max_dif,a0=2,a1 =0,a2=3;

num3 ; 10 1

num1 25

num2 1 0 1

num3

a 1

b 1

c 1 0

d 1 0 1 a1 0 a2 3

max_dif 3

a0 2

max_dif = (a0 > a2) ? a0 - a1 : a2 - a1

8. Determine el contenido de las variables despus de ejecutar la siguiente secuencia de instrucciones : int z,y,x; z=1; y=2; x=3; z=(x<y)? x++: ++y; 9. Determine el contenido instrucciones : inf a,b,c ; a = 10 ; c=8; b=5; c += (a>b) ? a++ : b-- ; z 1 3 x 3 y 2 3

de las variables despus de ejecutar la siguiente secuencia de a 10 11 b 5 c 8 18

SENTENCIAS DE ASIGNACIN
La sentencia de asignacin se utiliza para poder almacenar un valor determinado en un Variable. La forma general de la sentencia de asignacin es : Nombre variable = valor Ejemplo: X = 5; c =' \n'; En este caso la variable X contiene el valor de 5, su contenido puede variar cuando el programa asigne otra informacin. El lenguaje C permite asignarle a una variable de tipo int un carcter o a una variable de tipo char asignarle un nmero, a este proceso se le conoce coma conversin de tipos de asignacin. Ejemplo: char n; int a; a = 'c'; n = 35 ; En la variable a queda almacenado el nmero 99 correspondiente al ascii del carcter 'c' y en la variable n se almacena el signo #.

OPERADORES
Son los smbolos usados para realizar operaciones aritmticas, lgicas, etc.

. OPERADORES ARITMETICOS
Asocian dos (2) cantidades y con base en ello se obtiene como resultado otra cantidad. Estas cantidades pueden estar contenidas en campos variables o constantes. Estos operadores son : Jerarqua
Operador

++ * +

Nombre Incremento Multiplicacin Suma

Operador -/ -

Nombre decremento divisin resta

Operador Nombre Jerarqua % modulo

+ + incrementa el valor de la variable en 1. X = X + 1 es igual a decir X++; este


operador tambin se puede escribir antes de la variable, siempre y cuando se encuentre sola. ++ X

- - decremento el valor de la variable en 1. X = X - 1 es igual a decir X - - o - - X;


% guarda el residuo de una divisin entre enteros. Este operador se usa a menudo para
descomponer un dato de tipo entero en sus dgitos individuales

/ divisin, se debe asegurar que el denominador sea diferente de cero. Si el dividendo y


el divisor son enteros, el cociente es entero. Si alguno de los dos o los dos son reales, el resultado es real Ejemplos : 1) 5 + aritmtico 2) int a = 10, b = 8, c; a 10 c = a + b 18 b 8 c 20

constante operador constante

variable variable operador variable aritmtico

3) + + a cuando la variable est sola, es indiferente que el incremento este adelante o atrs 4) b- 5) c = a % b 6) c = a / b 11 7 4

1 1

7) Si a o b fueran de tipo real, pero c entera, c contendra 8) Si a ,b, c fueran de tipo real en c quedara

1.57

Observe que el resultado siempre ser una cantidad numrica

10

.OPERADORES DE ASIGNACION
Permiten expresar la forma como ser usada la informacin y los nombres de los campos Estos operadores son :
Operador Nombre Asignacin Operador Nombre Asignacin de adicin Operador Nombre Asignacin de resta Operador Nombre Asignacin de multiplicacin Operador Nombre Asignacin de divisin

= %=

+=

-=

*=

/=

Asignacin de modulo

Jerarqua

= Ordena llevar y grabar en el campo variable que est a la izquierda la copia o imagen
de la informacin indicada a la derecha o sea almacena informacin en una localizacin de memoria + = Ordena llevar y grabar en el campo variable que est a la izquierda, su contenido adicionndole la informacin indicada a la derecha. Permite incrementar el valor de una variable con valores diferentes a 1.

- = Ordena llevar y grabar en el campo variable que est a la izquierda, su contenido


restndole la informacin indicada a la derecha. Permite decrementar el valor de una variable con valores diferentes a 1.

* = Ordena llevar y grabar en el campo variable que est a la izquierda, su contenido multiplicado por la informacin indicada a la derecha / = Ordena llevar y grabar en el campo variable que est a la izquierda, su contenido dividido por la informacin indicada a la derecha % = Ordena llevar y grabar en el campo variable que est a la izquierda, el mdulo entre su contenido y la informacin indicada a la derecha Ejemplo : int I = 10, k = 5; I 10 I = I + k esto equivaldra a I + = K 11 15 k 5

I = I - k esto equivaldra a I - = K I = I * k esto equivaldra a I * = K I = I / k esto equivaldra a I / = K I = I % k esto equivaldra a I % = K

10 50 10 0

Cuando en una asignacin el operador ++ o -- est escrito despus de la variable , primero el programa usa el contenido de la variable, o sea lo asigna y luego incrementa o decrementa su contenido. Cuando el operador ++ o -- est escrito antes de la variable, primero el programa incrementa o decrementa la variable y luego hace uso de su contenido, o sea lo asigna. As, si por ejemplo: int x, y ; x = 10; y = x+ +; En la variable y queda almacenado el valor de 10 ya que primero hace el uso del valor de la variable y despus la incrementa ( a la variable X). Pero si se tuviera : int x, y ; x = 10; y = ++ x ; En la variable y queda almacenado el valor de 11, ya que primero incrementa la variable x y luego se asigna su contenido a y.

. OPERADORES LOGICOS
Cuando empleamos estos operadores el resultado ser uno de los valores de verdad lgica ( .V. erdadero o .F,also ) Operan sobre informacin lgica, numrica o como caracteres En lenguaje C el cero es falso, lo que es diferente de cero es verdadero Se dividen en : . Operadores lgicos relacionales

12

. Operadores lgicos booleanos

OPERADORES LOGICOS RELACIONALES


Operan sobre dos (2) operandos, bien sean numricos, campos constantes o variables pero que sean del mismo tipo. Su resultado siempre ser un valor de verdad. Estos operadores son :
Jerarqua Operador Nombre Menor Operador Nombre Mayor Diferente Operador Nombre Menor o igual Operador Nombre Mayor o igual Jerarqua

< == Ejemplo : int A, B, S;

Igual

> !=

<=

>=

A A = 10 B=8 S = A == B S=A>B S = A != B S = A<B S= A >= B


variable operador variable

B 8

10 0 1 1 0 1

S=

>=

variable operador constante

Note que los operadores utilizados son los relacionales

OPERADORES LOGICOS BOOLEANOS


Operan sobre informacin lgica y su resultado siempre ser un valor de verdad Estos operadores son : Jerarqua Operador Nombre NO Operador unario !

&& ||

AND OR

Operadores binarios, operan sobre dos valores de verdad

En la siguiente tabla vemos como operan sobre los operandos A y B A B F F

!A
V

!B
V

A && B A || B F F

13

F V V

V F V

V F F

F V F

F F V

V V V

OPERADORES DE DIRECCIONES
Sirven para trabajar con las direcciones en la memoria donde estn ubicados los campos Estos operadores son: Operador

&

Nombre Direccin

Operador Nombre Indireccin *

& da la direccin de un operando * da el valor direccionado por el operando o sea el contenido

OPERADOR CONDICIONAL O TERNARIO ? :


El C permite un operador muy conveniente a la vez que potente, que puede usarse para sustituir sentencias de decisin ( if-then-else). El operador ternario (Expresin compuesta por 3 elementos) toma la siguiente forma general Exp1

? Exp2 : Exp3;
Si son varias

donde Exp1, Exp2 y Exp3 son expresiones, variables o constantes. instrucciones en Exp, se separan por coma

El operador

? : acta as :

evala Exp1, si la respuesta es cierta, evala Exp2 y ese es el valor de la expresin. Si Exp1 es falsa, evala Exp3 y se es el valor de la expresin. Ejemplo : int x, y; x 10 100 y x = 10 y = x > 9 ? 100 : 200;

En este ejemplo, a y se le asignar el valor 100. Si x hubiera sido menor o igual que 9, y habra recibido el valor 200. x = 10; y = ( x>9 ) ? 100:200;

14

En este ejemplo, a y se le asignar el valor 100. Si x hubiera sido menor o igual que 9, y habra recibido el valor 200.

TABLA DE OPERADORES
OPERADOR SIGNIFICADO !
No lgico

~
Complemento, bitwise

++
Incremento

-Decremento

*
Multiplicacin, indireccin

/
Divisin

OPERADOR SIGNIFICADO

%
Mdulo Suma

+
Resta

<<
Desplazamiento izquierda

>>
Desplazamiento derecha

?:
Condicional

OPERADOR SIGNIFICADO

<
Menor que

<=
Menor o igual

>
Mayor

>=
Mayor o igual Igual

==

!=
Diferente

OPERADOR SIGNIFICADO

|
Or entre Enteros, inclusivo

&
And entre enteros, direccin

&&
And lgico

||
Or lgico

=
Asignacin

+=
Asignacin adicin de

OPERADOR SIGNIFICADO

-=
Asignacin de resta

*=

/=

%=
Asignacin mdulo

>>=

<<=

Asignacin de Asignacin multiplicacin de divisin

de Asignacin de Asignacin de desplazamiento desplazamiento derecha izquierda

OPERADOR SIGNIFICADO

&=
Asignacin de and

|=
Asignacin or inclusivo de

Los operadores estudiados hasta este momento, tienen la jerarqua que se sintetiza en la siguiente tabla: JERARQUA MAYOR OPERADOR () ! ~ ++ -*/% +<< >> < <= > >= == != & | && || = += -= *= /=.... ASOCIATIVIDAD izquierda a derecha derecha a izquierda izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha izquierda a derecha

MENOR

FORMATO BASICO DE UN PROGRAMA ESCRITO EN C


[Seccin de declaracin de directivas al compilador o al preprocesador ] [Declaracin de variables globales ]

15

main () { [Declaracin de variables locales] Instrucciones del programa. Van en minscula, y terminan en } [Definicin de otros procedimientos y funciones ]

ENTRADAS Y SALIDAS EN C
La E/S por consola se refiere a las operaciones realizadas en el teclado y la pantalla del computador. Las sentencias de entrada y salida manejadas en C son :

SALIDAS 1 . Funcin printf ()


La funcin printf () en C permite escribir y efectuar salidas por pantalla. La forma general de esta funcin es la siguiente: printf ( "cadena de control", lista de argumentos); La cadena de control siempre va encerrada en doble comilla y consiste en dos tipos de elementos que son ; . El primer elemento est construido por caracteres o literales que sern impresos en la pantalla. . El segundo contiene rdenes de formato que definen la forma de visualizar los argumentos. La lista de argumentos son los nombres de las variables, constantes a imprimir separadas por coma. Dentro de la lista de argumentos o variables se pueden colocar expresiones aritmticas, las cuales son evaluadas y su resultado es el que se presenta. Una orden de formato empieza con el signo de porcentaje "%". Debe haber el mismo nmero de argumentos que de ordenes de formato. Dichos argumentos deben corresponderse en el orden de los formatos definidos. Ejemplo: Printf ("Exito %c %s %d ", 'y', "alegra", 15); En la pantalla aparecer: xito y alegra 15

16

Las ordenes de formato pueden ser cualquiera de las siguientes: cdigo %c %d %e %f %g %o %s %u %x %% %l %p Ejemplos: 1. /* Este programa muestra los diferentes formatos de la funcin printf() */ /* Autor : Fecha : */ # include <stdio,h> void main() { int a ; a = 12345 ; printf ( " %d ", a ); printf ( " %o ", a ); printf ( " %x ", a ); /* librera estndar de entrada y salida */ /* funcin principal */ /* abre llave principal */ /* definicin de variables */ /* asignacin de datos */ /* 1. impresin de variable con formato entero */ /* 2. impresin de variable con formato octal */ /*3. impresin de variable con formato hexadecimal*/ Formato Un carcter Decimal Notacin exponencial Coma flotante decimal. Usa %e %f, lo que sea ms corto. Octal. Cadena de caracteres. Decimal sin signo o datos octales y hexadecimales en su representacin decimal Hexadecimal Imprime un signo de tanto por ciento. Precisin double Muestra un puntero int, unsigned int int Tipo char int float, double float, double float int

printf ( " El valor de a es :%d ", a ) ; /* 4. impresin de variable con formato entero */ printf ( " El valor de a en octal es %o y \n en hexadecimal %x ", a, a ) ; /* 5, impresin de variable con formato octal y hexadecimal */ } En pantalla saldr En la impresin 1. 12345 En la impresin 2. 30071 En la impresin 3. 3039 /* cierre llave principal */

17

En la impresin 4. El valor de a es : 12345

En la impresin 5. El valor de a en octal es :30071 y en hexadecimal es : 3039

Ejercicios : 1) /* Este programa muestra los diferentes formatos de la funcin printf() */ /* Autor : Fecha : */ # include <stdio.h> void main() { long a ,b; unsigned c ; char d = '1' ; float f ; double g ; a = 0x1E240, b =123456 ; c = 61500 ; f= 43.8120 ; b= -48.25104 ; /* asignacin de datos */ largo */ printf (" b en octal = %lo \n ", b ) ; /* impresin de variable con formato octal largo */ printf (" b en hexadecimal = %lx \n ", b ) ; /* impresin de variable con formato hexadecimal largo */ printf (" c que es unsigned = %lu \n ", c ) /* impresin de variable con formato sin signo largo */ printf (" d carcter %c \n ", d ) ; /* impresin de variable con formato caracter */ printf ("%s \n ", "Amo la vida" ) ; /* impresin de variable con formato string */ printf (" El valor de f es : %f \n ", f ) ; /* impresin de variable con formato flotante */ printf (" El valor de g es %f \n ", g ) ; /* impresin de variable con formato flotante */ } /* cierre llave principal */ printf (" b en decimal = %ld \n ", b ) ; /* impresin de variable con formato entero /* librera estndar de entrada y salida */ /* funcin principal */ /* abre llave principal */ /* definicin de variables */

2. Funcin putchar( )
incluir la librera < stdio.h > El efecto de esta funcin, es transferir el contenido de un campo (variable o constante ) desde la memoria al dispositivo de salida. Por ejemplo: putchar (c);

18

transfiere el contenido de la variable c al dispositivo de salida. Ejemplo 1: int a ='2'; char c ='p'; putchar (c); putchar (a); La primera llamada a la funcin putchar (c) escribe : La segunda llamada escribe : p

Ejemplo 2: char c ='q'; int a; a = 82; putchar (c); putchar (a); q La primera llamada a la funcin putchar (c) escribe : R La segunda llamada escribe : porque la funcin putchar () siempre escribe un caracter. Un error muy frecuente en el uso de esta funcin es: int l; l = 1520; putchar (l); se esta tratando de imprimir un caracter en la unidad de salida. La funcin putchar (l), al tratar de convertir el nmero almacenado en la variable l, no encuentra el carcter correspondiente y por lo tanto genera un error en la ejecucin del programa

3. Funcin puts( )
incluir la librera < stdio.h > Permite escribir una cadena de caracteres o un arreglo de caracteres Ejemplo :

19

puts (" No ensucies la fuente donde has apagado tu sed ") ; No ensucies la fuente donde has apagado tu sed En pantalla saldr

4. Funcin cout <<


incluir la librera < iostream.h > Permite salidas de datos por pantalla de cualquier tipo Ejemplo : cout <<" No ensucies la fuente donde has apagado tu sed " ; No ensucies la fuente donde has apagado tu sed En pantalla saldr

#include <iostream.h> void main(){ int precio=1200; cout " El precio es de $ "; // saca el mensaje por pantalla cout precio; // saca el contenido de la variable precio cout "."; //La salida de este trozo de programa ser: El precio es de $ 1200. El operador << se puede usar repetidamente junto con cout, as: #include <iostream.h> void main(){ int precio=1200; cout " El precio es de $ " precio "." ; //La salida de este trozo de programa ser: El precio es de $ 1200.

FLAGS, BANDERAS O MODIFICADORES


Cuando se usa printf(), las rdenes de formato pueden tener modificadores, para determinar la longitud del campo o numero de decimales que se debe presentar al igual que se puede determinar la justificacin de ste. Para esto se usan los modificadores que van despus de % y antes de especificar el formato Modificador un nmero entero 0 + Significado Para definir la longitud mnima de un campo. rellenar con ceros los espacios en blanco los nmeros los alinear a la izquierda. el valor ser precedido por su signo (+ o - )

20

Ejemplos: # indude <stdio.h> void main() { int a, b, d; char c; a=5;b=4;d=10; /* librera estndar de entrada y salida */ /* funcin principal */ /* abre llave principal */ /* definicin de variables */ /* asignacin de datos */

printf("los nmeros son....: %3d %02d %-3d ", a, b, d); /* deja 3 espacios para imprimir la variable a, 2 para el campo b rellenando los espacios con ceros, 3 para el campo d justificando a la izquierda */ } Los resultados esperados sern: _ _ 5 04 10_ NOTA : %8.3f significa deje 8 espacios para imprimir la variable, 3 de los cuales son para los decimales, uno para el punto y el resto para la parte entera. Si no alcanzan los espacios el compilador los ignora y coloca el nmero mnimo necesario para la variable Ejemplo : # include <stdio.h> void main() { float a = -28.4213 ; double b = 43242.31998 ; /* definicin y asignacin de variables */ printf (" a = %5.3 \n", a); /* impresin de datos */ printf (" b = %10.5f \n", b); printf (" a = %8.4f \n b = %6.0f \n ", a, b); } Los resultados sern : a = -28.421 Como la longitud es insuficiente, se escriben los datos sin tener en cuenta las especificaciones. b = 43242. 31998 a = -28.4213 b = 43242 No saca el punto /* librera estndar de entrada y salida */ /* funcin principal */ /* abre llave principal */

ENTRADAS

21

1. Funcin scanf ( )
incluir la librera < stdio.h > Esta funcin se utiliza para leer datos desde un medio de almacenamiento externo, normalmente los datos tecleados por consola. La funcin lee los datos y los almacena en las direcciones de las variables indicadas de acuerdo a un formato. Todas las peticiones o mensajes de entrada deben hacerse antes del scanf(). La forma general de esta funcin es la siguiente: scanf ( "cadena de control", lista de direcciones de los argumentos ); La cadena de control siempre va encerrada en doble comilla y contiene ordenes de formato que definen la forma de capturar los argumentos, o sea los formatos de entrada de los valores a almacenar precedidos por el carcter %. Debe haber el mismo nmero de argumentos que de ordenes de formato. Dichos argumentos deben corresponderse en el orden de los formatos definidos La lista de las direcciones de los argumentos son los nombres de las variables antecedidas por &, excepto para arreglos de caracteres. Ejemplo : int a; main() printf("entre el nmero por favor... :"); scanf("%d", &a); printf("el nmero es................ :%3d", a); En este caso la peticin de entrada se realiza con un printf(), el valor del nmero queda almacenado en la variable a. Hay que tener en cuenta que antes de la variable hay que anteponerle el signo ampersand (&). Al anteponer el signo ampersand se hace referencia a la direccin de la variable Se pueden determinar modificadores a los formatos de ordenes de tal manera que se pueda obviar ciertas entradas por teclado. Para realizar esta tarea se recurre al uso del smbolo * entre el signo de % y el formato a omitir. Ejemplo ; int mm,dd,aa;

22

main() { puts ("entre la fecha de liquidacin (mm--dd-aa).. ") ; scanf (" %d %*c %d %*c %d ", &mm, &dd, &aa); printf(" In La fecha de liquidacin es............."); printf(" %2d %c %2d %c %2d", mm,'-',dd,'-',aa); En el anterior ejemplo se dispone la entrada de mltiples variables, en este caso tres, la entrada por consola determina los valores para las variables aa, mm y dd. Normalmente el usuario deber entrar los valores para estas variables teclendolos por consola y separando cada uno de ellos por un espacio en blanco, pero en este caso la persona que se encuentra al mando de la consola podr entrar los valores de la siguiente manera: 02-09-90 y el almacenamiento se distribuir en las variables descritas de tal manera que los valores encontrados en las variables sern: aa = 90, mm = 02 y dd = 09. En este caso el smbolo guin '-' no es tomado en la captura y almacenamiento de las variables, esto sucede debido a que el formato %c de la funcin scanf() se encontraba de la manera %*c permitiendo, as, la omisin de un dato de tipo caracter. El smbolo * despus del caracter % ignora la entrada y avanza al siguiente formato. Las rdenes de formato para la funcin scanf() son las siguientes: Cdigo %c %d %i %e %f %h %o %s %ld %x %lf %p NOTAS 1. La direccin de una variable es el nombre de la variable antecedida por &, excepto para variables cadena o nombre de arreglo tipo char 2. Cuando el usuario del programa esta entrando los datos, debe separar cada uno de ellos con espacio, tabulador o enter Formato Lee un caracter. Lee un entero Lee un decimal Lee un flotante o double. Lee un flotante Lee un entero corto. Lee un Octal. Lee un entero largo Lee un Hexadecimal. Lee un double Lee un puntero Tipo char int int float, double float short int int long int int double

Lee un Cadena de caracteres.

23

3. Se permite que el usuario del programa entre caracteres en un campo numrico sin presentar error de ninguna clase. 4. Algunos compiladores como el C de Borland detectan en el momento de ejecucin la designacin de un formato incorrecto ( un formato %f para una variable int, un formato %d para una variable float etc. ) 5. La funcin scanf () devuelve el nmero de variables ledas. Ejemplo : int numero, a,b,c ; numero = scanf (" %d %d %d ", &a, &b, &c) ; En numero almacenar 3 6. Se permite que el usuario del programa haga "type head " o sea que el usuario digita datos antes que el sistema los requiera ; esos datos adelantados quedan almacenados en el buffer del teclado y muchas veces son causas de molestias y fallas 7. Una recomendacin importante : utilizar un scanf ( ) por cada dato que se desee pedir y usar la funcin fflush ( ) cuando se desee borrar cualquier carcter adelantado que el usuario haya pulsado int i,j ; char c ; scanf ( " %d %d " , &i &j ) ; scanf ( " %c " , &c ) ; Si dgito 1000 2000 En i queda 1000 En j queda 2000 En la prxima lectura guardar en la variable c el carcter de Enter o sea \n int i,j ; char c ; scanf ( " %d %d " , &i &j ) ; fflush ( stdin ) ; scanf ( " %c " , &c ) ; fflush ( stdin ) ; Si dgito 1000 2000 En i queda 1000 En j queda 2000 En la prxima lectura la funcin fllush (stdin) borra lo que est guardado en el buffer del teclado y as no guardar en la variable c el carcter de Enter o sea \n, sino A y luego dgito A

24

2. Funcin getchar ( )
incluir la librera < stdio.h > El efecto de esta funcin es transferir el prximo caracter desde un dispositivo de entrada (generalmente teclado)a una variable de tipo int o de tipo char, definida previamente Los valores que almacena es el correspondiente en la tabla del cdigo ASCII. La funcin getchar () produce eco, o sea que el carcter capturado aparece en la pantalla Por ejemplo: char c ; c = getchar ( ); la funcin getchar (), transfiere el siguiente caracter en la lnea de entrada a la variable c y deja disponible para transferir el prximo caracter, Si en la lnea de entrada existe la cadena de caracteres: AB1 con la siguiente -secuencia de instrucciones, char a,b ; a = getchar ( ); b = getchar ( ); a = getchar ( ); deja almacenado en la variable a el carcter '1' y en la variable b el caracter'B'. La funcin getchar (), como solamente transfiere caracteres, cuando la variable donde se almacena el caracter es de tipo int, almacena el valor numrico correspondiente de ese carcter en la tabla ASCII Ejemplo : int a, b; char c; a = getchar (); b = getchar (); c = getchar (); Suponiendo que la lnea de entrada tiene los siguientes caracteres: las los datos almacenados sern: en la variable a el nmero 108 en la variable b el nmero 97 en la variable c el caracter 's'

3. Funcin getch( )

25

incluir la librera < conio.h> La funcin getch() permite la captura de un caracter. La diferencia con getchar( ) es que el caracter capturado no es presentado por pantalla; para poderlo ver hay que imprimirlo con printf () o con putchar( ). Esta funcin es til para claves y como retardador. Adems con getch() acepta cualquier carcter para salir, en cambio con getchar (), hay que presionar la tecla ENTER Ejemplo: #include (stdio.h) main( ) { char b,d; clrscr() ; printf ("digite carcter"); b = getch () ; printf (" \n carcter digitado"); putchar ( b) ;

4. Funcin cin >>


incluir la librera < iosream.h > El efecto de esta funcin es transferir el dato desde un dispositivo de entrada (generalmente teclado)a una variable definida previamente. #include <iostream.h> void main(){ int num; cout "Introduzca un numero"; cinnum; // el nmero digitado lo lleva a num cout "El numero introducido es " num "\n"; Funcin gotoxy( ) incluir la librera < stdio.h> Esta funcin se utiliza para localizar los mensajes en la columna y fila deseada. Su sintaxis es: Ejemplo: gotoxy (20,10); printf ("SIEMPRE HAY UN PUNTO DE VERDAD EN LA VERDAD DE LOS DEMAS") Funcin clrscr( ) gotoxy (columna, fila);

26

incluir la librera < stdio.h> Esta opcin permite limpiar la pantalla Sintaxis: Ejercicios char a ; int c ; char b ; c = 300 ; a = 187 ; b = getchar () ; putchar (c) ; putchar (a) ; putchar (b) ; dgito el 2 error el codigo ASCII abarca hasta 255 escribe escribe 2 clrscr( );

SENTENCIA lF EN C
El objetivo de la sentencia if en cualquier lenguaje de programacin es la de poder realizar tomas de decisiones a travs del programa. Al hablar de toma de decisiones se refiere a las evaluaciones que el programa har a determinadas condiciones. Cuando se evala una condicin slo se espera uno de dos valores como respuesta, falso o verdadero. Si la condicin se cumple, el valor ser verdadero, de lo contrario el valor ser falso. Una condicin es la relacin lgica que se establece entre variables o variables y valores. En general existen tres tipos de tomas de decisiones.

. if sin else
La sentencia if sin else determina una evaluacin donde se ejecutar un determinado nmero de instrucciones si la condicin se cumple. Si la condicin no se cumple simplemente el programa no ejecutar estas ordenes. La forma general de esta forma es: if (condicin) instruccin ; Si el nmero de instrucciones que se debe ejecutar es mayor a 1 en caso de que la condicin sea verdadera, dichas sentencias se deben asociar entre los smbolos { y }. As: if (condicin) { instruccin 1 ; 27

instruccin n; } Ejemplo 1: if (a==b) a++; El computador determina el valor de la relacin a==b. Ntese que esta relacin no est estructurada con el operador de asignacin '=', ya que en este caso no existe ninguna 'asignacin', existe una 'relacin'. Si se encuentra que el contenido del campo a es igual al contenido del campo b, se sumar el nmero 1 al campo a. Si, por el contrario, se determina que el contenido del campo a es diferente al contenido del campo b, se sigue con la siguiente instruccin y no se suma el numero 1 al contenido del campo a. Ejemplo 2: . if (a != b) a += b; En el ejemplo anterior si a es diferente de b, se suma al contenido del campo a el contenido del campo b. Si a es igual a b, no se ejecuta la operacin. Independientemente del valor de la expresin (a != b) se seguir con la prxima instruccin. Ejemplo 3: if (a< b) { } En el ejemplo anterior si en el momento de ejecutar la instruccin se encuentra que a es menor a b, se ejecutan las instrucciones del bloque que comienza con el carcter '{' y termina con el carcter '}'. En caso que el computador no encuentre que a es menor a b, entonces sigue con la siguiente instruccin y las tres instrucciones del bloque no se ejecutan. a +=1; b+=8; c + = b;

. if con else
En este caso la condicin posee dos grupos de instrucciones a ejecutar, el primero de ellos se realizar cuando la condicin que se evale sea verdadera, el segundo en caso contrario. As, la estructura general de este formato es : if (condicin) instruccin; else instruccin;

28

Cuando se desea que se ejecute ms de una instruccin por parte verdadera o por parte falsa, stas debern ir asociadas entre los smbolos { y }. Ejemplo : if (condicin) { instruccin . instruccin } else { instruccin . instruccin }

1; n;

1; n;

Ejemplo 1 if (a==b) x++; else h +=3 ; Al momento de ejecutar esta instruccin, inicialmente se evala si a es igual a b, en caso de ser verdadero entonces se le suma un 1 a la variable x. Si a resulta ser diferente de b se le suma un 3 a la variable h. Ejemplo 2 if (a==b) x += 8; else x -=3; En el if anterior se evala la condicin (a==b); si esta condicin resulta ser verdadera se ejecuta la instruccin x += 8; si la condicin resulta ser falsa se ejecuta la instruccin x -= 3;. OJO Nunca se ejecutan las dos instrucciones, se ejecuta la una o la otra dependiendo del resultado de la evaluacin de la condicin. En cualquier caso el programa contina con la prxima instruccin. Ejemplo 3; if (a ==b) { a++ ; b += 4; } else h++; En la instruccin anterior si la condicin (a==b) resulta ser verdadera entonces se ejecutan las instrucciones que forman el bloque, a saber: a++; b+=4. 29

En caso de que la condicin (a==b) resulte ser falsa se ejecutar la instruccin que est despus de la palabra else. Ejemplo 4:

if (x==z) { a += 3; b++ ; } else { x++ ; a +=3; } En la instruccin anterior si el contenido del campo x es igual al contenido del campo z se ejecutan las instrucciones del bloque superior: a+= 3; b++; Si el contenido del campo x es diferente al contenido del campo z entonces se ejecutan las instrucciones del bloque inferior: x++; a+= 3;

. if anidado.
La estructura if anidado consiste en poder evaluar condiciones dentro de una parte verdadera o una parte falsa ubicada en una evaluacin superior, estas estructuras son muy comunes para los programadores de lenguajes estructurados. C proporciona una forma fcil de manejo para este tipo de estructura. Su forma general puede ser: if (condicin) if (condicin) { instruccin 1 ; instruccin n; } else instruccin; else if (condicin) instruccin; /* termina if 1*/ No se puede definir un formato general, ya que debido a las circunstancias que se deban analizar determinan la estructura del if Ejemplo : #jnclude <stdio,h> #jnclude <conio.h> void main() { char a; int numero; a = getche (); // Prototipo de getche() // Con el getch() no se ve lo que se tecleo. // Con el getche() si se ve lo que se tecleo. //definicin de variables /* termina if 2 */ /* if 1 */ /* if 2 est dentro de la parte positiva de if1 */

30

if (a == '0') numero = 0; else if (a = = '1') numero = 1; else if (a == '2') numero = 2; else if (a == '3') numero = 3; else if (a == '4') numero = 4; else if (a == '5') numero = 5; else if (a == '6') numero = 6; else if (a == '7') numero = 7; else if (a == '8') numero = 8; else if (a =='9') numero = 9; else numero = 999; printf (" %d \n" , numero ) ; } El programa anterior lee un carcter y lo almacena en la variable a. Luego, utilizando la instruccin if anidada compara el contenido de la variable a con el carcter'0' y en caso de cumplirse la igualdad, asigna el numero 0 a la variable numero. Despus de esta asignacin, el control del programa pasa a la instruccin printf. Si la relacin result ser falsa, se ejecuta el else asociado al primer if. Este else est conformado por un if que compara el contenido de la variable a con el carcter '1' y si la relacin resulta ser verdadera, se asigna el numero 1 a la variable numero y el control del programa pasa a la instruccin printf. Si la relacin resulto ser falsa se ejecuta el else asociado al segundo if y as sucesivamente. Si el contenido de la variable a, no es ninguno de los caracteres: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' se ejecuta el ltimo else, que tiene asociada una instruccin que asigna a la variable nmero la cifra 999. Es decir, el programa anterior lee un dato y si representa un carcter en el rango: '0' <=a<='9' almacena en la variable nmero el nmero correspondiente. Si el caracter ledo no est en el rango especificado, almacena en la variable nmero el numero 999. La instruccin printf, escribe un numero de 0 a 9 o el numero 999..

INSTRUCCIN SWITCH
Cuando se necesita elegir entre varias alternativas, es incmodo utilizar varias sentencias if ; la solucin a esto es la sentencia switch, la cual permite definir la ejecucin de una o ms instrucciones de acuerdo al valor que tome una variable en el programa. La estructura general de esta instruccin es la siguiente: switch (expresin o variable) { case constante 1 : secuencia de sentencias; break; case constante 2 : secuencia de sentencias; break; case constante n : 31

secuencia de sentencias; break; default : secuencia de sentencias; } La sentencia break permite romper la ejecucin de un case, es obligatorio su uso. Expresin : puede ser una expresin aritmtica entera o una instruccin variable : puede ser una variable de tipo entera o carcter constante : puede ser una constante entera que est entre -32768 y 32767 o una constante carcter y no debe tener rangos, slo valores especficos

Aspectos a tener en cuenta :


1. La expresin o variable es evaluada y comparada con las constantes i en todos los casos. 2. Si ninguna constante i es igual a la expresin o variable, el programa ejecuta la sentencia que corresponde al default 3. Cuando se encuentra que la expresin o variable es igual a la constante i, se ejecutan todas las instrucciones que correspondan a ese caso y si existe la sentencia break, se termina la ejecucin de la instruccin switch. Si no existe la sentencia break, el caso siguiente inmediatamente ser evaluado y ejecutada la instruccin correspondiente. 4. Si no existe igualdad en ningn caso y no existe default, la sentencia switch no es ejecutada. 5. El default, no necesariamente debe ir de ltimo en la sentencia switch, puede ir donde pueda ir un case. 6. Si el default, no est de ltimo y se desea terminar la sentencia switch cuando se ejecuten las sentencias que correspondan a l, es necesario una instruccin break, de lo contrario el caso inmediatamente siguiente ser evaluado y ejecutada la instruccin correspondiente.

Funcionamiento :
Compara la expresin o variable con la lista de constantes i. Cuando concuerda con alguna, ejecuta el conjunto de sentencias hasta el final del cuerpo del switch o hasta que encuentre un break. Si no concuerda con alguna, ejecuta las sentencias del default si lo tiene. #include "stdio.h" #include "conio.h" void main () { int x,c; c = qetche(); switch(c) { case 'i': case 'x': case 'a': } default:

x = 1; break ; x = 8; break ; x=7; break ; x=0 ;

32

printf ("%d \n", x);

En el programa anterior la instruccin switch evala el contenido de la variable c. De acuerdo al contenido de esta variable el programa toma una sola determinacin. Si en c est almacenada una 'i' la variable x toma el valor de 1. Si en c est almacenada una 'x' la variable x toma el valor de 8. Si en c est almacenada una 'a' la variable x toma el valor de 7. Si en c no est almacenado ninguno de los valores que se utilizan para seleccionar la alternativa, la instruccin permite ejecutar la sentencia que corresponde a default, en este caso x = 0. La instruccin break, como puede observarse, sirve para, una vez ejecutada la sentencia correspondiente, obliga la salida de la sentencia switch. En caso que la instruccin break, falte en alguna alternativa, el control del programa contina hacia abajo ejecutando las dems instrucciones del switch. Ejemplo cundo se retira una sentencia break: #include "stdio.h" #include "conio.h" void main () { int x,c; c = qetche(); switch(c) { case 'i': x = 1; case 'x': x = 8; break ; case 'a': x=7; break ; default: x=0 ; } printf ("%d \n", x); } Si en la variable c se almacen el carcter 'i', la variable x toma el valor 1 y el control del programa sigue hacia abajo, lo que permite que el control del programa siga ejecutando la instruccin. Esto sucedi por la ausencia de la sentencia break. Por lo tanto la funcin de este programa es: Si c almacena el carcter 'i', el programa escribe 8, Si c almacena el caracter' x', el programa escribe 8. Si c almacena el carcter 'a', el programa escribe 7. Si c almacena cualquier caracter diferente de los tres anteriores, el programa escribe 0.

33

Ejemplo: Hacer un programa en lenguaje C que le pida al usuario 2 nmeros y le de la opcin de sumarlos, multiplcanos restarlos o dividirlos Diagrama : Inicio Sea Opcin variable tipo carcter A, B variables de tipo entero Imprima (" S. R. M. D. Sumar Restar Multiplicar Dividir ")

Imprima ("Digite la letra de la operacin a realizar") (" S. Sumar Lea (Opcin) Mientras ( Opcin != 'S' && Opcin != 'R' && Opcin != 'M' && Opcin != 'D') Imprima ("Digite el 1 nmero:") Lea (A) Imprima ("Digite el 2 nmero:") Lea (B) Caso (Opcin) 'S'
Imprima Imprima

'R'
Imprima

'M'
no

'D'
B != 0 si

("La suma es:" A+B) ("La resta es:" A - B) ("La multiplicacin es:" A*B) Imprima ("No se puede realizar")

Imprima ("La divisin es:" A/B)

Fin

34

Programa : #include <conio.h> #include <stdio.h> main () { int A,B; char Opcin ; clrscr(); gotoxy (20,5) ; printf(" S Sumar \n R Restar \n M Multiplicar \n D Dividir \n") ; do { gotoxy (20, 10) ; printf ("Digite la letra de la operacin a realizar : ") ; Opcin = toupper (getchar ()) ; printf("\n") ; } while (Opcin != 'S '&& Opcin != 'R'&& Opcin != 'M'&& Opcin !='D'); gotoxy (20,12) ; printf ("Digite el 1 nmero: ") ; scanf ("%d", &A) ; gotoxy (20,13) ; printf ("Digite el 2 nmero: ") ; scanf ("%d", &B) ; switch(Opcin) { case 'S': gotoxy (20,20) ; printf (" La suma es : %d", A+B) ; break ; case 'R': gotoxy (20,20) ; printf (" La resta es : %d", A-B) ; break ; case 'M': gotoxy (20,20) ; printf (" La multiplicacin es : %d", A*B) ; break ; case 'D': if (B) { gotoxy (20,20) ; printf (" La divisin es : %d", A / B) ; } else { gotoxy (20,20) ; printf ("No se puede realizar") ; } break ; } gotoxy (35,22) ; printf ("Pulse una tecla para terminar') ; getch () ; }

Comparacin entre switch y el if


Switch Solamente verifica la igualdad Slo funciona con tipos int y char Secuencias de cada case no son bloques if Verifica cualquier operacin relacional Funciona con cualquier tipo Secuencias del si o el else son bloques ya que van encerradas en ( )

35