Sunteți pe pagina 1din 27

INDICE

4.2 Ejercicios resueltos

1. La computadora

5. Estructuras de control
iterativas

1.1 Conceptos generales


1.2 Almacenamiento
1.2.1 Sistema hexadecimal
1.2.2 Almacenamiento por
complemento a dos
1.2.3 Almacenamiento por exceso

4.1 Esquema
4.2 Ejercicios resueltos

6. Anidamiento
4.1 Esquema
4.2 Ejercicios resueltos

1.2.4 Almacenamiento por punto


flotante

2. Algoritmo

7. Subprogramas

2.1 Concepto informal y formal

4.1 Esquema

2.2 Mtodos de razonamiento


para la computacin

4.2 Ejercicios resueltos

3. Conceptos tradicionales
de la programacin
3.1 Pseudocdigo y su
informalizacin
3.2 Recepcin de conceptos
prcticos

8. Arreglos
unidimensionales
4.1 Esquema
4.2 Ejercicios resueltos

9. Cadena de caracteres
4.1 Esquema

3.3 Ejercicios resueltos

4.2 Ejercicios resueltos

4. Estructuras de control
selectivas

10. Matrices

4.1 Esquema

4.1 Esquema
4.2 Ejercicios resueltos

Captulo 1
La computadora
1.1 Conceptos generales:
Antes de estudiar y esquematizar las diferentes propiedades que envuelven
los estudios de la ciencia de la computacin, es necesario entender bajo qu
condiciones trabajaremos y en que entorno se emplearn todos los mtodos
habidos y por haber. Se requiere un ligero esfuerzo mental para entender
que la vida real y un entorno abstracto del calibre de una computadora son
entornos de trabajo muy distintos, pero que empleando las analogas del
caso, sern fciles de relacionar. Si bien a continuacin se tratarn mtodos
para almacenar nmeros, segn la estructura de una computadora, se le
pide al lector que tenga paciencia y lea todo en el orden en el que ya est;
se profundizar a fondo las analogas que se queran estudiar ahora en el
Captulo 3.1
Acelerando las cosas para cumplir con lo que se estudiar cronolgicamente
(segn el slabo), empecemos a discutir como una computadora almacena
nmeros. Es bien sabido que un sistema de computadoras est construido
en base a respuestas opuestas y descartables; es decir, de cumplirse la
primera, no se entrar a analizar la segunda. Esto, traducido al mundo real,
se lee como ceros (0) y unos (1), representando casos de verdad o
falsedad (si deseas investigar un poco (solo un poco, casi nada) ms a
fondo de ste tema, te sugiero buscar a cerca de variables booleanas). Es
til que la comunicacin entre el ser humano y la mquina sea de esta
manera, agiliza procesos y simplifica la bsqueda de posibles errores. Pero
si un sistema digital como lo es una computadora est basado en esta base
binaria, cmo se almacenaran nmeros diferentes a stos dos? A
continuacin se resolvern stos problemas estrechamente ligados al
almacenamiento numrico.

1.2 Almacenamiento:
Se debe entender primero cmo una computadora recepciona data y la
guarda, para qu la guarda y cmo podra discernir entre los diferentes tipos
de data. Para esto primero se presentarn unidades y elementos propios de
una computadora.
Bit: Unidad mnima de almacenamiento digital. Son dgitos representados
por los smbolos 0 y 1. No presentan valor numrico.
Celdas de memoria: Tambin llamadas solamente como celdas. Son
unidades manejables discretamente para organizar y administrar la
memoria de una computadora
Byte: Celda compuesta por 8 bits
Grficamente podemos representar una celda como un cajn con un nmero
asociado:

Tomando como ejemplo una celda de longitud 8 bits (byte), sealaremos sus
partes:

Extremo de orden alto: Extremo ms prximo al bit ms significativo


Extremo de orden bajo: Extremo ms prximo al bit menos significativo
Direccin: Nombre representativo (indicado por un nmero) que identifica a
la celda en un conjunto de las mismas. Se empiezan a contar desde la celda
cero.
Estas partes solo sirven para identificar y manipular de una manera ms
ordenada un conjunto de celdas con caractersticas similares. De esta
manera es como una serie de celdas, identificadas por su direccin y
conociendo sus extremos gracias a sus niveles de significancia, se pueden
arreglar para manejar cierta tarea en comn.

1.2.1 Sistema hexadecimal:


Tomando de manera paralela las clases de aritmtica que te permitieron
ingresar a la tercera, empezaremos a definir un nuevo sistema de
numeracin propio de los procesos de manipulacin digital. Tomando de
ejemplo operaciones de conversin sencillas, se entendern (creo yo) de
manera ms fcil el sistema de almacenamiento entero hexadecimal.
Sea la siguiente tabla [De la obra Computer Science: An overview por J.
Glenn Brookshear 11 edicin (pgina 25)]

Ntese que todo lo que se est haciendo con los nmeros del 0 al 15 es
transformarlos a la base binaria, completando ceros por la izquierda (cosa
que es obvio dado que de completar por el otro sentido se alterara el valor
numrico original). Luego, a partir del 10, se remplazarn los valores
numrico 10, 11, 12, etc. Por letras del abecedario correctamente ordenas
de la A a la F. Tomando en cuenta estas pautas, procederemos con el
ejemplo:
Sea el nmero:

311

El cual deseamos transformarlo a sistema de almacenamiento entero


hexadecimal. Procederemos a expresarlo en binario:

311 = 100110111
Contando, de derecha a izquierda, grupos de cuatro cifras cada uno, se
tiene:

1 0011 0111
Luego, segn la tabla, reemplazamos los valores preestablecidos, de
izquierda a derecha. Al excedente que no llega a completar un grupo se le
rellenar con ceros para poder completar los cuatros necesarios

0001 0011 0111 = 1 3 7


Luego, el nmero 311 en hexadecimal ser 137.

Captulo 3
Conceptos tradicionales de la
programacin
3.1 Pseudocdigo y su informalizacin:
Si bien de todo lo que llevamos discutiendo, solo mencionamos cdigo por
aqu y cdigo por all, es necesario que el lector, por un tema de orden y
formalidad, aprenda a crear programas utilizando solo pseudocdigo, antes
de utilizar un lenguaje de programacin formal; esto le har entender cmo
funcionan las estructuras de control y cundo y de qu manera se aplican.
Si bien usted debe tener alguna nocin de qu es un lenguaje formal (por
ejemplo: java, c++, python, entre otros), es necesario explicar a detalle una
cualidad de stos que no presenta un lenguaje informal (pseudocdigo): la
unicidad estructural. Si bien solo existe una y solo una manera de escribir
una estructura en lenguaje formal, existen muchas por no decir infinitas
maneras de escribir una estructura en pseudocdigo, por lo que a usted lo o
la evaluarn solo por la funcionalidad del programa que cree y no como lo
cree. Esto se detallar a fondo en cada uno de los captulos siguientes con
el primer problema resuelto.

3.2 Recepcin de conceptos prcticos:


Es necesario, para el desarrollo de este curso introductorio a la
computacin, que se entienda bien que es lo que sucede dentro de una
computadora. Dado que es imposible comprender lo que pasa en los
diversos procesos digitales he considerado til utilizar analogas a conceptos
tangibles y entendibles para representar procesos abstractos y complejos,
ignorando ciertas pautas que pertenecen a temas ms profundos
relacionados al desarrollo de software. Dado que ahora sabemos qu
conforma a una computadora, cules son sus partes y cmo funcionan (todo
esto visto en captulos anteriores) ahora podremos definir lo que es una
computadora.
Segn la definicin de la obra de Luis Joyanes (Fundamentos de
programacin), una computadora es un dispositivo electrnico que procesa
informacin y obtiene resultados; es capaz de realizar clculos y tomar
decisiones segn sus tareas asignadas. Lo que nos va a interesar de esta
definicin es cmo se designan estas tareas y de qu forma la computadora
las entender. Todo este curso se basa en el entendimiento de cmo
podemos transformar una tarea humana a un proceso algortmico abstracto
legible por la computadora.
Empezando con algunos problemas comunes que se tienen al empezar a
estudiar, tomemos el inicio de un programa simple Cmo debera empezar
mi programa? Bueno, lo ideal es que comience por el principio. Pinselo un
poco, al presentarse a una persona desconocida, lo primero que hacemos es
darles nuestro nombre; similarmente, una buena prctica al desarrollar un
programa es el de sentenciar el nombre del mismo antes de hacer nada,
esto le dar una idea a otra persona (como por ejemplo, el que revisar tu
examen) de qu es lo que hace tu programa. Si se buscan simplificar las
cosas, tambin se podra aadir un breve comentario explicando que hace

el programa, y dar un nombre un poco ms simple al inicio (no se preocupe


que todo esto se resumir de manera ideal al final de esta seccin).
Una vez que sabemos el nombre y apellido del programa, y a qu se dedica,
regresemos al ejemplo inicial. Nos estamos presentando ante esta persona
desconocida; sta ya sabe nuestro nombre y a qu nos dedicamos, pero
ahora est interesada en cmo hacemos nuestro trabajo, detalles ms
especficos de como completamos nuestras tareas. Es ah donde entra a
tallar nuestro cdigo, el cual discutiremos a ms profundidad a lo largo de
esta obra. Acabada la conversacin, es necesario que la otra persona sepa
que hemos terminado de hablar, por lo que una simple despedida ser ms
que suficiente para terminar la conversacin; esto tambin es obligatorio al
momento de escribir cdigo, para que as la computadora entienda hasta
donde queremos que ella funcione.
En general y resumiendo todo, se puede entender como un programa
sencillo (formal obviando el cuerpo de cdigo) como el siguiente:

En resumidas cuentas, todo lo que se necesita para empezar a escribir


cdigo es orden y razonamiento; adems ayuda bastante en tener la idea
de la mente de la computadora como la de un recin nacido que solo
entiende cdigo; esto ltimo ser muy til para resolver los problemas
venideros.
Ahora hablemos de los parmetros. Si bien es difcil al principio eliminar
costumbres arraigadas que ejecutamos por rutina, es necesario que el lector
se tome una pausa para entender bien esta parte. Un parmetro se puede
traducir a lo que en matemticas es una variable. Si nos piden resolver una
ecuacin sencilla tal como:

X2 = 4

Y adems nos dice que x es un nmero no positivo natural, es fcil decir que
X solo puede ser igual a -2. Algo similar sucede con los parmetros, estas
variables se usan y manipulan con cdigo dentro de un programa. Tomemos
por ejemplo el siguiente cdigo (formal obviando el cuerpo)

Como se puede observar, los parmetros se CREAN fuera del procedimiento


y luego se procedera a usarlos dentro de los lmites del programa (entre las
lneas INICIO y FIN). Adems se puede leer una lnea de comentario (que la
computadora no leer por antecederle un doble slash) que indica donde es
que se crean los parmetros. Ahora, hablando de los parmetros en el
ejemplo, tenemos dos llamados a y b. En la lnea que dice entero a
todo lo que hacemos es crear la variable (parmetro) a cuyo valor ser un
numero entero; en la lnea siguiente se crea el parmetro b, tambin de
naturaleza de numero entero, pero que de buenas a primeras le asignamos
el valor de 3 tan pronto como es creado. stas seran las dos formas de
crear un parmetro para poder usarlo en el cuerpo de cdigo.
Notas importantes:
<> No importa que tan poco uses un parmetro, tienes que crear TODOS
los parmetros para poder usarlos, si utilizas un parmetro que no figura en
la parte de //parmetros, tu cdigo no ser vlido. Es como usar una
herramienta inexistente.
<>Existen muchos tipos de variables para trabajar, pero en su mayora solo
usaremos 3: entero, flotante y carcter. As como las variables del ejemplo
son nmeros enteros y se le anteponen la palabra entero antes de
crearlas, si se le antepone la palabra flotante a stas, la variable podr
tomar cualquier valor de nmero real (ej: 3, 7.5, 3.1415, 100000, 0.001,
etc). Hablando de manera tangente de las variables de naturaleza
carcter podemos decir que son todos los posibles smbolos que se
pueden imaginar, tales como cualquier letra del abecedario (A,B,C,D,
,Y,Z,a,b,c,,y,z), smbolos particulares (+, -, *, /, , , #, $, etc)
<> Para entender qu es lo que pasa en la computadora cuando creamos
un parmetro es necesario abstraerse un poco. En captulos anteriores
vimos lo que eran celdas de memoria y bytes (una celda de 8 bits); aqu, al
crear un parmetro, lo que hacemos es crear una celda de memoria con
cierta cantidad de bits en ella, le ponemos nombre y especificamos que tipo

de valor llegar a llenar esta celda. As, al crear la variable entero a lo que
hacemos es crear una celda llamada a a la cual llegar un dato especfico,
el cual ser un numero entero. Anlogamente, al crear el entero b = 3, lo
que hacemos es crear una celda llamada b y la cual llenamos tan pronto
como la creamos, con el valor de 3
<> Usted se est preguntando Qu tal si quiero almacenar un numero pero
solo como caracter? Es decir, solo quiero tomar en cuenta el smbolo y no el
valor numrico que representa. Esto si es posible y muy til, pero no se
profundizar en el tema en este escrito; consultelo con su profesor y hgalo
volar a l, a m no me moleste.
<> Usted se est preguntando Hara alguna diferencia crear los
parmetros dentro del inicio? Para esta parte no habra ninguna diferencia,
sin embargo, cuando lleguemos al captulo en el que hablamos de
subprogramas, tendremos que definir lo que son variables locales y
globales, por lo que s ser til y har una diferencia si es que los
sentenciamos fuera o dentro del INICIO-FIN.
Ahora hablemos de asignacin de valores a parmetros (o variables).
Primero tenemos que entender que involucra asignar una propiedad A a un
elemento B. Partamos de un ejemplo simple: Supongamos que la edad del
lector era 17 y que estudi por un periodo de 2 aos para ingresar a la
universidad y por tercera opcin; entonces si inicialmente tena 17 aos y
han transcurrido 2, su edad actual (tomando la inicial y aadiendo 2
unidades) ser 19 Simple no? Ahora, pensemos como una computadora
piensa (Si no entiende lo que viene a continuacin, intente leerlo de todas
maneras y complementarlo con la imagen del cdigo que se expondr
cuando acabe la explicacin). Si a lo largo de un cuerpo de cdigo tenamos
que un parmetro al que llamamos edad vala 17 y queremos
transformarlo a un 19, solo hace falta aumentarle 2 unidades a la variable
edad, luego la variable edad se ha TRANSFORMADO, por lo cual es
imposible regresar al valor original (as como usted no podr volver a tener
17 aos de nuevo). Luego, lo que acabamos de hacer es asignarle un nuevo
valor a un parmetro existente con un valor inicial; adems este valor inicial
se PIERDE.

Si bien el valor inicial de la variable edad es 17, una vez que se le


aumentan 2 unidades, el valor de 17 se pierde y lo reemplaza el 19.
Tambin se tiene que explicar que significa esa flecha apuntando hacia la
izquierda y cul es el procedimiento de la computadora para asignar un
valor. Iremos paso por paso desde el punto de vista de la computadora (para
la primera versin del ejemplo)
1. La computadora llega a leer la lnea de parmetros y se encuentra con
que se ha creado una variable entera llamada edad
2. La computadora entra al procedimiento
3. Se lee la lnea 1, en la que a la celda de almacenamiento llamada edad
se le inserta el valor de 17
4. Se lee la lnea 2 y la computadora se topa con la siguiente operacin
*** edad + 2
La computadora an no lee lo que hay en los asteriscos, primero lee la parte
derecha y opera lo que se le pide, es decir, toma el valor de edad (17) y le
adiciona 2
5. La computadora tiene:

*** 17 + 2
6. La computadora opera:
*** 19
7. Luego, la ceguera temporal de la computadora acaba porque la operacin
ha terminado, y procede a leer a lo que apunta la flecha
edad 19
8. Ahora, todo se resume a una simple asignacin, en la que sin importar lo
que este almacenado en edad, se lo reemplazar por un 19
Acabado este proceso, el nuevo valor de edad ser 19 y se perder el
valor original (17)
Notas importantes:
<> Usted se est preguntando Por qu al crear parmetros no puedo usar
una flecha para asignarles un valor inicial? Esto es solo por convencin.
Entonces, siempre que se creen parmetros y se desee asignarles
valores iniciales, estos solo se asignarn con el smbolo igual que
(=)
Ahora bien, para acabar con sta seccin, discutamos unas cuantas
operaciones predefinidas que usaremos al escribir cdigo.
Operaciones aritmticas:
En general estn definidas las operaciones de suma, resta, multiplicacin y
divisin sobre los reales; pero adems se tienen dos nuevos operadores
A DIV B = Cociente de dividir A/B
A MOD B = Residuo de dividir A/B
Operaciones elementales:
Leer(a) = Se prepara a la computadora para que lo siguiente que ingrese el
usuario se almacene en la variable a
Escribir(Texto) = Imprime en pantalla lo que est entre comillas
Estos dos grupos de operaciones se mostrarn en el ejemplo a continuacin:

Se imprime en pantalla el texto que pide ingresar el primer nmero entero;


la computadora lo recibe con la operacin Leer, luego se imprime en
pantalla la peticin para el segundo nmero, la computadora lo recibe
tambin con un segundo Leer y finalmente se muestra en pantalla el
resultado.
Ahora bien, es necesaria una ltima pauta correspondiente a la operacin
Escribir. Para entrar un poco ms en la formalidad (y orientndonos un
poco ms en un lenguaje de programacin como C), se necesita que, as
como al crear un parmetro nuevo, se especifique que naturaleza tiene la
variable que en este caso se muestra; para esto se considerarn tres
especificadores, los cuales solo se usarn al operar un Escribir.

%d: Variable entera (numero entero)


%f: Variable flotante (nmero real)
%c: Variable caracter (smbolo)

Veamos en el ejemplo:

Ntese que en la lnea 5, el Escribir tiene a los especificadores DENTRO


del lmite de las comillas; luego de acabar el texto que se quiere escribir se
cierran las comillas y se colocan punto y coma para poder ingresar los
nombres de las varibales a evaluar. Lo que hace la computadora es leer EN
ORDEN lo que dice entre comillas, al llegar al primer especificador, se da
cuenta que el lugar que esta revisando en ese momento(lugar en el que
esta dicho especificador) debe ir un numero entero; luego de esto la
computadora busca dicho entero luego de primer punto y coma, toma su
valor (el de Num1) y lo reemplaza donde estaba el especificador; lee un
simbolo de adicion (+) y se topa con otro indicador (que tambien espera un
numero entero); dado que es el segundo especificador la computadora
busca, pasado el punto y coma, al SEGUNDO valor (Num2) y lo reemplaza
donde estaba el segundo especificador. Todo lo que hace la computadora es
reemplazar los valores, pasados el punto y coma al final de la comilla de
cierre, donde vea especificadores. Si se topa con un especificador que no
concuerda con el valor que le toca reemplazar (por ejemplo, de toparse con
un %d pero al buscar su respectivo valor se topa con un caracter) la
computadora devolver error.

3.3 Ejercicios resueltos:


1. Implementar un programa que pida ingresar las edades de tres personas
y que muestre la media de dichas edades.

2. Implemente un programa que al ingresar las longitudes de los lados de un


tringulo, se muestre en pantalla su rea. Sugerencia: Usar frmula de
Hern para el clculo de un rea triangular.

3. Implemente un programa que intercambie los valores de 2 variables


enteras (Cambiazo). Por ejemplo si A vale 5 y B vale 2, luego de ejecutar el
algoritmo, A valdr 2 y B, 5.

4. Pida ingresar un nmero de 3 cifras y mustrelo, mediante un algoritmo,


en su orden inverso.
Sugerencias:
-Recuerde 432 = 4*100 + 3*10 + 2
-Recuerde 432 DIV 100 = 4 (DIV: Cociente de la divisin)

Captulo 4
Estructuras de control selectivas
4.1 Esquema:
Para entender esta primera estructura de control basta con estudiar los
posibles problemas que debe enfrentar una computadora con una tarea
sencilla: Si esta condicin se cumple Qu debo hacer?
Dejaremos esta interrogante para primero proponer un ejemplo que nos
ayude a entender la utilidad de este tipo de estructura. Supongamos un
detector de metales; ste dispositivo est diseado de tal manera que, si
una persona cruza las inmediaciones de su dominio, ste indicar con una
alarma si el sujeto portaba algn tipo de objeto metlico. Ahora analicemos
lo obvio de una manera ms precisa. Hgase las siguientes preguntas:
1.2.3.4.5.-

Qu me indica en realidad el detector?


Cmo puedo aprovechar todo lo que me indica?
Cmo puedo crear mi propio detector?
Qu tan importantes son las CONDICIONES?
En cuntos ciclos aprobar el curso?

Si bien un detector de metales es eso, una mquina que reacciona a


cualquier tipo de metal, tambin podramos usar su no-reaccin a otros
materiales como otra utilidad vlida (solo empleable en nuestra rea de
trabajo: la computadora). Adems, resulta muy til entender qu es un
detector en s. Para esto le propongo la definicin de un detector como una
herramienta que permanece inerte solo hasta que se cumple cierto
requerimiento
Regresando al ejemplo y entendindolo con pseudocdigo, se tiene:

Si(Se ha detectado un metal)


entonces(Encender alarma)
sino(Permanecer apagado)
Fin si
Equivalente a:
Si(Se ha detectado un metal)
entonces(Encender alarma)
Fin si
Ntese que el permanecer apagado es la utilidad vlida de la no-reaccin,
dado que no importa que material cruce el detector, si no es metal no
encender la alarma. As bien, en lugar de crear un si para plstico, vidrio
o papel, solo se crear uno que analice metales y no metales, haciendo til
la NEGACIN del requerimiento con la parte de sino. Si le parece muy
complejo esto ltimo, pinselo as: Si se detecta metal pasa algo, pero si no
se detecta metal, pasa algo diferente, si ste algo diferente es no hacer
nada, no hace falta escribirlo, solo no debe poner la parte sino(esto solo
es vlido si el estado inicial del fenmeno en cuestin es igual al final si es
que no se cumple la condicin. En este caso tanto al principio como de no
detectarse metal, la alarma no suena ni sonar). Luego, la estructura solo
reaccionar si es que detecta que la condicin es VERDADERA.
Luego, regresando a la pregunta inicial y para resolver este problema
cotidiano de reaccionar al cumplirse requerimientos y que hacer luego,
hablamos con la computadora con la siguiente estructura de control
selectiva:

Ahora bien, analicemos este otro problema que si bien es algo un poco ms
complejo, no debera ser problema si se razona. Supongamos que queremos
atender una caja registradora de una tienda que solo vende agua, jugo y
limonada. Entonces, cada vez que el detector de cdigo de barras lea un
cdigo correspondiente al producto agua, aadiremos 1 sol al precio total,
si se lee una producto jugo se aadir 1.5 soles y 2 soles para el producto
limonada. Entonces, ya no sera muy til utilizar los 2 primeros tipos de
estructura dado que no se analiza una condicin y su negacin, sino que se

necesitan evaluar 3 condiciones en paralelo. Para esto se utilizar la


estructura de control selectiva mltiple: switch. No se complique con el
nombre y veamos la solucin a ste problema (la solucin que se expone a
continuacin no tiene un esquema formal y solo tiene el objetivo de
entender el presente tema de manera didctica, no se te ocurra escribirlo
as en el examen)

Al crear el switch, debemos poner entre parntesis bajo que variable


estamos condicionando y creando los casos. Luego empezamos a crear el
primer posible caso llamado caso 1, con su respectiva condicin que, de ser
verdadera, permitir a la computadora leer la lnea 5, en la que Precio_acum
aumenta una unidad. Similarmente para los 3 casos a evaluar para los 3
diferentes productos, aumentamos el Precio_acum correspondiente. Para
finalizar el switch solo sentenciamos Fin switch y terminamos el programa.
Es necesario tener un buen criterio al escoger entre usar una estructura
seleccin simple (si entonces sino) o una de seleccin mltiple (switch);
ayuda bastante el prever cuantos casos posibles existirn y si de haber dos,
si es que se usa o no la negacin del primero.

4.3 Ejercicios resueltos:


1. Pida ingresar tres nmeros entero. Luego, muestre el mayor y menor de
los nmeros ingresados con un algoritmo.
Idea previa: De captulos anteriores sabemos que para presentar un
programa valido en pseudocdigo debemos tener un orden especfico
(Revisar la seccin 3.2), entonces enfocndonos en el cdigo en s,
pensemos. Se necesita recepcionar 3 nmeros que el usuario va a ingresar,
intuitivamente debemos pensar en la operacin Leer y las 3 variables en
las que vamos a almacenar estos valores. Luego viene el meollo del asunto:
Cmo de 3 nmeros voy a lograr descubrir el mayor y menor de stos?
Para resolver ste problema hay muchos caminos, pero no cree usted que
el ms prctico sera evaluar con una estructura selectiva un par de
nmeros y tomar el mayor de los 2, y compararlo con el tercero que falta?

(anlogamente para el caso del menor). Entonces, le propongo la siguiente


solucin:

Estudiando la solucin lnea por lnea tenemos: Antes de empezar el cuerpo,


se sentencian las variables a usar (todas enteras). Luego, ya en el cuerpo,
de la lnea 1 a la 6 solo se recepcionan los valores a trabajar. En la lnea 8
creamos una estructura de control selectiva de tipo si-entonces-sino,
donde la condicin a evaluar es si el nmero N1 es mayor o igual al N2; de
cumplirse esta condicin significa que el mximo, de momento, es el N1,
dado que la condicin es verdadera; pero de ser falsa significa que el N2 es
mayor al N1, por lo que dependiendo de esta condicin se almacena uno de
los dos valores en el mximo; anlogamente con el mnimo.
Luego se crea otra estructura de c.s. de tipo si-entonces (lnea 13) en la
que entra a participar el ltimo nmero, y donde la condicin es evaluar si
este es incluso mayor al mximo que hay hasta este momento; si esto
resulta verdadero, el nuevo mximo ser N3, pero sino no ocurrir nada y el
valor del mximo permanecer (es por esto que no es necesario el sino).
Anlogamente en la lnea 17, para evaluar el mnimo. Finalmente en la lnea
21, se muestran los valores que resultaron el Max y Min, luego de toda la
operacin.
Es importante comentarle a usted tambin lo que es una simulacin. Una
simulacin es un proceso que corrobora la validez de un programa, todo lo
que debe hacer es suponer valores al inicio del programa y reemplazarlos
en el procedimiento; si el resultado es el esperado, lo ms probable es que

el cdigo funcione. Intntelo usted, dele valores a N1, N2, N3 y corrobore la


validez del cdigo expuesto como solucin al problema (haga algo).
2. Cree una calculadora simple que pida ingresar dos nmeros y la
operacin elemental (+, -, *, /)

Notas tiles para este ejercicio:


i. Ntese como se usa un parmetro de tipo carcter
ii. Ntese como se usa la estructura de seleccin mltiple
iii. Ntese como en los casos, las condiciones para el switch estn en
funcin al operador op, cuyos posibles valores (+, -, *, /) estn entre
comillas () y no doble comillas (). Si bien no es obligatorio en lo ms
mnimo usar las primeras, es una buena costumbre irse adecuando al uso
de estas siempre que se trabajen con caracteres (ver por qu cuando use
C++), sin embargo esto no influenciar en su calificacin.
3. El pago de un carpintero depende de sus aos de experiencia y del tipo
de producto que produce segn la tabla:

Adems, el carpintero recibe una bonificacin segn el total de muebles


manufacturados:

Elabore un programa que calcule el pago de un carpintero al ingresar los


aos de experiencia del carpintero y la cantidad de mesas y sillas
producidas. Por ejemplo, cuando un carpintero tiene 8 aos de experiencia y
produce 3 sillas y 4 mesas, recibe 1.2x(3 x 35 + 4 x 60) soles.

Notas tiles para este ejercicio:

i. Ntese como ahora, para cada caso, se le aade un dos puntos (:), cosa
que no se hizo en el ejercicio anterior. De nuevo, no es obligatorio aadirlo,
pero demuestra orden y formalidad hacerlo, y forma una buena
predisposicin para lenguajes formales que ver mas adelante.

Captulo 5

Estructuras de control iterativas


5.1 Esquema:
A lo largo de este curso se encontrar con varias dificultades con la misma
problemtica base: Qu estoy haciendo? y qu se supone debo hacer?
Desde ste captulo, usted tendr que prestar mucha atencin a los
modelos de estructuras ya establecidas y entenderlas como herramientas
necesarias para la resolucin de problemas, y con esto, muchas veces
surgirn dificultades tipo que espero se resuelvan una a una a su debido
tiempo. De manera sencilla le voy a sentenciar las problemticas especficas
que, creo yo, te van a hacer soar con la trica casi a diario:
1. Cmo debo entender una estructura de control iterativa? (Respuesta:
Cap. 5)
2. Cundo debo retornar un valor y cundo no? (Respuesta: Cap. 7)
3. Al crear una matriz, cuentan primero las filas o las columnas?
(Respuesta: Cap. 10)
Veamos esta nueva estructura de control con (nuevamente) un problema.
Supongamos que estamos en la planta baja de un edificio que carece de
ascensor y queremos llegar a la azotea del mismo; es natural que subamos
por las escaleras un piso a la vez comenzando por el primero, luego el
segundo y as; pero solo realizaremos este proceso (el de subir un piso)
mientras no estemos en el ultimo, es decir, mientras todava halla pisos a
los que subir. Entendiendo el ejemplo y tratando que usted se pregunte
como se traduce esto a cdigo, podemos solucionar este comportamiento
de subir un piso MIENTRAS aun no hayamos llegado al ltimo con el
siguiente ejemplo:
Si (piso_actual != ultimo_piso)
Entonces (seguir_subiendo)
Sino (Detenerse)
Fin si
El smbolo != en la condicin representa una comparacin diferente a;
en el ejemplo de solucin tenemos que de estar en un piso diferente al
ltimo, entonces seguiremos subiendo, pero sino, significa que en realidad
s estamos en el ultimo, por lo que no hay necesidad de seguir subiendo, y
nos detendremos. Pero esto es material del captulo pasado, qu problema
habra de usar esto? Por qu la necesidad de definir una nueva estructura?
Bueno, pinselo as, usted est escribiendo su cdigo para resolver este
problema, y de repente nota que estas 4 lneas de cdigo funcionan, pero
solo funcionaran una vez, dado que la computadora seguir leyendo lo que
continua ms abajo; entonces, suponiendo que el edificio es de 8 pisos y
estamos en el segundo, ejecutamos es cdigo y, como no estamos en el
ltimo piso, subiremos al tercero, pero nuestro objetivo es llegar al ltimo;
por lo que tendramos que copiar y pegar estas 4 lneas nuevamente ms
abajo para as seguir subiendo y subiendo piso por piso; entonces, Cuntas
veces debemos pegar estas lneas de cdigo?Cmo saber cuntos pisos
nos faltan? Y qu tal si no sabemos cuntos pisos hay en total y solo

podremos distinguir el ltimo piso una vez estemos all? (Esta ltima
pregunta es un poco ms compleja pero tengo fe en ti) Entonces, la
alternativa de escribir estas 4 lneas de cdigo una y otra y otra vez hasta
quemar la placa madre de tu computadora no es opcin. A continuacin
empezaremos a pensar otra alternativa de solucin que nos llevar a la
definicin de esta nueva estructura de control.
Posibles factores para la solucin de este problema:
i. Debemos crear alguna especie de indicador que nos permita ir subiendo
un piso a la vez
ii. Debemos crear un cuerpo de cdigo o algn mtodo para repetir estas
lneas de cdigo que revisan si estamos en el ltimo piso o no
iii. Cuando lleguemos al objetivo, necesitamos que esta estructura deje de
funcionar
Posible solucin:
a. Qu tal si el indicador en el que pensbamos en i. debe cumplir una
condicin? Luego esta nos controlara la cantidad de veces que quiero que
el cdigo (esas 4 lneas) se ejecuten y una vez la condicin necesaria para
que esto pase sea falsa (y que esta falsedad implique haber llegado ya al
ltimo piso) la estructura deje de funcionar y se contine con el resto del
cdigo (como pensamos en iii.)
Ahora bien, a continuacin se definirn los tres tipos de estructuras de
control iterativas; resolviendo primero el problema en cuestin y al final del
esquema (antes de la resolucin de problemas) definiremos formalmente
esta estructura.
Solucin 1 (Usando la estructura de control iterativa de tipo Mientras)

Nota: Debemos recordar que significaba el asignar a una variable, su mismo


nombre con una operacin (lnea 10). Puede repasarlo en la seccin 3.2,
programa 3.1.1. Adems, este ejemplo no presenta una formalidad
adecuada del todo y solo debe verse como un ejemplo que ayude a
entender la teora; en la seccin de problemas resueltos podr ver cmo
debe presentar un programa usando esta nueva estructura.
Entendiendo el programa tenemos:

De la lnea 1 a la 3 tenemos el tpico encabezado de un programa y la


creacin de los parmetros. Luego, en el procedimiento, le asignamos el
valor de 1 al piso actual dado que empezamos a contar desde el primer
piso. Antes de continuar usted debe tener una idea vaga de qu hace esta
estructura. As como en las selectivas, es necesario evaluar una condicin
que, de ser verdadera, permitir que el cdigo que contiene se ejecute; en
pocas palabras, la computadora podr leer lo que hay dentro de la
estructura. De manera similar, esta condicin se sentencia entre parntesis
luego de crearla, pero la diferencia radica en que es imposible que la
computadora deje de leer lo que est dentro de la estructura si es
que la condicin sigue siendo verdadera. Corramos una simulacin
para que usted entienda en qu orden lee la computadora esto.

Simulacin:
1. La computadora reconoce que se asigna el valor de 1 a la variable
llamada Piso_actual
2. La computadora se topa con una estructura iterativa Mientras
3. Se lee la condicin la cual establece que el valor de Piso_actual debe
ser diferente al de Ultimo_piso. Dado que esto es una simulacin,
tomemos un valor arbitrario de 3; es decir, Ultimo_piso tiene un valor
igual a 3. Luego, regresando a la condicin entre parntesis, como
Piso_actual = 1 y Ultimo_piso=3, la condicin se puede leer como: Ser 1
diferente a 3?
Dado que esto es verdadero, la computadora procede a leer el cdigo
dentro de la estructura mientras (Esto porque la condicin de la L. 9 es
VERDADERA)
4. Se lee la lnea 10 que aumenta el valor de Piso_actual en una unidad,
ahora su valor es 2
5. Se llega a la lnea Fin mientras. Lo natural es que salga de la estructura,
contine con la lnea 12 y finalice el programa, pero esta estructura obliga a
la computadora a volver a evaluar la condicin primero.
6. Se evala la condicin por segunda vez, ahora se revisa si 2 es diferente
a 3 (Dado que el valor de Piso_actual ha aumentado en una unidad); como
esto es verdadero, se vuelve a ejecutar la lnea 10
7. Nuevamente el valor de Piso_actual aumenta en uno y se convierte en
tres (3)
8. Volvemos a llegar al final de la estructura mientras y la computadora se
ve obligada a regresar a la condicin.
9. Dado que ahora el valor de Piso_actual es 3 y el valor de Ultimo_piso
tambin lo es, la condicin (3 diferente a 3) es FALSA, luego no se ejecuta
el cdigo dentro del Mientras y la computadora se saltea hasta la lnea de
Fin mientras, continua leyendo el resto de cdigo y acaba su tarea.
Si bien es un poco complejo al principio, todo lo que debe entender de esta
estructura es que basta que la computadora lea la condicin como
verdadera, no hay nada que la saque de esta estructura hasta que se haga
falsa. Si lo ayuda este ejemplo, suponga un cuerpo de cdigo con un
Mientras cuya condicin sea (4 < 5); si cree que este Mientras se
ejecutar infinitamente, est en lo correcto, dado que estos nmeros no
varan y la condicin siempre ser verdadera. Otra ayuda que puede serle
til es el otro nombre de estas estructuras, conocidas como estructuras de
control repetitivas. En general, se crearon para realizar trabajos que la

computadora pueda leer continuamente hasta que el programador quiera,


bastando solo con evaluar una condicin cambiante a su antojo.

Solucin 2 (Usando la estructura de control iterativa de tipo Hacer


Mientras)

Ahora resolvemos el mismo problema con una estructura diferente.


Leyndolo como lo hara la computadora, tenemos: Llegando a la lnea 10
sin problemas, nos topamos con una sentencia Hacer, dado que no hay
condicin a evaluar, la computadora entra a la estructura sin ms
problemas y ejecuta el cdigo de la lnea 11, que aumenta el valor de
Piso_actual hasta 2, luego se topa con la sentencia Mientras y se evala
la condicin: 2 es diferente a n?, suponiendo el valor de n como 3 (como se
vio en la primera forma de solucin), esta condicin es verdadera y procede
a regresar a la lnea 10, se ejecuta nuevamente el aumento en una unidad
de Piso_actual y se llega otra vez a la condicin en la lnea 12. Dado que
ahora 3 diferente a 3 es una afirmacin falsa, la computadora sale de la
estructura y contina con las lneas siguientes (en este caso, el FIN). Si se
entendi el primer tipo de esta estructura, usted notar que es exactamente
lo mismo pero al revs, y con 3 factores muy importantes que difieren de la
primera:

1. La computadora entrara a una estructura Hacer el cien por ciento de


las veces, dado que no hay condicin por evaluar para poder entrar al
cdigo que contiene; la condicin estar en la lnea que presente al
Mientras y esta dictar si el cdigo se repite o no. En el caso anterior la
condicin permita entrar a la estructura; en este la condicin permite
repetirla.
2. Ntese que el primer valor con el que llega a evaluar la condicin de la
variable Piso_actual es 2, y no 1 como en el primer ejemplo. Hay que
tener en cuenta estas ligeras variaciones aritmticas cuando se quiere
pasar de una estructura Mientras a una Hacer-Mientras

Solucin 3 (Usando la estructura de control iterativa de tipo Para)


Dado que esta es la ms difcil de las tres y el eje principal de los problemas
de cualquier programador novato, es necesario que usted confe en lo que
le digo y si siente estar perdido confe en que ms adelante su duda debe
estar resuelta; esto para optimizar la asimilacin de esta parte.
Antes que nada, debe entender las partes de este tipo de estructura y se
dar cuenta que es muy similar a las primeras 2, pero con un orden
especfico. Primero variaremos y haremos un poco ms complicado el
problema, esto para poder aprovechar al mximo el ejemplo y que usted
pueda captar en su totalidad la utilidad de esta ltima parte. Ahora, el
nuevo problema ser el siguiente: Queremos empezar desde el primer piso
de un edificio de 5 y buscar piso por piso a una persona A, si no la
encontramos en el piso en el que estamos, seguiremos subiendo hasta
encontrarla. Tambin cabe la posibilidad de llegar al ltimo piso y no haberla
encontrado; as que veamos:

S-ar putea să vă placă și