Programacion Desde Cero
Programacion Desde Cero
Programacion Desde Cero
RU
..,.,.•
f'-...I,.,,·"'
' ' .
-~·.,....
, '
,
,'
,. ....
,. ,...,•' ....-
- SEGURIDAD 1
• "' / - SEGURIDAD / O-tr ERl\1E'T
- 208 PÁGINAS - 320 PÁGINAS
- ISBN 97&-987-1949-35-9 - ISBN 97&-987-1949-31-1
\¡
.·..
•~
. ~
••
... ~- "
RedUSERS
TÍTULO : Programación desde cero
AUTOR: Juan Carlos Casale
COLECCIÓN : Desde Cero
FORJv!ATO 19 x 15 cm
P AGINAS : 192
Copyright © MMXIV. Es una publicación de Fox Andina en coeclición con DALAGA S.A . Hecho el depósito que
marca la ley 11723 . Todos los derechos reseivados. Esta publicación no puede ser reproducida ni en todo
ni en parte, p or ningún medio actual o futuro sin el penniso previo y p or escrito de Fax .L>.ndina S .A . Su infrac-
ción está p enada p or las leyes 11723 y 25446 . La editorial no asume resp onsabilidad alguna p or cualquier
consecuencia derivada de la fabricación, funcionamiento y/o utilización de los servicios y productos que se
describen y/o analizan. Todas las marcas mencionadas en este libro son propiedad exclusiva de sus resp ec-
tivos dueños. Impreso en Argentina. Libro de edición argentina. Primera impresión realizada en Sevagraf,
Costa Rica 5226, Grand Bourg, Malvinas Argentinas, Pcia. de Buenos Aires en IV. MMXIV.
I SBN 978-987-1949-60-l
RedUSERS G redusers.com
Nuestros libros incluyen guías visuales, explicaciones paso a paso, recuadros
complementarios, ejercicios y todos los elementos necesarios para asegurar
un aprendizaje exitoso.
4 PRELll\ flNARES
El libro de un vistazo
Comenzaremos nuestro recorrido con una introducción al uso de pseu-
docódigo, y luego avanzaremos hacia la explicación de conceptos claves
como las variables, los operadores y las funciones. Finalmente, llevaremos
a cabo dos proyectos de puesta en práctica de la teoría aprendida.
A lo largo de este manual, p odrá en contrar una serie de recuadros que le brindarán información
complementaria: curiosidades, trucos, ideas y consejos sobre los temas tratados. Para que pueda
distinguirlos en forma más sencilla, cada recuadro está identificado con diferentes iconos:
•.,..,_,..-----
Actividades ................................................... 44
Introducción a la programación
Desarrollo de aplicaciones ............................ 1O Estructuras de programación
Interpretación de las aplic.aciones ........... 11 Estructuras de control ................................. 46
Etap as de un desarrollo ................................ 12 Estructuras condicionales ......................... 46
A) Análisis del problema ......................... 13 Estructuras repetith,as
B) Diseño de la solución ........................... 13 ,. --
o c1.c 1ca.s ................................................... :,:,
*•
Pseudocódigo
Actividades ................................................... 78
main.cpp' .:x
.!. ¡• •
2 • Creado por SharpDevelop.
3 • Usuario: john
4 • Fecha: 01/08/2012
5 • Hora : 18:00 P·•·
6 •
7 Para cambiar esta plantilla use Herramientas I Opciones I Codificación I E,
8 •¡
Introducción
En u11 1nu11do en constante innovación y descubrimiento,
es el desarrollo del software el que nos permite gestionar la
tecnología en hardware. Estos avances nos ofrecen un amplio
abanico de posibilidades laborales: podemos desempeñamos
co1no desarrolladores tanto en la industria de los videojue-
gos, como las aplicaciones web y sistemas informáticos de
organizaciones, entre otras opciones.
Si miramos hacia atrás, veremos que desde hace unos diez años
la era digital ha traído cambios revolucionarios, y que estos avan-
ces tecnológicos han afectado nuestra comunicación cotidiana.
Para dominar esta enorme variedad de dispositivos - smartphones,
computadoras, tablets, ultrabooks, etcétera- necesitamos desarro-
llar programas que nos permitan interach1ar con ellos.
Este libro está dirigido a todos aquellos que quieran iniciarse
en el mundo de la programación y conocer las bases necesarias
para crear su primer sofn-vare. A lo largo de su contenido, nos
plantearemos qué nos impulsa a comenzar tm desarrollo de apli-
caciones y qué partes lo constihlyen. Cuando conozcamos el
manejo y la confección de los programas, empezaremos a incur-
sionar en la lógica misma de la programación y podremos mo-
vemos en cualquier tipo de lenguaje.
En defmitiva, el contenido del libro no se dirige hacia tm (mi-
co camino, sino que se propone brindar las herramientas ne-
cesarias para que sea el lector quien elija sobre qué escenario
trabajar: escritorio, \oVeb, móvil, consola de videojuegos, etc.
Introducción
a la programación
A lo largo de este capítulo introductorio, conoceremos
las generalidades del desarrollo de aplicaciones y veremos
detalladamente las etapas de un proyecto.
Desarrollo de aplicaciones
En la vida cotidiana nos encontramos con distintos desarrollos de aplica-
ciones, por ejemplo, el programa que controla nuestro teléfono móvil.
El mundo en su totalidad se rige por programas desarrollados mediante algún
lenguaje de programación, y todos los elementos electrónicos, en menor o
mayor grado, contienen aplicaciones específica s para cumplir su misión.
El desarrollo de tma aplicación podría defmirse como el proceso que
se realiza para encontrar distintas soluciones posibles a una situación
problemática, 1nediante la preparación de aplicaciones informáticas.
Este proceso implica la confección, prueba y posterior búsqueda de erro-
res en un programa informático. El primer paso será efectuar la progra-
mación lógica de la aplicación, es decir, la solución lógica del problema,
que subyace a cualquier lenguaje de programación. La aplicación desa-
rrollada se corresponderá con u110 de los tipos siguientes:
A medida que la tecnologia avanza, se suma "inteligencia" a distintos dispositivos, como hela -
deras, aspiradoras y lavadoras, que incluyen comunicación por \Vi-Fi y cámaras. Esto permite
Etapas de un desarrollo
Antes de continuar con cuestiones específicas, revisemos las tareas genera-
les por considerar en el desarrollo de una aplicación, en la siguiente figura:
Errores
Errores
B) Diseño de la solución
Luego de recolectar la información, ingresamos a la etapa de prototipado
o diseño del siste111a, en la que volcamos la recolección de datos para dar un
"rostro" a las aplicaciones. En esta fase estamos en condiciones de mostrarle a
nuestro cliente una propuesta teórica acerca de cómo funcionará el proyecto.
El término software libre a veces se confunde con freeware . Sin embargo, se trata de
conceptos distintos, ya que este último no tiene como condición ser gratuito. La deno-
minación de libre se debe a que son programas de código abierto (Open Source) , y es
en ese ptmto en donde reside la esencia de su libe1i ad.
Diseño de prototipos
El uso de propotipos nos facilitará la comtmicación con el usuario de
las aplicaciones, y nos permitirá conocer sus reacciones y apreciaciones.
El propotipo actuará no como producto fmal, sino como una maqueta me-
diante la cual podremos ver en detalle cómo es el ajuste entre las necesi-
dades del cliente y las características del producto.
Para crear formularios con controles, podemos utilizar las facilidades
que nos brindan algunos IDE (lntegrated Developrnent Environrnent o entor-
no de desarrollo integrado), como por ejemplo el de Visual Studio (www.
visualstudio.co111 ). Existen otras aplicaciones de maquetación que
pueden ser útiles, como l\lockingbird (https://go111ockingbird.co111),
1
Cliente No Cliente
Opción 1
Opción 2 o Costo 1
IS1 Costo 2
Opción 3 o Costo 3
Ximprimir)
( Registrar
Elegir remera
Sí Vestirla
No
Sí Vestirla
No
Comprar
una nueva
Los diagramas de flujo son descripciones gráficas de algoritmos, que usan simbolos conecta •
Veamos las diferencias básicas que existen entre los distintos tipos
de lenguajes de programación:
e
int mainO
{
/ * Declaración de variables */
int ano,dia;
int mes;
int total;
int i;
int sol;
}
BASIC
CLS
nombre1$="George Kemeny"
valor1=500
..
nombre2$="Euaene Kurtz"
.
valor2=350
PRINT nombre! $
PRINT valorl
PRINT nombre.2$
PRINT valor2
Vimos que esta comunicación se desarrolla p or medio de un lenguaje máquina, que nos comu-
Actividades
TEST DE ..\UTOEV..\LU..\CIÓN
2 ¿Qué es un algotitmo?
Pseudocódigo
Pseudocódigo:
el lenguaje humano
Existen dos modos de representar algoritmos : mediante gráficos
(como los diagramas de flujo o los diagramas Nassi-Shneiderman) o por
medio de una sintaxis, como pseudocódigo. Las ventajas de utilizar un
pseudo-código, en vez de tm diagrama de flujo, son las siguientes:
Inicio
Inicio Acción 1
Acción 1
Acción 2
• Acc.ión 2
•
•
Acción N
•
Fin •
•
l
Acción N
Fin
"
Inicio
a girar la llave y
aso como má'Wno 3 veces
no arra~ l
mecánico
Fin
Tipos de datos
Para representar la información o las reglas que permitan cambiar fórmulas
matemáticas a expresiones válidas de computación, hay que tener en cuenta
los tipos de datos. A nivel de la máquina, se representan como una serie de
bits (dígito 1 o O) y tienen un tipo asociado en la programación. Por ej emplo,
un dato puede ser una simple letra (como b) o un valor numérico (como 35).
- Numerioos
Simples Lógicos
- Alfanuméricos
Tipos de
datos
Arreglos
- (Vectores,
matrices\
Estructurados
- Registros
(def. por el
usuario) -- - .d..rchivoo
- Apuntadores
DATOS SIMPLES
O+l =O
Falso
2>3=0=Falso
3>2= 1=Verdadero
Variables
Los nombres que representan el valor de un dato, ya sea numérico o
alfanu1nérico, son variables. En esencia, u11a variable es un espacio en
la 1nemoria de la computadora, que permite almacenar temporalmente
un dato durante la ejecución de un proceso, y cuyo contenido puede
cambiar 1nientras corre un programa.
Para utilizar una variable, debemos darle un notnbre con el cual
identificarla dentro de u11 algoritmo. Es posible crear tantas variables
co1no sean necesarias. Así, por ejetnplo, pode1nos crear:
Las constantes son declaraciones de datos a las que se les asigna un espacio en
la memoria para su almacenamiento. Estas declaraciones no cambian durante la eje-
cución del programa. Por ejemplo, podemos utilizar datos que deben tener un valor
único que no se modifique.
~
Numericas
Por su Lógicas
contenido
~
Alfanuméricas
Variables
~
De trabajo
Por su
uso Contadores
~
Acumuladores
Tabla 3. Lista comparativa de los tipos de vruiables que existen en función de su uso.
Normas de escritura
Retomando las normas generales para escribir en pseudocódigo, de-
bemos tener en cuenta cómo vamos a crear o declarar estas variables en
nuestro programa. Dado que las expresiones se asemejan al lenguaje hu-
mano, podemos utilizar la palabra "variable." para declarar una de ellas :
Th"lCIO
\Tariable Nombre
\Tariable Edad
Nombre "Juan"
Edad 20
.Tvlostrar Nombre Y Edad
FIN
Vruiable FechaNueva
Vruiable H123
Vru-iable Cantidad de Alumnos
Vru-iable Pedido.Almacen
Vruiable lcontador
Vruiable p1imer-valor N
Pru·a dru· nombres a las vruiables, debemos saber que pueden tener hasta 40 c.ru·ac-
teres, deben empezru· obligato11amente con una letra (a-z o A-Z), no pueden contener
espacios en blanco; el resto de los dígitos pueden ser números, y es posible incluir
cru·acteres especiales (como el guion o el ptmto).
Operadores
En todos los casos en que precisemos realizar desarrollos para solucionar
algún inconveniente, nos veremos involucrados en la necesidad de efectuar
operaciones de distintos tipos : suma, resta, concatenación, procesos lógicos,
etcétera. Estos elementos se relacionan de modo diferente, con valores de
una o más variables o constantes. A continuación, veremos los operadores
que podemos utilizar en el pseudocódigo para manipular valores.
Aritméticos
Los operadores aritméticos permiten hacer operaciones matemáticas
con valores de variables, y pueden usarse con datos enteros o reales.
Los tipos que podemos encontrar son:
• +: suma
• -: resta
• *: multiplicación
• 1: división
• " : potenciación
• mod : resto de la división entera
En el camino del desruTollo nos encontrru·emos con diferentes tipos de datos que
aceptan tener el valor NULO . Pueden tener referencias como NULL o null , dependien-
do del lenguaje. Esto se utiliza pru·a indicru· que el tipo de dato no tiene ningún valor
asignado y, frecuentemente, se aplica en bases de datos.
Expresión Resultado
7/ 2 3.5
12 mod 7 5
4+2 *5 14
1) " (potenciación)
2) *, ! , mod (multiplicación, división, módulo)
3) +, - (suma, resta)
Los operadores que se hallan en una misma expresión y con igual nivel
de prioridad se evalúan de izquierda a derecha. Ejemplos :
4 +2 * 4 = 12
23 * 2 / 5 = 9.2
3 + 5 * (10 - (2 + 4)) = 23
2.1 * (1 .5 + 12.3) = 2.1 * 13.8 = 28.98
Lógicos
Los operadores lógicos se utilizan para establecer relaciones entre valores
lógicos, que pueden ser el resultado de una expresión relacional. Por lo gene-
ral, pueden tomar dos valores para indicar su estado : 1 (Verdadero o True ) y O
(Falso o False). Los tipos de operadores lógicos que podemos encontrar son:
• Al\iD : y
e OR : O
.,
• NOT : negac1on, no
Figura 5.
En este ejemplo de operadores lógicos,
T significa verdadero YF, falso·
Las vruiables son a=l O, b=20 y c=30.
Podemos ver que tanto la primera expresión como la segunda son ver-
daderas y, por eso, el resl1ltado fmal también lo es. Las posibles combina-
ciones lógicas que encontraremos con los diferentes operadores se mues-
tran en las siguientes tablas.
El operador .41\ITI cumple una condición y la otra. Supongamos que crea-
mos las variables ED.l ill y ALTUR.4 y, en la primera parte, preglmtamos en
pseudocódigo si ED.l ill es mayor que 18 y ALTURA es menor que 1.70.
Esta expresión devolverá el resultado verdadero solo si ambas son verdaderas.
OPERADOR AND
OPERADOROR
Tabla 5. Operador oR: el resultado solo será falso si ambas condiciones son falsas.
PRIORIDADES DE RESOLUCIÓN
Relacionales
Se utilizan para establecer una relación entre dos valores. Al co1npa-
rar estos valores entre sí, se produce un resultado verdadero o falso .
Los operadores relacionales comparan valores del mismo tipo, numéricos
o cadenas. Tienen igual nivel de prioridad en su evaluación.
OPERADORES RELACIONALES
Tabla 7. Los operadores relacionales tienen menor prioridad que los aritméticos.
• a<b<c
• T > 5 < 30: no es lógico porque tienen diferentes operandos.
Asignación de valores
Como hemos visto anteriormente, para que una variable tome
un valor, debemos asigi1árselo en pseudocódigo por medio de = o J3 .
La cooperación de asignación le permite a la computadora evaluar una expre-
sión matemática y almacenar el resultado final en una determinada variable.
La sintaxis que podemos utilizar para la asignación es la siguiente:
Nombre_de_la_ vruiable expresión o vruiable
ASIGNACIÓN A VARIABLES
· · · · T CARACTIRIS O
T ASIGNAOONARIThlETICA T ASIGNAOON LOGICA CADENA DE CARACTIRIS
Variable varl, var2, Variable varl, var2, Variable vCad, car tipo texto
var3 tipo numérico var3 tipo lógico
~ ASIGNACIÓN DESTRUCTIVA
~
Cuando decimos que toda asignación es destn1ctiva, significa que el valor previo que
tiene la vruiable se pierde y se reemplaza por el nuevo valor asignado. Así, cuando
se ejecuta la secuencia B 25 / B 100 / B 77, el valor final que toma B es 77,
ya que los valores 25 y 100 son destntidos.
' • •
• -
' ' .. - F.n r-.:thP.1:::iéln· Pm p n:::ir r.n n 1:::i p :::il:::ihr :::i
.AJ.GOR!Th10 seguida por una descripción
ade.c uada al problema a resolver.
LEER Cantidad.Horas
- necesarias para resolver problema,
identificindoias oon un nombre
Sueldo <- Cantidad.Horas'CostoHora v detenninando sus tioos de datos.
Dicha instrucción le pide al usuario que ingrese un valor que luego será
asignado a la variable vru·Numero .
Esto representa la lectura de tres valores que se van a almacenar en las varia-
bles Edad, Peso y Sexo. Con el código anterior, hemos capturado información para
nuestro programa utilizando pseudocódigo. Si deseamos mostrar un resultado
en tm mensaje, usamos la instrucción IMPRIMIR o :tvIOSTR.<\R . Por ejemplo :
IMPRIMIR"Hola" // MOSTRAR"Hola"
B7
Promedio fi (A + B) / 2
I:tv1PRI:tv1IR"El valor del promedio es:", Promedio
//MOSTRAR"El valor del promedio es:", Promedio
Ingrese su edad ?
Hasta aquí hemos visto la manera de declarar y utilizar las variables con
sus tipos de datos, el uso de los diferentes operadores, y cómo tomar los
valores que ingresa el usuario y mostrar la información. A continuación, en el
capítulo 3 , aprenderemos a realizar la parte "inteligente", que nos permitirá
resolver diferentes sih1aciones que puedan presentarse en la programación.
Actividades
TEST DE ..\UTOEV..\LU..\CIÓN
Estructuras de
.,
programac1on
El funcionamiento del equipo se basa en la ejecución de los comandos
a medida que se va leyendo el archivo (de arriba hacia abajo), hasta
alcanzar un comando que lo dirija hacia una ubicación específica del
progran1a. Para que este trabajo se realice correctan1ente, es in1portante
que la infom1ación esté organizada y estn1ctlrrada de fom1a adecuada.
Estructuras de control
Las estructuras de control son formas de trabaj o que, mediante el manej o
de variables, permiten realizar procesos específicos para solucionar proble-
mas. Las que esh1vimos utilizando anteriormente son estructuras secuen-
ciales , es decir, instrucciones en orden, que se suceden una a otra.
- Asignación
Secuenciales Entrada
- Salida
- Simp les
Estructuras
Condicionales Dobles
Algorítmicas
- lvlúltip les
- Para
- Repita hasta
Estructuras condicionales
En las estruchlras condicionales se compara una variable con otros
valores para que, sobre la base del resultado, se siga un curso de acción
dentro del programa. La comparación puede hacerse con otra variable o
con una constante, según sea necesario. Existen tres subtipos básicos:
simples , dobles y múltiples .
Si <condición> entonces
Instrucción/es
Fin Si
Th"lCIO
, , ariable edad tipo numero
edad 15
/!Podemos utilizar LEER edad si deseamos
que un usuario ingrese por teclado el valor
Si edad >= 18 entonces
l\{OSTRAR "Es mayor"
Fin Si
FIN
Th"lCIO
, , ariable alturaA, alturaB tipo real
alturaA 1.5
alturaB 1.9
/!Podemos utilizar LEER alturaA, alturaB si deseamos
que un usuario ingrese por teclado los valores
Si alturaA >= alturaB ento nces
iVIOSTRAR "L a pe.rson a m ás alta es A"
Fin Si
FIN
Th"lCIO
Variable nu1neroA, nu1ner0B tipo nu1nero
numeroA 15
numeroB 20
/!Podemos utilizar LEER numeroA, numeroB si deseamos
que un usuario ingrese por teclado los valores
Si (numeroA + numero B) > 50 ento nces
iVIOSTR;\R "El valo r es ALTO"
Fin Si
FIN
Si <condición> entonces
Instrucción/es
Sino
Instrucción/es
Fin Si
Th"lCIO
, , ariable edad tipo numero
edad 15
Si edad >= 18 entonces
l\{OSTRAR "Es mayor de edad"
Sino
l\{OSTRAR "Es menor de edad"
Fin Si
FIN
Th""ICIO
, , aria ble alturaA, alturaB tipo real
alturaA 1.5
alturaB 1.9
Si alturaA >= alturaB entonces
iVIOSTRAR "L a pe.rson a m ás alta es A"
Sino
iVIOSTRAR "L a person a m ás alta es B"
Fin Si
FIN
Th""ICIO
Variable nu1neroA, nu1ner0B tipo nu1nero
numeroA 15
numeroB 20
/!Podemos utilizar LEER numeroA, numeroB
si deseamos que un usuario ingrese por teclado los valores
Si (nume.roA + nume.ro B) > 50 e.ntonces
iVIOSTR;\R "El valor es ALTO"
Sino
iVIOSTRAR "El valor es BAJO"
Fin Si
FIN
Th"lCIO
Variable Num tipo numero O
ESCRIBIR "Escriba un nú1n ero: "
LEER Num
Si Num >= O e.ntonce.s
l\{OSTRAR "Es positivo"
Sino
.. .
l\{OSTRAR "Es neaativo"
Fin S i
FIN
Th"lCIO
Variable Num tipo numero O
ESCRIBIR "Escriba un nú1n ero: "
LEER Num
S i num = int( num / 2 ) * 2 entonces
l\'10 STRAR "Es par"
Sino
l\{OSTRAR "Es impar"
Fin S i
FIN
Si <condición> entonces
Instrucción/es
Sino
Si <condición> entonces
Instrucción/es
Sino
Si <condición> entonces
Instrucción/es
Sino
... y así sucesivamente ...
Fin Si
Fin Si
Fin Si
Th"lCIO
Variable Altura tipo nu1nero
ESCRIBIR "¿Cuál es tu altura?:"
LEER Altura
Si Altura <= 150 entonces
l\iIOSTRAR "Persona de altura baj a"
Sino
Si Altura <= 170 entonces
l\lOSTRAR "Persona de altura media"
Sino
Si Altura > 170 e.ntonces
l\iIOSTRAR "Persona alta"
Fin S i
Fin S i
Fin S i
FIN
Th"ICIO
Variable nu1n tipo nu1nero
ESCRIBIR "Ingre.se un valor e.ntre 1 y 5: "
LEERnum
En_Caso_De num haga
Caso 1: l\lOSTRAR " Uno"
Caso 2: l\lOSTRAR " Dos"
Caso 3: l\lOSTRAR " Tre.s"
Caso 4: l\lOSTRAR " Cuatro"
Caso 5: l\llOSTRAR " Cinco"
Sino
l\lOSTRAR "No ingresó un valor compre.ndido e.ntre 1 y 5"
Fin Caso
FIN
Th-iCIO
Variable nu1n tipo nu1nero
ESCRIBIR " Ingrese un valor entre 1 y 7: "
LEERnum
En_Caso_De num haga
Caso 1: l\lOSTRAR " Lune.s"
Caso 2: l\lOSTRAR "J\llartes"
Caso 3: l\lOSTRAR "J\ll iércole.s"
Caso 4: l\lOSTRAR " Jueves"
Caso 5: l\lIOSTRAR "Viernes"
Caso 6: l\llOSTRAR "Sábado"
Caso 7: l\lOSTRAR " Domingo"
Sino
l\lOSTRAR "No ingresó un valor comprendido entre 1 y 7"
Fin Caso
FIN
Th"lCIO
Variable contador tipo numero O
Para contador 1 hasta 10 paso 1 hacer
iVIOSTR;\R Contado r
Fin Para
FIN
Th"lCIO
Variable i tipo numero O
Variable suma tipo numero O
Variable num tipo numero O
ESCRIBIR ("Ingrese 10 núme.ro que de.sea sumar")
Para i 1 hasta 10 hacer
ESCRIBIR ("logre.se un núme.ro: ")
LEERnum
suma suma+num
//En este caso estamos utilizando un acumulador
Fin Para
iVIOSTRAR ("El resultado es", suma)
FIN
Th'lCIO
, , aria ble contado r tipo numero
contador 1
iVIientras Que contado r < 21 h acer
iVIOSTR;\R contador
contador contador + 1
Fin iVIientras
FIN
En p seudocódigo encontramos diferentes palabras que expresan la misma acción . Por ejem -
plo, para mostrar datos podemos utilizar: MOSTRAR, ESCRIBIR , IMPR.IivIIR o PRil\l'f.
En el caso de querer obtener datos, usamos PEDIR o LEER· Es recomendable emplear una
sinta,"<is homogénea y hacer uso de una sola palabra para la acción que deseamos expresar.
Por otra parte, esta estructura permite realizar el proceso cuando menos
una vez, ya que la condición se evalúa al final; en tanto que, con Iv1ientras Que ,
puede que nunca llegue a entrar si la condición no se cumple desde un prin-
cipio. La forma de la estructura Repetir Hasta es la siguiente:
Repetir
Instrucción/es 1 - Acción 1
Instrucci ón/es N - Acci ón N
H asta que <condición>
Th"lCIO
Variable nu1n tipo nu1nero
ESCRIBIR "Escriba un numero de 1 a 5"
Repetir
LEERnum
Instrucción/es N - Acción N
Hasta que (num >= 1) Y (num < 5)
FIN
Datos estructurados
En los casos anteriores, utilizamos datos simples que representaban un
número, tm carácter o tma cadena/texto. No obstante, a veces necesitamos
procesar una colección de valores que estén relacionados entre sí por algún
método; por ej emplo : una lista de precios, los meses del año, cotizaciones a lo
Vectores
Un vector es un conjunto de elementos del mismo tipo de dato que
comparten tm nombre com(m. Podemos homologarlo a tma variable
que puede almacenar más de tm valor al mismo tiempo. Se trata de tm
conjunto ordenado por elementos de posición (de Oa N) y homogéneo,
porque sus elementos son todos del mismo tipo de dato. Los vectores
también reciben el nombre de tablas, listas o arrays, ya que gráfica-
1nente se representan como u11a tabla. Un vector de tipo numérico con
u11a dimensión de cinco espacios podría ser el siguiente:
5 20 -1 10 36
vecA 5 20 -1 10 36
l 2 3 4 5
vecA 5 20 .¡ 10 36
l 2 3 4 5
No olvidemos que el vector siempre debe ser dimensionado. Esto significa que debemos in-
dicarle a la computadora que reseive los espacios de memoria necesarios para los elemen-
tos del vector. En algunos lenguajes, si dejamos el vector sin valores, no podremos hacer
uso de él, y eso traerá serios inconvenientes. Por ejemplo: Variable vecX Otipo nume ro .
Th"lCIO
, , aria ble vecA (5) tipo numero
vecA(l) 5
vecA(2) 20
vecA(3) -1
vecA(4) 10
vecA(5) 36
FIN
Th"lCIO
' 'ariable vecEje.mplo (30) tipo numero
Variable i tipo numero O
Para i 1 hasta 30 hacer
vecEjemplo(i) i
Fin Para
l\iIOSTRAR "' 'ector
. ..
caraado"
FIN
Th""ICIO
V ariable i, num tipo numero O
ESCRIBIR "logre.se la cantidad de valore.s: ", num
' 'ariable vecEjemplo (num) tipo numero
P ara i 1 hasta num hacer
vecEjemplo(i) i
Fin Para
l\lOSTRAR "''ector
. ..
caraado"
FIN
Th""ICIO
Variable i, suma, promedio, dimensión, numero tipo numero O
ESCRIBIR "Escriba la cantidad de valores a calcular:", dimensión
' 'ariable vecCalculo(dime.nsión) tipo numero
H acer i 1 hast a dimensión
ESCRIBIR "Ingrese un núme.ro: ", numero
vecCalculo(i) numero
Fin Hacer
//Con esta estructura cargamos el vector de valores
-
>> www. red users .com
PROGRAt\ 1ACION DESDE CERO 63
Matrices
Las matrices son estructuras que contienen datos homogéneos, es de-
cir, del mismo tipo. Así como antes utilizamos tm indicador o índice para
posicionarnos y almacenar algún valor, en el caso de las matrices utiliza-
remos dos índices que determinarán la posición de fila y columna.
Al igual que un vector, una matriz debe tener un nombre. La sintaxis es:
matEj emplo
1 ? 3 4
1 Lwies 5000
2
3 Fuente
'
Ultimo
4
matEj emplo
Th"lCIO
Variable ifila, icolumna tipo numero O
, , ariable varPalabra tipo texto
' ' ariable m atEje.mplo (4, 4) tipo texto
P ara ifila 1 hasta 4 hacer
P ara icolumna 1 hasta 4 hacer
ESCRIBIR "Ing rese un v alo r: "
matEj emplo (ifila, icolumna) varP alabra
Fin Para
Fin Para
l\lIOSTRAR "l\latriz
. ..
caraada"
FIN
1 2 3 4
1 LU!íe-s- -~ - -
2 -
3 •
--
4 ::'!tima-
matEjemplo
Th"lCIO
Variable ifila, icolumna tipo numero O
, , ariable varPalabra tipo texto
ESCRIBIR "Ingres e la cantidad de filas: ", ifila
ESCRIBIR "Ingrese la cantidad de columnas: ", icolumna
, , ariable matEje.mplo (ifila, icolumna) tipo texto
Para icolumna 1 hasta icolumna hacer
Para ifila 1 hasta ifila hacer
ESCRIBIR "Ingrese un v alor: "
matEj emplo (ifila, icolumna) varPalabra
Fin Para
Fin Para
l\lOSTRAR "1"1atriz . ..
caraada"
FIN
Th"lCIO
Variable ifila, icolumna tipo numero O
' 'ariable matEje.mplo (4, 4) tipo texto
Para ifila 1 hasta 4 hacer
Para icolumna 1 hasta 4 hacer
J\IIOSTRAR "El valor es: ", matEjemplo(ifila, icolumna)
Fin Para
Fin Para
FIN
Th"lCIO
Variable ifila, icolumna tipo numero O
, , ariable matA (3, 4) tipo numero
, , ariable matB (3, 4) tipo numero
, , ariable matC (3, 4) tipo numero
//Carga de matriz A
matA(l,1) 10
matA(l,2) 8
matA(l,3) 3
matA(l,4) O
matA(2,1) 7
matA(2,2) -3
matA(2,3) 33
matA(2,4) 45
matA(3,1) 9
matA(3,2) 15
matA(3,3) 71
matA(3,4) 29
//Carga de matriz B
matB(l,1) 1
matB(l,2) 6
matB(l,3) 9
matB(l,4) 69
matB(2,1) 14
matB(2,2) 22
matB(2,3) 56
matB(2,4) 7
matB(3,1) 3
matB(3,2) 5
matB(3,3) 80
matB(3,4) 1
//Cálculo y asignación a matriz C
Para ifila 1 hasta 3 hacer
Para icolumna 1 hasta 4 hacer
matC(ifila, icolumna) mat..\
(ifila, icolumna) + matB(ifila, icolumna)
Fin Para
Fin Para
FIN
Subalgoritmos
Cuando comencemos a practicar el desarrollo de aplicaciones, en nuestro
algoritmo habrá cálculos o rutinas que pueden repetirse varias veces. En los
próximos párrafos aprenderemos a simplificar la repetición de estos procesos.
En general, un proble1na co1nplejo puede resolverse de 1nanera
eficiente si se divide en procesos pequeños. Esto implica que el proble-
ma original será resl1elto por medio de varios módulos, cada lmo de los
cuales se encargará de solucionar algu11a parte determinada. Esos módu-
los se conocen con el nombre de subalgoritmos , es decir, algoritmos
cuya fu11ción es resolver u11 subproblema.
Los subalgoritlnos se escriben solo una vez y, luego, se puede hacer
referencia a ellos desde diferentes pu11tos de un pseudocódigo. De esta
forma, se reutiliza el código y se evita la duplicación de procesos.
Funciones
Desde el punto de vista matemático, una función es una expresión
que toma tmo o más valores llamados argumentos y produce tm resultado
único. Algtmos ejemplos de fLmciones matemáticas son los logaritmos y
las fLmciones trigonométricas (seno, coseno, etcétera).
En el ambiente de la programación de algoritmos, las funciones tienen
exactamente el mismo significado. Se realizan ciertos cálculos con una o más
variables de entrada, y se produce un único resultado, que podrá ser numé-
rico, alfanumérico o lógico. Es decir, una función puede devolver como resul-
tado una cadena, un número o un valor de tipo lógico. Esto hace que, en los
lenguaj es de programación, debamos especificar el tipo de la función.
Th"lCIO
variable numero_mes tipo numero
variable nombre_me.s tipo texto
ESCRIBIR " Ingrese el número del mes y Je mostraremos el nombre del mes"
ESCRIBIR " Debe ingre.sar un núme.ro e.ntre 1 y 12: ", numero_me.s
Si numero mes>12 o numero mes<l entonces
l\lOSTRAR " Debe ingresar un valor e.ntre 1 y 12"
Sino
nombre_mes llamar l\1ES(numero_mes)
l\lOSTRAR "El mes correspondiente es: ", nombre_mes
FinSi
FIN
Caso 9:
Nombre= "Setiembre"
Caso 10:
Nombre= " Octubre"
Caso 11:
Nombre= "Noviembre"
Caso 12:
Nombre= "Diciembre"
Fin Según
l\'IES nombre
//Indicamos a la función que devuelva el resultado
al algoritmo principal la variable nombre
FINFUNCION
:tvlES no1nbre
Sintaxis : nombre funcion resultado
Th"lCIO
variable num, resultado tipo numero O
ESCRIBIR "Ingrese un número :", num
iVIientras num < = O
iVIOSTR;\R "Ingrese un nú1nero positivo"
ESCRIBIR "logre.se un número :", num
Fin iVIientras
resultado RAIZ(num)
iVIOSTRAR "L a raíz cuadrada es:", resultado
FIN
Th"lCIO
variable numero l , numero2, numero3 tipo numero O
variable prom tipo numero O
ESCRIBIR "Ingrese tres valores:", numero!, numero2, numero3
prom PROl\lIEDIO(numerol, numero2, numero3)
lVIOSTRAR "El promedio es:", prom
FIN
Hasta aquí hemos visto que las fLmciones se utilizan para devolver como
resultado un valor. En ocasiones, necesitaremos devolver más de un resulta-
do o, también, ejecutar las mismas líneas de código varias veces en tm algo-
ritmo, como una ordenación. En estas situaciones, la fLmción no es apropia-
da, y utilizaremos los procedi111ientos , también llamados subrutinas .
Procedimientos
Un procedi111iento es un conjunto de sentencias o instrucciones que
realizan tma determinada tarea y que pueden ser ejecutados desde más de
un punto del programa principal. Este tiene una llamada y, cuando se ej ecuta
Nombre_procedimiento(parámetros)
Nombre_procedimientoO
Th"lCIO
variable numero..\, numeroB tipo numero O
ESCRIBIR " Ingrese los valores a calcular : ", numeroA,
nu1ner0B D1""1S10:K (nu1neroA, nu1ner0B, P, Q)
iVIOSTR;\R P , Q
FIN
Actividades
TEST DE ..\UTOEV..\LU..\CIÓN
EJERCICIOS PRÁCTICOS
1 Haga tm pseudocódigo que imprima todos los números naturales que hay,
desde la tmidad hasta tm valor indicado por teclado.
Del pseudocódigo
al lenguaje
de programación
A lo largo de los capítulos anteriores recorrimos conceptos,
teorías y prácticas para el desarrollo de aplicaciones informáticas.
Aquí co1ne112aremos a ver có1no plasmar todo el conocimiento
adquirido sobre pseudocódigo en el código fuente de un lenguaje.
Lenguajes de programación
En los capítulos siguientes nos adentrare1nos en dos lenguajes
de programación, Visual Basic y C++, y comenzaremos a aplicarles lo
aprendido sobre pseudocódigo, para dar así nuestros prüneros pasos
en un código fuente para el desarrollo de aplicaciones.
Los lenguajes de programación son defmidos como tm idio111a
artificial diseñado para expresar cómputos, que pueden ser llevados
a cabo por equipos electrónicos, tales como computadoras, tablets,
smartphones, etcétera. El uso de este lenguaje máquina, que vimos
con anterioridad, nos permitirá crear programas o aplicaciones que
controlen el comportamiento fisico y lógico de un dispositivo
electrónico (expresados en algoritmos de precisión) y, además, establecer
la comtmicación humano-máquina.
La escritura de un lenguaje de programación está formada por un con-
jtmto de símbolos, reglas sintácticas y reglas semánticas, que defmen la
estn1ctlira y el significado de sus elementos y expresiones, tal como las
reglas ortográficas lo hacen con el lenguaje humano.
Tipos de lenguajes
Existen lenguajes sólidos, duros, visuales, amigables y específicos
en la programación de código fuente. Vea1nos la variedad que hay
y cuáles son sus diferencias:
La palabra baj o no implica que el lenguaje sea inferior a un lenguaje de alto nivel, sino que se
refiere a la reducida abstracció n entre el lenguaj e y el hardware. Estos lenguaj es se utilizan
para programar controladores de dispositivos, tales como placas de video, impresoras u otros.
Interfaces gráficas
Las interfaces gráficas nos permiten comunicamos con u11 disposi-
tivo. Gracias a la evolución de las interfaces de comunicación usuario-
1náquina, existen 1nedios gráficos para la interacción con los diferentes
co1nponentes de un equipo (por ejemplo, el manejo de impresora,
1nouse, monitor, etcétera).
En la confección de interfaces gráficas hay ciertas normas por cu1n-
plir, y los componentes utilizados en una interfaz tienen u11a nomencla-
tura detenninada. Vea1nos en la siguiente tabla una lista de los contro-
les que podemos encontrar en distintos lenguajes de programación:
T TIPO T COl\lPONENTE
_,__
l _ _ _ __, • '•
·-
...•-=• - •••
-
~
' ~ll.i Jr.
• h""'ll ~---
... u,,...-.
\ ....
l!l ..:i,-...
11! ~
1--: ,~rito.
"'.! COl'8kh
- 011t1:T~W
A uW
4 l_.uW
..-,.......
::· ......,_
•• M,u.ff. . . . .
.licóM•~ c_.,..06fl
---
c.,.,.,..,,.f«lt,..<....,
~°"._..,,
WJ ........
., ,.....
'°,4 . _ , ...... l.11111*-'"'
o o- , .......... 10- . .
• a 11
Pseudocódigo y lenguajes
de programación
Las nomenclahrras hacen referencia a tma lista de nombres de alg(m
tipo de objetos. En programación se utilizan para reglamentar abrevia-
ciones que hagan referencia a componentes y, así, saber a qué estamos
llamando desde el código fuente; por ejemplo, si estamos haciendo refe-
rencia a tm botón o a tma caja de texto con su nombre particular.
NOMENCLATURA DE CONTROLES
A lo largo de este capitulo hemos visto las generalidades del traspaso de pseudocódi-
go a 1m lenguaje de programación . Conocimos con detalle los tipos de lenguajes que
existen y vimos cómo están compuestas las interfaces gráficas.
Actividades
TEST DE ..\UTOEV..\LU..\CIÓN
Proyecto en
Microsoft Visual Basic
A continuación, comenzaremos a aplicar, en Visual Basic,
los conocimientos que fuimos adquiriendo. Utilizaremos el entorno
de desarrollo IDE (Integrated Development Environment) de Visual
Studio 2010, versión Visual Basic Express.
Creación de proyectos
Para co1nenzar debemos conocer qué es un proyecto o solución en
Visual Basic. Un proyecto está compuesto por u11 conju11to de carpetas
y archivos que nos permitirán armar una aplicación, en donde se abna-
cenan códigos fuente, librerías, interfaces, etcétera.
Para crearlo debemos tener en cuenta el siguiente paso a paso , que
to1nare1nos como etapa principal para todos los instructivos que pre-
sentaremos a lo largo del capítulo.
J--
~ Mw.o fl'fO)'l(-10. tq.......
' ' u
Comenz.,r
Las DLL (Dynamic-Link Library) son archivos que tienen en su estructura un código ejecutable
--
.....
,, .:_,
1il •
·--- ...,,_
'~ --·••11
_111..,._ ... _,,~
~ , . , . . t N,.IIM 1pkM1• 11(W1
--.
0.,.,tt.,l'i"IIJU
o......,. .. ~
...,,.._ ..,...,.
l11tft,..
: : ;i --
.............., ;s -...-
~ •im~lud~
c..i.,u,._,.ltOW~fflOJ [.~•no,.
!;,... , 11 c..,...
m 1
-
T.... 1Ml•.....- •....... f -
.. c......-.c-
~
@
. ,... ' • •
., ............
B c.......
i;
c.-... •
""I
A
A
....
o...,-,c..
,......
,._
... ......
·--
•!
~
~
-~,..,.,..
,. ---
; 11
"" ............ t.'ª""
,.._ ........
---
~-
- r..,,;,_,.,.,....,_,..I..,...
e
•
........ ,
...,._
•A
• -·-
,.....
·,'- '""•
1-•-
~~
...__
. '.
~ """"-~•
= e,"'-w
,..,,,_
.,r_
~
- -
~.....
l~ +•~-• ,..,...,,, .l:
"':c!:::
..•::
· .=:
• .:::
'-:::
....
Atdfot.._w ¡t
c.... •
:J______________J.:..:'·:•:'·:- :.:·:·:·:=:-: ._...J
~
.._,, ttCMw,,i-.,.._
•
>> www. red users .com
PROGRAt\1ACION DESDE CERO 93
.CSPROJ Proyecto en C# .
Tabla 1. Archivos generados por cada proyecto que creemos en Visual Studio.
• .. • • p
G,.., »....,,u,r,c:U :...1
• U:llot«H • • ,,. ..~ -if.~-:•.
"' ,-,,A-t•Apiuc•.. n M nun11
''""
r, J>Pi•
~ lm•9W1ec
lJ ,...,om,.,t-',bcioll,iln M) NJ.:04.:0 a t.1 croco•
Ji Mu,ru ~ ~ ",,...1 :,t
av.... ~.-t.C:.ft-"'k.e<IOf\Jl,IIO M.:t)~9a.
4 G1upott1dt1Qq•
f(ff!llc
.. {quipo
lt Dfl(O foc.11101
t..t D!KO locfll (0.1
.,1 UniCLfddeDWlN(Ck)
't NaoScovt
l"I, •••
P•MI Ck: concrct •
_. PtPf.ltffl de: tt<<lfJ(
1)·4,._DW.tJU
""
- . ~-----'----------'
Variables
Tal como vimos en el capítulo 2 , las variables son uno de los elementos
más importantes en el desarrollo de programas y reciben el nombre de iden-
tificadores . Antes de continuar con su declaración, debemos conocer cuáles
son los tipos de datos que podemos utilizar en aplicaciones de Visual Basic.
·- -
•..e
_
·---
C.•
-
"'·...~-
~·. ··~
·-
........
-
.,a--
•- - ~
t. --;-
·--
.~-
m-
-
.. ·--
-- -., .---
--..-,.... -...-·
,_.,..,.._
_---_
o-
,'-
·--
e ••
-.
,-.
uu
,_
·-__
,, ·- '~ .,_ --
'•
·--
:
,._
,,.n..,,
JI
•
>> www. red users .com
PROGRA1\1ACION DESDE CERO 99
•
Dentro del código, cree las variables del proyecto que se ve en la imagen.
03 __. _ ...
- ----.
· --- ·- -.....
--
,
.o,-....-
4 •- ...
'
' . - -· ,_ ..
.
.,- ......
.
·--
"
·--
-
'
.....
...-
'
- - -
-- .....
.. .
- --.. ~ I •••
-...-.
......
.....
... .,._ ..,._
·-
'
·--~
......
----•VM--._._
11 .,, .,. • ·-
,_
••
... -- -
• •
...
~l-
- · •-
,> j .... ._ _ _ ..,._
•~
-
..__...
u-
' . -
a.-....,_
,,..11, <hu
OUI Vat'Valw ,U I • ~
..,.lvi,u s.. ,.,..l_'--(M:tWc'f As jylu ti u ... , . . . , ~ ...
........
..... Hltrv4 • t,H
v.....,11.,. •
1~
, __
t
,
,_
l wu Ce 11u
, •
,, .,...clll
,, Mor ..,,....oo,
•
www. redusers.com <<
100 5. PROYECTO EN i\flCROSOFT VISUAL BASIC
.. -- ---
... _.__
_- _,,__ __
---
•;
.,,
----
11
<-••---
--
u
•-·
.• _,_
·-
. ·-
·-· 1:>•- .1• - · -- - - - -
-·-
--
-·----
·-
\,.
'-
·- ·- - - - e - .....
--
- - --- ·----
- -"I •
···-- _
,.,,. '''"'
otf'l'
.,..,
"
*º
,.
·---
........ 1 ..__..,..,, __.,.
·-·-. -•---p,a -~
~
1
1.......... .(
"
... e-. ..... ....
,_'lf..,
--...,...,......,__ _____
_...,._,..__..,_ ..... _... .,..,. ..
O
Ubucio11: C:\UtlmJQUl•\Datk:Op
var,7alor=150
l\il essageBox.Sho,v("El valor de la variable es: " & var,7alor)
Una de las propiedades frecuentes en los controles de Visual Studio es Text . Puede especi-
ficar o deternúnar el texto mostrado en un control, en especial, los de tipo Lab el YTextBox.
Asi también, en los Form de Windows Forms determina la barra de título correspondiente.
La instrucción MessageBox como clase - es decir, que podemos utilizar en cualquier len-
guaje que emplee el framework J\1ET- muestra un cuadro de mensaje que puede contener
texto, botones y símbolos, para informar e instruir al usuario de una aplicación.
• .....
........
fllli (bH
.... ..
........... .......,........... .,.,....... .. .....,......,.,,.._UI Nla..
..... ....... ., ...
. .....c...~ ..... 1~,r..t-•.-ll:1i.,..,..,.......11~ ....... CIIIIII!,,
......
,
.... 1 --·!~
-
....,.. .. ..
~ :
.... ..... .............. Jc..t . . .
• •
____,.
!fil _ . _, 11 ~ • ....._ i... - , !\, r,. & lf' ,_ !JI _...._. • ~...,., • lnW • I• lf\ Tu
,•-, ,..,r ,~u , .. ~ M
Operadores
Veamos ahora cómo es el trabajo con operadores en Visual Basic.
1
1
a,.,....,._........ 1 ¡
1 A<tph r
1 ::
Lógicos
Los operadores lógicos permiten conectar expresiones y determinar su
veracidad o falsedad. Producen resultados de tipo ,,erdadero o falso.
En Visual Basic, son And ( conjunción lógica), Or ( disyunción lógica) y Not (nega-
ción). En el ej emplo que veremos a continuación, vamos a comparar variables
booleanas (que almacenan verdadero o falso) y utilizar las operaciones lógi-
ca s para ver los resultados que podemos obtener:
Relacionales
Los operadores de relación son utilizados para realizar comparacio-
nes entre expresiones. Visual Basic provee los siguientes: = (igualdad),
<> (desigualdad), < (menor que), > (mayor que), <= (menor o igual que),
>= (mayor o igual que).
Estos operadores son usados en las estructuras de control de un programa,
y los veremos en el próximo tema por desarrollar; pero antes, es importante
conocer los signos de concatenación. Antes hemos defmido concatenar
como la acción de unir dos expresiones alfanuméricas en un solo elemento.
Por ej emplo, en Visual Basic utilizaremos :
If a = b Then
•••
End If
d = e + 47
Estructuras de programación
Como vimos en pseudocódigo, para realizar un algoritmo que resuelva
tma sih1ación dada debemos utilizar estn1ch1ras de control que nos permitan
preguntar por una condición o realizar determinadas acciones repetidas
veces. A continuación, veremos su aplicación en el código fuente.
Estructuras de control
Las estn1ch1ras de operación de programas constih1yen tm grupo de
formas de trabajo que, mediante el manejo de variables, permiten realizar
ciertos procesos específicos para solucionar los problemas.
Estructuras condicionales
Las estructuras condicionales comparan una variable con otros valores
para que, sobre la base del resultado de esta comparación, se siga un curso
de acción dentro del programa. En Visual Basic vamos a utilizar las siguientes
palabras reservadas para estructuras condicionales : If-Then-End If y Select Case.
If True Then
End If
If condición Then
Instrucci ón/es
Else
Instrucci ón/es
End If
If condición then
Instrucción/es
Else
If condición then
Instrucción/es
Else
If condición then
Instrucción/es
Else
Instrucción/es
End If
End If
End If
Para que vayamos expe1imentando las teclas rápidas del lenguaje de programa-
ción, revisemos un listado que nos será muy útil: F2 (exantinador de objetos), F5
(ejecuta el proyecto), F8 (ejecuta sentencia a sentencia), F9 (punto de depuración),
CTRL+El\1TER (detiene la ejecución de tm programa).
varlnte.n ,alo = 66
If varlnten ,alo >=O AND varlnten ,alo <=20 then
l\lessageBox.Sho,v("'' alor Bajo")
Else
If varlnten ,alo >=21 AND varlnten ,alo <=50 then
J\ll essageBox.Sho,v("'' alor l\ledio")
Else
If varlnten ,alo >=51 AND varlnten ,alo <=80 then
J\ll essageBox.Sho,v("'' alor Alto")
Else
J\ll essageBox.Sho,v("'' alor Excesivo")
End If
End If
End If
Otra de las estructuras que podemos utilizar para realizar este tipo de
condicionales múltiples es el select case, que en pseudocódigo vimos como
según sea. Veamos la sintaxis en ambos :
Do \Vhile condición
InstruccionesO
Loop
Do
Instrucci ones O
Loop \Vhile Condición
Do Until Condición
InstruccionesO
Loop
Do
Instrucci onesO
Loop Until Condición
Datos estructurados
Los tipos de datos estructurados son espacios en la memoria que
serán utilizados 1nientras la aplicación sea ejecutada, y se borrarán de
la memoria en el momento de finalizar el programa. Los vectores y las
matrices son las estructuras que utilizare1nos para almacenar informa-
ción de manera temporal y 1nanipular estos datos.
Matrices
Las matrices so11 las est1ucturas que tie11e11 u11 co11ju11to de eleme11-
tos relacionados lógicamente entre sí. Sus elementos deben ser referi-
dos 1nedia11te u11 solo nombre y u1111ú1nero lla1nado índice, para así
poder distii1guirlos. Los ele1ne11tos so11 seguidos desde el h1dice cero
hasta el índice de valor superior.
a 11 a 12 a lj
a in
A =
a il ª ,2 a
• . .. a. U1
Esta matriz tiene seis elementos, y los índices están en el rango de cero
a cinco. Su declaración es más simple y útil que declarar seis variables dife-
rentes, es decir, seis espacios en la memoria donde se pueda asignar un valor
numérico. La sintaxis para declarar una matriz de tipo vector (es decir, una
matriz de una sola dimensión o unidimensional) es la siguiente :
DimVector(5) As Integer
Para asignar valores a u11a 1natriz, tan solo debemos indicar el espa-
cio que desea1nos utilizar, por eje1nplo:
Dias(O) =6
El QBASIC, originado por contracción del nombre QuickBasic, es una variante del len-
guaje de programación BASIC. Provee de un !DE avanzado, e incluye un depurador con
características tales como evaluación de expresiones y modificación de código.
lvlatriz unidimensional
Matriz bidimensional
(0,0) (0,4)
(1,0)
(3,0) (4,4)
lvlatriz tridimensional
(2,0,0) (2,0,4)
(0,1 ,0
(1,0,0) (1 ,0,4)
(0,1 ,0
'0,0,0) (0,0,4)
~.V--'• (2.4.4)
,0,1 ,0)
(0,3,0 (1,4,4)
,0,3,0) (0,4,4)
Almacenamiento de información
Podemos crear matrices que no contengan información, o en la misma
declaración cargar información sobre ellas. Veamos cómo se crea una matriz
que no tiene elementos, declarando tma de st1s dimensiones en - 1:
vecEjemplo(lO) = 150
Recorrido de información
Para ver la información secuencial de una estructura, ya sea unidimensio-
nal (vector) o de varias dimensiones, debemos realizar la siguiente codificación:
For ifila = 1 To 4
For icolumna = 1 To 4
If matEje.mplo(ifila, icolumna) <> Nothing Then
l\llessageBox.Show(matEjemplo(ifila, icolumna))
End If
Next
Next
~_,.....
,.. ..,
,-,.,.,u.,
• 1 1111 ,
.,
,·
-·
~1111~"''°
..... ""...... ,..~ .....
LM!f"•
..,_
~
......
,
f\'101t
,
...••
.....
.....
~ -••llloO•~
,....,"",_,.
,......
--
Aaa,et.eN,,,.,
tti.,~,
....\!! ...s-r•~ ........ ... •
-·- .,•.
JJcc, .........
,..... ,_
.........,..,""' ·-·,••... -tlD
.,
,; .......
- --......
.....,........
' ..
.,;
-
••
n .. ,_-· -·· •
--~ -... ... ... ,.,i,rf-1.oll ...
S.-c.C.......
, t; .. ~·
CD ...,edt1Mlt •••
+ hll,i,__,~
e,_
,-,1,(T,hl'll.'1"\
....
,...
,_
~ T......, fM
,'....•.,...,NI.,
~
C)
•
,_
,.....
tl r..i~9'fllll"•'
..•.
COlnltCMt,...2tlo
,_ ,
--
-~ -....... ,.,. ··- .... -·-
,
...........
_., .,
'r.,.,..,.
,.,,.,.~
,
o,
11!1
\.
• ,,....,_
'"~'
'•• """' .. ...
,
o..,~i.,......
{11.iH
f,m
,•••
Moc.....ttS.111 S. - -- -·
,_,
•
www. redu sers.com <<
124 5. PROYECTO EN 1111CROSOFT VISUAL BASIC
•
o8 BACKCOLOR : permite asignar el color de fondo.
a) (Name): fimP1incipal
b) StartPosition: CenterScreen
e) Text: Pantalla P1incipal
d) MaximizeBox: False
e) Iv1inirnizeBox: False
-.. ,,, ..
--~ ··-
.·--
. i... ...- - . . •
-·-
~ . ~. =-:_-:_-:_--;::¡¡;¡:;,
--- ··-
.--
-
"e .__
e-
.,
O•t-
,_
·-
• -h
·-
·- --
·-
º'""'
t •• '"
-
•
>> www. red users .com
PROGRA1\1ACION DESDE CERO 125
~
---.
.-,..·--
"
·---. ,-
- - ,---
--
•-·"u ... 4 ...
--...... -·....··---
- -·•
·-. ·-
-;¡ _,..,
8::;...
f do6
,,,... .
·--,...-
c . - .. -
- -a-··-
.......................
.............,,,_
...·-·
-,. ...
• ••
,_., - -
.,
. . . .,....('111-.UWO,c) -
- - · - - - o..l
.. Jr'Otff
......__...,i
• tWol • ._ ..,..
•
www. redusers.com <<
126 5. PROYECTO EN 1'flCROSOFT VISUAL BASIC
- . ,.J..,.i.
1,.. ,,...'""
~~
SUb bt..Canc.el.w-_cu,1i:(l)'.V• l c.tndtl" -.e Sy,t. .. Cb'Kl, e,,v.i."'
.
Realice una carga de datos en un vector para grabar el D1'"1 y no1nbre de una
05 persona. Dibuje dos etiquetas ( Lab el) y dos cajas de texto para asignarles
las siguientes propiedades: a Lab ell, lb lDN I (en Name) y DNI
(en Text); aLab el2, lblNon1bre (en Name) y Nombre (en Text); a
TextBoxl , txtDNI (e.o Name); y aTextBox2 , txtNon1bre (e.o Name ).
' _ :-ia;i11..
_,_ - - •f -•---
=:.:::i
..i.:::, ·=
•,;-=-~ ---- -·-
...
· -
·-
~-
~-- -
-
__ ....,.. ¡¡¡
.·--
~-
m-
.·--
·-
-·- --
o -_ _
a,,
. .... -............
,, --·
-
,......
-~-
\.
·-
,_
·- ...... -•t•
...-_
··-- -~---~-
--
-..--
...
-
•
>> www. red users .com
PROGRA1\1ACION DESDE CERO 127
--..
~ W -"'"'°~C.llol'"1~1 • - ,.,. 'f•-·
~ -~.i...-. ,1 ...... 6(_""-" ,
, "fN,I • &o i ,-1
""'""ª--
..-1,.._,. M k-C-.d....,JUó <.,...l ..... .U ~ ". . , .,...1 1 .. trl j
Para corroborar que el usuario cargue todos los datos en los controles
TextBox, debe realizar algunos controles de acceso :
. --
, ,_....,
. --
_ __
....... ..
•4•
- --- ··-
--'".--
- ... --
•
-~·
--·-· ·-·
_____ ..
..,__WI,.......
,
-·-·
Figura 8. Controles inhabilitados, como deben aparecer al ser ejecutada la aplicación.
También hay que tener en cuenta que, al cargar un dato , todos los datos
quedarán cargados en el form. Por eso, es bueno limpiar la interfaz cada
vez que se ingrese al evento click del botón.
De esta forma, hemos conocido los controles más usuales : TextBox (caj a de
texto) y Label (etiqueta). Además, aprendimos las propiedades para habilitar
controles, cómo mostrar la información de un vector en un control y de qué
manera utilizar los botones de comando jtmto a propiedades del formulario.
Hemos aprendido cómo se utiliza el lenguaje de programación Visual Basic p ara la creación
de proyectos y cómo se aplican las variables en el código fuente. Luego vimos cómo aplicar
matrices y comparamos la sinta,"'(is del lenguaje con pseudocódigo. También tuvimos una
introducción b ásica a tres controles: T extBox, Lab el y Button, que utilizamos en conjunto con
Actividades
TEST DE ..\UTOEV..\LU..\CIÓN
5 ¿Es co11'ecto afumar que en Visual Basic se declara una esttuctura de dato
como vector al utilizar el siguiente código: = Dim vector(2,2) As Integer?
Primer proyecto
enC++
A continuación, abordaremos el desarrollo de código fuente
que tiene el reconocido lenguaje C++. Conoceremos un IDE
gratuito para aplicar los conceptos adquiridos anteriormente,
y realizare1nos algunos desarrollos .
IDE SharpDevelop
Como vimos antes, el IDE (entorno de desarrollo integrado) nos penniti-
rá utilizar diferentes herramientas que faciliten el manejo de tmo o varios
lenguajes de programación. SharpDe,,elop C#Develop) es un entorno
gratuito que puede utilizar los frame.\.vorks de Java, :tvlicrosoft y otros,
y que pennite aplicar múltiples lenguajes de programación.
#Develop es un IDE libre para C#, \TB.NET, Boo y proyectos en Microsoft.
,~~v.icsharpcode.net
NET. Es de código abierto y se puede descargar desde
(la versión de estas imágenes es SharpDe,,elop 4.2 ).
...
,_.ffll.,_
,.. ...,..._...•• ,, 1'n
,.. ~ .......
•. X Nfl,,,,,• Wtflt
iC#CC
• • o..
·• ·
· •
t
)t
.,......... ~·-·"""'"•»..,:Cl•,......
... ........ ....._
~ - . . - a , M .... 19"
9,~,...~~
.......,,., .,
ao(UIK(lat - - ~
.,_ de WON J. w w l i ~
Nt.-,.-.., •
HcrfflMC MediflctdO ~-
~
•
Jl.'f?,'!)11
Jl.W/lOll
mlluro!D hf6.·»u
e:,.......-~ O.~~----
(;.JJMn,c:..adlori ui~'".tan•~•~f
C..J.lsert,JtautOe,c,.-c.,~'",.a:s~,r,
IEllldl •UIJO'll C: ..._..I< ...... °"'"""""''~it..J'ftb.,,,.. .....
- ...
·••
----
- ~ ,, ,u .... . ,. . ~
..
::i--
__
--
... ¡JJ •
...,._-
1 ~..,._~
·-
- .,,;
__ ....
,,.\-tlftt•
JI .....
.
'•
· .•- • i.t • •·
_..,.
• ... , -
,-•u
u.
O o ,,-•
,,.
Jl.-1' O _, , _... ..._M ........ '-"" l ... 11,
..,
.. u - 1
- •
•
Introducción a C++
Como vimos en capíhllos anteriores, pode1nos utilizar un lenguaje
de programación 1nuy didáctico y que nos permita dibujar el diseño de
las interfaces que se comu11ican con el usuario. En este caso, nos en-
contramos con un lenguaje más duro, que no posee un entorno gráfico,
sino que se caracteriza por tener u11 enton10 de texto o CLI CConiniand
Line Interface , o interfaz de comando de línea).
C:,use1·s,jcasale>dir
El volunen de la unidad C no tiene etiql1eta.
El 11~ncro de ~cric del vol11nc11 e:;: SA94 ·D390
Espacio de nombres
La instn1cción using namespace especifica que los 1niembros de un
namespace serán utilizados frecuente1nente en un programa por desa-
rrollar. Esto permite al desarrollador tener acceso a todos los miembros
del namespace y escribir instrucciones 1nás concisas. Por eje1nplo, vea-
mos a qué hacen referencia los espacios de nombre que utilizamos en
C++ por defecto y cómo sería si no los usáramos.
#include <iostream>
using name.space std;
int main O
{
//al usar el namespace ya no hace falta escribir
std::cout <<"hola mundo"<<endl;
return O;
}
//Utilizando el espacio de nombre std
Veremos qué quiere decir cada sintaxis del código que escribimos ante-
riormente. La idea principal es conocer cómo se escribiría el código en C++
utilizando espacios de nombres que simplificarán la codificación.
namespace calcular {
int varX, varY;
float varF(int a) {
// ...
}
}
Con este espacio de nombre, para utilizar la variable varX que está en el
namespace calcular , el desarrollador deberá codificar lo siguiente:
calcular::varX = calcular::varF(5);
Se trata de un !DE diseñado principalmente para C# y otros lenguaj es .l\1ET, que permite
a los desarrolladores escribir aplicaciones de escritorio y web ASP .N""ET en Linux, \Vindows
y Macos. Facilita la existencia de una base de código único para todas las plataformas.
// namespaces
#include <iostream>
using namespace std;
namespace prime.ro
{
int var = 5;
}
namespace segundo
{
double var = 3.1416;
}
int main O {
cout << primero ::var << endl;
cout << segundo::var << endl;
return O;
}
T TIPO T DESCRIPCIÓN
#iod ude Las lineas que comienzan con wi nwneral (#) son direc.tivas p ara
el preprocesador . En este e.aso, la direc.tiva # inc lude le indica
al preprocesador incluir el archivo iostream estándar.
us ing namespace std; Todos los elementos básicos de las bib lioteca s en C ++ se declaran
dentro de lo que se llama wi espacio de nombres. Por eso, si
queremos acceder a su funcionalidad, declaramos con esta expresión
para poder utilizarla. Esta linea es muy frecuente en C ++ p ara que
los programas utilicen las bib lioteca s estándares.
!*
* Creado por SharpDevelop.
*
Vamos a utilizar las estructuras básica s que vimos antes para leer el men-
saj e en pantalla, y reemplazaremos el código que hay en main por el siguiente:
Dooblé Doble precisión 8 bytes +!- 1.7e +!- 308 (-15 digitos)
de punto flotante.
Declaración de variables
Para utilizar una variable en C++, primero debemos declarar qué tipo de
datos deseamos y, luego, sus respectivos nombres. En la sintaxis para decla-
rar una nueva variable se escribe la especificación del tipo de datos ( int, bool,
float , etc.), seguido de un identificador de variable válido. Por ej emplo :
int varX;
float varP;
char c aracter;
char cadena(lO);
int variv1iSaldo;
//Terminamos el programa:
getcharQ;
return O;
{
Inicialización de variables
Cuando declaremos variables locales y no asignemos un valor en el mo-
mento de crearlas, estas tendrán un valor indeterminado. Desde C++, vere-
mos dos maneras posibles de almacenar un valor concreto cuando las decla-
remos. La primera, conocida como inicialización c-like, se logra añadiendo un
signo igual ( =) seguido del valor que deseamos inicializar:
Por ejemplo, si queremos declarar una variable int inicializada con el valor
O en el momento que lo declaramos, podríamos escribir:
int varA = o·
'
Por ejemplo :
Cabe destacar que existen ciertas palabras reservadas, como sizeoff, cout y
bytes , que provienen de las librerías base de C++. Más adelante veremos qué
uso darle a cada una de ellas. Además del uso de variables y la asignación de
su tipo de dato, también podemos declarar constantes si agregamos al pro-
yecto anterior las siguientes líneas de código, antes del getcharO:
A la hora de declarar, existen dos posibilidades : una antes del main con la
palabra #define, y otra con la palabra const A continuación, vamos a trabajar
con mayor detenimiento en cada una de estas declaraciones.
Constantes literales
Son las constantes más frecuentes y se usan para expresar valores particu-
lares dentro del código fuente de un programa. Las hemos utilizado previa-
mente al dar valores a las variables o al expresar los mensajes que queríamos
mostrar en los programas. Por ej emplo, cuando escribimos :
varA = 3;
Constantes definidas
En este lenguaj e podemos declarar nombres de constantes con el coman-
do #define, sin tener que declararlas dentro de una función. Podemos utilizar-
las en el encabezado del programa y llamarlas desde cualquier proceso.
Su sintaxis es la siguiente :
#define valor del identificador
Por ej emplo :
#defin e PI 3.14159
#de.fine cabecera "Empresa";
Constantes declaradas
Al igual que vimos en Visual Basic, encontraremos que la sintaxis const
representa la declaración de constantes con un tipo específico, de la misma
manera en que lo haría con una variable :
Operadores
Hasta el momento vimos cómo se utilizan los operadores en Visual Basic.
Ahora podremos practicarlos en C++, considerando su importante diferencia
en cuanto a codificación y manejo de librerías. A continuación, haremos un
recorrido por los distintos operadores que encontramos en C++ y veremos
ejemplos prácticos que nos permitirán conocer mejor su funcionamiento.
Operadores de asignación
El operador de asignación carga un dato a una variable. Si quisiéramos
establecer que la variable A contuviera el valor 3, su sentencia de código sería :
varA = 3;
Operadores aritméticos
En C++, la forma de aplicación de estos operadores no cambia. Los tipos
que podremos utilizar son: + (suma), . (resta), * (multiplicación), / (división)
y % (módulo). Antes de pasar a algunos ej emplos, veamos de qué se trata el
operador módulo. Cuando hablarnos de módulo nos referimos a la operación
que presenta el resultado de una división de dos valores. Por ej emplo :
int varA = 11 % 3 ·
'
T EXPRESIÓN T ES [QUIVALINTE A
a-= ~-
-, a= a - 5;
a /= b· a = a / b·
' '
precio *= wúdad + 1; precio = precio* (wúdad + !);
A=2·
'
B=3·
'
C=6·
'
A= 5)//Se evalúa como falso ya que no es igual a 5.
A*B>=C)//Se evalúa como ci erto, ya que (2* 3> = 6) es verdadera.
4+B>A*C)//Se evalúa como falso, ya que (3 +4> 2 * 6) es falsa.
((B=2)= A)//Se evalúa como verdadera.
Operadores lógicos
Como vimos, el operador lógico nos devuelve dos posibles resultados :
verdadero o falso. Comenzare1nos con uno de ellos, el operador !
(signo de admiración), que nos devolverá el valor booleano opuesto
a la evaluación de su operando.
Por ejemplo:
A B A&&B
A B
Operadores condicionales
Evalúan tma expresión y devt1elven tm valor si esta es verdadera,
y otro distinto si es falsa. Su formato es:
#include <iostream>
using name.space std;
int main O
{
int varA,varB,varC;
varA=2·
'
varB=7·
'
vare = (varA>varB) ? varA : varB;
cout << varC;
getcharQ;
return O;
}
OR Bitwise Inclusive O R
A
XOR Bitwise Exclusive OR
Una operación bit a bit o bit\vise opera sobre números binarios a nivel
de sus bits individuales. Es una acción prünitiva rápida, soportada di-
rectamente por los procesadores.
int varA;
float varF = 3,14;
varA = (int) varF;
Operador sizeof
Ya hemos utilizado este operador en código de ej emplos anteriores. Acep-
ta un parámetro ( que puede ser un tipo o una misma variable) y devuelve el
tamaño en bytes de ese tipo u obj eto:
varA = sizeof(char);
cout << "El tamaño del int es:\t\t" << sizeof(int) << " bytes.";
cout << "El tamaño del short es:\t" << sizeof(short) << " bytes.";
*& Indirecto y de
referencia (punteros)
+- Operador unary
6 *! % ]\,fultiplic.ación Left-to-right
7 +- Agregar Left-to-right
(\
12 bin,~se XOR Left-to -right
13 binviseOR Left-to-right
15 11 logical OR Left-to-right
17 Coma Left-to-right
#inc.Jude <iostream>
using namespace std;
int main O
{
int varA=O;
cout << "L-a se.nte.nc1a
. d esa l"
1d a e.s.· " ,·
//1\il uestra la sentencia de salida, en la pantalla
cout << 120; //1\lue.stra el núme.ro 120 en la pantalla
cout << varA; //1\il uestra el contenido de varA en la pantalla;
getcharQ;
return O;
}
Así, obtendríamos los siguientes resultados : "La altura es : 180" y "El peso
es : 90". Debemos tener en cuenta que cout no agrega un salto de línea des-
pués de su salida, a menos que lo indiquemos expresamente :
Este operador solo tiene un operando. Esto quiere decir que puede contener un objeto, varia-
ble u operando especifico del lenguaje. Por ejemplo: SizeofD / N ewO / DeleteO / (type)/ ++ /
-- / - / ! / + / - . Otro ejemplo Sizeof(short) / (int) variable / variable++ / --variable .
El resultado será u11a oración por renglón. Para ver 1nejor este ejem-
plo, debemos codificarlo en C++. En este sistema también podemos en-
contrar la palabra reservada endl, que permite realizar el salto de línea.
Con el ejemplo anterior, el código sería:
Hemos visto las opciones para mostrar información en pantalla desde C++;
ahora continuaremos con el ingreso de datos por medio de una aplicación.
int edad;
cin >> edad;
int i;
cout << "Por favor, introduzca un valor entero :" ;
cin >> i;
cout << "El valor que ha introducido es" << i;
cout << ''y su doble e.s" << i * 2 << "\ n". ;
Las definiciones de variables de C# y de C++ son muy similares. En ambos lenguajes las va -
riables pueden ser declaradas solo locahnente en un método o como miembros de una clase.
También podemos utilizar cin para solicitarle al usuario dos datos, escri-
biendo esta sentencia en una única línea, por ej emplo :
#include <iostream>
#include <string>
using namespace std;
int main O
{
string mystring;
cout << "¿Cuál es tu nombre?";
getline (cin, mystring);
cout << "Hola" << mystring << "." ;
cout << "¿Cuál es tu equipo favorito de fútbol?";
getline (cin, mystring);
cout << "Yo soy fanatico de " << mystring << " también!";
getcharQ;
return O;
}
Estructuras de programación
Ya sabemos cómo se pueden utilizar los datos en C++. Veamos ahora cómo
se pueden realizar diferentes acciones o tomar distintos rumbos en un algo-
ritmo de programación. Para hacerlo, vamos a usar sentencias parecidas a las
que esh1diamos anteriormente en las estructuras de control , y conocere-
mos las estructuras secuenciales y repetitivas. Es importante considerar que
en C++ no siempre se trabaj ará de manera secuencial, por lo que debemos
diferenciar los bloques de código con llaves {}.
Estructura condicional
La estructura condicional if se usa para ej ecutar una condición si la expre-
sión se cumple. Por ej emplo :
if (varX = 100)
cout << "varX es 100";
If (condición)
Instiucciones ...
if (varX = 100)
{
cout << "v arX es " ;
cout << varX;
}
if (condición)
Instiu cciones ...
else
Instiu cciones ...
if (varX = 100)
cout << "varX es 100";
else
cout << "varX no es 100";
Para conca tenar o anidar las estiucturas i( primero debemos ver cómo es
la estn1chira:
if (condición)
Instiu cciones ...
elseif
Instiu cciones ...
else
Instiu cciones ...
#include <iostream>
#include <string>
using namespace std;
int main O
{
int varX=O;
varX=7;
if (varX > O)
cout << "varX es positivo";
else if (varX < O)
cout << "varX es negativo";
else
cout << "varX es 0";
getcharQ;
}
Estructura selectiva
Se utiliza para valorar una condición y, dependiendo de su resultado,
se pueden dar distintos casos y resoluciones. Su sintaxis es la siguiente :
s,vitch (condición)
{
case constante:
instrucci ones ... ;
break;
case constante:
instrucciones ... ;
break;
default:
instrucciones ...
}
Switch If-else
switch (x) { if (x = l) {
case 1: cout << "x es 1";
cout << "x es 1"; }
break; else if (x = 2) {
case 2: cout << "x es 2";
cout << "x es 2"; }
break; else {
default: cout << " El valor de x es desconocido";
cout << "El valor de x es desconocido"; }
}
Estructuras repetitivas
Son las que utilizamos para repetir acciones hasta lograr que se cumpla
una determinada condición.
,v hile/Loop
La sintaxis es :
int main O
{
int n;
cout << "Ingrese un número de inicio >> ";
cin >> n;
while (n>O)
{
cout << n << ", ";
--n;
}
cout << "¡Se terminó!";
return O;
}
COMO FALSA
For/Loop
La sintaxis de esta estructura repetitiva es :
~ ESPACIO.DE NOMBRES
~
Así como en Visual Basic podemos utilizar namespace , el contenido de este nos per-
mite agrupar o utilizar tm conjtmto de clases a nivel global, los objetos o las fi.mciones
que le confieren un nombre. Por ejemplo, el espacio de nombre que se debe utilizar
en C++ es std ,. con la sintaxis using_
~
Hay que tener cuidado al utilizar coma o punto y coma, ya que estos últi-
mos dividen la expresión.
{
' .
for (n=O i=lOO · n'=i · n++ i--)
' ' '
Instrucciones ...
}
Ejercitación
En el ca so práctico que aparece a continuación, pondremos a prueba lo que
venimos aprendiendo. Utilizaremos el operador XOR y la función getlineO para
encriptar un texto que haya ingresado el usuario (incluyendo los espacios).
Primero crearemos u11 proyecto en SharpDevelop , con el nombre
Ej emploFOR. Luego codificaremos lo siguiente:
El lenguaje C++ es case sensitive . Esto significa que un identificador escrito en letras
mayúsculas no es equivalente a otro con el mismo nombre esc1ito en minúsculas.
Así, por ejemplo, la variable RESULTADO no será lo mismo que resultado o Resultado .
Se trata de tres identificadores de vruiables diferentes.
Saltos de declaraciones
Los saltos de declaraciones son útiles en el momento de realizar al-
gunas instrucciones que considera1nos importantes, y cuando no nece-
sita1nos que continúe preguntándonos por una condición en un bucle.
Sentencia break
Utilizando la palabra break podemos dejar por concluido tm bucle, atm
si la condición no ha fmalizado. Es decir, podemos utilizarla para poner
fm a tm bucle infmito, o para forzarlo a terminar antes de su fm natural.
Es un lenguaj e de programación diseñado a mediados de los años 1980 por Bj arne Strous-
trup, cuya intención fue extender el exitoso lenguaje de programación C con mecanismos
que permitieran la manipulación de obj etos. En ese sentido, desde el punto de vista de los
lenguajes orientados a objetos, C++ es lub rido.
#include <iostream>
using name.space std;
int main O
{
int n;
for (n= l O; n>O; n--)
{
cout << n << ", ";
if (n=3)
{
cout << "Cuenta regresiva abortada";
break;
}
}
getcharQ;
return O;
}
Podemos utilizar tma sentencia break en cualquier ptmto del código dentro
de un bucle. Recordemos que saldrá del bloque de código donde es utilizada,
y continuará con las sentencias que le siguen a la estructura repetitiva.
Sentencia continue
La instrucción continue realiza un salto en el bloque de código que
nos lleva al extremo de las instrucciones. Se utiliza en estructuras repe-
titivas para saltar algu11os procesos especificados y, así, continuar con
las iteraciones. En el eje1n plo que aparece a continuación, va1nos a sal-
tar el número 2 en la cuenta regresiva:
Sentencia goto
Esta sentencia puede usarse para hacer un salto a un sector del algoritmo
que estamos desarrollando. Es importante ser cuidadosos con ella, porque
puede hacer el salto y ej ecutar tipos incondicionales. El punto de destino es
rotulado por un texto seguido de dos puntos. En el siguiente ej emplo, vere-
mos un bucle "cuenta atrás" utilizando la sentencia ooto
o ·.
#include <iostream>
using name.space std;
int main O
{
int n=lO;
loop:
cout << n << ", ";
n--;
if (n>O) goto loop;
cout << "Finalizó";
return O;
}
Función exit
Esta función puede encontrarse en otros lenguajes, y tiene como
objetivo finalizar el programa. Está en la librería cstdlib de C++, y
su est1uctura es la siguie11te:
Datos estructurados
En esta sección aprenderemos a manej ar arrays, estructuras muy ú tiles
para utilizar y almacenar información en la memoria durante un período de
tiempo necesario en el desarrollo de nuestros programas .
l\tlanejo de arrays
Un ruTay es una serie de elementos homogéneos que se grabarán en espa-
cios continuos de memoria , a los cuales podemos acceder en forma indivi-
dual gracias a un índice. Su modo de representación se observa en la figura 6.
ilvlatriz unidimensional
Sintaxis de inicialización
Dentro de las funciones podemos declarar arrays locales. Estos no tendrán
un valor definido si no se inicializan por código, por lo tanto, su contenido
será indefinido hasta que les almacenemos un valor. En el caso de las matri-
ces globales y estáticas, los elementos se inicializan automáticamente con
valores por defecto; esto significa que estarán llenos de ceros.
En ambos casos, local y global, cuando se declara una matriz podemos
asignar valores iniciales a cada uno de sus elementos por los valores que
encierra entre las llaves. Veamos un ejemplo :
Acceder a valores
Para acceder a estas estructuras, debemos especificar el índice donde está
almacenado el valor. Podemos acceder al ruTay de forma individual y, enton-
ces, leer o modificar los valores que queramos. La sintaxis es sencilla:
nombre [indice]
rniAITay[O] = 2 0 12;
vru·A = rniAITay[O];
Las sentencias goto no deben usarse cuando se resuelven problemas mediante programación
estructurada. Existen mecanismos para hacer de otro modo todo aquello que pueda efectuarse
mediante goto. La metodologia de programación actual utiliza otras herramientas de saltos.
miAITay[O] = varA;
miAITay[varA] = 75;
varB = miAITay[varA+2];
miAITay[miAITay[varA]] = miAITay[2] + 5;
Arrays multidimensionales
Los arrays de arrays son estructuras bidimensionales muy parecidas a
las hojas de cálculo. Veamos en la figura 7 cómo podría ser su apariencia.
Ñlatriz bidimensional
(0,0) (0,4)
(1,0)
(3,0) (4,4)
int miAITay[4](5);
miAITay[2l[l j;
int miAITay[100](50](25](10);
Recorrer arrays
Es importante pasar por cada espacio de dato que hayamos declarado.
Dado que esta es una tarea repetitiva, podemos utilizar cualquiera de las
estructuras de bucle que ya conocemos. En el ejemplo que aparece a conti-
nuación, cargaremos datos en tm ruTay de 3x5 :
miArray(n)(m)=(n+l )*(m+l );
cout<<"Fila: "<<n << " / ";
cout<<"Columna: "<<m << " / ";
cout<<"Dato: "<<miArray[n)[m);
cout<<endl;
}
getcharQ;
return O;
}
En este capítulo nos encontramos con un lenguaj e más "duro", pero que, en esencia de
programación, es similar a otros. Comenzamos utilizando un !DE gratuito, donde se pue-
den crear proyectos de consola y practicar la declaración de variables, j tmto con el uso
de operadores en C++. Luego aprendimos a capturar info1mación desde la consola y a
realizar todo el proceso de información necesario para devolverle al usuario los mensaj es
co11'espondientes. Finalmente, hicimos uso de las estructuras ruTay , que nos pe1miten
almacenar y manipular gran cantidad de datos en la memoria.
Actividades
TEST DE ..\UTOEV..\LU..\CIÓN
EJERCICIOS PR..\CTICOS
Confección de
interfaces gráficas
Luego de haber manejado estructuras de datos abstractas,
vamos a adentramos en el diseño de interfaces gráficas.
Normas de diseño
En este capítulo veremos generalidades para la buena confección de inter-
faces, y recomendaciones que nos permitirán tener precaución al diseñar.
El estudio y desarrollo del diseño de interfaz prioriza el trabaj o de varias
disciplinas en función de un mismo obj etivo : comunicar y transmitir a tra-
vés de un medio electrónico. A partir del diseño de interfaces gráficas (GUI)
buscaremos que los usuarios de nuestro desarrollo puedan comunicarse con
el programa de manera efectiva, mediante una interfaz confortable que no
requiera esfuerzo para su comprensión. Los tipos de interfaces que podemos
encontrar en la actualidad son: interfaz gráfica de escritorio, interfaz de con-
sola, interfaz web, interfaz táctil e interfaz de consolas de videojuegos.
2) Claridad : la información debe ser fácil de loca lizar. Para eso, es nece-
sario establecer una organización, ya sea de manera lógica , j erárquica o
temática. Esto es fundamental porque, cuanto más información ubique-
mos en la pantalla, mayor será la distracción o confusión para el usuario.
por el gusto de hacer clic en Buscar ni por el atractivo de su logo. Por eso,
cualquier interacción que Google incluya va a interponerse en la necesi-
dad del usuario. Actualmente, se ha reducido la interacción gracias a la
búsqueda inteligente porque, a medida que el usuario escribe sobre el
busca dor, van apareciendo los resultados posibles.
• Orden y presentación : la información debe mostrarse en forma
lógica, agrupando los campos similares. Por ejemplo: en la carga de
datos personales, debemos agn1par los datos del domicilio por tm
lado (dirección, código postal, ciudad) y los educativos por el otro.
Controles usuales
En esta sección repasaremos aquellos controles más usuales que utili-
zaremos en los distintos desarrollos, y los compararemos en tres ámbitos
posibles: aplicación de escritorio, publicaciones vveb y dispositivos móviles.
Enlace de ejemplo:
www. w 3 schools.com/tags!
Enlace de ejemplo:
http-J/android-developers.
lag_ textarea.asp
blogspot.com.ar/2009/04/
En PHPForm: creating-input-method.html
<input type="text"name="nombre"/>
Componentes visuales
Además de los componentes básicos, debemos tener en cuenta otros tipos
de objetos que nos servirán para ayudar al usuario con el uso de la aplicación.
En este apéndice hemos visto una serie de pautas interesantes y útiles para comenzar a dise-
ñar interfaces gráficas. Al mismo tiempo, conocimos cómo se utilizan los controles de uso más
Por tÜtimo, vimos otros tipos de objetos visuales, que completan la interfaz.
l l •-e13il:..:1
1 l • c-1 ,:,..1:j l • c,:3;1:j
~ PHP ~ Java
' PHP+MySQL1
~
desde cero desde cero § desde cero
§
o
IS ¡
i 114 F -•-
$
e
i•
l t
!
ISBN 978-987-1949-60-1