Sie sind auf Seite 1von 374

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 1
CONCEPTOS BSICOS DE INFORMTICA

1
1

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

OBJETIVOS
Saber distinguir entre software y hardware. Entender el funcionamiento bsico de una computadora. Conocer la utilidad de las redes informticas.
Un programa informtico es un conjunto de instrucciones que indican a la computadora las operaciones que sta debe realizar con unos datos determinados. Pero, de qu est compuesta una computadora?, cmo es sta capaz de ejecutar un programa?, dnde se almacenan los datos?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
2

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

CONTENIDO
1.1 INTRODUCCIN 1.2 LAS COMPUTADORAS DIGITALES 1.3 TIPOS DE PROGRAMAS 1.4 REDES INFORMTICAS

3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
3

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.1 INTRODUCCIN (1/6)


Informtica: (acrnimo de informacin automtica)
Mezcla de ciencia y tecnologa que estudia y posibilita el tratamiento automtico y racional de la informacin por medio de computadoras (ordenadores o equipos informticos).

Computadora analgica: Manipula datos analgicos (valores de un rango continuo).


Temperatura de un cuerpo, altura de una persona, etc.

Computadora digital: Trabaja con datos digitales (valores de un rango discreto).


Nmero de habitantes de una ciudad, nmero de hijos, etc. Las computadoras digitales trabajan con dgitos binarios, llamados bits.
4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
4

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.1 INTRODUCCIN (2/6)


Dato analgico: temperatura de un cuerpo a lo largo del
tiempo.
Temperatura

Tiempo

Dato digital: nmero de habitantes de una ciudad a lo largo


del tiempo.
Nmero de habitantes de una ciudad

. .. .

. ..

.. . . .. ... .. .. .. ... .. . ..

Tiempo

5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
5

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.1 INTRODUCCIN (3/6)


Bit: (acrnimo de binary digit)
Unidad de informacin ms pequea con la que pueden trabajar los dispositivos electrnicos que constituyen una computadora digital. Dos estados de tensin elctrica: baja y alta. Dos dgitos binarios: cero (0) y uno (1).

Transistor: Material semiconductor (amplificador, interruptor, oscilador). Circuito integrado (chip): Componentes miniaturizados (transistores, resistencias, condensadores, etc.). Microchip: Millones de transistores agrupados en lminas de silicio del tamao de una ua.
6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
6

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.1 INTRODUCCIN (4/6)


Computadora: Mquina programable. Programa:
Conjunto de instrucciones u rdenes que indican a la mquina las operaciones que sta debe realizar con unos datos determinados. Indica a la computadora cmo obtener unos datos de salida, a partir de unos datos de entrada.
Computadora

Datos de entrada Programa

Datos de salida

7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
7

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.1 INTRODUCCIN (5/6)


Computadora 3y5 Programa Sumar 8

Datos de entrada: Son los que la computadora va a procesar (3 y 5). Datos de salida: Son datos derivados, es decir, obtenidos a partir de los datos de entrada (8). Informacin: Los datos son la informacin que maneja la computadora (textos, imgenes, sonidos, vdeos,...).
En un sentido ms filosfico: los datos de entrada son la materia prima de los datos de salida, considerados estos como la verdadera informacin.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
8

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.1 INTRODUCCIN (6/6)


Hardware: Conjunto de componentes tangibles (o fsicos) de una computadora.
Se puede ver y tocar.

Software: Conjunto de programas y datos con los que trabaja una computadora, el cual es inmaterial (o lgico).
No se puede ver ni tocar.

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
9

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.2 LAS COMPUTADORAS DIGITALES (1/3)


Arquitectura: Propuesta en 1946 por John von Neumann (1903-1957). Tipos bsicos:
Microcomputadoras:
Computadoras personales (PC). Uso domstico.
Porttiles. Reducido peso y tamao.

Estaciones de trabajo. Mayores prestaciones que un PC. Uso en oficinas de trabajo.

Minicomputadoras. Mayor potencia y tamao. Uso en universidades, laboratorios, empresas medianas,... Mainframes. Ms grande y caro. Uso en centros de investigacin, instituciones gubernamentales, empresas grandes,...
Supercomputadoras. Realizan billones de instrucciones por segundo.
10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
10

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.2 LAS COMPUTADORAS DIGITALES (2/3)


Componentes: Unidades o mdulos funcionales.
Unidad de entrada: Teclado, ratn, escner, lpiz ptico... Unidad de salida: Monitor, impresora, plotter, altavoces,... Unidad de memoria: (Memoria principal, memoria interna) Unidad central de proceso (CPU): Procesador.
Unidad aritmtico/lgica (ALU): Realiza clculos aritmticos y lgicos Unidad de control (CU): Interpreta las instrucciones.

Unidad de almacenamiento secundario: Disco duro, disco flexible o disquete, CD, DVD,...
11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
11

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.2 LAS COMPUTADORAS DIGITALES (3/3)


Bus del sistema: Interconecta las unidades funcionales.
Unidad central de proceso Unidad aritmtica y lgica Unidad de control

Unidad de entrada

Bus del sistema

Unidad de salida

Unidad de memoria

Unidad de almacenamiento secundario

Perifricos: No son imprescindibles. Son fuente y/o destino de los datos utilizados por los programas.
Externos: Impresoras, teclados, ratones,... Internos o externos: Discos duros, mdems,...
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
12

12

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.3 TIPOS DE PROGRAMAS


Software de aplicacin: Procesadores de texto, gestores de bases de datos, hojas de clculo, juegos, etc. Herramientas de software: ayudan en el trabajo a los humanos. Software del sistema: Sistema operativo, (Linux, MS-DOS, UNIX, Windows XP),...
Aplicaciones

Sistema Operativo Hardware

Software de red: Programas relacionados con la interconexin de equipos informticos.


Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

13
13

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (1/8)


Dependiendo de la configuracin de los equipos de una red, sta puede ser: cliente/servidor o igual a igual.
Estacin de trabajo

Red cliente/servidor:
Estacin de trabajo Escner

Impresora Servidor

Estacin de trabajo

Las estaciones de trabajo son equipos cliente que pueden emplear los usuarios de una red para solicitar informacin (datos) y servicios (impresin de documentos, transferencia de ficheros, correo electrnico,...) a los equipos servidores.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

14
14

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (2/8)


Red igual a igual:
PC

Impresora PC PC

Escner

Impresora PC

Todos los equipos pueden ser cliente y servidor al mismo tiempo, es decir, no existen clientes exclusivos ni servidores dedicados.
15
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
15

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (3/8)


Dependiendo de la distancia que separa a los equipos que componen una red, sta puede ser de dos tipos: de rea local o de rea extensa.

Red de rea local (LAN):


Equipos conectados a poca distancia. Por ejemplo, todos los equipos de una oficina, un aula o un supermercado. El lmite geogrfico est en unos pocos kilmetros. Por ejemplo, todos los equipos de un campus universitario, un hospital o un aeropuerto.

Red de rea extensa (WAN):


Equipos conectados a decenas, cientos o miles de kilmetros. Por ejemplo, la red que conecte a los equipos de una empresa que tiene oficinas en varias ciudades o pases.
16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
16

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (4/8)


Una WAN tambin puede conectar a dos o ms LANs.

LAN LAN Oficina de Tokio Oficina de Pamplona LAN

Oficina de Valencia

Una empresa que tiene oficinas en distintas ciudades, lo normal es que instale una LAN en cada oficina y las interconecte formando una WAN.
17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
17

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (5/8)


Internet:
Red de redes. Interconecta a millones de computadoras repartidas por todo el mundo. Medios fsicos: lneas telefnicas, fibra ptica, enlaces va satlite, ondas terrestres, etc. Superautopistas de la informacin: El ncleo o corazn de Internet est compuesto por supercomputadoras conectadas a travs de conexiones de alta velocidad (backbone).
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
18

18

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (6/8)


Ejemplo de interconexin de redes en Internet:
Los ngeles Londres Nueva York Pars Tokio

Pamplona

Madrid
LAN LAN Universidad de San Diego Oficina de Valencia

Sevilla

Si un empleado de la oficina de una empresa ubicada en Valencia se conecta a Internet y accede a un servidor de pginas web de la Universidad de San Diego. Toda la informacin a la que acceda esta persona viajar por la red, desde el servidor de San Diego a su equipo en Valencia. A todas las computadoras intermedias entre el servidor y el cliente se les denomina nodos de conexin. 19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
19

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (7/8)


Protocolo: Conjunto de normas que regula la comunicacin entre dos equipos informticos.
Para la comunicacin en Internet se emplea:
TCP: (Protocolo de control de transmisin). IP: (Protocolo de Internet).

TCP/IP: Desarrollado por Vinton Cerf en 1973. (ARPAnet).


Sirve para garantizar que el mensaje enviado por una computadora llegue correctamente a la computadora de destino. TCP/IP permite a todas la computadoras del mundo conectadas a Internet comunicarse entre s, con independencia del tipo que sean o del sistema operativo que utilicen.

20
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
20

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

1.4 REDES INFORMTICAS (8/8)


La World Wide Web (WWW): Desarrollada en 1989 por el Timothy Berners-Lee.
Permite a los usuarios de Internet buscar y acceder a una gran cantidad de informacin multimedia (textos, imgenes, sonidos, animaciones y vdeos).

Intranet: Red interna que ofrece a todos los usuarios de dicha red los mismos servicios que Internet (correo electrnico, transferencia de ficheros, pginas web,...).
Una intranet puede ser pblica o privada, dependiendo de si se puede acceder a ella desde Internet o, nicamente, desde los equipos de la propia red.

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
21

Captulo 1. CONCEPTOS BSICOS DE INFORMTICA

EJERCICIOS RECOMENDADOS
Resueltos: 1 y 2. Propuestos: 1, 2 y 3.

22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
22

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

23
23

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 2
REPRESENTACIN DE LOS DATOS

1
24

Captulo 2. REPRESENTACIN DE LOS DATOS

OBJETIVOS
Entender cmo la computadora digital es capaz de representar a distintos tipos de datos. Saber realizar conversiones de base entre los Sistemas Decimal, Binario, Octal y Hexadecimal. Conocer los tipos de codificacin binaria ms utilizados para representar a los nmeros enteros, nmeros reales y caracteres.
Las computadoras se utilizan para procesar informacin (grficos, sonidos, textos,...). Pero, cmo es capaz la computadora digital de representar a toda esta informacin con tan solo dos smbolos, el cero (0) y el uno (1)?
2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
25

Captulo 2. REPRESENTACIN DE LOS DATOS

CONTENIDO
2.1 INTRODUCCIN 2.2 SISTEMAS DE NUMERACIN 2.3 CONVERSIONES DE BASES 2.4 ARITMTICA BINARIA 2.5 REPRESENTACIN DE NMEROS ENTEROS 2.6 REPRESENTACIN DE NMEROS REALES 2.7 REPRESENTACIN DE CARACTERES
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
26

Captulo 2. REPRESENTACIN DE LOS DATOS

2.1 INTRODUCCIN (1/2)


Codificacin de la informacin:
Para que el ordenador pueda manejar la misma informacin que los humanos (textos, sonidos, imgenes, etc.) hay que realizar una conversin de los signos de nuestros lenguajes a ceros y unos (bits). Tanto las instrucciones de los programas como los datos que estos manejan, deben codificarse en bits. A una sucesin de bits se le denomina cdigo binario o cdigo mquina. En la memoria principal del ordenador, cada bit se presenta por medio de un transistor. Si se utiliza lgica positiva, el transistor estar encendido para simbolizar a un uno (1) apagado para representar a un cero (0).
4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
27

Captulo 2. REPRESENTACIN DE LOS DATOS

2.1 INTRODUCCIN (2/2)


Byte: Los bits suelen agruparse en bloques de 8. A dicho bloque se le denomina byte u octeto. Mltiplos de byte son:
Kilobyte (KB). 1KB = 1024 bytes = 2 10 bytes Megabyte (MB). 1MB = 1024 Kb = 10242 bytes Gigabyte (GB). 1GB = 1024 Mb = 1024 2 Kb = 1024 3 bytes Terabyte (TB). 1TB = 1024 Gb = 1024 2 Mb = 1024 3 Kb = 10244 bytes Petabyte (PB). 1PB = 1024 Tb = 10242 Gb = ... = 10245 bytes

Palabra: Mximo nmero de bits con que la CPU puede trabajar en paralelo (a la vez).
Suele ser mltiplo de un byte: 8, 16, 32, 64 bits, etc.
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
28

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (1/8)


Sistema de numeracin: define a un conjunto de signos
y reglas para expresar a los nmeros.

Sistema de Numeracin Romano:


Smbolos: I (uno), V (cinco), X (diez), L (cincuenta), C (cien), D (quinientos) y M (mil).
CLI = C + L + I = 100 + 50 + 1 MMXL = 1000 + 1000 - 10 + 50 = 2040

Inconveniente: No facilita la realizacin de clculos matemticos por escrito. No es un sistema de numeracin posicional.
6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
29

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (2/8)


Sistema de Numeracin Arbigo o Decimal:
Ingeniado por los hindes en el siglo III a. C., aprox. Se pueden representar infinitos nmeros reales. Diez dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Signos ms (+) y menos (-), y punto (.) o coma (,) para separar la parte entera de la fraccionaria.
Nmero real = parte entera , parte fraccionaria EJEMPLO: -502,12 = -500 -2 -0,1 -0,02

S es un sistema de numeracin posicional.


Adecuado para realizar operaciones matemticas por escrito.
7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
30

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (3/8)


Sistemas de numeracin posicional (1/5):
Cada cifra representa a un valor relativo diferente, dependiendo de su valor absoluto y de su posicin en una secuencia de nmeros. EJEMPLO: 444 = 400 + 40 + 4 Un sistema de numeracin posicional se caracteriza por su base, que viene determinada por el nmero de dgitos que utiliza.
Sistema Binario (base 2): 0 y 1. Sistema Octal (base 8): 0, 1, 2, 3, 4, 5, 6 y 7. Sistema Decimal (base 10): 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Sistema Hexadecimal (base 16): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.
8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
31

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (4/8)


Sistemas de numeracin posicional (2/5):
En cualquier sistema de numeracin posicional, una secuencia de dgitos se puede representar, formalmente, de la siguiente manera:
Nb = ap-1 ap-2 ... a1 a0 , a-1 a-2 ... a-q+1 a-q

Siendo:
(N) el nmero o secuencia de signos. (b) la base. (p) el nmero de dgitos de la parte entera. (q) el nmero de dgitos de la parte fraccionaria. (ai) las cifras del nmero. (i) la posicin de cada cifra con respecto a la coma (,).

Cumplindose que para todo dgito a,


0 a b-1

Y para toda posicin i,


-q i p-1
9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
32

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (5/8)


Sistemas de numeracin posicional (3/5):
EJEMPLO: En el Sistema Decimal, el nmero real 4305,86 se puede expresar como:
4305,8610

Siendo:
( N = 4305,86 ) el nmero. ( b = 10 ) la base. ( p = 4 ) el nmero de dgitos de la parte entera. ( q = 2 ) el nmero de dgitos de la parte fraccionaria. ( a3 = 4, a2 = 3, a1 = 0, a0 = 5, a-1 = 8 y a-2 = 6 ) las cifras del nmero.

Cumplindose que para todo dgito a,


0a9

Y para toda posicin i,


-2 i 3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
33

10

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (6/8)


Sistemas de numeracin posicional (4/5):
EJEMPLO: En el Sistema Binario, el nmero real 11010,001 se puede expresar como:
11010,0012

Siendo:
( N = 11010,001 ) el nmero. ( b = 2 ) la base. ( p = 5 ) el nmero de dgitos de la parte entera. ( q = 3 ) el nmero de dgitos de la parte fraccionaria. ( a4 = 1, a3 = 1, a2 = 0, a1 = 1, a0 = 0, a-1 = 0 , a-2 = 0 y a-3 = 1 ) las cifras del nmero.

Cumplindose que para todo dgito a,


0a1

Y para toda posicin i,


-3 i 4
11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
34

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (7/8)


Sistemas de numeracin posicional (5/5):
Con n dgitos se pueden representar bn nmeros diferentes. EJEMPLO: Con tres dgitos, en el Sistema Decimal se pueden representar 103 nmeros enteros positivos distintos, es decir, mil nmeros: del 00010 al 99910, ambos inclusive. EJEMPLO: con tres dgitos
En Binario: 23 = 8 nmeros (0002 ... 1112) En Octal: 83 = 512 nmeros (0008 ... 7778) En Hexadecimal: 163 = 4096 nmeros (00016 ... FFF16)
12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
35

Captulo 2. REPRESENTACIN DE LOS DATOS

2.2 SISTEMAS DE NUMERACIN (8/8)


Teorema Fundamental de la Numeracin (TFN):
Nb = ap-1 b p-1 + a p-2 b p-2 + ... + a 1 b1 + a 0 b0 + a-1 b-1 + a -2 b-2 + ... a -q+1 b-q+1 + a -q b-q

Dgito ms significativo (de mayor peso): ap-1 Dgito menos significativo (de menor peso): a-q Frmula:

EJEMPLO:
4305,8610 = 4103 + 3102 + 0101 + 5100 + 810 -1 + 610 -2 4305,8610 = 4000 + 300 + 0 + 5 + 0,8 + 0,06
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
36

13

Captulo 2. REPRESENTACIN DE LOS DATOS

2.3 CONVERSIONES DE BASES (1/6)


De base (b) a base 10: hacemos uso del TFN. EJEMPLOS:
10,1012 = 121 + 020 + 12-1 + 02-2 + 12-3 = 2 + 0 + 0,5 + 0 + 0,125 = 2,62510 703,48 = 782 + 081 + 380 + 48-1 = 448 + 0 + 3 + 0,5 = 451,510 6C,116 = 6161 + C160 + 116-1 = 96 + 12 + 0,0625 = 108,062510

14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
37

Captulo 2. REPRESENTACIN DE LOS DATOS

2.3 CONVERSIONES DE BASES (2/6)


De base 10 a base (b):
PASO 1: Convertir la parte entera del nmero N10, dividindola, sucesivamente, entre b, hasta obtener un cociente ms pequeo que b.
La parte entera del nmero que estamos buscando lo compondrn el ltimo cociente y los restos que se hayan ido obteniendo, tomados en orden inverso.

PASO 2: Convertir la parte fraccionaria del nmero N10, multiplicndola, repetidamente, por b, hasta obtener un cero en la parte fraccionaria o hasta que se considere oportuno.
La parte fraccionaria del nmero buscado lo formarn las partes enteras de los nmeros que se hayan ido obteniendo en cada producto, cogidas en ese mismo orden.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
38

15

Captulo 2. REPRESENTACIN DE LOS DATOS

2.3 CONVERSIONES DE BASES (3/6)


De base 10 a base (b):
EJEMPLO (De base 10 a base 2): 13,312510 a base 2 Paso 2: parte fraccionaria

Paso 1: parte entera

1310 = 11012 13,312510 = 1101,01012

0,312510 = 0,01012
16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
39

Captulo 2. REPRESENTACIN DE LOS DATOS

2.3 CONVERSIONES DE BASES (4/6)


De base (b) a base (c), ambas distintas de 10:
PASO 1: Convertir el nmero Nb de base (b) a base 10. PASO 2: Convertir el nmero N10 de base 10 a base (c).

EJEMPLO (De base 8 a base 2): 16,518 a base 2


Paso 1:
16,518 = 181 + 680 + 58-1 + 18-2 = 8 + 6 + 0,625 + 0,015625 = 14,64062510

Paso 2:

16,518 = 14,64062510 = 1110,1010012


Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

17
40

Captulo 2. REPRESENTACIN DE LOS DATOS

2.3 CONVERSIONES DE BASES (5/6)


Conversin directa (Octal/Binario):
Octal Binario

0 000

1 001

2 010

3 011

4 100

5 101

6 110

7 111

EJEMPLOS:
De base 8 a base 2 De base 2 a base 8

18
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
41

Captulo 2. REPRESENTACIN DE LOS DATOS

2.3 CONVERSIONES DE BASES (6/6)


Conversin directa (Hexadecimal/Binario):
Hex. Binario Hex. Binario

0 0000 8 1000

1 0001 9 1001

2 0010 A 1010

3 0011 B 1011

4 0100 C 1100

5 0101 D 1101

6 0110 E 1110

7 0111 F 1111

EJEMPLO: De base 16 a base 2

19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
42

Captulo 2. REPRESENTACIN DE LOS DATOS

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2, 3, 4, 5, 6, 7, 8 y 9. Propuestos: 1, 2, 3, 4, 5, 6 y 7.

20
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
43

Captulo 2. REPRESENTACIN DE LOS DATOS

2.4 ARITMTICA BINARIA (1/4)


Suma binaria:
0+0=0 0+1=1 1+0=1 1 + 1 = 0 y acarreo 1

EJEMPLO: Sumar 100102 y 1102

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
44

Captulo 2. REPRESENTACIN DE LOS DATOS

2.4 ARITMTICA BINARIA (2/4)


Resta binaria:
0-0=0 0 - 1 = 1 y acarreo 1 1-0=1 1-1=0

EJEMPLO: Restar 1010012 y 10112

22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
45

Captulo 2. REPRESENTACIN DE LOS DATOS

2.4 ARITMTICA BINARIA (3/4)


Multiplicacin binaria:
0x0=0 0x1=0 1x0=0 1x1=1

EJEMPLO: Multiplicar 101012 por 1012

23
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
46

Captulo 2. REPRESENTACIN DE LOS DATOS

2.4 ARITMTICA BINARIA (4/4)


Divisin binaria: EJEMPLO: Dividir 1100102 entre 102

24
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
47

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (1/13)


Codificacin binaria:
1 0 2 4 6 5 7 8 Codificacin binaria 01

3 9 +

Sistemas de representacin en Coma Fija (CFI):


Binario Puro Signo Magnitud Complemento a 1 Complemento a 2 Exceso a 2n-1
25
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
48

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (2/13)


Binario Puro (BP):
Slo pueden ser positivos. Rango de representacin:

EJEMPLO: Para n = 8

EJEMPLO: 2310 en BP Frmula: De BP a base 10 EJEMPLO: -6810 y 379


no son representables

EJEMPLO: 10110001BP = ( 127 + 125 + 124 + 120 )10 = 17710


Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

26
49

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (3/13)


Desbordamiento: Sucede cuando el resultado de una
operacin est fuera del rango de representacin. EJEMPLO: Para n = 8, al sumar 11001000BP y 11001011BP

20010 + 20310 = 40310 (est fuera del rango de representacin)


27
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
50

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (4/13)


Para saber de antemano el nmero n de cifras necesarias para representar en Binario Puro a un determinado nmero N del Sistema Decimal, se puede calcular el logaritmo en base 2 del nmero decimal: EJEMPLO: Cuntas cifras se necesitan para representar al
nmero 2710 en Binario Puro?

Se necesitan 5 bits (2710 = 11011BP)


28
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
51

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (5/13)


Signo Magnitud (SM):
Nmeros positivos y negativos. Rango de representacin:

EJEMPLO: Para n = 8

29
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
52

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (6/13)


Frmula: De SM a base 10

EJEMPLOS:

Inconvenientes:
Desbordamiento. El nmero 010 = 0000000SM = 10000000SM (dos representaciones)
30
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
53

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (7/13)


Complemento a 1 (C1):
Nmeros positivos igual que en SM o BP:

Nmeros negativos en Complemento a la Base Menos 1.


Cb-1(N) = bn -1 - N C1(N) = 2n -1 - N2 = NC1

Rango de representacin:

EJEMPLO: Para n = 16

31
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
54

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (8/13)


Frmulas: De C1 a base 10 (para nmeros positivos)

Frmula: De C1 a base 10 (para nmeros negativos)

EJEMPLO:

Inconvenientes:
Desbordamiento. El nmero 010 = 00000000000SM = 1111111111111111SM
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
55

32

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (9/13)


Complemento a 2 (C2):
Nmeros positivos igual que en C1, SM o BP:

Nmeros negativos en Complemento a la Base.


Cb-1(N) = bn - N C1(N) = 2n - N2 = NC2

Rango de representacin:

EJEMPLO: Para n = 16

33
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
56

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (10/13)


Frmulas: De C2 a base 10 (para nmeros positivos)

Frmula: De C2 a base 10 (para nmeros negativos)

EJEMPLO:

Inconveniente:
Desbordamiento.
34
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
57

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (11/13)


Exceso a 2n-1:
Nmeros positivos y negativos:
NEX = N + 2n-1

EJEMPLOS:

Rango de representacin:

EJEMPLO: Para n = 16

35
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
58

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (12/13)


Frmula: De Exceso a 2n-1 a base 10

EJEMPLO:

Inconveniente:
Desbordamiento.
36
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
59

Captulo 2. REPRESENTACIN DE LOS DATOS

2.5 REPRESENTACIN DE NMEROS ENTEROS (13/13)


BCD (Binary Coded Decimal):
Decimal BCD

0000 0001 0010 0011 0100

0101 0110 0111 1000 1001

EJEMPLOS:
De base 10 a BCD De BCD a base 10

37
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
60

Captulo 2. REPRESENTACIN DE LOS DATOS

EJERCICIOS RECOMENDADOS
Resueltos: 10, 11, 12, 13 y 14. Propuestos: 8, 9, 10, 11 y 12.

38
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
61

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (1/8)


Codificacin binaria:

Sistema de representacin en Coma Fija Flotante (CFL):


Notacin cientfica o exponencial: N = m x bexp En las computadoras digitales (estndar IEEE 754): N = m x 2 exp

EJEMPLOS:

39
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
62

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (2/8)


Normalizacin: situar la coma decimal de su mantisa en
un lugar determinado (a la izquierda o a la derecha del dgito ms significativo de la mantisa).

EJEMPLOS:

40
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
63

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (3/8)


Estndar IEEE 754 (precisin simple): 32 bits
Signo (1 bit). Mantisa en Signo Magnitud (23 bits). Exponente en Exceso a 2 n-1-1 (8 bits).

EJEMPLO: -5,7510 = -101,112


Normalizar: -101,112 = -1,01112 x 22 Exponente en Exceso 2 n-1-1: 210 + (28-1-1)10 = 12910 = 10000001EX. A 127 Mantisa con bit implcito: 01110000000000000000000

-5,7510 = -101,112 = -1,01112 x 22 = C0B80000 CFL(PRECISIN SIMPLE)


Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

41
64

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (4/8)


Estndar IEEE 754 (precisin doble): 64 bits
Signo (1 bit). Mantisa en Signo Magnitud (52 bits). Exponente en Exceso a 2n-1-1 (11 bits).

EJEMPLO: 19,562510 = 10011,10012

Normalizar: 10011,10012 = 1,001110012 x 24 Exponente en Exceso 2n-1-1: 410 + (211-1-1)10 = 102710 = 10000000011EX. A 1023 Mantisa con bit implcito: 0011100100000000000000000000000000000000000000000000

19,562510 = 10011,10012 = 1,001110012 x 24 = 4033A00000000000CFL(PRECISIN DOBLE)


Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

42
65

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (5/8)


Casos especiales en el estndar IEEE 754 (simple y doble):

Si todos los bits del exponente son ceros (00...0), no se est utilizando bit implcito. Si, adems, la mantisa es distinta de todo ceros, el nmero es muy pequeo. (Exponente -126 -1022).
43
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
66

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (6/8)


Del estndar IEEE 754 con precisin simple a base 10:

Rango de representacin en el estndar IEEE 754 con precisin simple:

44
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
67

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (7/8)


Del estndar IEEE 754 con precisin doble a base 10:

Rango de representacin en el estndar IEEE 754 con precisin doble:

45
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
68

Captulo 2. REPRESENTACIN DE LOS DATOS

2.6 REPRESENTACIN DE NMEROS REALES (8/8)


Rangos de representacin discontinuos: no pueden representar todos los nmeros reales que existen entre dos cualesquiera de ellos. EJEMPLO: con precisin simple, alrededor del nmero cero
(0), existen infinitos nmeros reales que no son representables.

46
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
69

Captulo 2. REPRESENTACIN DE LOS DATOS

EJERCICIOS RECOMENDADOS
Resueltos: 15 y 16. Propuestos: 13, 14, 15 y 16.

47
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
70

Captulo 2. REPRESENTACIN DE LOS DATOS

2.7 REPRESENTACIN DE CARACTERES (1/5)


Smbolos ms usados por los humanos:
Letras minsculas del alfabeto ingls: { a, b, c, ..., x, y, z } Letras maysculas del alfabeto ingls: { A, B, C, ..., X, Y, Z } Numricos: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } Especiales: { +, -, *, /, @, #, , , , , ... } Grficos: { , , , , ... } De control: { Salto de lnea, Tabulador horizontal, ... }

Tipos de codificacin binaria:


EBCDIC ASCII Unicode
48
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
71

Captulo 2. REPRESENTACIN DE LOS DATOS

2.7 REPRESENTACIN DE CARACTERES (2/5)


EBCDIC (Extended Binary Coded Decimal Interchange Code):
Inventado por IBM. Utiliza grupos de 8 bits. (28 = 256 caracteres).

ASCII (American Standard Code for Information Interchange):


Emplea grupos de 7 bits. (27 = 128 caracteres). Tambin existe un ASCII extendido de 8 bits.

Unicode:
Todos los smbolos de todos los idiomas. Utiliza grupos de 16 bits. (216 = 65536 caracteres).
49
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
72

Captulo 2. REPRESENTACIN DE LOS DATOS

2.7 REPRESENTACIN DE CARACTERES (3/5)


Tabla ASCII:

50
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
73

Captulo 2. REPRESENTACIN DE LOS DATOS

2.7 REPRESENTACIN DE CARACTERES (4/5)


Caracteres (128-255) del ASCII extendido:

51
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
74

Captulo 2. REPRESENTACIN DE LOS DATOS

2.7 REPRESENTACIN DE CARACTERES (5/5)


Caracteres grficos (0-31) del ASCII:

52
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
75

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

53
76

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 3
CICLO DE VIDA DE UN PROGRAMA

1
77

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

OBJETIVOS
Saber qu es la Ingeniera del Software. Conocer los pasos que se tienen que dar para desarrollar un programa. Entender cmo el programador puede escribir unas instrucciones comprensibles para la mquina.
Hoy en da, la computadora es una herramienta indispensable en muchos mbitos, tales como: la medicina, la astronoma, las comunicaciones, etc. Gracias a la informtica, se han producido avances tecnolgicos que eran impensables antes de la llamada revolucin de las computadoras. No obstante, la mquina no puede hacer absolutamente nada sin un software, es decir, sin un programa que le diga qu es lo que tiene que hacer. Pero, cmo se hace un programa?
2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
78

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

CONTENIDO
3.1 INTRODUCCIN 3.2 ANLISIS 3.3 DISEO 3.4 CODIFICACIN 3.5 PRUEBAS 3.6 MANTENIMIENTO
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
79

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.1 INTRODUCCIN (1/4)


Software a medida:
Empresas (desarrolladora y cliente). EJEMPLOS:
Gestin de la venta de billetes de un aeropuerto. Gestin del alquiler de pelculas de un videoclub. Gestin de los historiales mdicos de los pacientes de un hospital.

Software no a medida:
EJEMPLOS:
Procesadores de textos. Juegos. Enciclopedias electrnicas.
4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
80

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.1 INTRODUCCIN (2/4)


Metodologa de la programacin: Disciplina que
alberga una serie de tcnicas y conocimientos cientficos relacionados con la informtica.

Paradigmas de programacin:
Programacin estructurada.
Aplicacin del diseo modular. Utilizacin, exclusivamente, de estructuras secuenciales, alternativas y repetitivas. Empleo de estructuras de datos adecuadas para manipular informacin.

Programacin Orientada a Objetos.

5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
81

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.1 INTRODUCCIN (3/4)


Ingeniera del Software:
Ciclo de vida de un programa (5 etapas).
Anlisis Diseo Codificacin Pruebas Mantenimiento

Planificacin de tareas (fechas de inicio y fin). Control de tareas (seguimiento continuo del proyecto).
6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
82

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.1 INTRODUCCIN (4/4)


Calidad del software:
Caractersticas operativas:
Correccin, hace lo que se espera de l? Eficiencia, se utilizan, ptimamente, los recursos de la computadora? Facilidad de uso, la interfaz es adecuada al usuario? Integridad, es seguro con respecto a los datos?

Capacidad para sufrir cambios:


Facilidad de mantenimiento, es susceptible de ser corregido? Flexibilidad, es susceptible de ser cambiado? Facilidad de prueba, resulta fcil hacer pruebas?

Adaptabilidad a nuevos entornos:


Reusabilidad, se puede usar parte del software en otro proyecto? Facilidad de interoperacin, puede interactar con otros SI? Portabilidad, se puede usar en otra mquina (procesador)?
7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
83

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.2 ANLISIS (1/2)


Especificacin de Requisitos Software (ERS):
Qu tiene que hacer el programa?
Comportamiento interno (gestin de los datos). Comportamiento externo (interaccin con el usuario y con otras aplicaciones).

Contrato (empresa desarrolladora y empresa cliente) PREGUNTAS:


Qu debe hacer el programa? Qu datos de entrada y de salida intervienen en el proceso? En qu mquina y sistema operativo se va a ejecutar? Quin ser el usuario de la aplicacin? Tratamiento de errores, seguridad de los datos, etc.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
84

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.2 ANLISIS (2/2)


PROBLEMA EJEMPLO: Suma de dos nmeros enteros
1) En primer lugar, el programa debe pedir por teclado dos nmeros (datos enteros). 2) A continuacin, calcular la suma de los dos nmeros introducidos por el usuario. 3) Finalmente, tiene que mostrar por pantalla el resultado obtenido (dato entero). En pantalla se mostrar:

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
85

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.3 DISEO (1/6)


Se tiene que encontrar una solucin informtica al problema planteado. Dicha solucin determinar cmo se va a resolver el problema. Uso del diseo modular o descendente (top-down).
Divide y vencers (subproblemas) Abstraccin Encapsulacin
10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
86

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.3 DISEO (2/6)


EJEMPLO DISEO MODULAR: Gestin de un videoclub

11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
87

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.3 DISEO (3/6)


Algoritmo:
Establece de manera genrica e informal, la secuencia de pasos o acciones que resuelve un determinado problema. Notacin:
Pseudocdigo Diagramas de flujo (ordinogramas)

Pseudocdigo:
Es un lenguaje de programacin algortmico. Es un lenguaje intermedio entre el lenguaje natural y cualquier lenguaje de programacin especfico, como son: C, FORTRAN, Pascal, etc.

Ordinograma:
Representa, de manera grfica, el orden de los pasos o acciones de un algoritmo.
12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
88

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.3 DISEO (4/6)


ALGORITMO EJEMPLO: Suma de dos nmeros enteros
(Pseudocdigo)

13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
89

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.3 DISEO (5/6)


ALGORITMO EJEMPLO: Suma de dos nmeros enteros
(Ordinograma)
INICIO

escribir( "Introduzca el primer nmero: " )

leer( a )

escribir( "Introduzca el segundo nmero: " )

leer( b )

a + b

escribir( "La suma es: ", c )

FIN

14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
90

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.3 DISEO (6/6)


Cualidades de un algoritmo: (solucin ms ptima)
Finitud Precisin Claridad Generalidad Eficiencia Sencillez Modularidad

15
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
91

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (1/9)


EJEMPLO (lenguaje C): Suma de dos nmeros enteros
Las acciones definidas en el algoritmo hay que convertirlas a instrucciones (sentencias).

16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
92

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (2/9)


Lenguaje de programacin:
Es un lenguaje artificial que permite escribir las instrucciones de un programa informtico. Permite al programador comunicarse con la computadora para decirle qu es lo que tiene que hacer. Tipos de lenguajes:
mquina de bajo nivel de alto nivel
17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
93

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (3/9)


Lenguaje mquina o binario:
Es el nico que entiende la computadora digital. Dos smbolos: el cero (0) y el uno (1). Inconveniente: No es portable.

Lenguajes de bajo nivel o ensambladores:


Ms entendibles para el programador. Abreviaturas del ingls (nemotcnicos): ADD, DIV, SUB, etc. Inconveniente: No es portable.
Computadora Instrucciones en un lenguaje ensamblador Instrucciones en un lenguaje mquina

Programa Ensamblador

18
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
94

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (4/9)


Lenguaje de alto nivel: Se utilizan palabras o expresiones
sintcticas muy similares al ingls (case, if, for, while,...).
EJEMPLO:
if ( numero > 0 ) printf( "El nmero es positivo" );

Si numero es mayor que cero, entonces, escribir por pantalla el mensaje: El nmero es positivo. Ventaja: S es portable.
Computadora Instrucciones en un lenguaje de alto nivel Instrucciones en un lenguaje mquina

Programa Compilador

19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
95

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (5/9)


Relacin entre las instrucciones de alto nivel, ensamblador y mquina:
Instruccin de alto nivel
Instruccin en ensamblador
Instruccin binaria
00011010 10010101 01101110 01010110

Instruccin en ensamblador

Instruccin binaria Instruccin binaria


11010000 10100011 01011110 00110010

Instruccin binaria
10100011 10001001 00101010 00000001

01101010 10101110 Instruccin 00010101 10101000 binaria 01100101 00101001 11101011 10101111

20
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
96

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (6/9)


Fases de la puesta a punto de un programa escrito en C: Edicin
Editor Cdigo fuente (.c)

Preproceso Preprocesador Cdigo fuente modificado

Compilacin Compilador Cdigo objeto (.obj)

Otros cdigos objeto

Enlace Enlazador Cdigo ejecutable (.exe)

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
97

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (7/9)


Intrprete: Se caracteriza por traducir y ejecutar, de una en
una, las instrucciones del cdigo fuente de un programa, pero, sin generar como salida cdigo objeto.
Proceso:
Lee la primera instruccin del cdigo fuente. La traduce a cdigo objeto y la ejecuta. A continuacin, hace lo mismo con la segunda instruccin. Y as sucesivamente, hasta llegar a la ltima instruccin del programa, siempre y cuando, no se produzca ningn error que detenga el proceso.

Tipos de errores:
de sintaxis de ejecucin de lgica
22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
98

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (8/9)


Errores de sintaxis: Se detectan en el proceso de traduccin
del cdigo fuente a cdigo binario. Impide, tanto al compilador como al intrprete, hacer la traduccin. EJEMPLO: prrintf( "Introduzca el primer numero (entero): " );

Error de ejecucin: El ordenador no puede ejecutar alguna


instruccin de forma correcta. EJEMPLO: c = 5 / 0; (no se puede dividir entre cero)

Error de lgica: Los resultados obtenidos no son los esperados.


EJEMPLO: c = a * b; en vez de c = a + b;
23
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
99

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.4 CODIFICACIN (9/9)


Entornos Integrados de Desarrollo (EID):
Son aplicaciones informticas que incluyen a todos los programas necesarios para realizar todas las fases de puesta a punto de un programa. En el caso de C se necesita:
Editor Preprocesador Compilador Enlazador

Suelen incluir otras herramientas software:


Depurador de cdigo Ayuda en lnea de uso del lenguaje
24
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
100

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.5 PRUEBAS
Pruebas:
Tratamiento de los datos. Adaptacin al resto sistema informtico. Interaccin con otras aplicaciones.

Hay que comprobar, exhaustivamente, la funcionalidad. Es imposible probarlo todo. Pueden darse situaciones inesperadas.
25
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
101

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

3.6 MANTENIMIENTO
Mantenimiento:
Reparacin de errores no detectados en las fases anteriores. Modificaciones para ampliar o cambiar alguna funcionalidad.

Documentacin:
Externa: ERS, algoritmos, cdigos fuentes, manuales de usuario,... Interna: Comentarios en el cdigo fuente.

26
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
102

Captulo 3. CICLO DE VIDA DE UN PROGRAMA

EJERCICIOS RECOMENDADOS
Resueltos: 1 y 2. Propuestos: 1, 2, 3 y 4.

27
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
103

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

28
104

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 4
INTRODUCCIN A LOS TIPOS DE DATOS

1
105

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

OBJETIVOS
Conocer los tipos de datos que pueden utilizar los programas. Saber identificar de qu tipo son los datos utilizados en un programa. Conocer las palabras reservadas que se utilizan en pseudocdigo para algunos tipos de datos.
Ya se ha estudiado que, en general, los programas obtienen unos datos de salida a partir de unos datos de entrada, pero, cules son los tipos de datos que pueden utilizar los programas?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
106

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

CONTENIDO
4.1 INTRODUCCIN 4.2 DATOS DE TIPO NUMRICO 4.3 DATOS DE TIPO LGICO 4.4 DATOS DE TIPO CARCTER 4.5 DATOS DE TIPO CADENA 4.6 CLASIFICACIN DE LOS TIPOS DE DATOS SIMPLES
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
107

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.1 INTRODUCCIN (1/2)


Todos los datos que utilizan los programas son simples o compuestos.

Dato simple: es indivisible (atmico), es decir, no se puede


descomponer.
EJEMPLOS:
Ao.....: 2006 Letra...: t Ficha:
Nombre...: Maite Ciudad...: Pamplona Fecha de nacimiento: Da...: 22 datos. Mes...: 4 Ao...: 1984

Dato compuesto: est formado por otros


EJEMPLOS:
Fecha:
Da...: 30 Mes...: 11 Ao...: 2006

Nombre de persona:
Nombre...: Ana (compuesto por tres caracteres)

Coordenadas de un punto en un plano:


x...: 34 y...: 21 4
108

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.1 INTRODUCCIN (2/2)


Datos estndares:
Simples: (primitivos, bsicos o fundamentales) Entero Real Lgico Carcter Compuestos: (estructurados) Cadena

5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
109

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.2 DATOS DE TIPO NUMRICO


Dato de tipo numrico: es aquel que puede tomar por valor
un nmero (entero o real).

Dato de tipo entero: es aquel que puede tomar por valor un


nmero perteneciente al conjunto de los nmeros enteros (Z).
EJEMPLOS:
Edad...: 29 Ao....: 1976

En pseudocdigo, utilizamos la palabra reservada: entero

Dato de tipo real: es aquel que puede tomar por valor un


nmero perteneciente al conjunto de los nmeros reales (R).
EJEMPLOS:
Peso.....: 75,3 Altura...: 172,7

En pseudocdigo, utilizamos la palabra reservada: real


Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

6
110

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.3 DATOS DE TIPO LGICO


Dato de tipo lgico (booleano): es aquel que puede tomar
por valor slo uno de los dos siguientes: { verdadero, falso }
Un dato de tipo lgico siempre est asociado a que algo se cumpla o no se cumpla. EJEMPLO: El estado de una barrera de paso de trenes (asociando verdadero a que est subida y falso a que est bajada).
Estado...: falso (indica que la barrera est bajada)

En pseudocdigo, utilizamos la palabra reservada: logico En C no existen datos de tipo lgico. No obstante, se pueden simular con datos de tipo entero, considerndose el valor cero (0) como falso, y cualquier otro valor entero como verdadero.
7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
111

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.4 DATOS DE TIPO CARCTER


Dato de tipo carcter: es aquel que puede tomar por valor
un carcter perteneciente al conjunto de los caracteres que puede representar el ordenador.
EJEMPLO: en un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carcter.
Respuesta correcta a la pregunta 3...: c

En pseudocdigo, utilizamos la palabra reservada: caracter

8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
112

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.5 DATOS DE TIPO CADENA


Dato de tipo cadena: es aquel que puede tomar por valor
una secuencia de caracteres. EJEMPLO: el ttulo de un libro y el nombre de su autor, son datos de tipo cadena.
Ttulo...: La Odisea (cadena de 9 caracteres) Autor....: Homero (cadena de 6 caracteres)

En pseudocdigo, utilizamos la palabra reservada: cadena

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
113

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

4.6 CLASIFICACIN DE LOS TIPOS DE DATOS SIMPLES

Todos los datos simples son ordinales, excepto el tipo de dato real.

Dato ordinal: es aquel que puede tomar por valor un elemento


perteneciente a un conjunto en el que todo elemento tiene un predecesor y un sucesor, excepto el primero y el ltimo.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
114

10

Captulo 4. INTRODUCCIN A LOS TIPOS DE DATOS

EJERCICIOS RECOMENDADOS
Resueltos: 1 y 2. Propuestos: 1 y 2.

11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
115

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

12
116

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 5
IDENTIFICADORES, VARIABLES Y CONSTANTES

1
117

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

OBJETIVOS
Saber qu es y para qu sirve un identificador. Saber qu son y para qu sirven las variables y las constantes.
En el captulo anterior se han estudiado algunos de los tipos de datos que pueden utilizar los programas, pero, dnde estn los datos que utiliza un programa?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
118

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

CONTENIDO
5.1 INTRODUCCIN 5.2 IDENTIFICADORES 5.3 VARIABLES 5.4 CONSTANTES

3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
119

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.1 INTRODUCCIN
Para disear algoritmos en pseudocdigo, se pueden utilizar los siguientes elementos: Tipos de datos Variables Constantes Operadores Expresiones Instrucciones

4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
120

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.2 IDENTIFICADORES (1/4)


Un identificador: es el nombre que se le da a un elemento
de un algoritmo o (programa).

Identificadores predefinidos:
EJEMPLO:
entero, real, logico, caracter, cadena, verdadero y falso forman parte del lenguaje algortmico (son palabras reservadas).

Identificadores definidos por el programador:


EJEMPLOS:
Variables, constantes,... Nombre de algoritmos.
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
121

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.2 IDENTIFICADORES (2/4)


Reglas de sintaxis de un identificador:
En nuestro pseudocdigo CEE (C En Espaol) vamos a usar las mismas reglas de sintaxis que existen en C. 1. Consta de uno o ms caracteres. 2. El primer carcter debe ser una letra o el carcter subrayado (_), mientras que, todos los dems pueden ser letras, dgitos o el carcter subrayado (_). Las letras pueden ser minsculas o maysculas del alfabeto ingls. As pues, no est permitido el uso de las letras y . 3. No pueden existir dos identificadores iguales, es decir, dos elementos de un algoritmo no pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda aparecer ms de una vez en un algoritmo. Las vocales no pueden llevar tilde ni diresis.
6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
122

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.2 IDENTIFICADORES (3/4)


EJEMPLOS: Identificadores vlidos definidos por el
programador son:
numero dia_del_mes PINGUINO1 _ciudad Z

EJEMPLOS: Identificadores no vlidos son:


123 _DA numero* lugar de nacimiento ao
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
123

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.2 IDENTIFICADORES (4/4)


EJEMPLOS: No pueden ser definidos por el programador:
entero logico Son identificadores predefinidos (ya existen).

EJEMPLOS: Identificadores vlidos y distintos son:


Mes Mes Los identificadores son sensibles a minsculas y maysculas.

Es aconsejable que los identificadores tengan un significado afn a lo que representan.


8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
124

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.3 VARIABLES (1/4)


Variable:
Representa a un espacio de memoria en el cual se puede almacenar un dato. El programador, cuando desarrolla un programa (o disea un algoritmo), debe decidir:
Cuantas son las variables que el programa necesita para realizar las tareas que se le han encomendado. El tipo de dato que puede tomar cada una de ellas.

Durante la ejecucin de un programa, el valor que tome el dato almacenado en una variable puede cambiar tantas veces como sea necesario. El tipo de dato de una variable no puede ser cambiado durante la ejecucin de un programa. Grficamente, se puede representar como:

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
125

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.3 VARIABLES (2/4)


Declaracin de variables: Para que un programa pueda
hacer uso de una o ms variables, stas deben ser declaradas previamente, indicando de cada una de ellas:
1. El tipo de dato que puede almacenar (mediante un identificador). 2. Su nombre (mediante otro identificador).

EJEMPLO: variable para almacenar la edad de una persona:


entero edad

10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
126

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.3 VARIABLES (3/4)


EJEMPLO: variables para almacenar la edad de una persona y su nmero de hijos: Las variables no tienen por qu
entero edad entero numero_de_hijos
estar contiguas en la memoria.

Puesto que las dos variables son del mismo tipo de dato, se pueden declarar en la misma lnea separndolas por medio de una coma (,). entero edad, numero_de_hijos
11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
127

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.3 VARIABLES (4/4)


EJEMPLO: Opcionalmente, cuando se declara una variable, a sta se le puede asignar un valor inicial.
entero numero = 35

Sintaxis para declarar una variable: Sintaxis para declarar ms de una variable:

<nombre_del_tipo_de_dato> <nombre_de_la_variable> [ = <expresin> ]

<nombre_del_tipo_de_dato> <nombre_de_la_variable_1> [ = <expresin_1> ], <nombre_de_la_variable_2> [ = <expresin_2> ], ..., <nombre_de_la_variable_n> [ = <expresin_n> ]


12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
128

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (1/8)


Constante:
Representa a un valor (dato almacenado en memoria) que no puede cambiar durante la ejecucin de un programa. En C, una constante puede ser de tipo entero, real, carcter, cadena o enumerado. Las constantes de tipo enumerado se van a estudiar en el captulo 6. En cuanto a las dems, se pueden expresar de dos formas diferentes:
1. Por su valor. 2. Con un nombre (identificador).

EJEMPLOS: constantes expresadas por su valor:


-5 10
13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
129

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (2/8)


Para expresar una constante con su nombre, la constante debe ser declarada previamente, indicando:
1. Su nombre (mediante un identificador) 2. El valor que simboliza (mediante una expresin)

En pseudocdigo, para declarar una constante, vamos a utilizar la sintaxis: <nombre_de_la_constante> = <expresin>

EJEMPLOS: constantes expresadas por su valor: TEMPERATURA = -5 MES = 10


Para declarar ms de una constante en una misma lnea, las separaremos por medio de comas (,).

TEMPERATURA = -5, MES = 10


14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
130

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (3/8)


Constante de tipo entero: Representa a un valor (dato)
perteneciente al subconjunto de Z representable por el ordenador. EJEMPLO: Suponiendo que con 16 bits, en Complemento a 2, el ordenador puede representar { -32768,..., -1, 0, 1,... ,32767 }
Correctos: dgitos del (0) al (9) y los caracteres (+) y (-) -32000 0 000077 (Los ceros a la izquierda no son significativos) +1111 Incorrectos: -32.000 (No se puede usar el carcter punto (.)) 0,0 (No se puede usar el carcter coma (,)) ++111 (No se puede duplicar el signo) 38000 (No pertenece al subconjunto de Z representable)
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
131

15

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (4/8)


Constante de tipo real: Representa a un valor (dato)
perteneciente al subconjunto de R representable por el ordenador. EJEMPLOS:
Correctos: dgitos del (0) al (9) y los caracteres (+), (-), (.), (e) y (E)
8.2 000.333 (Los ceros a la izquierda no son significativos) +1111.809 -3200. (Tambin se puede escribir -3200.0) .56 (Tambin se puede escribir 0.56) -77e-3 2000E+2 3040e2 -50.50e-4 400.e-3 .7e3
16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
132

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (5/8)


EJEMPLOS:
Incorrectos:
-200 (No aparece el punto ni el exponente) -20,0 (No puede aparecer la coma) --111. (No se puede duplicar el signo) -111.. (No se puede duplicar el punto) -111.11. (No puede aparecer ms de un punto) +22e (Despus del carcter (e) o (E) se debe escribir el exponente) +22ee6 (No se puede duplicar el carcter (e) o (E)) +22e 6 (No se puede escribir el carcter espacio en blanco) 380E-2.2 (El exponente debe ser una cantidad entera)

17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
133

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (6/8)


Constante de tipo lgico: Representa a un valor (dato)
perteneciente al conjunto: { verdadero, falso }
No suele ser habitual declarar constantes de este tipo de dato. En C no existe el tipo de dato lgico.

EJEMPLOS:
ESTADO = verdadero INTERRUPTOR = falso

18
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
134

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (7/8)


Constante de tipo carcter: Representa a un valor (dato)
perteneciente al conjunto de caracteres que puede representar el ordenador. EJEMPLOS: constantes de tipo carcter expresadas por su valor:
'a' 'T' '5' '+' '.'

EJEMPLOS: declaraciones:
LETRA = 's'
NUMERO = '9' SIGNO = '-' ESPACIO_EN_BLANCO = ' ' COMILLA_SIMPLE = '\''
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
135

19

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

5.4 CONSTANTES (8/8)


Constante de tipo cadena: Representa a un valor (dato) de
tipo cadena, es decir, representa a una secuencia de caracteres. EJEMPLOS: constantes de tipo cadena expresadas por su valor:
"Alejandro" "Lucerna" "Barcelona 2000"

EJEMPLOS: declaraciones:
NOMBRE = "Alejandro" CIUDAD = "Lucerna" OLIMPIADAS = "Barcelona 2000" FIESTA = "7 de julio \"San Fermn\""

20
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
136

Captulo 5. IDENTIFICADORES, VARIABLES Y CONSTANTES

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2 y 3. Propuestos: 1 y 2.

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
137

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

22
138

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 6
TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

1
139

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

OBJETIVOS
Conocer los tipos de datos que pueden ser definidos por el programador. Conocer la sintaxis para definir tipos de datos en pseudocdigo.
En un programa se pueden usar los distintos tipos de datos predefinidos por el lenguaje de programacin en el que est escrito. Adems, algunos lenguajes de programacin tambin permiten que el programador pueda definir sus propios tipos de datos, pero, para qu definir nuevos tipos de datos?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
140

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

CONTENIDO
6.1 INTRODUCCIN 6.2 DATOS DE TIPOS ENUMERADOS 6.3 DATOS DE TIPOS SUBRANGOS

3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
141

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.1 INTRODUCCIN
El programador tiene la posibilidad de definir (declarar) sus propios tipos de datos. Los tipos de datos simples que puede definir el programador son: Enumerados Subrangos

4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
142

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.2 DATOS DE TIPOS ENUMERADOS (1/4)


Un dato de tipo enumerado: es aquel que puede tomar
por valor uno de los pertenecientes a una lista ordenada de valores definida por el programador. EJEMPLO: La direccin en la que se mueve un coche: { norte, sur, este, oeste }

Declaracin de tipos enumerados: (Sintaxis)


enumerado <nombre_del_tipo> { <constante_1> [ = <valor_1> ], <constante_2> [ = <valor_2> ], ..., <constante_n> [ = <valor_n> ] }
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
143

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.2 DATOS DE TIPOS ENUMERADOS (2/4)


EJEMPLO:
enumerado direcciones { NORTE, SUR, ESTE, OESTE }

La lista de constantes est ordenada, y cada una de ellas representa a un valor entero empezando por el 0, e incrementndose de uno en uno. De manera que, las constantes declaradas representan a los valores enteros { 0, 1, 2, 3 }. EJEMPLO:
enumerado direcciones { NORTE = -2, SUR, ESTE, OESTE }

En este caso, las constantes declaradas representan a los valores enteros { -2, -1, 0, 1 }.
6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
144

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.2 DATOS DE TIPOS ENUMERADOS (3/4)


Variable de un tipo enumerado: representa a un espacio de
memoria en donde se puede almacenar un dato de tipo enumerado. EJEMPLO:
enumerado direcciones { NORTE, SUR, ESTE, OESTE } direcciones direccion_de_un_coche

Las declaraciones se pueden combinar de la forma siguiente:


enumerado direcciones { NORTE, SUR, ESTE, OESTE } direccion_de_un_coche

Tambin se puede prescindir del nombre del tipo de dato enumerado:

enumerado { NORTE, SUR, ESTE, OESTE } direccion_de_un_coche


7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
145

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.2 DATOS DE TIPOS ENUMERADOS (4/4)


EJEMPLO: Varias variables del mismo tipo de dato enumerado se pueden declarar de diferentes formas.
enumerado direcciones { NORTE, SUR, ESTE, OESTE } direcciones direccion_de_un_coche direcciones direccion_de_un_avion = SUR direcciones direccion_de_un_camion enumerado direcciones { NORTE, SUR, ESTE, OESTE } direcciones direccion_de_un_coche, direccion_de_un_avion = SUR, direccion_de_un_camion, enumerado direcciones { NORTE, SUR, ESTE, OESTE } direccion_de_un_coche, direccion_de_un_avion = SUR, direccion_de_un_camion
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
146

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.3 DATOS DE TIPOS SUBRANGOS (1/4)


Un dato de tipo subrango: es aquel que puede tomar
por valor uno de los pertenecientes a un subrango definido por el programador. (En lenguaje C no existen).

Un subrango: es un subconjunto de valores de un rango.


EJEMPLO: Suponiendo que el ordenador (utilizando diecisis bits) puede representar el siguiente conjunto de valores: { -32768, -32767, ..., -1, 0, 1, ..., 32766, 32767 } Posibles subrangos son: { 1, 2, 3, 4, 5, 6 } { -3, -2, -1, ..., 5, 6, 7 } No son subrangos: { 0, 1, 2, ..., 34998, 34999, 35000 } { -50000, -49999, -49998, ..., 49998, 49999, 50000 } { 2, 4, 6, 8, 10}
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
147

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.3 DATOS DE TIPOS SUBRANGOS (2/4)


Declaracin de tipos subrangos: (Sintaxis)
<nombre_del_tipo> = <valor_mnimo>..<valor_mximo>

O tambin:
subrango <nombre_del_tipo> = <valor_mnimo>..<valor_mximo>

EJEMPLO: Suponiendo que la calificacin de una asignatura sea dada con un valor perteneciente al subrango { 0, 1, 2, ..., 8, 9, 10 } del rango { -32768, ..., 0, ..., 32767 }:
subrango calificaciones = 0..10
10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
148

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.3 DATOS DE TIPOS SUBRANGOS (3/4)


Variable de un tipo subrango: representa a un espacio en
donde se puede almacenar un dato de un tipo subrango. EJEMPLO:
subrango calificaciones = 0..10 calificaciones matematicas

Las declaraciones se pueden combinar de la forma siguiente:


subrango calificaciones = 0..10 matematicas

Tambin se puede prescindir del nombre del tipo de dato subrango:


subrango 0..10 matematicas

11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
149

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

6.3 DATOS DE TIPOS SUBRANGOS (4/4)


EJEMPLO: Varias variables del mismo tipo de dato subrango se pueden declarar de diferentes formas.
subrango calificaciones = 0..10 calificaciones matematicas calificaciones fisica calificaciones quimica subrango calificaciones = 0..10 calificaciones matematicas, fisica, quimica subrango calificaciones = 0..10 matematicas, fisica, quimica
12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
150

Captulo 6. TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR

EJERCICIOS RECOMENDADOS
Resueltos: 1 y 2. Propuestos: 1 y 2.

13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
151

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

14
152

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 7
OPERADORES Y EXPRESIONES

1
153

Captulo 7. OPERADORES Y EXPRESIONES

OBJETIVOS
Conocer los tipos de operadores y expresiones que existen en programacin. Saber evaluar las expresiones que aparecen en un programa.
En programacin, los operadores realizan operaciones sobre los datos que utiliza un programa. Por su parte, las operaciones que se pueden realizar sobre cada dato, dependen del tipo de dato en cuestin, pero, qu es una operacin? y qu tipos de operaciones existen?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
154

Captulo 7. OPERADORES Y EXPRESIONES

CONTENIDO
7.1 INTRODUCCIN 7.2 EXPRESIONES ARITMTICAS 7.3 EXPRESIONES LGICAS 7.4 EXPRESIONES DE CARCTER 7.5 EXPRESIONES DE CADENA 7.6 PRIORIDAD DE LOS OPERADORES ARITMTICOS, RELACIONALES, LGICOS Y DE CADENA
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
155

Captulo 7. OPERADORES Y EXPRESIONES

7.1 INTRODUCCIN (1/4)


El tipo de un dato determina las operaciones que se pueden realizar con l. Por ejemplo, con los datos de tipo entero se pueden realizar operaciones aritmticas (suma, resta, multiplicacin,...). 111 + 6 (operacin suma) (dos operandos y un operador) 19 - 72 (operacin resta) (dos operandos y un operador) 24 * 3 (operacin multiplicacin) (dos operandos y un operador) 111 + 6 - 8 (tres operandos y dos operadores) -( ( +19 ) + 72 ) (dos operandos y tres operadores) -( -72 ) (un operando y dos operadores) ( 3 * 7 ) + ( 2 1 ) (cuatro operandos y tres operadores)
4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
156

Captulo 7. OPERADORES Y EXPRESIONES

7.1 INTRODUCCIN (2/4)


Un operador: indica el tipo de operacin a realizar sobre los
operandos (datos) que acta. Los operandos pueden ser:
Constantes (expresadas por su valor o con su nombre). Variables. Llamadas a funciones. Elementos de formaciones (arrays).

Cuando se combinan uno o ms operadores con uno o ms operandos se obtiene una expresin. operadores escrita bajo unas reglas de sintaxis.
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
157

Una expresin: es una secuencia de operandos y

Captulo 7. OPERADORES Y EXPRESIONES

7.1 INTRODUCCIN (3/4)


EJEMPLO: Dadas las siguientes declaraciones de constantes y
variables en pseudocdigo.
PI = 3.141592 entero numero = 2 real radio_circulo = 3.2

Algunos ejemplos de expresiones son:


2 * PI * radio_circulo ( PI * PI ) numero * 5

Un operador siempre forma parte de una expresin, en la cual, el operador siempre acta sobre al menos un operando. Por el contrario, un operando s puede aparecer solo en una expresin. 6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
158

Captulo 7. OPERADORES Y EXPRESIONES

7.1 INTRODUCCIN (4/4)


De la evaluacin de una expresin siempre se obtiene un valor. Dicho valor puede ser de tipo: entero, real, lgico, carcter o cadena. Por consiguiente, una expresin puede ser:
Aritmtica (devuelve un nmero entero o real). Lgica (devuelve un valor lgico: verdadero o falso). De carcter (devuelve un carcter representable por el ordenador). De cadena (devuelve una cadena).

Dependiendo del tipo de expresin, pueden participar unos operadores u otros.


7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
159

Captulo 7. OPERADORES Y EXPRESIONES

7.2 EXPRESIONES ARITMTICAS (1/3)


En las expresiones aritmticas se pueden utilizar los siguientes operadores aritmticos:

8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
160

Captulo 7. OPERADORES Y EXPRESIONES

7.2 EXPRESIONES ARITMTICAS (2/3)


Prioridad de los operadores aritmticos:

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
161

Captulo 7. OPERADORES Y EXPRESIONES

7.2 EXPRESIONES ARITMTICAS (3/3)


EJEMPLOS: De las siguientes expresiones:
-3 * 3 ** -3 * 3 ** 6 3 ( ( mod 4 - 1 6 mod 4 ) 3 - 1 )

Se obtienen los valores: -2 26 -6 9 (actan en orden los operadores: signo menos (-), (*) y (mod)) (actan en orden los operadores: (**) y resta (-)) (actan en orden los operadores: (mod), signo menos (-) y (*)) (actan en orden los operadores: resta (-) y (**))
10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
162

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (1/9)


De la evaluacin de una expresin lgica siempre se obtiene un valor de tipo lgico (verdadero o falso). En las expresiones lgicas se pueden utilizar dos tipos de operadores:
Relacionales Lgicos

11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
163

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (2/9)


Operadores relacionales:

Para escribir una expresin relacional (lgica) se utiliza la sintaxis: <operador_de_relacin> <expresin_2>
12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
164

<expresin_1>

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (3/9)


EJEMPLOS: De las siguientes expresiones:
22 > 13 (comparacin de dos expresiones aritmticas) 22.5 < 3.44 (comparacin de dos expresiones aritmticas) verdadero = falso (comparacin de dos expresiones lgicas) 'c' > 'f' (comparacin de dos expresiones de carcter) "coche" = "Coche" (comparacin de dos expresiones de cadena)

Se obtienen los valores:


verdadero (22 es mayor que 13) falso (22.5 no es menor que 3.44) falso (verdadero no es igual que falso) falso ('c' no es mayor que 'f') falso ("coche" no es igual que "Coche")
13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
165

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (4/9)


Operadores lgicos:

El operador conjuncin (y) y el operador disyuncin (o) siempre actan sobre dos operandos, mientras que, el operador negacin (no) slo acta sobre un operando, o dicho de otra forma, es un operador monario.
14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
166

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (5/9)


Tabla de verdad del operador (y):

EJEMPLO: De evaluar: 9 > 3 y 8 > 9 se obtiene: falso (9 > 3 es verdadero y 8 > 9 es falso)
15
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
167

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (6/9)


Tabla de verdad del operador (o):

EJEMPLO: De evaluar: 9 > 3 y 8 > 9 se obtiene: verdadero (9 > 3 es verdadero y 8 > 9 es falso)
16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
168

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (7/9)


Tabla de verdad del operador negacin (no):

EJEMPLO: De evaluar: no ( 9 > 3 ) se obtiene: falso (9 > 3 es verdadero)


17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
169

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (8/9)


Prioridad de los operadores relacionales y lgicos:

18
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
170

Captulo 7. OPERADORES Y EXPRESIONES

7.3 EXPRESIONES LGICAS (9/9)


EJEMPLOS: De las siguientes expresiones:
3 > 1 o ( 3 > 1 falso = ( falso 4 < 1 y 4 <= 2 o 4 < 1 ) y 4 <= 2 verdadero <= verdadero = verdadero ) <= verdadero

Se obtienen los valores:


verdadero (actan en orden los operadores: (>), (<), (<=), (y) y (o)) falso (actan en orden los operadores: (>), (<), (o), (<=) e (y)) falso (actan en orden los operadores: (<=) y (=)) verdadero (actan en orden los operadores: (=) y (<=))
19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
171

Captulo 7. OPERADORES Y EXPRESIONES

7.4 EXPRESIONES DE CARCTER


Aunque no existe ningn operador de caracteres, s que existen expresiones de carcter. De la evaluacin de una expresin obtiene un valor de tipo carcter. variables en pseudocdigo.
CONSONANTE = 'S' caracter letra = 'X' caracter opcion = '3'

de carcter siempre se

EJEMPLO: Dadas las siguientes declaraciones de constantes y

Algunas expresiones de carcter son:


opcion letra CONSONANTE 'a' 20
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
172

Captulo 7. OPERADORES Y EXPRESIONES

7.5 EXPRESIONES DE CADENA


Slo existe un operador de cadena:

EJEMPLO: Dadas las siguientes declaraciones de constantes y


variables en pseudocdigo.
OLIMPIADA = "Atenas 2004" cadena nombre = "Pedro", apellido = "Cosn"

Algunas expresiones de cadena son:


OLIMPIADA nombre + " " + apellido nombre + " fue a las Olimpiadas de " + OLIMPIADA
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
173

21

Captulo 7. OPERADORES Y EXPRESIONES

7.6 PRIORIDAD DE LOS OPERADORES ARITMTICOS, RELACIONALES, LGICOS Y DE CADENA (1/2)

22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
174

Captulo 7. OPERADORES Y EXPRESIONES

7.6 PRIORIDAD DE LOS OPERADORES ARITMTICOS, RELACIONALES, LGICOS Y DE CADENA (2/2) EJEMPLOS: De las siguientes expresiones:
5 * 4 > 5 + 4 o falso y "ab" < "aa" ( 5 * 4 > 5 + 4 o falso ) y 'f' < 'b' no verdadero < falso no ( verdadero < falso ) Se obtienen los valores:
verdadero (actan en orden los operadores: (*), suma (+), (>), (<), (y) y (o)) falso (actan en orden los operadores: (*), suma (+), (>), (o), (<) e (y)) falso (actan en orden los operadores: (no) y (<)) verdadero (actan en orden los operadores: (<) y (no))
23
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
175

Captulo 7. OPERADORES Y EXPRESIONES

EJERCICIOS RECOMENDADOS
Resueltos: 1 y 2. Propuestos: 1 y 2.

24
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
176

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

25
177

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 8
ASIGNACIN, SALIDA Y ENTRADA

1
178

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

OBJETIVOS
Conocer las instrucciones primitivas, y saber hacer uso de ellas. Saber utilizar los elementos ya estudiados para escribir instrucciones primitivas.
De los elementos que se utilizan para disear algoritmos, slo quedan por estudiar las instrucciones. En este captulo se van a estudiar las tres instrucciones ms elementales que existen en programacin, conocidas como instrucciones primitivas (asignacin, salida y entrada). Las instrucciones primitivas son las primeras que todo programador debe conocer, pero, de qu manera estn relacionadas con los elementos ya estudiados?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
179

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

CONTENIDO
8.1 INTRODUCCIN 8.2 ASIGNACIN 8.3 SALIDA 8.4 ENTRADA

3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
180

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.1 INTRODUCCIN
En programacin, las instrucciones que se utilizan para disear algoritmos se pueden clasificar en:
Primitivas. De control. Llamadas a subalgoritmos (llamadas a subprogramas).

En este captulo se van a explicar las instrucciones primitivas (existen tres):


Asignacin. Salida. Entrada.
4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
181

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.2 ASIGNACIN
Una instruccin de asignacin (o simplemente asignacin) consiste en asignar el resultado de la evaluacin de una expresin a una variable: <nombre_de_la_variable> <expresin>

EJEMPLO: Dadas las siguientes declaraciones de constantes y


variables en pseudocdigo.
PI = 3.141592 real area, longitud, radio = 5.78

Algunas instrucciones de asignacin son:


area PI * radio ** 2 longitud 2 * PI * radio
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
182

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.3 SALIDA (1/2)


Una instruccin de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluacin de una lista de expresiones:
escribir( <expresin_1>, <expresin_2>, ..., <expresin_n> )

Tambin se puede escribir como:


escribir( <lista_de_expresiones> )

6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
183

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.3 SALIDA (2/2)


EJEMPLO: Partiendo de las variables:
cadena nombre = "Timoteo" entero edad = 27, hijos = 2

al escribir
escribir( nombre, " tiene ", edad, " aos." ) escribir( nombre, " tiene ", hijos, " hijos." )

por pantalla aparecer:

7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
184

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.4 ENTRADA (1/3)


Una instruccin de entrada (o simplemente entrada) consiste en asignar a una o ms variables, uno o ms valores (datos) recibidos desde el exterior:
leer( <nombre_de_la_variable_1>, <nombre_de_la_variable_2>, ..., <nombre_de_la_variable_n> )

Tambin se puede escribir como:


leer( <lista_de_variables> )
8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
185

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.4 ENTRADA (2/3)


EJEMPLO: Partiendo de las variables:
cadena nombre, apellidos entero edad

para cada una de ellas se puede recoger un valor (dato) desde el teclado, escribiendo:
leer( nombre ) leer( apellidos ) leer( edad )

Otra posibilidad es:


leer( nombre, apellidos, edad )
9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
186

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

8.4 ENTRADA (3/3)


EJEMPLO: Si se han declarado:
cadena nombre real numero

al escribir:
escribir( "Introduzca su nombre: " ) leer( nombre ) escribir( "Introduzca un nmero real: " ) leer( numero ) escribir( nombre, ", el doble de ", numero, " es: ", numero * 2 )

por pantalla se ver algo parecido a:

10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
187

Captulo 8. ASIGNACIN, SALIDA Y ENTRADA

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2 y 3. Propuestos: 1, 2, 3 y 4.

11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
188

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

12
189

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 9
ESTRUCTURA DE UN ALGORITMO

1
190

Captulo 9. ESTRUCTURA DE UN ALGORITMO

OBJETIVOS
Conocer la estructura de un algoritmo. Saber organizar los elementos de un algoritmo.
Aunque todava no se han estudiado todos los tipos de instrucciones que existen en programacin, ya se conocen todos los elementos que se pueden utilizar parar disear algoritmos, pero, de qu manera se organizan dichos elementos en un algoritmo?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
191

Captulo 9. ESTRUCTURA DE UN ALGORITMO

CONTENIDO
9.1 INTRODUCCIN 9.2 CABECERA 9.3 DECLARACIONES 9.4 CUERPO 9.5 COMENTARIOS
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
192

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.1 INTRODUCCIN
La estructura de un algoritmo sirve para organizar a los elementos que aparecen en l. En pseudocdigo, todos los algoritmos tienen la misma estructura, la cual viene definida por tres secciones:
Cabecera. Declaraciones. Cuerpo.

4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
193

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.2 CABECERA
En la cabecera de un algoritmo se debe indicar el nombre (identificador) asignado al mismo. La sintaxis es: algoritmo <nombre_del_algoritmo>

EJEMPLO: Si se quiere disear el algoritmo de un programa que:


1) Pida por teclado el radio (dato real) de una circunferencia. 2) Calcule el rea de la circunferencia. 3) Muestre por pantalla el resultado (dato real). Nota: rea de una circunferencia = * radio2

El algoritmo puede llamarse Area_de_una_circunferencia, por tanto, en la cabecera se puede escribir: algoritmo Area_de_una_circunferencia
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
194

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.3 DECLARACIONES
En esta seccin se declaran las constantes, los tipos de datos y las variables que se usan en el algoritmo. La sintaxis es:
[ constantes <declaraciones_de_constantes> ] [ tipos_de_datos <declaraciones_de_tipos_de_datos> ] [ variables <declaraciones_de_variables> ]

Para resolver el problema planteado en el apartado anterior, es necesario declarar una constante y dos variables:
constantes PI = 3.141592 variables real area, radio
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
195

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.4 CUERPO (1/4)


En el cuerpo se escriben todas las instrucciones del algoritmo. La sintaxis es:
inicio <instruccin_1> <instruccin_2> ... <instruccin_n> fin

inicio y fin son palabras reservadas que marcan el principio y final de la seccin cuerpo, que es donde est el bloque de instrucciones principal del algoritmo.
7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
196

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.4 CUERPO (2/4)


EJEMPLO: El cuerpo del algoritmo
Area_de_una_circunferencia es:
inicio escribir( "Introduzca radio: " ) leer( radio ) area PI * radio ** 2 escribir( "El rea de la circunferencia es: ", area ) fin

Por pantalla se ver algo parecido a:

8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
197

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.4 CUERPO (3/4)


As, el algoritmo completo es:
algoritmo Area_de_una_circunferencia constantes PI = 3.141592 variables real area, radio inicio escribir( "Introduzca radio: " ) leer( radio ) area PI * radio ** 2 escribir( "El rea de la circunferencia es: ", area ) fin
9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
198

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.4 CUERPO (4/4)


La sintaxis completa para escribir un algoritmo en pseudocdigo es:
algoritmo <nombre_del_algoritmo> [ constantes <declaraciones_de_constantes> ] [ tipos_de_datos <declaraciones_de_tipos_de_datos> ] [ variables <declaraciones_de_variables> ] inicio <bloque_de_instrucciones> fin
10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
199

Captulo 9. ESTRUCTURA DE UN ALGORITMO

9.5 COMENTARIOS
En los algoritmos es conveniente escribir comentarios para explicar el diseo y/o funcionamiento del mismo:
/* Cabecera */ algoritmo Area_de_una_circunferencia /* Declaraciones */ constantes PI = 3.141592 variables real area, radio /* Cuerpo */ inicio escribir( "Introduzca radio: " ) leer( radio ) area PI * radio ** 2 escribir( "El rea de la circunferencia es: ", area ) fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
200

11

Captulo 9. ESTRUCTURA DE UN ALGORITMO

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2, 3, 4, 5 y 6. Propuestos: 1, 2, 3, 4, 5, 6, 7 y 8.

12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
201

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

13
202

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 10
INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

1
203

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

OBJETIVOS
Aprender a representar algoritmos mediante diagramas de flujo. Conocer las diferencias existentes entre un algoritmo escrito en pseudocdigo o representado mediante un diagrama de flujo.
Ya sabemos disear algoritmos sencillos utilizando pseudocdigo, pero, cmo se pueden representar esos mismos algoritmos utilizando diagramas de flujo?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
204

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

CONTENIDO
10.1 INTRODUCCIN 10.2 ASIGNACIN 10.3 ENTRADA Y SALIDA 10.4 INICIO Y FIN 10.5 DECISIONES
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
205

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

10.1 INTRODUCCIN

4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
206

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

10.2 ASIGNACIN

EJEMPLOS:

5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
207

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

10.3 ENTRADA Y SALIDA

EJEMPLOS:

6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
208

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

10.4 INICIO Y FIN

7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
209

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

10.5 DECISIONES
Las decisiones siempre forman parte de las instrucciones de control, las cuales sirven para determinar el orden en el que se tienen que ejecutar las instrucciones de un programa. EJEMPLO:

8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
210

Captulo 10. INTRODUCCIN A LOS DIAGRAMAS DE FLUJO

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2, 3, 4, 5 y 6. Propuestos: 1, 2, 3, 4, 5, 6, 7 y 8.

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
211

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

10
212

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 11
INTRODUCCIN A LA CODIFICACIN EN C

1
213

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

OBJETIVOS
Aprender a codificar en C los algoritmos diseados hasta el momento. Conocer algunas diferencias existentes entre C y nuestro pseudocdigo CEE.
Ya sabemos disear algoritmos sencillos utilizando instrucciones primitivas, pero, cmo se codifican en lenguaje C?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
214

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

CONTENIDO
11.1 INTRODUCCIN 11.2 FASES DE LA PUESTA A PUNTO DE UN PROGRAMA 11.3 ESTRUCTURA DE UN PROGRAMA 11.4 TIPOS DE DATOS 11.5 VARIABLES 11.6 CONSTANTES 11.7 OPERADORES 11.8 ENTRADA Y SALIDA ESTNDAR 11.9 COMENTARIOS 11.10 LA FUNCIN fflush 11.11 TIPOS DE ERRORES
3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
215

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.1 INTRODUCCIN (1/2)


Cada lenguaje difiere de los dems en detalles que pueden ser ms o menos grandes, siendo todos ellos muy importantes. En C no existen instrucciones primitivas tal cual las hemos estudiado. Para C, la asignacin es considerada como una operacin ms, como lo es una suma o una resta, pero no como una "instruccin primitiva". Las instrucciones de entrada y salida no existen en C, es decir, no existen palabras reservadas que realicen estas tareas. Para ello, se utilizan funciones de la biblioteca estndar de C.
4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
216

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.1 INTRODUCCIN (2/2)


Una funcin es un programa que puede ser invocado (llamado) desde otro programa. Cuando desde un programa se llama a otro, a ste ltimo se le denomina subprograma. Las funciones de la biblioteca estndar de C son un conjunto de funciones (subprogramas) que acompaan a todos los compiladores de C, y sirven para realizar un gran nmero de tareas. (printf, scanf,...) Para poder escribir programas en C, es imprescindible ser conocedor de sus reglas de sintaxis y de las funciones de su biblioteca estndar.

5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
217

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.2 FASES DE LA PUESTA A PUNTO DE UN PROGRAMA

6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
218

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.3 ESTRUCTURA DE UN PROGRAMA (1/2)


Sintaxis bsica de un programa escrito en C:
[ <directivas_del_preprocesador> ] int main() { <bloque_de_instrucciones> }

TIPOS DE INSTRUCCIONES:
De expresin De control Compuestas
7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
219

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.3 ESTRUCTURA DE UN PROGRAMA (2/2)


Mi primer programa en C:
#include <stdio.h> int main() { printf( "Hola mundo" ); return 0; }

Por pantalla:

8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
220

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.4 TIPOS DE DATOS


En C se dice que todos los datos que utilizan los programas son bsicos (simples predefinidos o estndares) o derivados. Los tipos de datos bsicos en C se clasifican en:

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
221

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.5 VARIABLES (1/2)


Sintaxis para declarar una variable: Sintaxis para declarar ms de una variable:
<nombre_del_tipo_de_dato> <nombre_de_la_variable> [ = <expresin> ];

<nombre_del_tipo_de_dato> <nombre_de_la_variable_1> [ = <expresin_1> ], <nombre_de_la_variable_2> [ = <expresin_2> ], ..., <nombre_de_la_variable_n> [ = <expresin_n> ];

EJEMPLOS:
int edad; int numero_de_hijos; int edad, numero_de_hijos; int numero = 35;
10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
222

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.5 VARIABLES (2/2)


EJEMPLOS:
char letra = 'Z'; char nombre[7] = "Isabel";

Los caracteres del array pueden ser referenciados mediante el identificador del mismo, seguido de un nmero entre corchetes. A dicho nmero, de manera formal, se le llama "ndice", y puede oscilar entre el valor 0 y n-1, siendo n el nmero de caracteres que pueden ser almacenados en memoria en el array, en este caso 7. Por ejemplo, nombre[3] hace referencia al espacio de memoria donde est el carcter 'b'. 11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
223

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.6 CONSTANTES
Sintaxis para declarar una constante simblica:
#define <nombre_de_la_constante> <secuencia_de_caracteres>

EJEMPLOS:
#define PI 3.141592 #define NUMERO_E 2.718281 const int temperatura = -5;

12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
224

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

EJERCICIOS RECOMENDADOS
Resueltos: 1 y 2. Propuestos: 1 y 2.

13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
225

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (1/16)


Operadores aritmticos:

14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
226

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (2/16)


El operador divisin (/): Si ambos operandos son enteros, el
resultado de evaluar la expresin ser entero, en caso contrario, es decir, si al menos un operando es real, el resultado ser real. EJEMPLO: Declaradas las variables:
int h = 3, v = 6; De las expresiones: se obtienen los valores: v / h 2 (valor entero, ambos operandos son enteros) 5 / h 1 (valor entero, ambos operandos son enteros) 5.0 / 2 2.5 (valor real, el primer operando es real) 5 / 2. 2.5 (valor real, el segundo operando es real) 5.4 / 2.0 2.7 (valor real, ambos operandos son reales)
15
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
227

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (3/16)


Cuando los dos operandos de una divisin (/) son enteros, pero aun as, de su evaluacin se quiere obtener un valor real, hay que hacer un casting (o conversin de tipo). Un casting sirve para cambiar el tipo de dato del valor resultante de una expresin. Su sintaxis es:

( <tipo_de_dato> ) <expresin>
EJEMPLO: Declaradas la variables:
int h = 3, v = 6;

De las expresiones:
( ( ( ( 5 float ) v float ) v float ) 5 int ) 5.0 / ( int ) / h / h / 2 2.

se obtienen los valores:


6.000000 (valor real) 2.000000 (actan en orden los operadores: "( 1.666667 (actan en orden los operadores: "( 2 (actan en orden los operadores: "( <tipo> 2 (actan en orden los operadores: "( <tipo>
<tipo> )" y (/)) <tipo> )" y (/)) )" y (/)) )" y (/))
16
228

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (4/16)


Sintaxis de llamada a la funcin pow:
pow( <operando_nmero_base>, <operando_exponente> )

La funcin pow devuelve, sobre el propio identificador de la funcin, el resultado que se obtiene de elevar el <operando_nmero_base> al <operando_exponente>. El valor de retorno de la funcin es de tipo double, con independencia de que los operandos sean reales o enteros. EJEMPLO: Declarada la variable: int numero = 9; De la expresin:

1 + pow( numero, 2 )
Se obtiene el valor:
82.000000 (se obtiene de 1 + 81.000000)
La declaracin de la funcin pow se encuentra en el archivo de cabecera math.h.
17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
229

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (5/16)


Operadores relacionales:

18
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
230

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (6/16)


EJEMPLO: A partir de las variables: int p = 45, q = 186; podemos escribir la expresin:
p != q

De su evaluacin se obtiene:
1 (C simula el valor lgico verdadero con el valor entero 1)

En C, los datos de tipo lgico se simulan con datos de tipo entero, considerndose el valor 0 como falso, y cualquier otro valor entero como verdadero.

19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
231

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (7/16)


Operadores lgicos:

20
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
232

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (8/16)


EJEMPLO: Habiendo declarado las variables: int r = 2, s = 9, t = 8; se puede escribir:
!( r == s || r <= t )

La expresin se evala a:
0 (C simula el valor lgico falso con el valor entero 0)

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
233

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (9/16)


Sintaxis de llamada a la funcin strcat:
strcat( <cadena_destino>, <cadena_fuente> )

En C, no existe el operador concatenacin (+). Sin embargo, para concatenar cadenas, se puede utilizar la funcin strcat, que est disponible en la biblioteca estndar de C. La funcin strcat aade el contenido de la <cadena_fuente> a la <cadena_destino>. EJEMPLO: Dadas las siguientes declaraciones de arrays de caracteres: char nombre[8] = "Ana", apellido[4] = "Luz"; es posible escribir:

strcat( nombre, apellido )


22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
234

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (10/16)


Observe el efecto que tiene, en la memoria de la computadora, la ejecucin de la funcin strcat.

strcat( nombre, apellido )

El contenido del array apellido se concatena (aade) al array nombre.


La declaracin de la funcin strcat se encuentra en el archivo de cabecera string.h.
23

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C


235

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (11/16)


Operadores de asignacin:

24
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
236

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (12/16)


EJEMPLOS:
radio = 5.78; area = PI * pow( radio, 2 ); longitud = 2 * PI * radio; f = g = 6; m += 3;
es equivalente a

m = m + 3;

25
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
237

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (13/16)


Sintaxis de llamada a la funcin strcpy:
strcpy( <variable_destino>, <cadena_fuente> )

En C, para asignar una expresin de cadena a un array de caracteres, no se puede utilizar el operador de asignacin (=). Para ello, se puede utilizar la funcin strcpy, que est disponible en la biblioteca estndar de C. La funcin strcpy copia el contenido de la <cadena_fuente> en la <variable_destino>, siendo sta un array de caracteres. EJEMPLO: Habiendo declarado: char ciudad[6]; es posible escribir:

strcpy( ciudad, "Roma" );


La declaracin de la funcin strcpy se encuentra en el archivo de cabecera string.h.
26
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
238

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (14/16)


Los operadores incremento (++) y decremento (--):
EJEMPLO: Declaradas las variables:
int r = 8, s = 3;

se pueden escribir las instrucciones de expresin:


r++; s--; Tras su ejecucin, el aspecto de la memoria ser:

27
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
239

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (15/16)


EJEMPLO: Declaradas la variables:
int i = 5, j, k = 5, m;

Si se ejecutan las instrucciones:


j = i++; m = ++k; Los valores de las variables en memoria sern:

28
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
240

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.7 OPERADORES (16/16)

29
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
241

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

EJERCICIOS RECOMENDADOS
Resueltos: 3 y 4. Propuestos: 3 y 4.

30
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
242

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (1/8)


Sintaxis de llamada a la funcin printf:
printf( <cadena_de_control> [, <lista_de_argumentos> ] )

En la <cadena_de_control>, el programador debe indicar el formato de salida de los datos que se van a mostrar por pantalla. Para ello, se puede hacer uso de:
Texto ordinario (texto normal). Especificadores de formato. Secuencias de escape.

El texto ordinario es texto normal y corriente, a diferencia de los especificadores de formato y de las secuencias de escape, que se les considera texto especial.
31
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
243

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (2/8)


En la funcin printf, los especificadores de formato establecen el formato de salida por pantalla de los argumentos.

32
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
244

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (3/8)


EJEMPLO:
#include <stdio.h> int main() { char nombre[6] = "Timoteo"; int hermanos = 2, sobrinos = 4; printf( "%s tiene %d hermanos y %d sobrinos.", nombre, hermanos, sobrinos ); return 0; }

33
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
245

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (4/8)


Una secuencia de escape siempre representa a un carcter del ASCII.

34
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
246

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (5/8)


EJEMPLO: Al escribir:
printf( "\n\t\t7 de julio \"San Fermin\"" );
en la segunda lnea de la pantalla se mostrar, a partir de la tercera posicin del tabulador horizontal (columna 17), el mensaje: "7 de julio "San Fermin""

35
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
247

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (6/8)


Sintaxis de llamada a la funcin scanf:
scanf( <cadena_de_control>, <lista_de_argumentos> )

En la <cadena_de_control>, el programador debe indicar el formato de entrada de los datos que se van a recoger por teclado. Para ello, se puede hacer uso de: Especificadores de formato. Otros caracteres.

36
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
248

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (7/8)


En la funcin scanf, los especificadores de formato establecen el formato de entrada por teclado de los argumentos.

37
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
249

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.8 ENTRADA Y SALIDA ESTNDAR (8/8)


EJEMPLO:
#include <math.h> #include <stdio.h> #define PI 3.141592 int main() { float area, radio; printf( "\n Introduzca radio: " ); scanf( "%f", &radio ); area = PI * pow( radio, 2 ); printf( "\n El area de la circunferencia es: %f", area ); return 0; }
38
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
250

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.9 COMENTARIOS
EJEMPLO:
/***************************************************/ /* Programa: Area_de_una_circunferencia */ /***************************************************/ #include <math.h> #include <stdio.h> #define PI 3.141592 /* Definicin de una constante */ int main() { float area, radio; printf( "\n Introduzca radio: " ); scanf( "%f", &radio ); /* Clculo del rea de la circunferencia */ area = PI * pow( radio, 2 ); /* Salida por pantalla del resultado */ printf( "\n El area de la circunferencia es: %f", area ); return 0; }
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
251

39

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

EJERCICIOS RECOMENDADOS
Resueltos: 5, 6, 7 y 8. Propuestos: 5, 6, 7, 8 y 9.

40
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
252

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.10 LA FUNCIN fflush


EJEMPLO:
#include <stdio.h>
int main() { char a, b, c; printf( "Introduzca primer caracter: " ); scanf( "%c", &a ); printf( "Introduzca segundo caracter: " ); fflush( stdin ); scanf( "%c", &b ); printf( "Introduzca tercer caracter: " ); fflush( stdin ); scanf( "%c", &c ); printf( "Los valores son: %c, %c, %c ", a, b, c ); return 0; }
41
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
253

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.11 TIPOS DE ERRORES (1/3)


Un error de sintaxis se produce al escribir, incorrectamente, alguna parte del cdigo. EJEMPLO:
include <stdio.h>
imt main() { int a, b; a = 4; b = a * 6; printf( "%d", b ) retunr 0; }
42
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
254

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.11 TIPOS DE ERRORES (2/3)


Un error de ejecucin se produce cuando el ordenador no puede ejecutar alguna instruccin de forma correcta. EJEMPLO:
#include <stdio.h>
int main() { int a; float b; a = 0; b = 6.4 / a; printf( "%d", b ); return 0; }
43
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
255

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

11.11 TIPOS DE ERRORES (3/3)


Un error de lgica se produce cuando los resultados obtenidos no son los esperados. EJEMPLO:
#include <stdio.h>
int main() { float base, altura; base = 6.3; altura = 4.; printf( "El area es: %f", base * altura / 3 ); return 0; }
44
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
256

Captulo 11. INTRODUCCIN A LA CODIFICACIN EN C

EJERCICIOS RECOMENDADOS
Resueltos: del 9 al 18. Propuestos: del 10 al 17.

45
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
257

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

46
258

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 12
INSTRUCCIONES DE CONTROL ALTERNATIVAS

1
259

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

OBJETIVOS
Conocer las instrucciones de control alternativas, y saber hacer uso de ellas. Saber qu es el anidamiento, y cundo hacer uso de l.
Todas las instrucciones de los algoritmos vistos hasta este momento se ejecutan secuencialmente, una detrs de otra, sin excepcin, pero, en un algoritmo, pueden existir instrucciones que no se ejecuten, o que se ejecuten a veces s a veces no?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
260

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

CONTENIDO
12.1 INTRODUCCIN 12.2 INSTRUCCIONES ALTERNATIVAS 12.3 ANIDAMIENTO 12.4 DISTINTAS SOLUCIONES PARA UN PROBLEMA 12.5 VARIABLE INTERRUPTOR

3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
261

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.1 INTRODUCCIN (1/2)


Las instrucciones que se utilizan para disear algoritmos se pueden clasificar en:
Primitivas De control Llamadas a subalgoritmos (llamadas a subprogramas)

Las instrucciones de control se clasifican en:


Alternativas (selectivas) Repetitivas (iterativas) De salto (de transferencia)

4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
262

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.1 INTRODUCCIN (2/2)


Se llama flujo de control al orden en el que se ejecutan las instrucciones de un programa, siendo las propias instrucciones las que determinan o controlan dicho flujo. En un programa, a menos que el flujo de control se vea modificado por una instruccin de control, las instrucciones siempre se ejecutan secuencialmente, una detrs de otra, en orden de aparicin, de izquierda a derecha y de arriba abajo, que es el flujo natural de un programa. En programacin estructurada, se considera una mala prctica hacer uso de las instrucciones de salto, ya que, entre otras cosas, restan legibilidad al algoritmo.
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
263

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (1/21)


Una instruccin de control alternativa permite seleccionar, en el flujo de control de un programa, la o las siguientes instrucciones a ejecutar, de entre varias posibilidades. Existen tres tipos:
Doble Simple Mltiple

Una instruccin alternativa doble (o simplemente alternativa doble) permite seleccionar, por medio de una condicin, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles. EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado la nota (dato real) de una asignatura. 2) Muestre por pantalla:
"APROBADO", en el caso de que la nota sea mayor o igual que 5. "SUSPENDIDO", en el caso de que la nota sea menor que 5.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
264

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (2/21)


Solucin en pseudocdigo:
algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (real): " ) leer( nota ) si ( nota >= 5 ) escribir( "APROBADO" ) sino escribir( "SUSPENDIDO" ) fin_si fin
7
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
265

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (3/21)


Solucin en ordinograma:

8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
266

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (4/21)


Solucin en C:
#include <stdio.h> int main() { float nota; printf( "\n Introduzca nota (real): " ); scanf( "%f", &nota ); if ( nota >= 5 ) printf( "\n APROBADO" ); else printf( "\n SUSPENDIDO" ); return 0; }
9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
267

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (5/21)


Sintaxis de una instruccin alternativa doble (pseudocdigo):
si ( <expresin_lgica> ) <bloque_de_instrucciones_1> sino <bloque_de_instrucciones_2> fin_si

En C:
if ( <expresin_lgica> ) { <bloque_de_instrucciones_1> } else { <bloque_de_instrucciones_2> }

En ordinograma:

10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
268

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2 y 3. Propuestos: 1, 2 y 3.

11
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
269

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (6/21)


Una instruccin alternativa simple (o simplemente alternativa simple) es una variante (ms sencilla) de una instruccin alternativa doble. EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado la nota (dato real) de una asignatura. 2) Muestre por pantalla:
"APROBADO", en el caso de que la nota sea mayor o igual que 5.

En este problema, no se va a mostrar por pantalla "SUSPENDIDO" en el caso de que la nota sea menor que 5.

12
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
270

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (7/21)


Solucin en pseudocdigo:
algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (real): " ) leer( nota ) si ( nota >= 5 ) escribir( "APROBADO" ) fin_si fin

13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
271

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (8/21)


Solucin en ordinograma:

14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
272

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (9/21)


Solucin en C:
#include <stdio.h> int main() { float nota; printf( "\n Introduzca nota (real): " ); scanf( "%f", &nota ); if ( nota >= 5 ) printf( "\n return 0; } APROBADO" );

15
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
273

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (10/21)


Sintaxis de una instruccin alternativa simple (pseudocdigo):
si ( <expresin_lgica> ) <bloque_de_instrucciones> fin_si

En C:
if ( <expresin_lgica> ) { <bloque_de_instrucciones> }

En ordinograma:

16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
274

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (11/21)


Una instruccin alternativa mltiple (o simplemente alternativa mltiple) permite seleccionar, por medio de una expresin, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado el nmero (dato entero) de un da de la semana. 2) Muestre por pantalla el nombre (dato cadena) correspondiente a dicho da. Nota: Si el nmero de da introducido es menor que 1 mayor que 7, se mostrar el mensaje: "ERROR: Da incorrecto.".
17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
275

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (12/21)


Solucin en pseudocdigo:
algoritmo Dia_de_la_semana variables entero dia inicio escribir( "Introduzca da de la semana: " ) leer( dia ) segun_sea ( dia ) 1 : escribir( "Lunes" ) 2 : escribir( "Martes" ) 3 : escribir( "Mircoles" ) 4 : escribir( "Jueves" ) 5 : escribir( "Viernes" ) 6 : escribir( "Sbado" ) 7 : escribir( "Domingo" ) sino : escribir( "ERROR: Da incorrecto." ) fin_segun_sea fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
276

18

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (13/21)


Solucin en ordinograma:

19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
277

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (14/21)


Solucin en C:
#include <stdio.h> int main() { int dia; printf( "\n Introduzca dia de la semana: " ); scanf( "%d", &dia ); switch ( dia ) { case 1 : printf( "\n Lunes" ); break; case 2 : printf( "\n Martes" ); break; case 3 : printf( "\n Miercoles" ); break; case 4 : printf( "\n Jueves" ); break; case 5 : printf( "\n Viernes" ); break; case 6 : printf( "\n Sabado" ); break; case 7 : printf( "\n Domingo" ); break; default : printf( "\n ERROR: Dia incorrecto." ); } return 0; } Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
278

20

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (15/21)


Sintaxis de una instruccin alternativa mltiple (pseudocdigo):
segun_sea ( <expresin> ) <lista_de_valores_1> : <bloque_de_instrucciones_1> <lista_de_valores_2> : <bloque_de_instrucciones_2> ... <lista_de_valores_n> : <bloque_de_instrucciones_n> [ sino : <bloque_de_instrucciones_n+1> ] fin_segun_sea

En ordinograma:

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
279

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (16/21)


En C:
switch ( <expresin> ) { case <expresin_1> : [ <bloque_de_instrucciones_1> [ break; ] case <expresin_2> : [ <bloque_de_instrucciones_2> [ break; ] ... case <expresin_n> : [ <bloque_de_instrucciones_n> [ break; ] [ default : <bloque_de_instrucciones_n+1> }

] ]

] ]

22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
280

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (17/21)


EJEMPLO. En la tabla se muestran las categoras a las que pertenecen los signos del zodaco. Se quiere disear el algoritmo de un programa que: 1) Muestre el listado de los signos del zodaco, con sus nmeros asociados . 2) Pida por teclado un nmero (dato entero) asociado a un signo del zodaco. 3) Muestre la categora a la que pertenece el signo del zodaco seleccionado. Nota: Si el nmero introducido por el usuario, no est asociado a ningn signo del zodaco, se mostrar el mensaje: "ERROR: <nmero> no est asociado a ningn signo.".
23
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
281

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (18/21)


En pantalla:

24
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
282

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (19/21)


En pantalla:

25
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
283

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (20/21)


Solucin en pseudocdigo:
algoritmo Signo_del_zodiaco variables entero numero inicio escribir( escribir( escribir( escribir( ... escribir( escribir( algoritmo Signo_del_zodiaco variables entero numero cadena categoria inicio escribir( "Listado de signos del zodaco:" ) ... escribir( "Introduzca nmero de signo: " ) leer( numero ) "12. Piscis" ) "Introduzca nmero de signo: " ) segun_sea ( numero mod 4 ) 1 : categoria "Fuego" 2 : categoria "Tierra" 3 : categoria "Aire" 0 : categoria "Agua" fin_segun_sea si ( numero >= 1 y numero <= 12 ) escribir( "Es un signo de ", categoria, "." ) sino escribir( "ERROR: ", numero, " no est asociado a ningn signo." ) fin_si fin 26

"Listado de signos del zodaco:" ) "1. Aries" ) "2. Tauro" ) "3. Gminis" )

leer( numero ) numero ) : escribir( : escribir( : escribir( : escribir( : escribir( " no est fin_segun_sea fin segun_sea ( 1, 5, 9 2, 6, 10 3, 7, 11 4, 8, 12 sino

"Es un signo de Fuego." ) "Es un signo de Tierra." ) "Es un signo de Aire." ) "Es un signo de Agua." ) "ERROR: ", numero, asociado a ningn signo." )

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C


284

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.2 INSTRUCCIONES ALTERNATIVAS (21/21)


En C:
switch ( { case case case numero ) 1 : 5 : 9 : printf( break; case 2 : case 6 : case 10 : printf( break; case 3 : case 7 : case 11 : printf( break; case 4 : case 8 : case 12 : printf( break; default : printf( switch ( numero % 4 { case 1 : strcpy( break; case 2 : strcpy( break; case 3 : strcpy( break; case 0 : strcpy( } ) categoria, "Fuego" ); categoria, "Tierra" ); categoria, "Aire" ); categoria, "Agua" );

"\n

Es un signo de Fuego." );

"\n

Es un signo de Tierra." )

"\n

Es un signo de Aire." )

"\n "\n

Es un signo de Agua." ) ERROR: %d no esta asociado a ningun signo.", numero )

27
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
285

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 4 y 5. Propuestos: 4 y 5.

28
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
286

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (1/13)


Las instrucciones alternativas y repetitivas pueden escribirse una dentro de otra. A este hecho se le conoce como anidamiento. Las instrucciones alternativas permiten realizar las siguientes combinaciones de anidamiento:
Doble en doble. Doble en simple. Doble en mltiple. Simple en simple. Simple en doble. Simple en mltiple. Mltiple en mltiple. Mltiple en doble. Mltiple en simple.

De ellas, vamos a estudiar, como ejemplo, las siguientes combinaciones:


Doble en doble. Mltiple en doble.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
287

29

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (2/13)


Sintaxis de alternativa doble en doble:
si ( <expresin_lgica_1> ) /* Inicio del anidamiento */ si ( <expresin_lgica_2> ) <bloque_de_instrucciones_1> sino <bloque_de_instrucciones_2> fin_si /* Fin del anidamiento */ sino <bloque_de_instrucciones_3> fin_si
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
288

30

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (3/13)


Sintaxis de alternativa doble en doble:
si ( <expresin_lgica_1> ) <bloque_de_instrucciones_1> sino /* Inicio del anidamiento */ si ( <expresin_lgica_2> ) <bloque_de_instrucciones_2> sino <bloque_de_instrucciones_3> fin_si /* Fin del anidamiento */ fin_si
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
289

31

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (4/13)


EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado la nota (real) de una asignatura. 2) Muestre por pantalla:
"APTO", en el caso de que la nota sea mayor o igual que 5 y menor o igual que 10. "NO APTO", en el caso de que la nota sea mayor o igual que 0 y menor que 5. "ERROR: Nota incorrecta.", en el caso de que la nota sea menor que 0 mayor que 10.

32
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
290

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (5/13)


Solucin:
algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (real): " ) leer( nota ) si ( nota >= 5 y nota <= 10 ) escribir( "APTO" ) sino /* Inicio del anidamiento */ si ( nota >= 0 y nota < 5 ) escribir( "NO APTO" ) sino escribir( "ERROR: Nota incorrecta." ) fin_si /* Fin del anidamiento */ fin_si fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
291

33

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (6/13)


En C:
#include <stdio.h> int main() { float nota; printf( "\n Introduzca nota (real): " ); scanf( "%f", &nota ); if ( nota >= 5 && nota <= 10 ) printf( "\n APTO" ); else /* Inicio del anidamiento */ if ( nota >= 0 && nota < 5 ) printf( "\n NO APTO" ); else printf( "\n ERROR: Nota incorrecta.\n" ); /* Fin del anidamiento */ return 0; }
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
292

34

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (7/13)


EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado la nota (dato real) de una asignatura. 2) Muestre por pantalla:
"SOBRESALIENTE", en el caso de que la nota sea mayor o igual que 9 y menor o igual que 10. "NOTABLE", en el caso de que la nota sea mayor o igual que 7 y menor que 9. "BIEN", en el caso de que la nota sea mayor o igual que 6 y menor que 7. "SUFICIENTE", en el caso de que la nota sea mayor o igual que 5 y menor que 6. "INSUFICIENTE", en el caso de que la nota sea mayor o igual que 3 y menor que 5. "MUY DEFICIENTE", en el caso de que la nota sea mayor o igual que 0 y menor que 3. "ERROR: Nota incorrecta.", en el caso de que la nota sea menor que 0 mayor que 10.

35
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
293

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (8/13)


Solucin:
algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (real): " ) leer( nota ) si ( nota < 0 o nota > 10 ) escribir( "ERROR: Nota incorrecta." ) sino si ( nota >= 9 ) escribir( "SOBRESALIENTE" ) sino si ( nota >= 7 ) escribir( "NOTABLE" ) sino si ( nota >= 6 ) escribir( "BIEN" ) sino si ( nota >= 5 ) escribir( "SUFICIENTE" ) sino si ( nota >= 3 ) escribir( "INSUFICIENTE" ) sino escribir( "MUY DEFICIENTE" ) fin_si fin_si fin_si fin_si fin_si fin_si fin

36
294

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (9/13)


En C:
#include <stdio.h> int main() { float nota; printf( "\n Introduzca nota (real): " ); scanf( "%f", &nota ); if ( nota < 0 || nota > 10 ) printf( "\n ERROR: Nota incorrecta." ); else if ( nota >= 9 ) printf( "\n SOBRESALIENTE" ); else if ( nota >= 7 ) printf( "\n NOTABLE" ); else if ( nota >= 6 ) printf( "\n BIEN" ); else if ( nota >= 5 ) printf( "\n SUFICIENTE" ); else if ( nota >= 3 ) printf( "\n INSUFICIENTE"); else printf( "\n MUY DEFICIENTE" ); return 0; }

37
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
295

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 6 y 7. Propuestos: 6, 7 y 8.

38
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
296

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (10/13)


Sintaxis de alternativa mltiple en doble:
si ( <expresin_lgica> ) /* Inicio del anidamiento */ segun_sea ( <expresin> ) <lista_de_valores_1> : <bloque_de_instrucciones_1> <lista_de_valores_2> : <bloque_de_instrucciones_2> ... <lista_de_valores_n> : <bloque_de_instrucciones_n> [ sino : <bloque_de_instrucciones_n+1> ] fin_segun_sea /* Fin del anidamiento */ sino <bloque_de_instrucciones_n+2> fin_si
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
297

39

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (11/13)


EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado el nmero (dato entero) de un da de la semana. 2) Muestre por pantalla el nombre (dato cadena) correspondiente a dicho da. Nota: Si el nmero de da introducido es menor que 1 mayor que 7, se mostrar el mensaje: "ERROR: Da incorrecto.".

40
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
298

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (12/13)


Solucin:
algoritmo Dia_de_la_semana variables entero dia inicio escribir( "Introduzca da de la semana: " ) leer( dia ) si ( dia >= 1 y dia <= 7 ) /* Slo si el da es vlido, se ejecuta la instruccin alternativa mltiple. */ /* Inicio del anidamiento */ segun_sea ( dia ) 1 : escribir( "Lunes" ) 2 : escribir( "Martes" ) 3 : escribir( "Mircoles" ) 4 : escribir( "Jueves" ) 5 : escribir( "Viernes" ) 6 : escribir( "Sbado" ) 7 : escribir( "Domingo" ) fin_segun_sea /* Fin del anidamiento */ sino escribir ( "ERROR: Da incorrecto." ) fin_si fin

41
299

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.3 ANIDAMIENTO (13/13)


En C:
#include <stdio.h> int main() { int dia; printf( "\n Introduzca dia de la semana: " ); scanf( "%d", &dia ); if ( dia >= 1 && dia <= 7 ) /* Slo si el da es vlido, se ejecuta la instruccin alternativa mltiple */ /* Inicio del anidamiento switch ( dia ) { case 1 : printf( "\n break; case 2 : printf( "\n break; case 3 : printf( "\n break; case 4 : printf( "\n break; case 5 : printf( "\n break; case 6 : printf( "\n break; case 7 : printf( "\n } /* Fin del anidamiento */ else printf( "\n return 0; } */

Lunes" ); Martes" ); Miercoles" ); Jueves" ); Viernes" ); Sabado" ); Domingo" );

ERROR: Dia incorrecto." );

42
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
300

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.4 DISTINTAS SOLUCIONES PARA UN PROBLEMA (1/3)


En programacin, para solucionar un problema, se pueden disear algoritmos distintos, o dicho de otro modo, no existe una nica solucin para resolver un problema dado. Pero, a veces, unas soluciones son mejores (ms ptimas) que otras. Cuando se dice que un algoritmo es mejor (ms ptimo) que otro, teniendo ambos la misma funcionalidad, esto puede ser debido a distintas razones, entre ellas, de momento, vamos a destacar dos:
El cdigo es ms reducido (se ejecutan menos instrucciones). Utiliza menos variables (menos memoria).
43
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
301

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.4 DISTINTAS SOLUCIONES PARA UN PROBLEMA (2/3)


EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado la nota (dato entero) de una asignatura. 2) Muestre por pantalla:
"SOBRESALIENTE", en el caso de que la nota sea un 9 un 10. "NOTABLE", en el caso de que la nota sea un 7 un 8. "BIEN", en el caso de que la nota sea un 6. "SUFICIENTE", en el caso de que la nota sea un 5. "INSUFICIENTE", en el caso de que la nota sea un 3 un 4. "MUY DEFICIENTE", en el caso de que la nota sea un 0, un 1, un 2. "ERROR: Nota incorrecta.", en el caso de que la nota sea menor que 0 mayor que 10.

44
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
302

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.4 DISTINTAS SOLUCIONES PARA UN PROBLEMA (3/3)


Solucin en pseudocdigo:
algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (entera): " ) leer( nota ) si ( nota >= 0 y nota <= 10 ) si ( nota >= 9 ) escribir( "SOBRESALIENTE" ) sino si ( nota >= 7 ) escribir( "NOTABLE" ) sino si ( nota = 6 ) escribir( "BIEN" ) sino si ( nota = 5 ) escribir( "SUFICIENTE" ) sino si ( nota >= 3 ) escribir( "INSUFICIENTE" ) sino escribir( "MUY DEFICIENTE" ) fin_si fin_si fin_si fin_si fin_si sino escribir( "ERROR: Nota incorrecta." ) fin_si fin

algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (entera): " ) leer( nota ) si ( nota >= 0 y nota <= 10 ) segun_sea ( nota ) 10, 9 : escribir( "SOBRESALIENTE" ) 8, 7 : escribir( "NOTABLE" ) 6 : escribir( "BIEN" ) 5 : escribir( "SUFICIENTE" ) 4, 3 : escribir( "INSUFICIENTE" ) 2, 1, 0 : escribir( "MUY DEFICIENTE" ) fin_segun_sea sino escribir( "ERROR: Nota incorrecta." ) fin_si fin

45
303

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 8, 9, 10, 11 y 12. Propuestos: 9, 10, 11, 12 y 13.

46
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
304

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.5 VARIABLE INTERRUPTOR (1/3)


Una variable interruptor es un tipo de variable que se utiliza con frecuencia en programacin. Un interruptor es una variable que slo puede tomar por valor dos valores opuestos. Por norma general, estos valores son: verdadero y falso. Tambin es frecuente utilizar los valores: 0 y 1. Normalmente, una variable interruptor tomar un valor u otro dependiendo de ciertas circunstancias ocurridas en el algoritmo y, despus, segn sea su valor, se ejecutarn unas instrucciones u otras.

47
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
305

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.5 VARIABLE INTERRUPTOR (2/3)


EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado una fecha en tres variables: da, mes y ao (datos enteros). 2) Muestre por pantalla:
"FECHA CORRECTA", en el caso de que la fecha sea vlida. "FECHA INCORRECTA", en el caso de que la fecha no sea vlida. Nota1: Para que una fecha sea vlida, se tiene que cumplir que: El mes debe ser mayor o igual que 1 y menor o igual que 12. El da debe ser mayor o igual que 1 y menor o igual que un nmero, el cual depender del mes y ao introducidos por el usuario. Nota2: Tienen 31 das: enero, marzo, mayo, julio, agosto, octubre y diciembre. Tienen 30 das: abril, junio, septiembre y noviembre. Tiene 29 das: febrero (si el ao es bisiesto). Tiene 28 das: febrero (si el ao no es bisiesto). Nota3: Son bisiestos todos los aos mltiplos de 4, excepto aquellos que son 48 mltiplos de 100 pero no de 400. (Vase el ejercicio resuelto 12.2).
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
306

Captulo 12. INSTRUCCIONES DE CONTROL ALTERNATIVAS

12.5 VARIABLE INTERRUPTOR (3/3)


Solucin en pseudocdigo:
algoritmo Validar_fecha variables entero dia_maximo, dia, mes, anio logico fecha_correcta /* Interruptor */ inicio escribir( "Introduzca dia: " ) leer( dia ) escribir( "Introduzca mes: " ) leer( mes ) escribir( "Introduzca ao: " ) leer( anio ) fecha_correcta falso si ( mes >= 1 y mes <= 12 ) segun_sea ( mes ) 1, 3, 5, 7, 8, 10, 12 : dia_maximo 4, 6, 9, 11 : dia_maximo 2 : si ( anio mod anio mod anio mod dia_maximo sino dia_maximo fin_si fin_segun_sea si ( dia >= 1 y dia <= dia_maximo ) fecha_correcta verdadero fin_si fin_si si ( fecha_correcta ) escribir( "FECHA CORRECTA" ) sino escribir( "FECHA INCORRECTA" ) fin_si fin 31 30 4 = 0 y 100 <> 0 o 400 = 0 ) 29 28

49
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
307

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

50
308

Presentacin resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN

lenguaje C"

Autor: Carlos Javier Pes Rivas (correo@carlospes.com)

Captulo 13
INSTRUCCIONES DE CONTROL REPETITIVAS

1
309

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

OBJETIVOS
Conocer las instrucciones de control repetitivas, y saber hacer uso de ellas. Aprender a anidar instrucciones de control repetitivas.
Ya se ha estudiado que las instrucciones de un algoritmo pueden ejecutarse secuencialmente. Por otra parte, puede darse el caso de que unas instrucciones se ejecuten y otras no, utilizando instrucciones alternativas. Pero, cmo se puede hacer que un bloque de instrucciones se ejecute ms de una vez?

2
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
310

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

CONTENIDO
13.1 INTRODUCCIN 13.2 INSTRUCCIONES REPETITIVAS 13.3 CUNDO USAR UN BUCLE U OTRO? 13.4 ANIDAMIENTO

3
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
311

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.1 INTRODUCCIN
Las instrucciones que se utilizan para disear algoritmos se pueden clasificar en:
Primitivas De control Llamadas a subalgoritmos (llamadas a subprogramas)

Las instrucciones de control se clasifican en:


Alternativas (selectivas) Repetitivas (iterativas) De salto (de transferencia)

4
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
312

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (1/37)


Una instruccin de control repetitiva permite ejecutar una o ms instrucciones varias veces. Existen tres tipos:
Mientras Hacer...mientras Para

A las instrucciones repetitivas tambin se las conoce como bucles, ciclos o lazos. Sintaxis de una instruccin repetitiva mientras en pseudocdigo:
mientras ( <expresin_lgica> ) <bloque_de_instrucciones> fin_mientras
5
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
313

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (2/37)


Para que se ejecute el <bloque_de_instrucciones>, la condicin tiene que ser verdadera. Por el contrario, si la condicin es falsa, el <bloque_de_instrucciones> no se ejecuta. Cuando el bloque de instrucciones de un bucle se ejecuta, se dice que se ha producido una iteracin. El <bloque_de_instrucciones> de un bucle mientras puede ejecutarse cero o ms veces (iteraciones). Si el <bloque_de_instrucciones> se ejecuta al menos una vez, seguir ejecutndose repetidamente, mientras que, la condicin sea verdadera. Pero, hay que tener cuidado de que el bucle no sea infinito. Cuando la condicin de un bucle mientras se evala siempre a verdadera, se dice que se ha producido un bucle infinito, ya que, el algoritmo nunca termina. Un bucle infinito es un error lgico. En resumen, una instruccin repetitiva mientras permite ejecutar, repetidamente, (cero o ms veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera.
6
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
314

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (3/37)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez nmeros naturales:

Solucin en pseudocdigo:
algoritmo Numeros_del_1_al_10 variables entero contador inicio contador 1 /* Inicializacin del contador */ mientras ( contador <= 10 ) /* Condicin */ escribir( contador ) /* Salida */ contador contador + 1 /* Incremento */ fin_mientras fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
315

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (4/37)


En el algoritmo se ha utilizado un contador. En programacin, se llama contador a una variable cuyo valor se incrementa o decrementa en un valor fijo (en cada iteracin de un bucle). Un contador suele utilizase para contar el nmero de veces que itera un bucle. Pero, a veces, se utiliza para contar, solamente, aquellas iteraciones de un bucle en las que se cumpla una determinada condicin. Adems, en este caso, el valor de la variable contador se ha visualizado en cada iteracin.
8
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
316

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (5/37)


Sintaxis de una instruccin repetitiva mientras en ordinograma:

9
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
317

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (6/37)


Sintaxis de la instruccin while:
while ( <expresin_lgica> ) { <bloque_de_instrucciones> }

Cuando el <bloque_de_instrucciones> slo contiene una instruccin, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

10
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
318

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (7/37)


Solucin en C:
#include <stdio.h> int main() { int contador; printf( "\n " );

contador = 1; /* Inicializacin del contador */ while ( contador <= 10 ) /* Condicin */ { printf( "%d ", contador ); /* Salida */ contador++; /* Incremento */ } return 0; }
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
319

11

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (8/37)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez nmeros naturales, pero a la inversa, es decir, del 10 al 1:

Solucin en pseudocdigo:
algoritmo Numeros_del_10_al_1 variables entero contador inicio contador 10 mientras ( contador >= 1 ) escribir( contador ) contador contador 1 fin_mientras fin

/* Cambio 1 */ /* Cambio 2 */ /* Cambio 3 */


12
320

Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (9/37)


Para que el algoritmo realice la nueva tarea encomendada, ha sido necesario realizar tres cambios en los aspectos ms crticos del bucle mientras: 1. La inicializacin de la variable contador (cambio 1): necesaria para que la condicin pueda evaluarse correctamente cuando el flujo del algoritmo llega al bucle mientras. 2. La condicin del bucle mientras (cambio 2): afecta al nmero de iteraciones que va a efectuar el bucle. Tambin se la conoce como condicin de salida del bucle. 3. La instruccin de asignacin (cambio 3): hace variar el valor de la variable contador dentro del bloque de instrucciones. De no hacerse correctamente, el bucle podra ser infinito.
13
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
321

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (10/37)


EJEMPLO. Un pequeo descuido, como por ejemplo, no escribir de forma correcta la condicin del bucle, puede producir un bucle infinito:
algoritmo Numeros_del_10_al_1 variables entero contador inicio contador 10 mientras ( contador <= 10 ) escribir( contador ) contador contador 1 fin_mientras fin

/* Cambio 1 */ /* Descuido */ /* Cambio 3 */

En pantalla:

14
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
322

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (11/37)


EJEMPLO. Otro error muy frecuente es inicializar mal la variable que participa en la condicin del bucle:
algoritmo Numeros_del_10_al_1 variables entero contador inicio contador 1 mientras ( contador >= 1 ) escribir( contador ) contador contador 1 fin_mientras fin

/* Descuido */ /* Cambio 2 */ /* Cambio 3 */

En pantalla:

15
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
323

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (12/37)


EJEMPLO. Tambin es un error muy tpico olvidarse de escribir alguna instruccin:
algoritmo Numeros_del_10_al_1 variables entero contador inicio contador 10 mientras ( contador >= 1 ) escribir( contador ) fin_mientras fin

/* Cambio 1 */ /* Cambio 2 */ /* Descuido */

En pantalla:

16
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
324

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (13/37)


EJEMPLO. Un bucle mientras puede iterar cero o ms veces. As, por ejemplo, en el algoritmo siguiente existe un error lgico que provoca que el bucle no itere ninguna vez:
algoritmo Numeros_del_10_al_1 variables entero contador inicio contador 0 mientras ( contador >= 1 ) escribir( contador ) contador contador 1 fin_mientras fin

/* Descuido */ /* Cambio 2 */ /* Cambio 3 */

En pantalla:

17
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
325

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (14/37)


En el ejemplo anterior, se ha producido un error lgico, ya que, para que el bucle iterase diez veces, se debera haber asignado a la variable contador el valor 10, en vez del 0. No obstante, bajo determinadas circunstancias, s puede tener sentido hacer uso de un bucle mientras, el cual pueda no iterar ninguna vez. Por ejemplo, en el siguiente problema. EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado la nota (dato real) de una asignatura. 2) En el caso de que la nota sea incorrecta, muestre por pantalla el mensaje:
"ERROR: Nota incorrecta, debe ser >= 0 y <= 10.

3) Repita los pasos 1 y 2, mientras que, la nota introducida sea incorrecta. 4) Muestre por pantalla:
"APROBADO", en el caso de que la nota sea mayor o igual que 5. "SUSPENDIDO", en el caso de que la nota sea menor que 5.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
326

18

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (15/37)


En pantalla:

19
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
327

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (16/37)


Solucin:
algoritmo Calificacion_segun_nota variables real nota inicio escribir( "Introduzca nota (real): " ) leer( nota ) /* Si la primera nota introducida por el usuario es correcta, el bucle no itera ninguna vez. */ mientras ( nota < 0 o nota > 10 ) escribir( "ERROR: Nota incorrecta, debe ser >= 0 y <= 10" ) escribir( "Introduzca nota (real): " ) leer( nota ) fin_mientras /* Mientras que el usuario introduzca una nota incorrecta, el bucle iterar. Y cuando introduzca una nota correcta, el bucle finalizar. */ si ( nota >= 5 ) escribir( "APROBADO" ) sino escribir( "SUSPENDIDO" ) fin_si fin Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
328

20

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 1, 2 y 3. Propuestos: 1, 2 y 3.

21
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
329

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (17/37)


Sintaxis de una instruccin repetitiva hacer...mientras en pseudocdigo:
hacer <bloque_de_instrucciones> mientras ( <expresin_lgica> )

En un bucle hacer...mientras, primero se ejecuta el bloque de instrucciones y, despus, se evala la condicin. En el caso de que sta sea verdadera, se vuelve a ejecutar el bloque de instrucciones. Y as sucesivamente, hasta que, la condicin sea falsa. El <bloque_de_instrucciones> de un bucle hacer...mientras puede ejecutarse una o ms veces (iteraciones). Tambin hay que prevenir que el bucle no sea infinito. En resumen, una instruccin repetitiva hacer...mientras permite ejecutar repetidamente (una o ms veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera.
22
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
330

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (18/37)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez nmeros naturales:

Solucin en pseudocdigo:
algoritmo Numeros_del_1_al_10 variables entero contador inicio contador 1 /* Inicializacin del contador */ hacer escribir( contador ) /* Salida */ contador contador + 1 /* Incremento */ mientras( contador <= 10 ) /* Condicin */ fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
331

23

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (19/37)


Sintaxis de una instruccin repetitiva hacer...mientras en ordinograma:

24
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
332

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (20/37)


Sintaxis de la instruccin do...while:
do { <bloque_de_instrucciones> } while ( <expresin_lgica> );

Cuando el <bloque_de_instrucciones> slo contiene una instruccin, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

25
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
333

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (21/37)


Solucin en C:
#include <stdio.h> int main() { int contador; printf( "\n " );

contador = 1; /* Inicializacin del contador */ do { printf( "%d ", contador ); /* Salida */ contador++; /* Incremento */ } while ( contador <= 10 ); /* Condicin */ return 0; }
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
334

26

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (22/37)


Como ya se ha dicho, el bucle hacer...mientras puede iterar una o ms veces, por tanto, cuando un bloque de instrucciones debe iterar al menos una vez, generalmente, es mejor utilizar un bucle hacer...mientras que un bucle mientras, como por ejemplo, en el siguiente problema. EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Pida por teclado un nmero (dato entero). 2) Pregunte al usuario si desea introducir otro o no. 3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de (no). 4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.
27
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
335

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (23/37)


En pantalla:

28
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
336

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (24/37)


Solucin:
algoritmo Suma_de_numeros_introducidos_por_el_usuario variables caracter seguir entero acumulador, numero inicio /* En acumulador se va a guardar la suma de los nmeros introducidos por el usuario. */ acumulador 0 hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero escribir( "Desea introducir otro nmero (s/n)?: " ) leer( seguir ) mientras( seguir <> 'n' ) /* Mientras que el usuario desee introducir ms nmeros, el bucle iterar. */ escribir( "La suma de los nmeros introducidos es: ", acumulador ) fin

29
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
337

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (25/37)


En el algoritmo del ejemplo anterior se ha utilizado un acumulador. En programacin, se llama acumulador a una variable cuyo valor se incrementa o decrementa en un valor que no tiene por qu ser fijo (en cada iteracin de un bucle). Un acumulador suele utilizarse para acumular resultados producidos en las iteraciones de un bucle.

30
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
338

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (26/37)


Diferencias entre un bucle mientras y un bucle hacer...mientras:

31
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
339

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 4, 5 y 6. Propuestos: 4, 5 y 6.

32
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
340

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (27/37)


Sintaxis de una instruccin repetitiva para en pseudocdigo:
para <variable> <valor_inicial> hasta <valor_final> [ incremento <valor_incremento> ] hacer <bloque_de_instrucciones> fin_para

En una instruccin repetitiva para, siempre se utiliza una <variable> a la que se debe asignar un <valor_inicial>. En cada iteracin del bucle, al valor de la <variable> se le suma el <valor_incremento> y, cuando la <variable> supera el <valor_final>, el bucle finaliza. Por tanto, una instruccin repetitiva para permite ejecutar, repetidamente, un bloque de instrucciones, en base a un valor inicial y a un valor final. El bucle para es ideal usarlo cuando, de antemano, ya se sabe el nmero de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones. El bucle para es una variante del bucle mientras y, al igual que ste, puede iterar cero o ms veces. Sin embargo, el bucle para slo se suele usar cuando se conoce el nmero exacto de veces que tiene que iterar el bucle.
33
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
341

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (28/37)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez nmeros naturales:

Solucin en pseudocdigo:
algoritmo Numeros_del_1_al_10 variables entero contador inicio para contador 1 hasta 10 incremento 1 hacer escribir( contador ) fin_para fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
342

34

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (29/37)


EJEMPLO. Cuando el incremento es 1, se puede omitir la palabra reservada incremento, y su valor.
algoritmo Numeros_del_1_al_10 variables entero contador inicio /* Al no aparecer el valor del incremento, se entiende que es 1. */ para contador 1 hasta 10 hacer escribir( contador ) fin_para fin

35
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
343

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (30/37)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez nmeros naturales, pero a la inversa, es decir, del 10 al 1:

Solucin en pseudocdigo: (utilizando un incremento negativo)


algoritmo Numeros_del_10_al_1 variables entero contador inicio para contador 10 hasta 1 incremento -1 hacer escribir( contador ) fin_para fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
344

36

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (31/37)


EJEMPLO. Por otra parte, tambin es posible omitir la palabra reservada incremento y su valor, entendindose, en ese caso, que es -1, ya que, el <valor_inicial> es mayor que el <valor_final> y, por tanto, slo es razonable un incremento negativo.
algoritmo Numeros_del_10_al_1 variables entero contador inicio /* Al no aparecer el valor del incremento, se entiende que es -1. */ para contador 10 hasta 1 hacer escribir( contador ) fin_para fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
345

37

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (32/37)


Para los casos en que el incremento es negativo, tambin se puede utilizar la sintaxis:
para <variable> <valor_inicial> hasta <valor_final> [ decremento <valor_decremento> ] hacer <bloque_de_instrucciones> fin_para

EJEMPLO
algoritmo Numeros_del_10_al_1 variables entero contador inicio para contador 10 hasta 1 decremento 1 hacer escribir( contador ) fin_para fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
346

38

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (33/37)


Por consiguiente, la sintaxis completa de una instruccin repetitiva para es:
para <variable> <valor_inicial> hasta <valor_final> [ incremento <valor_incremento> | decremento <valor_decremento> ] hacer <bloque_de_instrucciones> fin_para

39
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
347

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (34/37)


Sintaxis de una instruccin repetitiva para en ordinograma:

40
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
348

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (35/37)


Sintaxis de la instruccin for:
for ( <expresin_1> ; <expresin_2> ; <expresin_3> ) { <bloque_de_instrucciones> }

Cuando el <bloque_de_instrucciones> de una repetitiva para slo contiene una instruccin, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

41
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
349

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (36/37)


EJEMPLO.
#include <stdio.h> int main() { int contador; printf( "\n " );

for ( contador = 1 ; contador <= 10 ; contador++ ) printf( "%d ", contador ); return 0; }

42
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
350

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.2 INSTRUCCIONES REPETITIVAS (37/37)


En este caso, <expresin_1>, <expresin_2> y <expresin_3>, se corresponden, respectivamente, con:
la inicializacin de la variable contador, la condicin de salida del bucle y el incremento de la variable contador

de una instruccin repetitiva mientras.

43
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
351

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.3 CUNDO USAR UN BUCLE U OTRO?


A la hora de elegir un bucle u otro, debemos hacernos la siguiente pregunta:
Se conoce, de antemano, el nmero de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones?

Si la respuesta es afirmativa, habitualmente se usa un bucle para. En caso contrario, nos plantearemos la siguiente pregunta:
El bloque de instrucciones debe ejecutarse al menos una vez?

En este caso, si la respuesta es afirmativa, generalmente haremos uso de un bucle hacer...mientras, y si la respuesta es negativa, usaremos un bucle mientras.
44
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
352

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 7, 8, 9, 10, 11 y 12. Propuestos: 7, 8, 9, 10, 11 y 12.

45
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
353

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (1/18)


Al igual que las instrucciones alternativas, las instrucciones repetitivas tambin se pueden anidar, permitiendo las siguientes combinaciones de anidamiento:
mientras en mientras. mientras en hacer...mientras. mientras en para. hacer...mientras en hacer...mientras. hacer...mientras en para. hacer...mientras en mientras. para en para. para en mientras. para en hacer...mientras.

De ellas, vamos a estudiar, como ejemplo, las combinaciones:


para en para. para en hacer...mientras.
46
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
354

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (2/18)


Sintaxis de bucle para en para:
para <variable_1> <valor_inicial_1> hasta <valor_final_1> [ incremento <valor_incremento_1> | decremento <valor_decremento_1> ] hacer /* Inicio del anidamiento */ para <variable_2> <valor_inicial_2> hasta <valor_final_2> [ incremento <valor_incremento_2> | decremento <valor_decremento_2> ] hacer <bloque_de_instrucciones> fin_para /* Fin del anidamiento */ fin_para
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
355

47

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (3/18)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla las tablas de multiplicar del 1, 2 y 3:

48
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
356

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (4/18)


Solucin en pseudocdigo:
algoritmo Tablas_de_multiplicar_del_1_2_y_3 variables entero i, j, r inicio para i 1 hasta 3 hacer

/* Bucle 1 */

/* Inicio del anidamiento */ para j 1 hasta 10 hacer /* Bucle 2(anidado) */ r i * j escribir( i, " * ", j, " = ", r ) fin_para /* Fin del anidamiento */ fin_para fin

49
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
357

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (5/18)


Solucin en ordinograma:

50
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
358

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (6/18)


Sintaxis de bucle para en hacer...mientras:
hacer /* Inicio del anidamiento */ para <variable> <valor_inicial> hasta <valor_final> [ incremento <valor_incremento> | decremento <valor_decremento> ] hacer <bloque_de_instrucciones> fin_para /* Fin del anidamiento */ mientras ( <expresin_lgica> )

51
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
359

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (7/18)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla la tabla de multiplicar de un nmero entero introducido por el usuario. El proceso debe repetirse mientras que el usuario lo desee:

52
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
360

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (8/18)


Solucin en pseudocdigo:
algoritmo Tabla_de_multiplicar_de_un_numero variables caracter seguir entero i, numero inicio hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) escribir( "La tabla de multiplicar del ", numero , " es: " ) /* Inicio del anidamiento */ para i 1 hasta 10 hacer escribir( numero, " * ", i, " = ", i * numero ) fin_para /* Fin del anidamiento */ escribir( "Desea ver otra tabla (s/n)?: " ) leer( seguir ) mientras ( seguir <> 'n' ) fin
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
361

53

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (9/18)


Solucin en ordinograma:

54
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
362

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (10/18)


Las instrucciones alternativas y repetitivas tambin se pueden anidar entre s, permitiendo realizar 18 combinaciones ms de anidamiento:
mientras en doble. mientras en simple. mientras en mltiple. hacer...mientras en doble. hacer...mientras en simple. hacer...mientras en mltiple. ... Mltiple en mientras. Mltiple en hacer...mientras. Mltiple en para.

De ellas, vamos a estudiar, como ejemplo, las combinaciones:


Simple en para. Mltiple en hacer...mientras.
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
363

55

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (11/18)


Sintaxis de alternativa simple en bucle para:
para <variable> <valor_inicial> hasta <valor_final> [ incremento <valor_incremento> | decremento <valor_decremento> ] hacer /* Inicio del anidamiento */ si ( <expresin_lgica> ) <bloque_de_instrucciones> fin_si /* Fin del anidamiento */ fin_para

56
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
364

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

12.3 ANIDAMIENTO (12/18)


EJEMPLO. Se quiere disear el algoritmo de un programa que muestre por pantalla todos los nmeros enteros del 1 al 100 (ambos inclusive) que sean divisibles entre 17 21:

57
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
365

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (13/18)


Solucin en pseudocdigo:
algoritmo Numeros_enteros_divisibles_entre_17_o_21 variables entero numero inicio para numero 1 hasta 100 hacer /* Inicio del anidamiento */ si ( numero mod 17 = 0 o numero mod 21 = 0 ) escribir( numero ) fin_si /* Fin del anidamiento */ fin_para fin

58
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
366

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (14/18)


Solucin en ordinograma:

59
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
367

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

EJERCICIOS RECOMENDADOS
Resueltos: 13, 14, 15 y 16. Propuestos: 13, 14, 15, 16 y 17.

60
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
368

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (15/18)


Alternativa mltiple en bucle hacer...mientras:
Anidar una alternativa mltiple en un bucle hacer...mientras, es la solucin idnea cuando se quiere realizar un men. Un men ofrece al usuario la posibilidad de elegir qu accin(es) realizar de entre una lista de opciones.

61
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
369

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (16/18)


EJEMPLO. Se quiere disear el algoritmo de un programa que: 1) Muestre un men con 4 opciones:
1. Calcular el doble de un nmero entero. 2. Calcular la mitad de un nmero entero. 3. Calcular el cuadrado de un nmero entero. 4. Salir.

2) Pida por teclado la opcin deseada (dato entero). 3) Ejecute la opcin del men seleccionada. 4) Repita los pasos 1, 2 y 3, mientras que, el usuario no seleccione la opcin 4 (Salir) del men.
62
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
370

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (17/18)


En pantalla:

63
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
371

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

13.4 ANIDAMIENTO (18/18)


Solucin en pseudocdigo:
algoritmo Menu_de_opciones variables caracter opcion entero numero inicio hacer escribir( escribir( escribir( escribir( segun_sea ( opcion ) '1' : escribir( "Introduzca un nmero entero:" ) leer( numero ) escribir( "El doble de ", numero, " es ", numero * 2 ) '2' : escribir( "Introduzca un nmero entero:" ) leer( numero ) escribir( "La mitad de ", numero, " es ", numero / 2 ) '3' : escribir( "Introduzca un nmero entero:" ) leer( numero ) escribir( "El cuadrado de ", numero, " es ", numero * numero ) fin_segun_sea mientras ( opcion <> '4' ) fin

"1. "2. "3. "4.

Calcular el doble de un nmero entero." ) Calcular la mitad de un nmero entero." ) Calcular el cuadrado de un nmero entero." ) Salir." )

/* Filtramos la opcin elegida por el usuario */ hacer escribir( "Introduzca opcin: " ) leer( opcion ) mientras( opcion < '1' o opcion '>' 4 ) /* La opcin slo puede ser '1', '2', '3' '4' */

64
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
372

Captulo 13. INSTRUCCIONES DE CONTROL REPETITIVAS

EJERCICIOS RECOMENDADOS
Resueltos: del 17 al 22. Propuestos: del 18 al 25.

65
Libro: EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
373

GRACIAS POR SU ATENCIN

Para ms informacin, puede visitar la web del autor:

http://www.carlospes.com

66
374

Das könnte Ihnen auch gefallen