Está en la página 1de 62

Fundamentos de

Programación
Tema 3
El C como lenguaje estructurado

Administración de Sistemas Informáticos 17/10/08 13:16


Tema 3
El C como lenguaje estructurado
 Historia del C
 Ventajas del C
 Desventajas del C
 Características del C
 Formato de un programa en C
 Tipos de datos
 Declaración de variables
 Constantes
 Operadores
 Instrucciones de asignación
 Cadenas de caracteres
 Salida formateada por pantalla: printf()
 Entrada formateada por teclado: scanf()
 Instrucciones de control selectivas
 Instrucciones de control repetitivas
 ANEXO. Conversión de tipos

Administración de Sistemas Informáticos 17/10/08 13:16


1. Historia del C
Antecedentes del lenguaje C. FORTRAN.

- FORmula TRANslator.
- Primer compilador en 1957 para facilitar el
trabajo de los programadores que, hasta
entonces, programaban en ensamblador. Razones
económicas: reducción de tiempo, mayor
productividad.
- Notación similar a las matemáticas.
- Aplicaciones técnicas y científicas.
- Primer lenguaje de alto nivel.

Administración de Sistemas Informáticos 17/10/08 13:16


1. Historia del C
Antecedentes del lenguaje C. ALGOL.

- ALGOrithmic Languaje.
- Entre 1957 y 1962 con la idea de ser un “lenguaje de
programación universal”, de propósito más general e
independiente de la máquina.
- Fue adquiriendo tendencia algebraica, orientándose
hacia las aplicaciones científicas y de ingeniería.
- De estructura clara con gran influencia en el
desarrollo de otros lenguajes de alto nivel (Pascal y
ADA) y en la arquitectura de muchos ordenadores.

Administración de Sistemas Informáticos 17/10/08 13:16


1. Historia del C
El lenguaje C. Del BCPL al B.

 Partiendo del Algol, en 1967, Martin Richards inventó


un nuevo lenguaje llamado BCPL.
 El M.I.T. consiguió construir un sistema operativo
multiusuario que se llamó MULTICS (MULTiplexed
Information Computing System).
 Ken Thompson, de los Laboratorios Bell de AT&T,
fabricó una versión de MULTICS para un solo usuario.
La escribió en ensamblador y se denominó UNICS.
 Thompson, en 1970, modificó el BCPL con la idea de
volver a escribir UNICS en un lenguaje de más alto nivel,
aunque sólo consiguió un compilador de FORTRAN. El
nuevo lenguaje se llamó B.
Administración de Sistemas Informáticos 17/10/08 13:16
1. Historia del C
El lenguaje C. Del B al C++.

 Dennis Ritchie modifica el lenguaje B (llamándolo C) y


consigue escribir el sistema UNICS, que ya se llamó
UNIX, tanto multiusuario como multitarea.
 1972-1973. El lenguaje C modificado por Ritchie,
Thompson y Brian Kernighan, se distribuye
gratuitamente junto al S.O. UNIX.
 En 1978 Kernighan y Ritchie escriben el libro "The C
Programming Language", que se convirtió en el
documento de referencia del lenguaje.
 Los fabricantes de compiladores crean extensiones del
lenguaje y algunos programadores empiezan a crear
variantes: Bjarne Stroustrup inventa en 1984 el C++.
Administración de Sistemas Informáticos 17/10/08 13:16
2. Ventajas de C.
 Enorme flexibilidad y adaptabilidad.
– Sólo tiene 32 palabras reservadas.
– Bibliotecas
 Compiladores pequeños y fáciles de transportar.
 Concisión en la sintaxis.
– Instrucciones crípticas.
 Hecho por y para programadores.
 Éxito de UNIX, distribución gratuita en ambientes
universitarios.
 Eficiencia en la producción de código objeto.
 Amplio juego de operadores.
 Auge de los PCs y compiladores para DOS y
Windows.

Administración de Sistemas Informáticos 17/10/08 13:16


3. Desventajas de C
 No se comprueban los límites de los vectores.
 La precedencia de los operadores no es
totalmente intuitiva.
 La sintaxis puede llegar a ser demasiado
concisa.
– C ofuscado

Administración de Sistemas Informáticos 17/10/08 13:16


4. Características del C
 C es un lenguaje de nivel medio.
 El código C es muy portable.
 No es un lenguaje de tipos fuertes.
 C tiene sólo 32 palabras reservadas.
– 27 por parte del estándar de Kernighan y Ritchie
– 5 incorporadas por el comité de estandarización ANSI
 C es un lenguaje estructurado.
 C es un lenguaje para programadores.
 Ventajas respecto al lenguaje ensamblador.
 Portabilidad del C.
 Eficiencia del C.
 Compiladores frente a intérpretes.
Administración de Sistemas Informáticos 17/10/08 13:16
5. Formato de un programa C
Palabras reservadas
auto extern sizeof
break float static
case for struct
char goto switch
const if typedef
continue int union
default long unsigned
do register void
double return volatile
else short while
enum signed

Administración de Sistemas Informáticos 17/10/08 13:16


5. Formato de un programa C
 Los programas en C están constituidos por
una o más funciones.
 Una de ellas debe llamarse main().
– Forma el esqueleto del programa
– El programa comienza en main()
 Aunque técnicamente main() no forma
parte del lenguaje C, se debe tratar como si
lo fuera.

Administración de Sistemas Informáticos 17/10/08 13:16


declaraciones globales
tipo_devuelto main(lista de parámetros)
{
secuencia de instrucciones
}
tipo_devuelto f1 (lista de parámetros)
{
secuencia de instrucciones
}
tipo_devuelto f2 (lista de parámetros)
{
secuencia de instrucciones
}
......................
tipo_devuelto fN (lista de parámetros)
{
secuencia de instrucciones
}
void main(void)
{
int operando1, operando2;
int resultado_suma, resultado_producto;
..........
resultado_suma = suma(operando1, operando2);
resultado_producto = producto(operando1, operando2);
..............
}
int suma (int op1, int op2)
{
return op1 + op2;
}
int producto (int op1, int op2)
{
return op1 * op2;
}
5. Formato de un programa C
 Directivas
– Instrucciones para el compilador.
– Por ejemplo
 #include <stdio.h>
– Incluye en el programa elementos del fichero
stdio.h
– Es parte del compilador y aporta librerías de
E/S de datos
 funciones como printf(), scanf(), getchar(), ...

Administración de Sistemas Informáticos 17/10/08 13:16


5. Formato de un programa C
 Sentencias
– se ejecutan secuencialmente.
– conviene escribir cada sentencia en una línea.
– el símbolo punto y coma (;) del final de cada línea
identifica a ésta como una sentencia C o instrucción.
 el punto y coma es parte de la sentencia y no es un
separador de sentencias, como ocurre en el lenguaje Pascal.
– en cada línea se puede escribir más de una sentencia
– se puede espaciar una sentencia en más de una línea
(no se debe partir en mitad del texto entrecomillado).

Administración de Sistemas Informáticos 17/10/08 13:16


5. Formato de un programa C
 Comentarios
– Hacen más comprensibles los programas.
– Se utilizan los símbolos /* y */ para delimitarlos.
– Todo el texto encerrado entre ellos será ignorado por el
compilador.
– Los comentarios no pueden anidarse.
– Un comentario estilo C++ comienza con los caracteres //.
 Termina al final de la línea, es decir: estos comentarios no pueden
ocupar más de una línea.
 En general, el estilo C se utiliza para comentarios de más de una
línea, y el estilo C++, para comentarios de una sola línea.

Administración de Sistemas Informáticos 17/10/08 13:16


6. Tipos de Datos
 Cinco tipos de datos básicos en C:
 carácter (char)
 entero (int)

 punto flotante (float)

 doble punto flotante (double)

 sin valor (void).

 Los valores del tipo char se utilizan para


almacenar caracteres ASCII o cualquier cantidad
de 8 bits.
 El tipo void se utiliza en tres casos:
 Para una función que no devuelve ningún valor.
 Para una función que no tiene parámetros.

 Para crear punteros genéricos.

Administración de Sistemas Informáticos 17/10/08 13:16


6. Tipos de Datos
 Modificadores de tipo.
– Se utilizan para alterar el significado del tipo básico
– signed, unsigned, long y short.
– Todos ellos se pueden aplicar a los tipos enteros base
salvo a void.
 Se puede aplicar unsigned y signed a los caracteres.
 Se puede aplicar long al tipo double.

 La utilización de signed sobre enteros y char es redundante

Administración de Sistemas Informáticos 17/10/08 13:16


6. Tipos de datos
Tamaño en bits Tipo Rango

8 char = signed char -128 a 127


unsigned char 0 a 255
16 short int = signed short int -32768 a 32767
unsigned short int 0 a 65535
32(*) int = signed int -2147483648 a 2147483647
unsigned int 0 a 4294967295
32 long int = signed long int -2147483648 a 2147483647
unsigned long int 0 a 4294967295
32 float 3.4E-38 a 3.4E+38
64 double 1.7E-308 a 1.7E+308
80 long double 3.4E-4932 a 1.1E+4932

Administración de Sistemas Informáticos 17/10/08 13:16


7. Declaración de Variables.
 Asocia un tipo de datos a una variable.
 Todas las variables deben ser declaradas

tipo <lista_variables>;

 tipo: un tipo de dato válido en C


 lista_variables: uno o más identificadores
separados por comas.

Administración de Sistemas Informáticos 17/10/08 13:16


7. Declaración de Variables.
 Ejemplos
unsigned int anio_nacimiento, numero_socios;
float importe, total_compra;
double distancia_sol, peso;
char letra, digito ;

 Es posible iniciar una variable en el momento de


su declaración:
int dia = 15; // declaración e inicialización
short int coord_x =10, coord_y =12 ;
char caracter = ‘z’;
int blancos=11, negros=15, verdes=30;

Administración de Sistemas Informáticos 17/10/08 13:16


8. Constantes
Tipo de dato Ejemplos

char ‘a’ ‘\n’ ‘9’

int 974 21000 -345

long int 20000L -15000L

short int -100 120

unsigned int 20000U 50000U

float 475.231F 9.87e2

double 987.654 -0.00345

Administración de Sistemas Informáticos 17/10/08 13:16


8. Constantes.
C soporta las constantes de tipo cadena que se
encierran entre comillas dobles.
 Las constantes de tipo carácter se encierran entre
comillas simples (apóstrofos).
 Las cadenas son simplemente vectores de
caracteres, se tratarán más adelante.
 Algunos caracteres son imposibles de introducir
desde el teclado.
 C utiliza las constantes de carácter especiales de
barra invertida que equivale a un carácter único.

Administración de Sistemas Informáticos 17/10/08 13:16


8. Constantes.
Código Significado
\n nueva línea
\t tabulador horizontal
\v tabulador vertical
\b retroceso
\’ apóstrofo
\r retorno de carro
\” comillas
\f salto de página
\0 carácter nulo
\a alarma
\ooo constante octal (ooo = valor octal)
\xhh constante hexadecimal (hh = valor hexadecimal)
\\ barra atrás

Administración de Sistemas Informáticos 17/10/08 13:16


9. Operadores
C dispone de una gran variedad de
operadores.
 Operadores aritméticos.
Operador Acción
- Resta, también signo menos unario.
+ Suma.
* Multiplicación
/ División
% Módulo de la división.
-- Decremento.
++ Incremento.

Administración de Sistemas Informáticos 17/10/08 13:16


9. Operadores.
 Los operadores de incremento y decremento
pueden preceder (modalidad prefijo) o suceder
(modalidad sufijo) al operando.
 Modalidad sufijo:
variable++ variable--
 Modalidad prefijo:
++variable --variable
 Es indiferente escoger una modalidad u otra
cuando la variable afectada de este operador va
sola en una sentencia.

Administración de Sistemas Informáticos 17/10/08 13:16


9. Operadores.
 En el modo sufijo, primero se utiliza la
variable afectada por el operador de
incremento o decremento, y luego se
incrementa o decrementa en 1 el valor de
la variable.
 En el modo prefijo, primero se incrementa
o decrementa la variable afectada por el
operador y luego se opera con ella.

Administración de Sistemas Informáticos 17/10/08 13:16


9. Operadores.
C tiene una taquigrafía especial que
simplifica la codificación de un cierto tipo
de instrucciones de asignación.

<variable> += <expresión>;

 Esta taquigrafía funciona para todos los


operadores binarios de C.
Administración de Sistemas Informáticos 17/10/08 13:16
9. Operadores.
 Una expresión de relación o una expresión
lógica, si es cierta toma el valor 1, y si es
falsa toma el valor 0.
Operadores relacionales
Operador Acción
> Mayor que
>= Mayor o igual que.
< Menor que.
<= Menor o igual que.
== Igual.
!= Distinto.

Operadores lógicos
Operador Acción
&& AND (Y)
|| OR (O)
Administración
! de Sistemas Informáticos NOT (NO) 17/10/08 13:16
9. Operadores.
C se diseñó para sustituir al lenguaje
ensamblador por tanto soporta operadores a
nivel de bit.
 Sólo pueden usarse con los tipos int y char.
Operadores a nivel de bit

Operador Acción

& Y
| O
^ O exclusivo (XOR)
˜ Complemento a uno
>> Desplazamiento a la derecha (divide por 2)
<< Desplazamiento a la izquierda (multiplica por 2)
Administración de Sistemas Informáticos 17/10/08 13:16
9. Operadores.
 sizeof es un operador unario en tiempo de
compilación que devuelve la longitud, en
bytes, de la variable o el especificador de
tipo encerrado entre paréntesis al que
precede.
 La utilidad principal de sizeof es ayudar a
generar código portable.

Administración de Sistemas Informáticos 17/10/08 13:16


Denominación Operadores Función Denominación Operadores Función

Expresión () Paréntesis Binarios & AND binario


[] Corchetes de indexación | OR binario
. Operador de estructura ^ XOR binario
-> Operador de puntero a estructura

Unitarios - Cambio de signo Lógicos && AND lógico


˜ NOT binario || OR lógico
! NOT lógico
* Contenido de la dirección de un puntero
& Dirección de memoria de una variable
++ Incremento
-- Decremento
sizeof(tipo) Tamaño en tiempo de ejecución

Multiplicativos * Multiplicación Condicionales ?: if..else abreviado


/ División
% Resto de la división

Aditivos + Suma Asignaciones abreviadas =


- Resta *=
/=
%=
+=
-=
<<=
>>=
&=
|=
^=
De movimiento de bits >> Desplazmiento de bits a la derecha Otros , Operador coma
<< Desplazamiento de bits a la izquierda

Relacionales > Mayor que


>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual que
!= Distinto de
10. Instrucciones de asignación
 Da valores a las variables.
 Formato:
<nombre_variable> = <expresión>;
 La expresión puede ser:
– una constante
– una combinación de variables, operadores y
constantes.
 El destino, o la parte izquierda, de la asignación
debe ser una variable, no una función o una
constante.

Administración de Sistemas Informáticos 17/10/08 13:16


10. Instrucciones de asignación
 Asignaciones múltiples.
– C permite asignar el mismo valor a varias variables
utilizando asignaciones múltiples en una única
instrucción.
coordx = coordy = coordz = 0;
– En los programas profesionales, a las variables se les
asignan frecuentemente valores comunes utilizando
este método.
 Conversión de tipo en asignaciones.
– El valor de la parte derecha (expresión) de la
asignación se convierte al tipo de la parte izquierda
(variable destino)
Administración de Sistemas Informáticos 17/10/08 13:16
11. Cadenas de caracteres
 Serie de uno o más caracteres.
"Esto es una tira“ "x"
 Las comillas no forman parte de la cadena.
 Las cadenas se declaran igual que los arrays
unidimensionales.
char nombre_cadena [longitud];
 En C no existe el tipo cadena. Es un array de
caracteres.
 Los caracteres de la cadena se almacenan en
posiciones de memoria adyacentes.

Administración de Sistemas Informáticos 17/10/08 13:16


11. Cadenas de caracteres
 La última posición del array el compilador del C
coloca el carácter nulo \0 (código ASCII = 0).
– Por esta razón, para declarar arrays de caracteres es
necesario que la longitud del array tenga un carácter
más que la cadena más larga que pueda almacenar.
 Para manejar tanto la entrada -scanf()- como la
salida -prinft()- de la cadena se usa el
especificador %s.
 strlen() da la longitud de la cadena hasta llegar al
carácter nulo.
 El operador sizeof nos facilitará la longitud del
array.
Administración de Sistemas Informáticos 17/10/08 13:16
12. Salida formateada por
pantalla: printf
printf(<cadena_formato>,<item1>,<item2>, ... );
 El prototipo de la función printf() se encuentra en stdio.h.
 cadena_formato es una tira de caracteres que contiene
aquellos que se han de imprimir tal como aparecen en el
entrecomillado y/o los especificadores de formato (se distinguen
por el símbolo % ).
 item1, item2,.. son las distintas variables, constantes o
expresiones, cuyo valor se quiere imprimir. No tienen que
aparecer obligatoriamente.
 De este modo, la función printf() describe la manera en que han
de imprimirse los items en caso de que existan.
 Debe aparecer una especificación de conversión por cada
item.

Administración de Sistemas Informáticos 17/10/08 13:16


12. Salida formateada por
pantalla: printf
Código Formato Código Formato

%c Carácter %o Octal sin signo

%d Enteros decimales con signo %s Cadenas de caracteres

%i Enteros decimales con signo %u Enteros decimales sin signo

%e Notación científica (e min.) %x Hexadecimales sin signo (min.)

%E Notación científica (E may.) %X Hexadecimales sin signo (may.)

%f Coma flotante %p Puntero

%g El más corto entre %e y %f %n Argumento asociado es un ptro.

%G El más corto entre %E y %f %% Imprime símbolo %

Administración de Sistemas Informáticos 17/10/08 13:16


12. Salida formateada por
pantalla: printf
 Modificadores
– Son apéndices que se agregan a los
especificadores de conversión básicos para
modificar la salida.
– Se colocan entre el símbolo % y el carácter
que define el tipo de conversión:
% [-] [X] [.Y] [longitud] conversión

Administración de Sistemas Informáticos 17/10/08 13:16


12. Salida formateada por
pantalla: printf
 -
– Indica que el item comience a escribirse empezando
por la izquierda del campo que tenga asignado.
 X
– Anchura mínima del campo; si no es suficiente se usa
uno mayor.
 .Y
– Número de decimales o máximo número de caracteres
a imprimir.
– Por defecto en punto flotante se usan 6 decimales.

Administración de Sistemas Informáticos 17/10/08 13:16


12. Salida formateada por
pantalla: printf
 longitud
– Si la conversión es un nº entero :
h trata al argumento como short
l trata al argumento como long
– Si la conversión es un nº real:
 L trata al argumento como long double
 Consejos.
– Para imprimir columnas de datos utilizar campos de
anchura fija lo suficientemente grandes.
– Cuando un número deba aparecer dentro de una frase
conviene usar un campo igual o menor que el
esperado que eviten blancos innecesarios.
Administración de Sistemas Informáticos 17/10/08 13:16
13. Entrada formateada por
teclado: scanf
 Permite leer todos los tipos de datos predefinidos
y convierte los números automáticamente al
formato interno apropiado.
 El prototipo de la función scanf() se encuentra en
stdio.h.
int scanf(const char *cadena-formato, lista de argumentos);

 La cadena-formato determina cómo se deben leer


los valores y cómo se almacenan en la variables
apuntadas por los argumentos de la lista.
Administración de Sistemas Informáticos 17/10/08 13:16
13. Entrada formateada por
teclado: scanf
 La cadena de formato está constituida por tres
clases de caracteres:
– Especificadores de formato.
– Caracteres de espacio en blanco.
– Caracteres distintos del espacio en blanco.
 La función scanf() devuelve el número de
campos que constituyen la entrada.
 Especificadores de formato.
– Van precedidos por el signo % e indican el tipo de
dato que se va a leer.
– Se asocian de izquierda a derecha con los argumentos
de la lista de argumentos.
Administración de Sistemas Informáticos 17/10/08 13:16
13. Entrada formateada por
teclado: scanf
Código Significado
%c Leer un único carácter.
%d Leer un entero decimal.
%i Leer un entero decimal.
%e Leer un número en coma flotante.
%f Leer un número en coma flotante.
%g Leer un número en coma flotante.
%o Leer un número octal.
%s Leer una cadena.
%x Leer un número hexadecimal.
%p Leer un puntero.
%n Recibe un valor entero igual al número de caracteres
%u leídos.
Leer un entero sin signo.
%[ ] Examinar un conjunto de caracteres.
Administración de Sistemas Informáticos 17/10/08 13:16
13. Entrada formateada por
teclado: scanf
 Para un número decimal %d o %i .
 Para un entero sin signo %u.
 Para un número en coma flotante %e, %f
o %g.
 Para enteros en octal y hexadecimal %o y
%x.
 La función scanf() detiene la lectura de un
número cuando encuentra un carácter no
numérico.
Administración de Sistemas Informáticos 17/10/08 13:16
13. Entrada formateada por
teclado: scanf
 Lectura de caracteres individuales.
– Se pueden leer caracteres individuales utilizando
getchar() o una función alternativa.
– Con scanf() se hace mediante el especificador %c.
 Cuando se leen otros tipos de datos, los espacios
en blanco, tabuladores y caracteres de nueva
línea son separadores de campo.
 Cuando se lee un único carácter, los caracteres de
espacio en blanco se leen como cualquier otro
carácter.

Administración de Sistemas Informáticos 17/10/08 13:16


13. Entrada formateada por
teclado: scanf
 Para leer una cadena se utiliza el especificador de
formato %s.
 Lee caracteres hasta que encuentre un carácter de
espacio en blanco (o similar).
 Los caracteres se van introduciendo en el array
de caracteres y se añade un terminador nulo al
resultado.
 gets() lee una cadena hasta que se introduce un
retorno de carro
 scanf() lee una cadena hasta que se introduce el
primer carácter de espacio en blanco.
Administración de Sistemas Informáticos 17/10/08 13:16
14. Instrucciones de control
selectivas
 Una expresión de relación o una expresión
lógica, si es cierta toma el valor 1, y si es
falsa toma el valor 0.
 Una expresión cualquiera (combinación de
operadores, constantes y/o variables) se
considera cierta si tiene un valor distinto
de 0, y se considera falsa sólo si toma el
valor 0.

Administración de Sistemas Informáticos 17/10/08 13:16


14. Instrucciones de control
selectivas
if (expresión) sentencia

 La expresión podrá ser:


– de relación: if ( x > y )...
– lógica: if (sw)...
– aritmética if ( x + y )...
 Si la expresión es verdadera (si es distinta de 0)
se ejecuta la sentencia; en caso contrario, se pasa
a ejecutar la siguiente sentencia a if.

Administración de Sistemas Informáticos 17/10/08 13:16


14. Instrucciones de control
selectivas
 La sentencia o instrucción puede ser
simple o compuesta.
– Si es simple, consistirá en una sola sentencia
terminada en punto y coma.
– Si es compuesta, contendrá varias sentencias
terminadas en punto y coma que están
delimitadas por llaves, lo que se conoce como
bloque.

Administración de Sistemas Informáticos 17/10/08 13:16


14. Instrucciones de control
selectivas
 El operador ? recibe el nombre de ternario
porque requiere tres operandos.

<condicion> ? <expresion_1> : <expresion_2>

 Si la condición es cierta, la expresión condicional


(todo el conjunto) toma el valor de expresión_1;
si es falsa (o sea, 0), toma el valor de
expresión_2.
A > B ? mayor = A : mayor = B ;
mayor = A > B ? A : B ;
x = x>0 ? x : -x ;
Administración de Sistemas Informáticos 17/10/08 13:16
14. Instrucciones de control
selectivas
 switch compara sucesivamente un valor entero
frente a una lista de constantes enteras.

switch (expresión_entera)
{
case cte_1: sentencias;
[ break ];
case cte_2: sentencias;
[ break ];
......
[ default : sentencias ; ]
}

Administración de Sistemas Informáticos 17/10/08 13:16


14. Instrucciones de control
selectivas
 Si queremos que dos etiquetas distintas den el
mismo resultado se pueden poner juntas:

case x:
case y: <instrucciones> ;

 Dos constantes case del mismo switch no pueden


tener los mismos valores.
 Si se utilizan constantes de carácter en el switch,
éstas se convierten automáticamente en sus
valores enteros.
Administración de Sistemas Informáticos 17/10/08 13:16
15. Instrucciones repetitivas
while (condición)

sentencia
 Se acepta una sentencia simple, una
sentencia compuesta o una sentencia
vacía.
do
sentencia
while (expresion);
Administración de Sistemas Informáticos 17/10/08 13:16
15. Instrucciones repetitivas
for (expresion_1 ; expresion_2 ; expresion_ 3)
sentencia
 expresion 1 se realiza una sola vez, al
comenzar el bucle for. Suele ser una
inicialización.
 expresion 2 es una condición que se evalúa
antes de cada ejecución potencial del bucle; si es
cierta (distinta de cero) se ejecuta una vez el
bucle completo.
 expresion 3 se evalúa al final de cada bucle;
suele ser la actualización de las variables
implicadas en la condición.
Administración de Sistemas Informáticos 17/10/08 13:16
15. Instrucciones repetitivas
 Se pueden dejar en blanco:
– La expresion_1, si la variable que controla el
bucle ya viene inicializada.
– Si la expresion_2 no existe dará lugar a un
bucle infinito puesto que un test vacío se
considera cierto.
– La expresion_3 no hace falta si la
actualización de la variable que controla el
bucle se produce dentro del cuerpo del bucle.

Administración de Sistemas Informáticos 17/10/08 13:16


15. Instrucciones repetitivas
 Se puede utilizar el operador coma (,) que enlaza
las expresiones
– para realizar más de una inicialización
– más de una actualización.
– no tiene sentido utilizarlo en la expresion_2, pues no
equivale ni al operador && ni al operador ||.
 El operador coma evalúa las expresiones de
izquierda a derecha.
 El bucle for se puede utilizar para generar un
retardo.

Administración de Sistemas Informáticos 17/10/08 13:16


15. Instrucciones repetitivas
 break
– Se usa en la sentencia switch, y en los
bucles for , while y do while para
salir de dicho bucle y ejecutar la siguiente
sentencia.
– Cuando se encuentra en una estructura
anidada, la liberación afecta a la estructura
más interna que la contenga.

Administración de Sistemas Informáticos 17/10/08 13:16


15. Instrucciones repetitivas
 continue
– Es utilizable en todos los bucles y no se puede
usar en switch.
– Interrumpe el flujo del programa, evitando el
resto de la iteración, y se dirige de nuevo a
evaluar la expresión que condiciona la
ejecución del bucle; si ésta es cierta comienza
una nueva iteración.

Administración de Sistemas Informáticos 17/10/08 13:16


Apéndice. Conversión de tipos.
 Reglas para efectuar conversiones de tipo:
 En una operación en que aparezcan dos tipos diferentes se
eleva la "categoría" del operando que la tiene menor para
igualarla a la del mayor. Proceso conocido como
"promoción".
 El rango o categoría de los tipos, de menor a mayor, es: char,
short, int, long, float, double. Los tipos unsigned tienen el
mismo rango que el tipo a que están referidos.
 En una sentencia de asignación, el resultado final de los
cálculos se reconvierte al tipo de la variable a que están
siendo asignados. Así pues, el proceso puede ser una
"promoción" o una "pérdida de rango", según que la variable
a asignar sea de categoría superior o inferior.

Administración de Sistemas Informáticos 17/10/08 13:16


Apéndice. Conversión de tipos.
 Con el fin de conservar al máximo la precisión
numérica, todas las variables y constantes float
se convierten en double cuando se realizan
cálculos aritméticos con ellas. Así se reduce
enormemente el error de redondeo. Por supuesto,
la respuesta final se reconvierte a float, si ese es
el tipo declarado.
 Cuando se convierte de enteros a caracteres, de
enteros largos (long) a enteros y de enteros a
enteros cortos (short), la regla básica consiste en
eliminar la cantidad apropiada de bits más
significativos.
Administración de Sistemas Informáticos 17/10/08 13:16
Apéndice. Conversión de tipos.
Tipo del destino Tipo de expresión Posible pérdida

signed char unsigned char Si valor > 127 => destino


char short int negativo.
char int (16 bits) Los 8 bits de mayor orden.
char int (32 bits) Los 8 bits de mayor orden.
short int int (16 bits) Los 24 bits de mayor orden.
short int int (32 bits) Ninguna.
int (16 bits) long int Los 16 bits de mayor orden.
int (32 bits) long int Los 16 bits de mayor orden.
float double Ninguna.
double long double Precisión. Resultado redondeado.
Precisión. Resultado redondeado.

Administración de Sistemas Informáticos 17/10/08 13:16

También podría gustarte