Programacion - IQ - Unidad II
Programacion - IQ - Unidad II
Programacion - IQ - Unidad II
Programación - IQ
Unidad 2 - Entorno del lenguaje de programación
Competencia específica a desarrollar:
Estructurar un programa con sus elementos esenciales utilizando una técnica algorítmica para resolver
problemas de la Ing. Química.
eran altamente compatibles, sin embargo como no había un estándar empezaron a surgir discrepancias.
Para remediar la situación, el INSTITUTO DE ESTANDARES AMERICANO (ANSI) estableció un comité a
principios de 1983 para crear un estándar que definiera de una vez por todas el lenguaje C. Finalmente el
estándar fue adoptado en 1990 y turbo C implementa completamente el estándar ANSI de C resultante.
M@lonso © 2016 |2
| Programación - IQ | Unidad 2 |
M@lonso © 2016 |3
| Programación - IQ | Unidad 2 |
Tipos de datos
Existen 5 tipos de datos básicos en el lenguaje C: Carácter (char), Entero (int), Coma Flotante (float), Coma
Flotante de Doble precisión (doublé) y Sin valor (void).
Los valores que pueden tomar los diferentes tipos de datos son:
Tipo Tamaño en bits Rango
char 8 0 255
int 16 -32768 32767
float 32 3.4E-38 3.4E+38
double 64 1.7E-308 1.7E+308
void 0 sin valor
Los valores de tipo char se usan normalmente para guardar valores definidos en el juego de caracteres ASCII,
así como cualquier cantidad de 8 bits.
Las variables de tipo int se usan para guardar cantidades enteras.
Las variables de tipo float o double se usan para guardar numero reales (los números reales son los que
tienen un numero entero y uno fraccionario).
El tipo viod tiene 3 usos: El primero es para declarar explícitamente una función que no devuelve valor
alguno; el segundo es para declarar explícitamente una función sin parámetros y tercero es para declarar
punteros genéricos.
Modificadores de Tipos de Datos
A excepción del tipo void, los tipos de datos básicos pueden tener distintos modificadores. Un modificador se
usa para alterar el significado del tipo base para que se ajuste más precisamente a las necesidades de cada
momento.
Los modificadores de tipo de datos utilizados son:
Modificador Descripción
signed numero con signo
unsigned numero sin signo
long numero de precisión larga
short numero de precisión corta
Las combinaciones resultantes de los tipos básicos y los modificadores del lenguaje C son:
Tipo Tamaño en bits Rango
char 8 -128 127
unsigned char 8 0 255
signed char 8 -128 127
int 16 -32768 32767
unsigned int 16 0 65535
signed int 16 -32768 32767
short int 16 -32768 32767
unsigned short int 16 0 65535
signed short int 16 -32768 32767
long int 32 -2147483648 2147483647
signed long int 32 -2147483648 2147483647
float 32 3.4E-38 3.4E+38
double 64 1.7E-308 1.7E+308
long double 64 1.7E-308 1.7E+308
M@lonso © 2016 |4
| Programación - IQ | Unidad 2 |
M@lonso © 2016 |5
| Programación - IQ | Unidad 2 |
Expresión Puede ser tan simple como una constante o tan compleja como una
combinación de variables, operadores y constantes.
El destino o parte izquierda de la asignación debe ser una variable, no una función o una constante.
Conversión de Tipos en las Asignaciones
La conversión de tipos se da cuando se mezclan variables de un tipo con variables de otro tipo.
En una sentencia de asignación, la regla de conversión de tipos es muy fácil:
“El valor del lado derecho de la asignación, se convierte al tipo del lado izquierdo“
Ejemplo:
int x;
char ch;
float f;
main()
{
ch = x; /* Linea 1 */
x = f; /* Linea 2 */
f = ch; /* Linea 3 */
f = x; /* Linea 4 */
}
En la línea 1, los bits más significativos de x se pierden, dejando en ch los 8 bits menos significativos.
Si x tenía un valor entre 0 y 255 antes de la asignación, ch y x tendrán igual valor. De otro modo, el
valor de ch solo reflejara los bits menos significativos de x.
En la línea 2, x recibirá la parte no fraccionaria de f.
En la línea 3, f convierte al valor almacenado como entero de 8 bits en ch al formato en punto flotante.
Esto mismo ocurrirá en la línea 4, excepto que f convierte el valor entero de 16 bits al formato de punto
flotante.
Cuando se convierten enteros en caracteres y enteros largos en enteros, la regla básica es que se eliminan
los bits más significativos que sean necesarios. Esto significa que se perderán 8 bits al convertir un entero
a carácter y se perderán 16 bits cuando se convierta un entero largo a entero.
La conversión de int a float o de float a double no añade, ni exactitud ni precisión, este tipo de
conversiones solo cambian la forma de representación del valor.
Algunos compiladores de C tratan siempre una variable char como positiva, independientemente de
que se convierta a un valor int o float.
Inicialización de Variables
Colocando el signo igual y una constante después del nombre de una variable, se puede dar en el lenguaje
C a las variables un valor a la vez que se declaran.
Tipo_Dato Nombre_de_Variable = Constante ;
Ejemplo:
char ch = 'a' ;
int primero = 0 ;
float balance = 123.123 ;
M@lonso © 2016 |6
| Programación - IQ | Unidad 2 |
Función: printf()
Convierte, da formato e imprime sus argumentos en la salida estándar, bajo control de la cadena de control.
Formato:
printf( "<cadena de control>" , <lista de argumentos>)
Donde:
cadena de control Consiste en dos tipos de elementos: caracteres que se mostraran en la pantalla
y ordenes de formato que definen la forma en que se muestran los argumentos.
Ver tabla 13
lista de argumentos Son las variables a imprimir con el correspondiente código.
Tabla 13 - Códigos de formato para la función printf()
Código Función Tipo
c Convierte a un carácter sin signo char
d Convierte un entero a decimal con signo int
o Convierte un entero a octal sin signo unsigned int
x, X Convierte un entero a hexadecimal sin signo unsigned int
f Convierte un decimal a punto flotante float
s Cadena de caracteres char[ ]
u Convierte un entero sin signo a decimal sin unsigned int
signo
e,E Convierte de punto flotante o double float en double float
notación científica
g,G Convierte un argumento float o double al double float
formato f ó e
n Convierte un apuntador a entero int
% Imprime el signo de %
Una orden de formato empieza siempre con el signo de % y va seguido por el código de formato, debe
haber exactamente el mismo número de argumentos que de órdenes de formato y ambos deben coincidir en
su orden de izquierda a derecha y en su tipo de dato.
Características de la función printf()
Las órdenes de formato pueden tener modificadores que especifiquen la longitud del campo, el número de
decimales, el ajuste a la izquierda y la densidad del tipo de dato, como se presenta en la tabla 14.
M@lonso © 2016 |7
| Programación - IQ | Unidad 2 |
Notas:
Un entero situado entre el signo de % y el código de formato actúa como un especificador de
longitud mínima de campo. Hace que se rellene la salida con espacios para asegurar que el campo
alcance una cierta longitud mínima.
Si la cadena o el número es más largo que el mínimo, se imprimirá en toda su longitud, aunque
sobrepase el mínimo.
Si se quiere rellenar con ceros, se ha de poner un 0 antes del especificador de longitud de campo.
Por ejemplo: %05d rellenara con ceros un numero con menos de 5 dígitos para que su longitud total
sea cinco.
Para especificar el número de posiciones decimales que se han de imprimir para un numero en
punto flotante, se coloca un punto tras el especificador de longitud de campo, seguido del numero
de decimales que se desea que aparezcan. Por ejemplo: %10.4f imprime un número de al menos
10 caracteres con cuatro posiciones decimales.
Si se aplica a las cadenas o a enteros, el número que sigue al punto especifica la longitud máxima
del campo. Por ejemplo: %5.7s imprime una cadena de al menos cinco caracteres de longitud y no
más de siete. Si la cadena es más larga que la longitud máxima del campo se truncaran los
caracteres finales de la derecha.
Por defecto todas las salidas están ajustadas a la derecha, se puede forzar que la salida sea
ajustada a la izquierda situando un signo de menos directamente después del %. Por ejemplo %-
10.2f hace que se ajuste a la izquierda un número en coma flotante con dos espacios para
decimales en un campo de 10 caracteres.
Ejemplos:
M@lonso © 2016 |8
| Programación - IQ | Unidad 2 |
Función: scanf()
Lee los caracteres de la entrada estándar, los interpreta de acuerdo con el formato especificado en control y
almacena los resultados en los restantes argumentos.
Formato:
scanf( "<cadena de control>" , <lista de argumentos>) ;
Donde:
Cadena de control Códigos de tipos de datos a leer.
Lista de argumentos Variables donde se almacenaran los valores leídos, donde cada variable
debe ser un apuntador.
Tabla 15 - Códigos de formato para scanf()
Código Función
%c Lee un único carácter
%s Lee una cadena de caracteres
%d Lee un entero decimal
%f Lee un numero con coma flotante
%h Lee un entero corto
%o Lee un entero en octal
%x Lee un entero en hexadecimal
Ejemplos:
M@lonso © 2016 |9
| Programación - IQ | Unidad 2 |
En C el operador de % (división de modulo) actúa igual que en otros lenguajes, proporciona el resto de una
división entera. Por ello no puede aplicarse a los tipos de punto flotante.
Ejemplo:
int x, y ;
x = 10 ;
y=3;
printf( "%d",x / y ); /* Mostrara 3, la parte entera de la división */
printf( "%d",x % y ); /* Mostrara 1, el resto de la división entera */
M@lonso © 2016 | 10
| Programación - IQ | Unidad 2 |
Incremento y Decremento
El operador ++ (doble mas) suma uno a su operando y - - (doble menos) le resta uno.
Por lo que: x = x + 1; equivale a ++x ;
y x = x - 1; equivale a - -x ;
Los operadores de incremento y decremento pueden preceder o seguir al operando.
Ejemplo:
++ x ;
x ++;
x--;
--x;
Sin embargo, existe una diferencia cuando se utilizan estos operadores en una expresión.
Cuando un operador de incremento o decremento precede a su operando, C lleva a cabo la operación de
incremento o decremento antes de utilizar el valor del operando. Si el operador sigue al operando, C utiliza su
valor antes de incrementar o decrementar el operando.
Ejemplo:
Si x = 10;
y = ++x ; Resulta: y = 11 x = 11
y = x++ ; Resulta: y = 10 x = 11
Operadores Relacionales
En el término operador relacional la palabra relacional se refiere a la relación entre unos valores y otros.
Los operadores relacionales son:
Operador Función
> Mayor que
>= mayor que o igual
< menor que
<= menor que o igual
== Igual
!= Diferente
Operadores Lógicos
En el término operador lógico la palabra lógica se refiere a las formas en que esas relaciones pueden
conectarse entre si siguiendo las reglas de la lógica formal.
Los operadores lógicos son:
Operador Función
&& and
|| or
! not
Los operadores del mismo nivel de precedencia son evaluados por el compilador de izquierda a derecha.
Conversiones de Tipos en las Expresiones
Cuando en una expresión se mezclan constantes y variables de distintos tipos, se convierten a un tipo único.
El compilador de C convierte todos los operandos al tipo del mayor operando.
Cualquier char y short int es convertido a int.
Cualquier float es convertido a double.
Para todos los pares de operandos, si uno de los operandos es long double , el otro operando se
convierte en long double.
De lo contrario, si el operador es:
double se convierte a double
long se convierte a long
unsigned se convierte a unsigned
Reglas de Evaluación
Todas las subexpresiones entre parentesis se evalún primero. Las subexpresiones entre parentesis
anidados se evalúan de adentro hacia afuera, es decir, que el parentesis mas interno se evalúa primero.
Prioridad de Operaciones: Dentro de una misma expresión o subexpresión, los operadores se evalúan en
el orden de precedencia.
Los operadores en una misma expresión o subexpresión con igual nivel de prioridad se evalún de izquierda
a derecha
M@lonso © 2016 | 12
| Programación - IQ | Unidad 2 |
M@lonso © 2016 | 13
| Programación - IQ | Unidad 2 |
Código fuente.- Texto escrito en un lenguaje de programación específico y que puede ser leído por un
programador. Debe traducirse a lenguaje máquina para que pueda ser ejecutado por la computadora o a
bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilación.
Código Objeto.- En programación, el código objeto es el resultado de la compilación del código fuente.
Puede ser en lenguaje máquina o bytecode, y puede distribuirse en varios archivos que corresponden a
cada código fuente compilado. Luego un enlazador (linker) se encarga de juntar todos los archivos de
código fuente para obtener el programa ejecutable.
Lenguaje maquina.- El lenguaje máquina es el único lenguaje que puede ejecutar una computadora. El
lenguaje de máquina es un código que es interpretado directamente por el microprocesador. Tambien es
conocido como código ejecutable o programa ejecutable. El lenguaje está compuesto por un conjunto de
instrucciones ejecutadas en secuencia (con eventuales cambios de flujo causados por el propio programa o
eventos externos) que representan acciones que la máquina podrá tomar. Un lenguaje máquina es
específico de cada arquitectura de computadora.
El proceso de creación pasa por tres fases, desde la creación del código fuente, pasando por la generación
del código objeto y finalmente, el código ejecutable, estas fases se ilustran en la siguiente figura:
M@lonso © 2016 | 14