Professional Documents
Culture Documents
3. 4. 5. 6.
Funciones de entrada y salida de datos (printf, scanf, _getch, argumentos del main). Estructuras de control selectivas (if , if y else, switch, operador condicional ?). Estructuras de control repetitivas (for, while, do while). Funciones de uso comn (Consola, Matemticas, Sleep, break, continue, exit, return, kbhit).
Se trata de un lenguaje dbilmente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos.
La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas. En la prctica, los programadores suelen usar elementos no-porttiles dependientes del compilador o del sistema operativo. (1)
(1) http://es.wikipedia.org/wiki/Lenguaje_C
Tipos de datos
Tipos de datos
La computadora siempre procesa datos y los transforma en informacin.
Los datos que procesa la computadora, son bsicamente de tres tipos: enteros, decimales y letras.
En C existen tipos de datos bsicos y tambin da la posibilidad de crear tipos de datos definidos por el usuario.
Como podemos apreciar tenemos tres tipos de datos, palabras, nmeros enteros y nmeros decimales.
Tipos de datos en C
Tipo
bool char
Descripcin
Valor binario verdadero o falso. Valor entero que representa un caractr de la tabla ASCII Valor entero de 2 bytes Valor entero de 4 bytes Valor entero positivo de 4 bytes Valor entero de 8 bytes Valor decimal de 4 bytes Valor decimal de 8 bytes Tipo de dato nulo. Representa la ausencia de valor.
Rango
true false 128 a 127 0 a 255 compilado con /J 32,768 32,767 2,147,483,648 2,147,483,647 0 4,294,967,295 9,223,372,036,854,775,808 9,223,372,036,854,775,807 3.4E +/- 38 (7 dgitos) 1.7E +/- 308 (15 dgitos)
Ejemplo
bool dato = false; dato = true; char letra = A; letra = \n; letra = 65; short x = 94; x = -54; int x = 1598; x = -988574; unsigned int x = 9887; x = 98745; long long x = 684574; x = -998564; float x = 45.6; x = -98.58; double x = 9878.568; x = -98745.668;
Variables y constantes
Variables y constantes en C
Las variables son espacios en memoria que permiten almacenar y modificar un valor.
Las constantes son espacios en memoria que permiten almacenar un valor pero no modificarlo. Las variables y constantes tienen que especificar a que tipo de dato pertenecen para que el compilador sepa como interpretarlos. Las variables y constantes deben poseer un nombre nico dentro de la aplicacin. Es obligatorio declarar las variables y constantes antes de poder utilizarlas.
Por ejemplo: char Nombre[20] = Paul; char Mensaje[50] = Hola como ests;
El compilador lo convertir a:
int main() { int x = 94 + 19.00 / 100 + 19.00 * 45; double y = 19.00 4.55; printf(Hola como estas); }
Operadores
Asignacin Aritmticos Incremento y decremento Relacin Lgicos
Operador de asignacin
El operador de asignacin me permite colocarle un valor a una variable o constante.
En el caso de las constantes solo puedo utilizar este operador cuando defino la constante. Si declaro una variable entera x:
int x;
El smbolo de igual (=) es el operador de asignacin. Tenga en cuenta que la asignacin siempre se realiza de derecha a izquierda.
Ejemplos
int x = 58; x = 98; x = 198.54;
double valor; valor = 98.55684; valor = valor * 0.0; char letra = A; Letra = letra + 2; Letra = X; Letra = 65;
Tenga en cuenta que cuando asignamos un valor decimal a una variable entera, solamente se almacena la parte entera.
Operadores aritmticos
Smbolo + * / % Operacin Suma Resta Multiplicacin Divisin Mdulo (Solo de nmeros enteros)
A excepcin de la operacin de modulo %, que se aplica a datos enteros, todas las operaciones dan resultados: Del mismo tipo que los operando si ambos son de mismo tipo Del tipo de mayor rango si los operadores so de tipos distintos. (1).
Se puede emplear parntesis para agrupar datos y especificar un clculo. El orden en que se evala la expresin se puede especificar utilizando parntesis, o se asume el orden de precedencia que se indica a continuacin:
Parntesis *, /, % +, -
Operador de incremento ++
Incrementa el valor actual de la variable en 1 y puede ser usado de dos formas:
Pre Fijo (++ variable)
Suma 1 a variable y devuelve el resultado.
Operador de decremento -Reduce el valor actual de la variable en 1 y puede ser usado de dos formas:
Pre Fijo (-- variable)
Resta 1 a variable y devuelve el resultado.
Ejemplo:
int DatoEntero= 1.6 + 1.7; // Almacena 3 int DatoEntero = (int)1.6 + (int)1.7; // Almacena 2
Funcin sizeof
La funcin sizeof indica la cantidad de bytes que ocupa un tipo de dato. Esta funcin slo se puede utilizar con tipos de dato para que funcione correctamente.
Ejemplo:
int tamanioDeInt = sizeof(int); int tamanioDeDouble = sizeof(double);
Operadores de relacin
Operador > Descripcin Mayor Ejemplo 10 > 20 30 > 20 20 > 20 10 < 20 30 < 20 20 < 20 Respuesta F V F V F F
<
Menor
>=
Mayor o igual
F V V
V F V V F F V
<=
Menor o igual
== !=
Igual Diferente
Operadores de relacin
Tenga cuidado de no confundir el operador de asignacin con el operador de comparacin es igual a
Ejemplo:
Entero = 3; //-- asigna el valor 3 a la variable Entero Entero == 3; //-- comprueba si Entero tiene el valor 3.
Qu es verdad?
Esta pregunta se la han formulado a filsofos de todas las pocas. Nosotros nos daremos el gusto de contestarla, al menos en lo que respecta al Lenguaje C.
Recuerde que cada expresin en C, siempre tiene un valor. Analice los siguientes ejemplos:
(1) M. Waite; Programacin en C, Introduccin y conceptos avanzados
Qu es verdad?
int cierto, falso;
cierto = (10>2); //-- cierto es 1 falso = (10==2); //-- falso es 0 bool cierto2, falso2; cierto2 = (10>2); //-- cierto2 es true falso2 = (10==2); //-- falso2 es false
Qu es verdad?
bool valor1, valor2, valor3, valor4;
valor1 = (bool) 77; valor2 = (bool) -33; valor3 = (bool) 1; valor4 = (bool) 0; Solamente el valor4 es falso ya que el lenguaje C solo considera el valor 0 como falso, cualquier otra cosa es considerada verdadera.
Operadores lgicos
Operador && || ! A B Significado and (y) or (o) not (no) A && B A || B !A !B
V
V F F
V
F V F
V
F F F
V
V V F
F
F V V
F
V F V
Falso
Verdadero Verdadero
Expresiones
Expresin A > C (100 > 3) && (A > C) !(100 > 3) Numero es igual o mayor que 1 pero menor que 9 Numero est entre 1 y 9, pero no es 5 Numero no est comprendido entre 1 y 9 Valor
Expresiones - Respuestas
Expresin A > C (100 > 3) && (A > C) !(100 > 3) (Numero >= 1) && (Numero < 9) Valor Falso Falso Falso Numero es igual o mayor que 1 pero menor que 9
(Numero > 1) && (Numero < 9) && (Numero != 5) (Numero < 1) || (Numero > 9)
Estructura de un programa
Un programa en C, puede tener varias funciones, pero siempre debe estar presente la funcin main()
printf
La funcin printf puede ser utilizada de 2 formas:
1. printf(<Texto a mostrar>); 2. printf(<Formato>, <valores>);
Ejemplos:
printf(UPC, protagonistas del cambio!!!); printf(Hola como estas); printf(La suma de A + B es: %d, 10 + 5); printf(La suma de %d + %d es: %d, 10, 5, 10 + 5);
Especificadores de formato
Los especificadores de formato son utilizados en el formato del printf para poder colocar valores de variables o constantes junto con el texto.
Por cada identificador de formato debe existir una variable o constante del tipo de identificador.
Los identificadores de formato presentes sern reemplazados por los valores de las variables o constantes.
Tipo de dato
char bool short int unsigned int long long float double cadena de caracteres
%d
%lld %f %lf %s
Descripcin
Escribe el nmero entero ocupando 10 casillas.
Escribe el nmero entero ocupando 10 casillas y rellenando con 0. Muestra el nmero decimal con 2 decimales. Muestra el nmero en 10 casillas con 2 decimales. Muestra el nmero en 10 casillas con 2 decimales alineado a la izquierda.
4 6 0 0 0 0 0 0 0 0 4 6 4 6 . 5 1 4 6 . 5 1 4 6 . 5 1
scanf
La funcin scanf puede ser utilizada de la siguiente forma:
scanf(<Formato>, &<valores>);
Ejemplos:
scanf(%d, &entero); scanf(%c, &caracter); scanf(%lf , &flotante); scanf(%d %d, &entero1, &entero2); scanf(%d,%d, &entero1, &entero2); scanf(%d:%d:%d, &horas, &minutos, &segundos);
scanf
Ejemplo 1: int L, A; printf(Ingrese el largo: ); scanf(%d, &L); printf(Ingrese el ancho: ); scanf(%d, &A); printf(El area es: %d, L * A); Ejemplo 2: int L, A; printf(Ingrese Largo y Ancho: ); scanf(%d, %d", &L, &A); printf(El area es: %d, L * A);
Ingrese el largo: 10 Ingrese el ancho: 5 El area es: 50
scanf
scanf("Largo=%ld Ancho=%ld", &L, &A);
Si realiza una lectura con formato, el usuario debe ingresar los datos exactamente tal y como se indica o no se asignarn los valores de manera apropiada y el programa tiene resultados impredecibles.
Largo=20 Ancho=15 largo=20, ancho=15 // Correcto // Incorrecto
Ejercicios
Ejercicio 1
Pedir un nmero entero y mostrar el valor, el doble del valor y el triple del valor.
Ejercicio 2
Pedir 2 nmeros enteros y mostrar, la suma, resta, multiplicacin, divisin y mdulo de los nmeros ingresados.
Ingrese el primer numero: 10 Ingrese el segundo numero: 4 Suma: 14 Resta: 6 Multiplicacion: 40 Division: 2.5 Modulo: 2
Ejercicio 3
Pedir 1 solo nmero entero de 3 dgitos y mostrar la suma de los dgitos. Puede considerar que el usuario siempre ingresar un nmero de 3 dgitos.
Ingrese un nmero de 3 digitos: 492 La suma de los digitos es: 4 + 9 + 2 = 15
Ejercicio 4
Pedir 4 nmeros decimales y mostrarlos uno debajo del otro de forma ordenada, mostrando solamente 3 decimales y la suma.
Ingrese Ingrese Ingrese Ingrese numero numero numero numero 1: 2: 3: 4: 48.98454 1458.59874 988754.554512 4.5
Ejercicio 5
Ejercicio 6
Pedir un nmero de 4 dgitos y mostrar el nmero invertido. Puede considerar que el usuario siempre ingresar un nmero de 4 dgitos.
Ingrese un nmero de 4 digitos: 4987 El nmero invertido es: 7894
Ejercicio 7
Pedir un nmero decimal y mostrar de forma separada la parte entera y la parte decimal.
Ingrese un nmero decimal: 98.567 La parte entera es: 98 La parte decimal es: .567
Ejercicio 8 Pedir el cdigo de la UPC en la forma uXXXXXX e imprima el ao de ingreso, ciclo y cdigo nico del alumno.
Considere lo siguiente: Si el cdigo es: uACUUUU, el ao de ingreso es 200A, el ciclo es C, y el cdigo unico es UUUU.
Ingrese su cdigo de alumno: u810209 Ingresaste en el 2008-1 Tu cdigo nico es: 0209
Tip: la u del cdigo pngala por defecto dentro del scanf y lea simplemente un nmero.
Ejercicio 9
Escriba un programa el Lenguaje C, que permita hallar el rea y el volumen de una esfera. El usuario deber ingresar el valor del radio.
Ingrese el radio: 3 El area de la esfera es: 113.094 El volumen de la esfera es: 113.094 La frmulas son:
Area = 4 r2
4 r3 Volumen = ---------3
Ejercicio 10
Escriba un programa el Lenguaje C, que permita convertir grados Farenheit a Grados Centgrados.
Ejercicio 11 Un distribuidor de material elctrico vende alambre en rollos de 500, 300 y 75 metros. Escriba un programa en lenguaje de Programacin C que pida al usuario, la longitud total de alambres en metros que se requiere e imprima la menor cantidad de rollos de alambre de 500, 300 y 75 metros y el nmero de metros de alambre que tendra el ultimo rollo.
Ingrese la cantidad de alambre a procesar: 376 O rollos de 500 metros 1 rollo de 300 metros 1 rollo de 75 metros El ltimo rollo tendr 1 metro.