You are on page 1of 16

Universidad de San Carlos de Guatemala

Facultad de Ingenieria
Escuela de Mecánica Eléctrica
Lenguajes de Programación Aplicados a Ingeniería Eléctrica [0991]

Manual de Prácticas de Laboratorio

Autor Supervisor
Erick Roberto Mendoza Arevalo Ing. Sergio Leonel Gómez Bravo

20 de abril de 2018
Índice general

1. Introducción a GNU/Linux 2
1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Formato de Entrega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Fundamentos de Programación en JavaScript 4


2.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Marco Teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1. ¿Qué es JavaScript? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2. Entorno de Desarrollo Integrado – IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3. Fundamentos de Programación en JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.4. Sentencias de control de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.5. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4. Formato de entrega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1
Práctica 1

Introducción a GNU/Linux

1.1. Objetivos
Utilizar y aprovechar las herramientas provistas en una determinada distribución de GNU/Linux, así como
las funcionalidades del mismo.
• Comprender las ventajas y desventajas que provee una distribución GNU/Linux.
• Analizar las características que ofrecen una distribución GNU/Linux particular.
• Reconocer las facilidades de gestión del sistema operativo GNU/Linux frente otro sistema operativo.

1.2. Descripción
Nota 1: Para realizar esta determinada práctica de laboratorio puede utilizar la distribución de GNU/Linux que
usted y sus compañeros deseen, pero para esta misma se les provee un archivo de disco duro virtual para VirtualBox
con Ubuntu 17.10 (Artful Aardvark). Esta misma la puede obtener con el auxiliar del curso. Si en dado caso desea
dicha Maquina Virtual, llevar una memoria USB con espacio suficiente para 3GB, en formato NTFS.

Nota 2: En donde aparezca el símbolo 44, sustituya por su número de grupo, utilizando DOS DÍGITOS para
ello. Ejemplo: Si su número de grupo es el 6, deberá sustituir 44 por 06.

Módulo 1 - Cuestionario
Para el desarrollo de esta actividad, debe de responder al cuestionario, el cual puede encontrar en este enlace. La
extensión del archivo es .docx, por lo que puede utilizar cualquier editor de textos para responder sobre el mismo.
Al finalizar de responder el cuestionario, debe de guardar el archivo con el nombre que se indica abajo y la extensión
del archivo respectiva.

Nombre y Extensión del Archivo: 0991_g44_mod1.pdf.


Ponderación: 20 puntos.

Módulo 2 - Investigación
En este módulo, usted y sus compañeros deberan de investigar la funcionalidad de cada uno de los comandos
bash que se pueden utilizar en distribuciones de GNU/Linux basadas en Debian. Debe de escribir la funcionalidad
del comando, así como la sintaxis del comando a ejecutar. Esto mismo, tal como el módulo anterior, lo puede editar
del archivo .docx que encontrará en el siguiente enlace. Al finalizar de realizar la investigación, debe de guardar el
archivo con el nombre que se indica abajo y la extensión del archivo respectiva.

Nombre y Extensión del Archivo: 0991_g44_mod2.pdf.

Ponderación: 30 puntos.

2
Módulo 3 - Primeros Pasos en Linux
Para esta actividad, debe de realizar la siguiente serie de instrucciones descritas en el documento, que encontrará
en este enlace, y para ello debe de dejar constancia de cada una de las instrucciones descritas en ella incluyendo
las capturas de pantalla que ameriten el logro de cada una de las actividades. Al finalizar de realizar este modulo,
debe de guardar el archivo con el nombre que se indica abajo y la extensión del archivo respectiva.

Nombre y Extensión del Archivo: 0991_g44_mod3.pdf.


Ponderación: 50 puntos.

1.3. Formato de Entrega


Todos los archivos deben de subirse al formulario de Google ubicado en el sitio de laboratorio. Además deben
de IMPRIMIR la siguiente rúbrica de evaluación y entregarla al auxiliar del curso, a más tardar el día miércoles 14
de marzo de 2018, en el horario de clase. El grupo que no entregue dicha rúbrica de evaluación perderá automáti-
camente el derecho a entregar la práctica.

Fecha y hora límite de entrega: Sábado, 07 de Abril de 2018, a las 23:59:59 hrs.

3
Práctica 2

Fundamentos de Programación en JavaScript

2.1. Objetivos
Desarrollar páginas web dinámicas utilizando el lenguaje de programación JavaScript.
• Analizar la sintaxis de las expresiones e instrucciones utilizadas en el lenguaje de programación JavaS-
cript.
• Comprender cada una de las sentencias utilizadas en el lenguaje de programación JavaScript.
• Entender los paradigmas de programación que admite el lenguaje de programación JavaScript.

2.2. Marco Teórico


2.2.1. ¿Qué es JavaScript?
De acuerdo a Wikipedia, JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado,
dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débil-
mente tipado y dinámico.

Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador
web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas aunque existe una forma de JavaScript
del lado del servidor(Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en
documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo.

Desde el 2012, todos los navegadores modernos soportan completamente ECMAScript 5.1, una versión de javas-
cript. Los navegadores más antiguos soportan por lo menos ECMAScript 3. La sexta edición se liberó en julio del
2015.

JavaScript se diseñó con una sintaxis similar a C, aunque adopta nombres y convenciones del lenguaje de pro-
gramación Java. Sin embargo, Java y JavaScript tienen semánticas y propósitos diferentes.

Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas web. Para interactuar
con una página web se provee al lenguaje JavaScript de una implementación del Document Object Model (DOM).

Tradicionalmente se venía utilizando en páginas web HTML para realizar operaciones y únicamente en el marco
de la aplicación cliente, sin acceso a funciones del servidor. Actualmente es ampliamente utilizado para enviar y
recibir información del servidor junto con ayuda de otras tecnologías como AJAX. JavaScript se interpreta en el
agente de usuario al mismo tiempo que las sentencias van descargándose junto con el código HTML.

Desde el lanzamiento en junio de 1997 del estándar ECMAScript 1, han existido las versiones 2, 3 y 5, que es la
más usada actualmente (la 4 se abandonó). En junio de 2015 se cerró y publicó la versión ECMAScript 6.

4
2.2.2. Entorno de Desarrollo Integrado – IDE
Un entorno de desarrollo integrado o entorno de desarrollo interactivo, en inglés Integrated Development Envi-
ronment (IDE), es una aplicación informática que proporciona servicios integrales para facilitarle al desarrollador o
programador el desarrollo de software.

En este caso, para JavaScript (y desarrollo web) podríamos encontrar los siguientes:
RJ TextEd
Light Table
Netbeans
Brackets
Komodo Edit
Atom
Visual Studio Code
Esta claro que existen varios IDE para desarrollar páginas web dinámicas con JavaScript, aunque estos mismos
pueden desarrollarse desde la terminal en Ubuntu creando programas con nano o vi, o bien, cualquier editor de
textos, siempre y cuando los archivos se almacenen con la extensión .js para scripts externos de JavaScript.

Ustedes son libres de elegir el IDE con el que deseen trabajar.

2.2.3. Fundamentos de Programación en JavaScript


En este documento encontrará ideas directas sobre cada uno de los fundamentos de JavaScript, por lo que en
los siguientes enlaces encontrará información con mayor detalle:

Guía de JavaScript - JavaScript | MDN


Introducción a JavaScript - Libros Web
Eloquent JavaScript (Página en Inglés)

Respecto al último enlace, se proporciona una versión del libro Eloquent JavaScript en español, junto a este
manual de prácticas de laboratorio.

Conceptos básicos
Script. Cada uno de los programas, aplicaciones o trozos de código creados con el lenguaje de programación
JavaScript. Unas pocas líneas de código forman un script y un archivo de miles de líneas de JavaScript también
se considera un script. A veces se traduce al español directamente como "guión", aunque script es una palabra
más adecuada y comúnmente aceptada.
Variable. Una variable es un elemento que se emplea para almacenar y hacer referencia a otro valor. Las
variables en JavaScript se crean mediante la palabra reservada var. El nombre de una variable también se
conoce como identificador y debe cumplir las siguientes normas:
- Sólo puede estar formado por letras, números y los símbolos $ (dólar) y _ (guión bajo).
- El primer carácter no puede ser un número.
Debe de tomarse en cuenta que JavaScript es case-sensitive, por lo que diferencia entre mayúsculas y minúscu-
las, así que las letras incluyen tanto desde la A hasta la Z (mayúsculas) como de la a hasta la z (minúsculas).
Además hay que tomar en cuenta el ámbito de una variable. Se dice que una variable es global si esta se
declara fuera de una función, y se dice que es una variable local cuando solamente se encuentra disponible en
la función, por lo que solamente se declara dentro de la misma. Para ello podemos tomar en cuenta el uso de
la declaración let para nombrar varaibles locales dentro de un bloque.

5
Comentarios. La sintaxis de comentarios es la misma como en C++ y en muchos otros lenguajes. Los comen-
tarios de una línea inician con doble barra diagonal //. Los comentarios de multilínea se delimitan por /* y
por */.
Constantes. Se pueden crear elementos de solo lectura, denominados constantes con la palabra reservada const.
Las reglas para el identificador de una constante son las mismas que las de una variable. Una constante no
puede cambiar de valor mediante la asignación o volver a declararse mientras se ejecuta el script.

1 // Constantes
2 const pi = 3.14159;
3 const curso = "Lenguajes"
4

5 // Variables globales
6 var num1;
7 var num2 = 4;
8 var num3 = "Hola";
9

10 // Variables locales en ámbitos de bloque


11 {
12 let num4;
13 let num5 = 42;
14 let num6 = "Esto es un string"
15 }
16

17 /*
18 * Fuera del bloque de sentencias (delimitado por llaves), no existen
19 * las variables num4, num5 y num6.
20 *
21 * Solamente existen las variables globales num1, num2 y num3, así
22 * como las constantes pi y curso.
23 */

Tipos de variables. Dado que no se necesita especificar el tipo de dato que corresponde a la variable, las
variables adquieren automáticamente el tipo de dato que requieran almacenar (a esto se le conoce como tipado
dinámico). Entre ellas podemos encontrar:
- Numéricas: Se utilizan para almacenar valores numéricos enteros (integer) o decimales (float). Los núme-
ros decimales utilizan el carácter punto en vez de coma para separar la parte entera y la parte decimal.
- Cadenas de texto: Se utilizan para almacenar caracteres, palabras y/o frases de texto. Para asignar el
valor a la variable, se encierra el valor entre comillas dobles o simples, para delimitar su comienzo y su
final.
- Arreglos: Un array es una colección de variables, que pueden ser todas del mismo tipo o cada una de un
tipo diferente. Para definir un array, se utilizan los caracteres [ y ] para delimitar su comienzo y su final
y se utiliza el carácter , (coma) para separar sus elementos. La sintaxis de un array de N elementos es
como la siguiente:

var nombre_array = [valor1, valor2, ..., valorN];

Para acceder a un elemento del array, se accede mediante los corchetes con el indice del elemento
correspondiente. Nótese que JavaScript, así como otros lenguajes de programación, se manejan por índice
cero, por lo que el primer elemento del array se invocaría con el índice cero, no uno.
- Booleanos: También se conocen con el nombre de variables de tipo lógico. Una variable de tipo boolean
almacena un tipo especial de valor que solamente puede tomar dos valores: true (verdadero) o false
(falso). No se puede utilizar para almacenar números y tampoco permite guardar cadenas de texto.
Operadores: Los operadores permiten manipular el valor de las variables, realizar operaciones matemáticas con
sus valores y comparar diferentes variables. De esta forma, los operadores permiten a los programas realizar

6
cálculos complejos y tomar decisiones lógicas en función de comparaciones y otros tipos de condiciones. Los
tipos de operadores que existen son los siguientes:
- Operador de Asignación: Este operador se utiliza para guardar un valor específico en una variable. El
símbolo utilizado es =.
- Operadores de Incremento y Decremento: Estos dos operadores solamente son válidos para las variables
numéricas y se utilizan para incrementar o decrementar en una unidad el valor de una variable.
◦ El operador de incremento se indica mediante el prefijo (o sufijo) ++ en el nombre de la variable. El
resultado es que el valor de esa variable se incrementa en una unidad.
◦ De forma equivalente, el operador decremento (indicado como un prefijo (o sufijo) –– en el nombre
de la variable) se utiliza para decrementar el valor de la variable.
Como ejemplo, se muestra que sucede cuando las variables se les coloca el operador de incremento o
decremento como prefijo o sufijo (se asume que las variables num1, num2 y num3 ya estan declaradas):

1 num1 = 5;
2 num2 = 2;
3 num3 = num1++ + num2;
4 // num1 = 6; num3 = 7
5

6 num1 = 5;
7 num2 = 2;
8 num3 = ++num1 + num2;
9 // num1 = 6; num3 = 8
10

11 num1 = 5;
12 num2 = 2;
13 num3 = num1-- + num2;
14 // num1 = 4; num3 = 3
15

16 num1 = 5;
17 num2 = 2;
18 num3 = --num1 + num2;
19 // num1 = 4; num3 = 2

Como se puede observar, cuando el operador actua como prefijo, primero se encarga de asignar el incre-
mento/decremento a la variable, y luego realiza la operación necesaria. Si el operador actua como sufijo,
primero realiza la operación necesaria con los valores de las variables en ese estado, y luego realiza el
incremento/decremento.
- Operadores Lógicos: Son operadores que manejan estados booleanos, por lo que su resultado es un valor
booleano. Entre ellos encontramos los siguientes (se consideran como variables booleanas las variables a,
b y c):
◦ Negación: Se utiliza para obtener el valor contrario al valor de la variable.

a = !b //Si b = true, entonces a = false

◦ AND: Devuelve un valor true si los dos valores a operar son true, de lo contrario, devuelve false.

a = b && c

◦ OR: Devuelve un valor true si alguno de los dos valores a operar es true, de lo contrario, devuelve
false.

a = b || c

- Operadores Aritméticos: JavaScript permite realizar manipulaciones matemáticas sobre el valor de las
variables numéricas. Los operadores definidos son: suma (+), resta (-), multiplicación (*), división (/) y
módulo ( %).

7
• Operadores Relacionales: Los operadores relacionales definidos por JavaScript son idénticos a los que
definen las matemáticas: mayor que (>), menor que (<), mayor o igual (>=), menor o igual (<=), igual
que (==) y distinto de (!=).

2.2.4. Sentencias de control de flujo


Tal y como en otros lenguajes de programación, estas sentencias o estructuras de control son aquellas que
podemos clasificar en los siguientes grupos:

Estructuras de control condicionales


Una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función
del valor de una condición. Entre este grupo, encontramos las siguientes estructuras:
Sentencia if...else
Se utiliza la sentencia if para comprobar si la condición lógica es verdadera. Se utiliza la opción else para
ejecutar un sentencia si la condición es falsa. La sintaxis de esta expresión (utilizando además else if) es la
siguiente:

1 if (condición_1) {
2 sentencia_1;
3 } else if (condición_2) {
4 sentencia_2;
5 } else if (condición_n) {
6 sentencia_n;
7 } else {
8 sentencia_final;
9 }

Sentencia switch
Una sentencia switch permite a un programa evaluar una expresión e intentar igualar el valor de dicha expresión
a una etiqueta de caso (case). Si se encuentra una coincidencia, el programa ejecuta la sentencia asociada.
Una sentencia switch se describe como se muestra a continuación:

1 switch (expresión) {
2 case etiqueta_1:
3 sentencias_1
4 [break;]
5 case etiqueta_2:
6 sentencias_2
7 [break;]
8 ...
9 default:
10 sentencias_por_defecto
11 [break;]
12 }

El programa primero busca una claúsula case con una etiqueta que coincida con el valor de la expresión y,
entonces, transfiere el control a esa cláusula, ejecutando las sentencias asociadas a ella. Si no se encuentran
etiquetas coincidentes, el programa busca la cláusula opcional default y, si se encuentra, transfiere el control
a esa cláusula, ejecutando las sentencias asociadas. Si no se encuentra la cláusula default, el programa con-
tinúa su ejecución por la siguiente sentencia al final del switch. Por convención, la cláusula por defecto es la
última cláusula, aunque no es necesario que sea así.

La sentencia opcional break asociada con cada cláusula case asegura que el programa finaliza la sentencia
switch una vez que la sentencia asociada a la etiqueta coincidente es ejecutada y continúa la ejecución por las
sentencias siguientes a la sentencia switch. Si se omite la sentencia break, el programa continúa su ejecución
por la siguiente sentencia que haya en la sentencia switch.

8
Estructuras de control para manejo de excepciones
El manejo de excepciones es una técnica de programación que permite al programador controlar los errores
ocasionados durante la ejecución de un programa informático. Cuando ocurre cierto tipo de error, el sistema reac-
ciona ejecutando un fragmento de código que resuelve la situación, por ejemplo retornando un mensaje de error o
devolviendo un valor por defecto. Entre este grupo, encontramos las siguientes estructuras:
Sentencia throw
Se utiliza para lanzar una excepción. Cuando se lanza una excepción, se especifica la expresión que contiene
el valor para ser lanzado. Se puede lanzar cualquier expresión, no solo de un tipo específico. La sintaxis de la
sentencia es la siguiente:

throw expresión;

Sentencia try...catch
La sentencia try...catch marca un bloque de instrucciones a intentar que pueden causar alguna excepción,
y declarar una o más respuestas en caso de que una excepción sea arrojada. Si una excepción es arrojada, la
sentencia try...catch se encarga de atraparla.

1 try {
2 instruccionesTry; // Instrucciones que podrían arrojar un error.
3 } catch( catchID ) {
4 manejadorError; // Instrucciones que manejan el error
5 } finally {
6 instruccionesFinally; // Instrucciones de prevención definidas en finally
7 }

La sentencia try...catch consiste en un bloque try, el cuál contiene una o más instrucciones, y ninguno o
varios bloques catch, conteniendo sentencias que especifican que hacer si una excepción es arrojada en un
bloque try. Se desea que las instrucciones dentro del bloque try se ejecuten con éxito, de caso contrario
caerán en el bloque catch para ser controladas. Si alguna instrucción dentro del bloque try (o en una función
llamada dentro del bloque try) arroja una excepción, el control pasa inmediatamente al bloque catch. Si
ninguna excepción es arrojada en el bloque try, el bloque catch es ignorado. Por último se ejecuta el bloque
finally luego de que los bloques try y catch hayan sido ejecutados pero antes de las instrucciones que se
encuentren luego de la sentencia try...catch.

Estructuras de control iterativas


Entre este grupo, encontramos las siguientes estructuras:
Sentencia for
Un bucle for se repite hasta que la condición especificada se evalúa como false. El bucle for en JavaScript es
similar al de Java y C. Una sentencia for se muestra como sigue:

1 for ([expresionInicial]; [condicion]; [expresionIncremento]) {


2 sentencia
3 }

Sentencia for...in
La sentencia for...in itera una variable especificada sobre todas las propiedades enumerables de un objeto.
Para cada propiedad distinta, JavaScript ejecuta las sentencias especificadas. Una sentencia for...in será
como sigue:

1 for (variable in objeto) {


2 sentencias;
3 }

9
Sentencia for...of
La sentencia for...of crea un bucle iterando sobre objetos iterables, invocando una iteración personalizada
conectando con sentencias para ser ejecutadas por el valor de cada propiedad distinta.

1 for (variable of objeto) {


2 sentencias;
3 }

El siguiente ejemplo muestra la diferencia entre un bucle for...of y un bucle for...in. Mientras for...in
itera sobre nombres de propiedades, for...of itera sobre valores de propiedades:

1 let arr = [3, 5, 7];


2 arr.foo = "hello";
3

4 for (let i in arr) {


5 console.log(i); // logs "0", "1", "2", "foo"
6 }
7

8 for (let i of arr) {


9 console.log(i); // logs "3", "5", "7"
10 }

Sentencia do...while
La sentencia do...while se repite hasta que una condición especificada se evalúa a false. Una sentencia
do...while se mostrará como sigue:

1 do {
2 sentencia;
3 } while (condicion);

Sentencia while
Una sentencia while ejecuta sus sentencias mientras la condición sea evaluada como verdadera. Una sentencia
while tiene el siguiente aspecto:

1 while (condicion) {
2 sentencias;
3 }

Sentencia label (etiquetas)


Un label proporciona una sentencia con un identificador que permite referirse a él desde cualquier lugar de
su programa. La sintaxis de la sentencia label es:

1 label:
2 sentencia;

Nótese que label no es una palabra reservada, lo que se indica acá es que usted puede nombrar su etiqueta
como guste (siempre y cuando no sea una palabra reservada del lenguaje).
Sentencia break
Use la sentencia break para salir de un bucle, switch, o en conjunto con una sentencia label. Cuando use
break sin un label, finaliza inmediatamente el código encerrado en while, do...while, for, o switch y
transfiere el control a la siguiente sentencia. Cuando usted use break con un label, termina la sentencia
especificada por label. La sintaxis de la sentencia break es la siguiente:

1 break;
2 break label;

10
Sentencia continue
La sentencia continue puede usarse para reiniciar una sentencia while, do...while, for, o label. Cuando
use continue sin un label, este termina la iteración en curso del código encerrado en una sentencia while,
do...while o for y continúa la ejecución del bucle con la siguiente iteración. A diferencia de la sentencia
break, continue no termina completamente la ejecución del bucle. En un bucle while, salta atrás hasta la
condición. En un bucle for, salta a la expresionIncremento. Cuando use continue con una etiqueta, esto
se aplica a las sentencias anidadas identificadas con una etiqueta. La sintaxis de la sentencia continue es la
siguiente:

1 continue;
2 continue label;

2.2.5. Funciones
Antes de revisar la definición formal de función, se revisarán las funciones y propiedades básicas de los tipos de
variables en JavaScript.

Funciones y propiedades básicas de JavaScript


JavaScript incorpora una serie de herramientas y utilidades (llamadas funciones y propiedades, como se verá
más adelante) para el manejo de las variables. De esta forma, muchas de las operaciones básicas con las variables,
se pueden realizar directamente con las utilidades que ofrece JavaScript.

Funciones útiles para cadenas de texto


• length – Calcula la longitud de una cadena de texto (el número de caracteres que la forman).
• toUpperCase() – Transforma todos los caracteres de la cadena a sus correspondientes caracteres en
mayúsculas.
• toLowerCase() – Transforma todos los caracteres de la cadena a sus correspondientes caracteres en
minúsculas.
• charAt(posicion) – Obtiene el carácter que se encuentra en la posición indicada.
• indexOf(caracter) – Calcula la posición en la que se encuentra el carácter indicado dentro de la cadena
de texto. Si el carácter se incluye varias veces dentro de la cadena de texto, se devuelve su primera
posición empezando a buscar desde la izquierda. Si la cadena no contiene el carácter, la función devuelve
el valor -1.
• lastIndexOf(caracter) – Calcula la última posición en la que se encuentra el carácter indicado dentro
de la cadena de texto. Si la cadena no contiene el carácter, la función devuelve el valor -1.
• substring(inicio, final) – Extrae una porción de una cadena de texto. El segundo parámetro es
opcional. Si sólo se indica el parámetro inicio, la función devuelve la parte de la cadena original corres-
pondiente desde esa posición hasta el final.
• split(separador) – Convierte una cadena de texto en un array de cadenas de texto. La función parte
la cadena de texto determinando sus trozos a partir del carácter separador indicado.

Funciones útiles para arrays


• length – Calcula el número de elementos de un array.
• concat() – Se emplea para concatenar los elementos de varios arrays.
• join(separador) – Es la función contraria a split(). Une todos los elementos de un array para formar
una cadena de texto. Para unir los elementos se utiliza el carácter separador indicado.
• pop() – Elimina el último elemento del array y lo devuelve. El array original se modifica y su longitud
disminuye en 1 elemento.
• push() – Añade un elemento al final del array. El array original se modifica y aumenta su longitud en 1
elemento. (También es posible añadir más de un elemento a la vez).

11
• shift() – Elimina el primer elemento del array y lo devuelve. El array original se ve modificado y su
longitud disminuida en 1 elemento.
• unshift() – Añade un elemento al principio del array. El array original se modifica y aumenta su longitud
en 1 elemento. (También es posible añadir más de un elemento a la vez).
• reverse() – Modifica un array colocando sus elementos en el orden inverso a su posición original.
Funciones útiles para números
• isNaN() – permite proteger a la aplicación de posibles valores numéricos no definidos.
• toFixed(digitos) – Devuelve el número original con tantos decimales como los indicados por el pará-
metro digitos y realiza los redondeos necesarios.

Funciones en JavaScript
Las funciones contienen bloques de código que se ejecutaran repetidamente. A las mismas se le pueden pasar
argumentos, y opcionalmente la función puede devolver un valor.

Las funciones no son lo mismo que los procedimientos. Una función siempre devuelve un valor, pero un proce-
dimiento, puede o no puede devolver un valor.

Las funciones pueden ser creadas de varias formas:

Declaración de una función

function foo() { /* hacer algo */ }

Declaración de una función nombrada

var foo = function() { /* hacer algo */ }

Es preferible el método de función nombrada debido a algunas profundas razones técnicas. Igualmente, es
probable encontrar a los dos métodos cuando se revise código JavaScript.

2.3. Descripción
Nota 1: En donde aparezca el símbolo 44, sustituya por su número de grupo, utilizando DOS DÍGITOS para
ello. Ejemplo: Si su número de grupo es el 6, deberá sustituir 44 por 06.

Módulo 1 - Resumen
Para este módulo, deben realizar un resumen (por vídeo) de esta lista de reproducción. Cada resumen puede ser
mínimo de 1 parrafo (siempre y cuando se explique la idea fundamental). Los videos que deben analizarse son los
primeros 12, siendo estos los siguientes:
1. Introducción
2. Variables
3. Tipos de datos
4. Arreglos
5. Métodos y propiedades para los Arreglos
6. Condicionales
7. Ciclo For

12
8. Ciclo While
9. Funciones
10. Ejercicio con Funciones y Formularios
11. Scope de JavaScript
12. Métodos y propiedades para Cadenas de Texto
Este mismo se debe de entregar en formato LATEX, por lo cual se les provee la plantilla base en este enlace. El
archivo que debe de adjuntar al entregar su práctica debe ser .PDF, no .TEX, para que lo tome en cuenta.

Nombre y Extensión del Archivo: 0991_g44_mod1.pdf.


Ponderación: 25 puntos.

Módulo 2 - Diseño
Para este módulo debe de realizar cada uno de los siguientes programas en JavaScript. Tenga en cuenta lo que
se le solicita en cada programa, así como el nombre y extensión del archivo. En el desarrollo de sus scripts, trabaje
según se le indique en el programa a realizar.

Nota 1: Si todas las páginas web que realice se manejan con diseño responsive, incorporando hojas de estilos
(CSS y Bootstrap), se ponderará con 15 puntos adicionales sobre la nota de la práctica. Para ello es necesario que
si maneja archivos externos para las hojas de estilo, los adjunte en el archivo final.

Nota 2: Todos los programas los debe de realizar utilizando formularios de una página web, por lo debe incluir
los cinco programas solicitados dentro de una misma página web, separados por secciones indicando el programa a
realizar.

>>> Programa 1: Solicite al usuario que ingrese tres números enteros en tres casillas distintas y al presionar
un boton, que estos sean almacenados en tres variables, denominadas a, b, c. Luego, ordene estos valores de
menor a mayor, de forma que se cumpla que a < b < c (No utilice variables intermedias para el ordenamiento,
solamente estas tres variables; en otras palabras, el programa solamente debe tener tres variables, no más).
Luego imprima en pantalla el resultado de los valores ordenados mediante el uso de una alerta.
• Nombre y Extensión del Archivo: code-01.js.
• Ponderación: 15 puntos.
>>> Programa 2: Solicite al usuario que ingrese un número entero mayor que 10, el cual ingrese en una casilla.
Al momento de presionar el boton, si en caso el número ingresado no es mayor que 10, que se muestre una
alerta indicando que el número no es mayor que 10, y vuelva a solicitar el número entero. Si la condición si se
cumple, que se muestre en pantalla una columna de la lista de los números pares menores al numero ingresado
de forma ascendente, otra columna que muestre los números impares menores al numero ingresado de forma
descendente y otra columna que muestre el producto de los dos número en la fila respectiva.
Ejemplo: Si el usuario ingreso el número 17, en pantalla se debe de mostrar lo siguiente:

El número ingresado fue: 17


PAR IMPAR PRODUCTO
0 17 0
2 15 30
4 13 52
6 11 66
8 9 72
10 7 70
12 5 60
14 3 42
16 1 16

13
• Nombre y Extensión del Archivo: code-02.js.
• Ponderación: 15 puntos.
>>> Programa 3: La secuencia de Fibonacci es una secuencia en la que cada término se genera de la siguiente
forma:
fn = fn−1 + fn−2
Tomando como semillas de la secuencia los siguientes valores: f0 = a y f1 = b, donde a es el primer valor que
se le solicita al usuario que ingrese, y b es el segundo valor solicitado al usuario (cada uno en casillas distintas).
En base a esto, solicite al usuario un tercer número N mayor a 5 (en caso de que este número no sea mayor
a 5, seguir solicitando el número hasta que se cumpla la condición) y muestre la cantidad de términos de la
secuencia de Fibonacci modificada hasta la cantidad N indicada por el usuario, separados por comas y en la
misma línea. Luego en otra línea, muestre la suma de la secuencia generada.
Ejemplo 1 : Si el usuario ingreso los números 3, -6, 10, respectivamente, en pantalla se debería de desplegar lo
siguiente:

Ingrese a: 3
Ingrese b: -6
Ingrese N: 10
Secuencia de Fibonacci modificada:
3, -6, -3, -9, -12, -21, -33, -54, -87, -141
Sumatoria: -363

Ejemplo 2 : Si el usuario ingreso los números 0.1, -0.005, 13, respectivamente, en pantalla se debería de desplegar
lo siguiente:

Ingrese a: 0.1
Ingrese b: -0.005
Ingrese N: 13
Secuencia de Fibonacci modificada:
0.1, -0.005, 0.095, 0.09, 0.185, 0.275, 0.46, 0.735, 1.195, 1.93, 3.125, 5.055, 8.18
Sumatoria: 21.42

• Nombre y Extensión del Archivo: code-03.js.


• Ponderación: 15 puntos.

>>> Programa 4: Solicite al usuario que ingrese un número entero mayor que 1, denominado p (sino cumple, vuelva
a solicitar el número). Luego, solicite al usuario que ingrese un número entero mayor que p, denominado q
(sino cumple, vuelva a solicitar el número). Ahora bien, solicite al usuario un número entero mayor que p × q,
denominado r (sino cumple, vuelva a solicitar el número). Ahora bien, con estos números determine la suma
de todos los números naturales que son multiplos de p o múltiplos de q menores a r. Imprima este valor en
pantalla.
Ejemplo 1 : Si el usuario ingresó 5, 8 y 100, respectivamente, se muestra lo siguiente en pantalla:

Ingrese p (numero entero mayor a 1): 5


Ingrese q (numero entero mayor a p): 8
Ingrese r (numero entero mayor a p*q): 100
Suma de los multiplos de p o q menores a r: 1454

Los valores que son multiplos de 5 o múltiplos de 8 menores a 100 son: 5, 8, 10, 15, 16, 20, 24, 25, 30, 32, 35, 40,
45, 48, 50, 55, 56, 60, 64, 65, 70, 72, 75, 80, 85, 88, 90, 95, 96. La suma de estos números da como resultado 1454.

Ejemplo 2 : Si el usuario ingresó 2, 7 y 70, respectivamente, se muestra lo siguiente en pantalla:

14
Ingrese p (numero entero mayor a 1): 2
Ingrese q (numero entero mayor a p): 7
Ingrese r (numero entero mayor a p*q): 70
Suma de los multiplos de p o q menores a r: 1365

Los valores que son multiplos de 2 o múltiplos de 7 menores a 70 son: 2, 4, 6, 7, 8, 10, 12, 14, 16, 18, 20, 21,
22, 24, 26, 28, 30, 32, 34, 35, 36, 38, 40, 42, 44, 46, 48, 49, 50, 52, 54, 56, 58, 60, 62, 63, 64, 66, 68. La suma
de estos números da como resultado 1365.

• Nombre y Extensión del Archivo: code-04.js.


• Ponderación: 15 puntos.
>>> Programa 5: Realice un programa donde solicite al usuario un número entero mayor a 1000 (sino cumple,
vuelva a solicitar el número). Luego, imprima en pantalla el factor primo más grande de dicho número.
Ejemplo 1 : Si el usuario ingresó 2056, se muestra lo siguiente en pantalla:

Ingrese un entero mayor a 1000: 2056


El factor primo mas grande es: 257

La factorización prima de 2056 es: 2056 = 23 × 257, así que los factores primos de 2056 son 2 y 257. Por lo
tanto el factor primo más grande de este número es 257.

Ejemplo 2 : Si el usuario ingresó 94721400, se muestra lo siguiente en pantalla:

Ingrese un entero mayor a 1000: 94721400


El factor primo mas grande es: 1949

La factorización prima de 94721400 es: 94721400 = 23 × 35 × 52 × 1949, así que los factores primos de 2056
son 2, 3, 5, 1949. Por lo tanto el factor primo más grande de este número es 1949.

Ejemplo 3 : Si el usuario ingresó 9699690, se muestra lo siguiente en pantalla:

Ingrese un entero mayor a 1000: 9699690


El factor primo mas grande es: 19

La factorización prima de 9699690 es: 94721400 = 2 × 3 × 5 × 7 × 11 × 13 × 17 × 19, así que los factores primos
de 2056 son 2, 3, 5, 7, 11, 13, 17, 19. Por lo tanto el factor primo más grande de este número es 19.
• Nombre y Extensión del Archivo: code-05.js.
• Ponderación: 15 puntos.

Los cinco archivos solicitados (.js) y la página web (.html) se deben de agregar a un archivo comprimido
(extensión: .7z, .rar, .zip) y ese archivo es el que deben de subir al formulario de Google. Si utilizan algún archivo
adicional (hojas de cascada con estilos u otros scripts) utilizado dentro de la página web deben de adjuntarlo junto
a los anteriores.

Nombre y Extensión del Archivo: 0991_g44_mod4.rar.


Ponderación: 75 puntos.

2.4. Formato de entrega


Todos los archivos deben de subirse al formulario de Google ubicado en el sitio de laboratorio.

Fecha y hora límite de entrega: Sábado, 28 de Abril de 2018, a las 23:59:59 hrs.

15

You might also like