Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Program Acionm 1
Program Acionm 1
Algoritmia y programación
Al comenzar el presente Módulo se hará un resumen de lo visto hasta ahora por los
estudiosos para que puedan visualizar la magnitud de lo aprendido hasta ahora
desde el punto de vista de la presente asignatura. Todos los conceptos que se
mostrarán en la primera parte de este módulo son un repaso de temas ya vistos
en las asignaturas de “Lógica de Programación”.
Por otra parte, a través de este Módulo, Algoritmia y Programación, se mostrarán los
elementos que componen los algoritmos teniendo en cuenta la sintaxis en Java y
JavaScript. A si mismo se mostrarán ejemplos de algoritmos implementados en
estos lenguajes de programación con el fin de consolidar los temas aquí vistos.
Tipos de
datos
Variables
Repaso
Operadores
Aritméticos
Java
Estructuras
de control
Ejemplo
Algoritmo
Algoritmia y
programación
Operadores
Estructuras
de decisión
Estructuras
JavaScript
de repetición
Ejemplos Arreglos
Manejo de
errores
1. Algoritmia y Programación
Fin
En estos ejemplos hay una sucesión de pasos ordenados. Si algunos de los pasos
son alterados puede ser que el resultado no sea el mismo.
Cualquier situación en la vida diaria resulta mediante un algoritmo. Por ejemplo, al
hacer un ponqué, o al encontrar una dirección. La manera de resolver nuestros
problemas cotidianos nos hace la vida más fácil o más difícil. Hay momentos en
nuestras vidas que no resolvemos problemas de la mejor manera, nos complicamos
un poco. Tal vez porque no hemos buscado alternativas para encontrar la mejor
solución a un problema o tal vez no estamos usando nuestra lógica para hacerlo.
Cabe destacar que para resolver un problema siempre hay más de una solución, y
unas son mejores que otras.
Es bueno tener en cuenta que para construir un algoritmo primero que todo hay
que entender muy bien el problema, segundo plantear la solución (primero en
términos generales, posteriormente detallada), tercero codificar el algoritmo en un
lenguaje de programación, cuarto probarlo, y por último ejecutarlo.
Hay que resaltar que, la generación del código objeto solo lo hacen aquellos
lenguajes de alto nivel (C, Java, C++, etc.) requiriendo un proceso de compilación.
Este código objeto queda traducido a código binario (0,1) el cual finalmente corre
en la computadora. Si hay un error en la sintaxis, el compilador no genera el código
objeto.
Construcción de un Algoritmo
Características de un Algoritmo
Identificador
estudiante
primerNombre
saldo
cuentaDeAhorro
Tipos de datos
Algunos lenguajes (C++, Java) permiten que el programador defina sus propios
tipos de datos, lo cual implica un alto nivel de abstracción. Los tipos de datos
personalizados permiten al programador modelar las propiedades del mundo real
de una forma más precisa. Además de personalizar el tipo de dato, el programador
tiene que definir el dominio, operaciones y representación.
1. Tipo simple: es aquel que no puede subdividirse en tipos más simples. Aquí
hay tres categorías: a) Integral (char, byte, short, int, y long), b) Punto flotante: Es
la representación de números con parte decimal y c) Booleano: El tipo de dato
que trata con valores lógicos (verdadero, falso).
Variables
Literales
Son los valores que se le dan a las variables por ejemplo el valor 3.1416 es un
literal asignado a una constante llamada pi. De la misma manera, “programación” es
un literal, un valor dado a la variable asignatura.
Constantes
En programación una constante es como una variable sólo que su valor no cambia y
es contante durante la ejecución del programa. Es decir, se define un identificador al
cual se le da un valor y esto no se va a modificar durante la ejecución.
Ejemplo de constantes:
Pi= 3.1415926
Cada lenguaje de programación tiene sus propias palabras reservadas para designar
la función de lectura y escritura.
En el caso del lenguaje C la función de lectura se realiza con la función scanf y para
la salida de datos la función es printf.
En el caso del lenguaje Java la función de lectura se realiza con los métodos de la
clase Scanner
1.3. Operadores
Operadores Aritméticos
Básicamente hay 5 operadores aritméticos. Ellos son: Suma +
Resta -
Multiplicación *
Cociente /
Modulo %
Operadores de Relación o Comparación
Básicamente hay 6 operadores de relación o comparación. Ellos son: Igual a ==
Diferente a !=
Menor a <
Menor a o igual a <=
Mayor a >
Mayor a o igual a >=
Operadores Lógicos
Son tres los conectores lógicos que perteneces a esta categoría: Conector lógico “O”
||
Conector lógico “Y” &&
Negación “NO” !
Existen tres métodos que son selección, inserción, y burbuja. Es importante conocer
estos algoritmos porque ellos pueden ser utilizados de acuerdo a la cantidad de
datos que se quieran ordenar, ya que de esto depende la eficiencia de los mismos.
While
if
For
Saludo=”hola
mundo”
Pi=3.1416
Son repetitivas es condicional
ejemplo
Aritmeticos
Ej:+,-,*,/,//
Variables Estructuras de
Literales Relacionales
Control
Contantes <.>,=,>+,<=
asigna
son
toma Son de
Genera
Tipos de Datos
compuestas
Datos de asignacion
son son
entrada Datos de
salida
simples compuestos
Por ejemplo Por ejemplo
Saldo=78000;
Retiro=10000;
son Saldo=78000 Nuevo_saldo=saldo-
Tales como Valor del area de
retiro;
la circunsferencia
El radio de la
circunferenccia
Vectores
E
Matrices
n
Cadena
t de
caracteres
e
r
o Fuente: Autoria propia
s
D
e
c
i
m
a
l
e
s
B
o
o
l
e
a
n
o
A
l
f
a
b
e
t
i
c
o
s
15
2. Java
Recuerde que: en Java, todo valor tiene un tipo (type). Por ejemplo, el número 13
tiene el tipo int (abreviación de integer, entero). “Hola Mundo” tiene tipo String y el
objeto System.out tiene el tipo PrintStream. El tipo de dato dice qué operación se va
llevar a cabo con esos valores. Por ejemplo, se puede calcular la suma o
multiplicación de dos enteros o se puede invocar el método println sobre cualquier
objeto de tipo PrintStream.
Con el fin de procesar números con parte decimal se debe utilizar el tipo “double”, lo
que en la tabla anterior aparece como número de punto flotante con doble
precisión.
16
Cabe destacar que en Java los números no son objetos y no tienen métodos. Sin
embargo, pueden combinar variables, literales, operadores y/o métodos generando
con todos ellos una expresión como (x + y) * 2
2.2 Variables
Las variables se pueden usar en lugar del valor que ellas almacenan, es decir:
No puede usar una variable tipo carácter (String) para almacenar un entero. El
compilador verifica esta falta de coincidencia en los tipos para evitar errores en el
momento de ejecución.
Recomendaciones
Escoja nombres descriptivos para las variables. En algebra usualmente se usa
variables como p,x,y. Es fácil caer en la tentación de usar estos nombres para
definir variables, pero antes considere lo siguiente:
int A = a * h;
compare con la siguiente instrucción
int Area = ancho * alto;
Recuerde que: en Java una variable tiene que ser previamente definida antes de
ser usada, de otra manera Java envía un error al momento de compilación.
El signo igual (=) es el que se utiliza como operador de asignación en Java, este
siempre es utilizado para asignar valores a variables o constantes. Por ejemplo:
Una vez definidas las variables, sus valores también pueden ser cambiados
posteriormente, pero recuerde que deben ser variables del mismo tipo. En el caso
anterior a la variable “ancho” siempre se le va a asignar un valor entero. Así
mismo a la variable “saludo” siempre se le va a asignar una cadena de caracteres.
Java genera un error al usar una variable que no ha tenido un valor previamente
asignado, por ejemplo:
int alto;
ancho = alto; // ERROR porque no ha inicializado previamente la
variable alto.
18
Continuando con el ejemplo, podemos ver lo siguiente:
int alto =
30; int
ancho =
alto;
Ahora bien, el lado derecho del símbolo = puede ser una expresión matemática,
así:
ancho = alto + 10;
Es importante destacar que: los operadores de suma (+) y resta (-) pueden ser
operadores unarios o binarios. Por otra parte, los operadores aritméticos como la
multiplicación (*), división (/), y modulo (%) son estrictamente binarios por lo que
deben tener dos operandos.
Cuando en una expresión se usa más de un operador aritmético, Java usa las
reglas de precedencia para determinar el orden en el cual las operaciones serán
19
ejecutadas para determinar el valor de la expresión. El orden de precedencia de los
operadores aritméticos es:
Primero, la multiplicación (*), la división (/), y el modulo (%) Segundo, la suma (+) y la
resta (-)
3*7-6+2*5/4+6
Significa lo siguiente:
(((3 * 7) - 6) + ((2 * 5) / 4 )) + 6
= ((21 - 6) + (10 / 4)) + 6 (Evalúa *)
= ((21 - 6) + 2) + 6 (Evalúa /, observe que es una división de enteros)
= (15 + 2) + 6 (Evalúa -)
= 17 + 6 (Evalúa primero +)
= 23 (Evalúa +)
Una expresión que tiene un valor de verdadero o falso se llama expresión lógica
(Boolean). Los valores verdadero o falso (True, False) se llaman valores lógicos.
Suponga que i y j son enteros, en la siguiente expresión lógica:
i>j
En la siguiente tabla (Tabla 4), se indica el uso del operador !, !True es falso y
!False es verdadero. Colocando ! al frente de una expresión lógica invierte el
valor de esa expresión lógica.
Ejemplo. !(6 <= 7) su valor es Falso. Porque 6 es <= 7 luego es Verdadero, pero el
signo (!) invierte el valor.
Haciendo uso de las reglas expuestas en tabla No.7, en una expresión los
operadores de relación y lógicos son evaluados de izquierda a derecha. En
consecuencia, la asociatividad de estos operadores se dice que va de izquierda a
derecha. Se puede insertar paréntesis en la expresión con el fin de facilitar la
lectura de la expresión o modificar su orden de evaluación.
Estructura de selección IF
If (condición) {
sentencia;
}
Un banco necesita enviarles una nota a los clientes cuando el saldo en su cuenta
24
este en rojo o por debajo del saldo mínimo requerido. Suponemos que el saldo
mínimo es 1000. A continuación, la solución:
If anidados
En el anterior ejemplo se puede ver que hay varios if, uno anidado dentro del otro.
Vemos que si la primera condición “saldo >= 50000” no se cumple, se genera otro if
“saldo>=25000”, si este no se cumple, se genera otro if “saldo>=1000” y solo para
esta última condición se procesan dos acciones diferentes.
Estructura de repetición While
While (condición)
Statement
int i = 0; // línea 1
while (i <= 20) { // línea 2
System.out.println ( i + “ “); // línea 3
i= i + 5; // línea 4
}
Algunas veces se necesita ejecutar el cuerpo del ciclo por lo menos una vez y
27
luego ejecutar la condición del ciclo después de que el cuerpo fue ejecutado. El
ciclo do … while sirve para este propósito.
La sintaxis es la siguiente:
do
statement
while (logical expression)
i = 0;
do {
System.out.println ( i + “ “); i = i + 5;
}
while ( i <= 20)
0 5 10 15 20
Debe dar clic sobre la X de la esquina superior izquierda donde dice Welcome.
A continuación, le aparece el entorno para trabajar en Java.
Luego digite el nombre del proyecto, para este caso puede ser Saludo. En la
siguiente gráfica lo puede observar. Y por último seleccione el botón finish.
Ingrese en Name MiPrimerPrograma y marque la opción public static void main, por
último, oprima el botón Finish. La gráfica le presenta lo mencionado anteriormente.
31
Como puede observar el editor de Eclipse le ayuda a incluir unas líneas de código
por Ud. con el fin de aumentar su productividad. Igualmente por defecto el editor
maneja diferentes colores para las distintas partes del programa que está codificando.
Es muy útil durante la codificación numerar las líneas de código para ello siga
la siguiente secuencia Window/Preferences/General/Editors/Text Editors y en esa
pantalla seleccione la opción show line numbers oprima el botón apply y luego el
botón Ok.
32
Por último, se necesita compilar el programa. Para ello debe dar clic sobre la
opción Run. Eclipse le muestra la siguiente pantalla y Ud. debe hacer clic sobre el
botón OK.
System.out.println("Hola mundo");
Esta instrucción imprime una línea de texto, textualmente “Hola Mundo”. Sin
embargo, hay varias formas en que un programa puede enviar ese texto: a una
ventana, a un archivo, a una red de computadores o a otra parte del mundo. Se
necesita especificar que el destino es System output esto es la consola.
Para usar un objeto, como System.out, usted debe especificar lo que quiere que
haga. En el caso del ejemplo, imprimir una línea de texto. El método println lleva a
cabo esta tarea. No se necesita implementar éste método, los programadores que
implementaron las librerías de Java ya lo hicieron previamente, pero lo único que
se tiene que hacer es invocarlo.
Hay que tener en cuenta que cuando se trata de imprimir una cadena de
caracteres, este debe ir entre comillas. De lo contrario el compilador interpretaría
esta cadena de caracteres como el nombre de una variable o una palabra
reservada del lenguaje de programación. En el caso de los valores numéricos
estos son reconocidos como tal, ellos solo van entre los paréntesis. A
continuación tres ejemplos ilustrando lo antes dicho:
System.out.println (“Hola”);
Hola
System.out.println (“Mundo); Mundo
System.out.println (3 + 4);
35
7
Ejemplo 3. Aquí se usa el método print. Como se puede apreciar este método no
deja una línea entre la ejecución de la primera línea y la segunda, por el contrario
enlaza los dos resultados produciendo una sola línea.
System.out.print (“00”);
System.out.print (3+4); 007
3. JavaScript
Otra cosa muy importante que hay que tener en cuenta es que JavaScript no es
Java, estos son dos lenguajes de programación diferentes. El primero es un lenguaje
que no necesita ser compilado, mientras que el segundo necesita generar un
programa objeto para su ejecución. También, para utilizar Java se necesita de una
plataforma robusta, lo que no pasa con JavaScript, cualquier persona en su
computador puede usar esta herramienta.
Particularmente se evidencian los tipos de datos, los cuales son dinámicos, cadena
de caracteres (string), numéricos, booleanos o lógicos, y arreglos.
Observe que: en Java los datos son dinámicos. JavaScript puede cambiar el tipo de
dato de numérico a alfabético en un mismo programa.
3.1 Operadores
Permiten comparar un valor con otro. Por ejemplo, si son iguales, diferentes, el uno
es mayor que el otro, etc. Seguidamente, en la Tabla 8, están especificados los
operadores de comparación que usa JavaScript. Estos operadores son iguales a
los que usa Java.
Conviene destacar que el signo (+) puede efectuar operaciones con números
enteros y flotantes; igualmente con cadena de caracteres (string). Este último se
comporta como la suma de conjuntos.
En las Tablas 4, 5 y 6 de este documento se pueden ver las tablas que contienen
las tablas de verdad para los anteriores tres operadores.
38
Observe que: en la Tabla 7 se puede ver la Precedencia de los todos los
operadores antes vistos. Los operadores en JavaScript tienen el mismo
comportamiento que aquellos para Java.
Asumimos que x es 2 y y es 2
Se utiliza esta estructura cuando solo hay una serie de pasos a ejecutarse cuando
una condición se cumple o es verdadera (“true”). Veamos la sintaxis:
If (condición) {
Sentencia o conjunto de instrucciones para cuando la condición es verdadera
}
Ejemplos de IF
EJEMPLO 1
var x="";
var time=new Date().getHours(); if (time<=12) {
x="Buenos días";
}
IF … EL SE
Veamos en JavaScript:
If (condición) {
Sentencia 1 cuando la condición se cumple o es verdadera
} else {
Sentencia 2 cuando la condición no se cumple
}
3.2.1.1 Ejemplos para IF … ELSE
EJEMPLO 1
Var theYear;
Var theYear = 2010;
If (theYear % 4 == 0) { diasFeb = 28;
} else {
diasFeb = 29;
}
Conviene destacar que la variable theYear fue dividida por cuatro, si el año es
divisible por 4 (residuo = 0) entonces Febrero tiene 29 días, sino (else) Febrero tiene
28 días.
EJEMPLO 2
Ejemplos de Else…if
Ejemplo 1
De acuerdo a una edad dada, clasificar la persona en un grupo de edad. Para este
ejemplo se asume como parámetro de entrada la edad de “52”.
var grupoEdad;
var laEdad = 52;
If (laEdad <= 18) { grupoEdad = “adolescente”;
} else if (laEdad <= 30) {
grupoEdad = “entre 18 y 30”;
} else if (laEdad <= 40) {
grupoEdad = “ entre 40 y 50”;
} else {
grupoEdad = “mayor que 50”;
}
Notar que ninguna de las condiciones se cumple por lo que el programa envía el
control al ultimo else, lo que permite la asignación “mayor que 50” a la variable
grupoEdad.
Switch
Notar que después de cada condición que se cumple hay un break; para nuestro
ejemplo, tomando como base la edad de 18 años, la primera condición es la que se
cumple y envía el control al final del programa; al terminar, la variable grupoEdad
contiene la palabra “adolescente”.
3.3 Estructuras de Repetición
El ciclo for ejecuta una serie de instrucciones hasta que cierta condición se cumpla.
Básicamente el ciclo usa un contador que se inicializa al comenzar el ciclo y que en
cada pasada se incrementa en uno. El proceso es ejecutado hasta que se exceda el
valor máximo. Veamos la sintaxis:
Recuerde que: hay que dar un valor inicial y especificar el valor máximo. i++
quiere decir que i se incrementa en 1 cada vez comenzando por 1. En la primera
vuelta del ciclo i es 1, en la segunda vuelta del ciclo, i comienza en 2 y así
sucesivamente hasta exceder el valor máximo.
3.2.1.2 Ejemplo para el ciclo for:
En este ejemplo el ciclo for se ejecuta cinco veces imprimiendo el número cada
vez.
var i = 0;
for (i=0; i<=5; i++);
{
document.write(“el número es: “ +i); document.write(“<br/>”);
}
Esta es la salida después de ejecutarse el programa: El número es: 1
El número es: 2
El número es: 3 El número es: 4 El número es: 5
41
Ciclo Mientras (While)
El bucle while es lo mismo que el bucle for, solo que el primero no maneja el
contador automáticamente. El contador tiene que ser manejado dentro de la
sentencia que ejecuta el ciclo, e igual que el for, el ciclo se ejecuta hasta que una
condición no sea válida. La ventaja que tiene el while sobre el for es que su
escritura es más simple.
var i=starValue;
while (i <= maxValue)
{
Statement[s] inside loop; (bloque de instrucciones)
}
var i = 2;
El ciclo do-while se diferencia del while porque el primero ejecuta una serie de
instrucciones antes que la condición se pueda validar. Por esta razón este ciclo se
ejecuta al menos una vez. Veamos su sintaxis:
do
{
statements
} while (condition)
3.3.3.1 Ejemplos del bucle DO-WHILE
var i = 1; do
{
document.write(“el número es: “ + i = “<br>”); i++;
}
while (i<=5)
Note que este caso es exactamente igual al caso en el que se usa solo el while.
Pero qué pasa si la variable se inicializa con el número 6? Con el do-while el
programa se ejecuta una sola vez imprimiendo “el número es: 6” y después valida
la condición y termina porque 6 no es menor o igual a 5. Por el contrario, en el ciclo
while el programa no hace nada desde que la condición no es verdadera.
42
Trabajando con Arreglos
myArray.length;
3.4.1.1 Ejemplos de Vectores
Recuerde que: los índices de los vectores son numerados desde el número 0.
Veamos lo siguiente:
miCDColeccion[5] = “Celin Dion Album”; coleccionLong = miCDColeccion.length;
Onerror
Es importante saber que cualquier elemento en una página web tiene eventos que
pueden disparar funciones de JavaScript. No es la competencia del presente
modulo analizar las funciones ya que estas serán vistas en el Modulo d o s , pero
con el fin de mostrar el uso de este comando se mostrará la creación de una de
ellas. A continuación, se muestra un script empleando el evento onerror:
<script>
onerror = errorHandler document.writ(“Bienvenido”)
Function errorHandler (message, url, line)
{
out = “disculpe, pero un error fue encontrado.\n\n”; out += “error: “ + message + “\n”;
out += “URL:” + url + “\n”;
out += “line:” + line + “\n\n”;
out += “presione ok para continuar.\n\n”; alert(out)
return true;
}
</script>
La primera línea del script muestra que el evento onerror va a usar la función
errorHandler la cual se definió posteriormente. La función toma tres parámetros de
entrada (message, url, y line number) y posteriormente lo muestra en una
ventana pop-up describiendo el tipo de error que para este caso fue un problema de
sintaxis en la línea denotada en amarillo.
Try … Catch
Este tipo de evento no permite capturar errores de sintaxis, pero son más flexibles
que el evento onerror desde que se pueden manejar excepciones o errores que se
comenten durante la ejecución de un programa.
<html>
<head><title>Try/Catch</title>
<script type="text/javascript">
Try :// este bloque contiene qué va a hacer analizado como possible error
{
alert("Current balance is $:" + get_balance());
4. Ejemplos
int i = 0;
boolean hallado = false;
int i = 0; int j = 0;
boolean hallado = false;
buscar:
for ( ; i < arregloDeInts.length; i++) {
for (j = 0; j < arregloDeInts[i].length; j++) { if (arregloDeInts[i][j] == buscado) { hallado =
true;
break buscar;
}
}
}
if (hallado) {
System.out.println("Se halló " + buscado + " en " + i + ", " + j);
} else {
System.out.println("No se halló " + buscado);
}
}
}
1. Se necesita un editor donde pueda escribir las instrucciones, este puede ser
cualquier procesador de texto, por ejemplo, en Windows, este puede ser WordPad y
en Mac, este puede ser MacText.
2. Escoger un browser o navegador de internet, este puede ser el que
usualmente se usa para acceder al internet. Se recomienda usar versiones de
Internet Explorer mayores a 5.0, ya que los ejercicios proveídos en este documento
no corren en browser con versiones más viejas.
3. Todo lo que se escribe en el editor se debe grabar como: anyName.html,
siendo este un archivo tipo texto. Posteriormente se debe ir al browser y abrir el
archivo. Se recomienda que el browser este “offline”; así, el enfoque es únicamente
con la prueba de los ejercicios aquí planteados.
En esta parte del documento se define, por ejemplo, el título, variables, funciones,
etc.
En el ejemplo (Figura 13) dentro de la cabecera se encuentran otros pares de
etiquetas que son:
Un bloque de JavaScript puede ir en cualquier parte del html, depende para qué
se quiere usar. Por ejemplo, en la Figura 13, las Instrucciones de JavaScript van
dentro del cuerpo del html. Podemos afirmar que JavaScript puede ser usado para:
Adicionalmente, se agrego un mensaje con doble slash (//). Estos mensajes son
solo usados para hacer aclaraciones al programa, pero no son vistos al momento
de su ejecución en el browser y solo se puede escribir una línea. Otro modo de
escribir mensajes dentro de un programa es escribir el mensaje en más de una línea
como se especifica posteriormente:
/* esto es
un comentario escrito en más de una línea*/
<script language=”JavaScript”>
</script>
Expresión lógica: Es aquella expresión que usa los conectores lógicos como Y
(AND), OR(O), para hacer comparaciones.
Gilley,W.S., Robin, A. & Tunar, E. (s.f.). Animations to assist learning some key
computer science topics. Algorithms.
http://courses.cs.vt.edu/~csonline/Algorithms/Lessons/SpecifyingAlgorithms/ index.html
Goodman, D., Morrison M., Novitski, P. & Gustaff, T. (2010). JavaScript Bible.
Nixon, R. (2012). PHP, MySQL, JavaScript, & CSS (2ª. Ed.), pp.318-320.
Programming Fundamentals (7a. Ed.), cap.8-12. Indianapolis, EE.UU.: Wiley
Publishing Inc.