miércoles, 25 de noviembre de 2020

SEMANA No.16 - EXÁMEN FINAL Y AUTOEVALUACIÓN

EVALUACIÓN FINAL
 
Buen día estudiante,

Ya esta disponible la evaluación final en linea para la materia PROGRAMACIÓN BÁSICA, la cual podrán activar mediante el botón (Iniciar Evaluación) que aparece a continuación. 
 
Para poder presentarla deberán tener una cuenta en gmail y tenerla activa (el correo abierto en otra pestaña) con el fin de que el sistema le permita realizarla.

Debe tener precaución a la hora de presentarla ya que solo podrá iniciarla 1 vez y después de iniciada solo podrá enviarla una vez y el tiempo de duración sera de 2 horas antes de que se cierre el sistema.  

Espero que le vaya bien en el proceso.

Fecha máxima de desarrollo: Jueves 26 de Noviembre de 2020


https://forms.gle/t81LT57XbrgnSctX8

En caso de que no funcione el botón copie este link en el navegador:

https://forms.gle/VskPtV3fpLmWHL8r7

 

 _________________________________________

 

 AUTOEVALUACIÓN

 

Clic en el botón para iniciar autoevaluación.

https://forms.gle/UW5hz7zavPPz5ntMA

NOTA: Tenga presente que solo podrá realizarlo una vez y que debe estar logueado con su correo institucional @pascualbravo.edu.co

 

jueves, 19 de noviembre de 2020

SEMANA No.15 - FUNCIONES

 

Creación de funciones y procedimientos (subprocesos)

En muchos casos, nos encontraremos con tareas que tenemos que repetir varias veces en distintos puntos de nuestro programa. Si tecleamos varias veces el mismo fragmento de programa no sólo tardaremos más en escribir: además el programa final resultará menos legible, será más también será más fácil que cometamos algún error alguna de las veces que volvemos a teclear el fragmento repetitivo, o que decidamos hacer una modificación y olvidemos hacerla en alguno de los fragmentos. Por eso, conviene evitar que nuestro programa contenga código repetitivo. Una de las formas de evitarlo es usar "subrutinas", una posibilidad que la mayoría de lenguajes de programación permiten, y que en ocasiones recibe el nombre de "procedimientos" o de "funciones" (existe algún matiz que hace que esas palabras no sean realmente sinónimas y que comentaremos más adelante).

PseInt permite definir "subrutinas" (o "funciones") dentro del pseudocódigo, desde la versión del 10 de octubre de 2012. En su caso, se llaman "subprocesos". Veamos un ejemplo de su uso:

Vamos a empezar por crear un subproceso (o "subrutina", o "procedimiento") que escriba 20 guiones, que podríamos utilizar para subrayar textos. Un programa completo que escribiera tres textos y los subrayara podría ser:

Algoritmo SubProcesos01
    Escribir " Primer ejemplo"
    Para x <- 1 Hasta 20 Hacer
        Escribir Sin Saltar "-"
    FinPara
    Escribir ""

    Escribir " Segundo ejemplo"
    Para x <- 1 Hasta 20 Hacer
        Escribir Sin Saltar "-"
    FinPara
    Escribir ""

    Escribir " Tercer ejemplo"
    Para x <- 1 Hasta 20 Hacer
        Escribir Sin Saltar "-"
    FinPara
    Escribir ""
FinAlgoritmo

Muy repetitivo. Sería un poco más elegante si lo reescribimos así:

Algoritmo SubProcesos02
    Escribir " Primer ejemplo"
    Subrayar

    Escribir " Segundo ejemplo"
    Subrayar

    Escribir " Tercer ejemplo"
    Subrayar
FinAlgoritmo

Subproceso Subrayar
    Para x <- 1 Hasta 20 Hacer
        Escribir Sin Saltar "-"
    FinPara
    Escribir ""    
FinSubproceso

Ahora realizaremos un ejercicio desarrollando una calculadora basica:

Funcion divicion <- dividir ( n1,n2 )
    divicion = n1/n2;
Fin Funcion
Funcion multiplicacion <- multiplicar ( n1,n2 )
    multiplicacion = n1*n2;
Fin Funcion
Funcion resta <- restar ( n1,n2 )
    resta = n1-n2;
Fin Funcion
Funcion suma <- sumar ( n1,n2 )
    suma = n1+n2;
Fin Funcion
Algoritmo calculadora
    
    Definir a,b,operacion Como Entero;
    
    Escribir "Ingrese primer numero";
    Leer a
    Escribir "Ingrese segundo numero";
    Leer b
    
    Escribir "seleccione la operacion a desarrollar";
    escribir "";
    escribir "1: Sumar";
    escribir "2: Restar";
    escribir "3: Multiplicar";
    escribir "4: Dividir";
    Escribir "";
    leer operacion;
    
    Segun operacion Hacer
        1:
            escribir "El resultado de la operación es: ",sumar(a,b);
        2:
            escribir "El resultado de la operación es: ",restar(a,b);
        3:
            escribir "El resultado de la operación es: ",multiplicar(a,b);
        4:
            escribir "El resultado de la operación es: ",dividir(a,b);
    Fin Segun
    
FinAlgoritmo

 

Mucho más legible, pero todavía no está tan bien como debería: siempre estamos escribiendo 20 guiones, aunque el texto sea más largo o más corto. En la mayoría de lenguajes de programación se puede indicar detalles adicionales ("parámetros") para que se puedan utilizar desde dentro de esa subrutina. Por ejemplo, en nuestro caso podríamos indicarle qué texto queremos escribir y qué longitud queremos que tenga la secuencia de guiones:


Algoritmo SubProcesos03
    EscribirSubrayado(" Primer ejemplo", 16)
    EscribirSubrayado(" Segundo ejemplo", 17)
    EscribirSubrayado(" Tercer ejemplo", 16)
FinAlgoritmo

Subproceso EscribirSubrayado(texto, cantidad)
    Escribir texto
    Para x <- 1 Hasta cantidad Hacer
        Escribir Sin Saltar "-"
    FinPara
    Escribir ""    
FinSubproceso

Eso todavía es un poco redundante: en general, querremos escribir tantos guiones como letras tenga el texto, así que no será necesario indicar ese dato. Desde octubre de 2012, PseInt incluye ciertas funciones predefinidas para manejo de cadenas de texto; una de ellas es "Longitud", que nos indica la cantidad de letras que tiene un texto, de modo que nuestro programa se podría simplificar así:


Algoritmo SubProcesos04
    EscribirSubrayado("Primer ejemplo")
    EscribirSubrayado("Segundo ejemplo")
    EscribirSubrayado("Tercer ejemplo")
FinAlgoritmo

Subproceso EscribirSubrayado(texto)
    Escribir texto
    Para x <- 1 Hasta Longitud(texto) Hacer
        Escribir Sin Saltar "-"
    FinPara
    Escribir ""    
FinSubproceso

También podemos crear subprocesos que realicen ciertas operaciones aritméticas y devuelvan un resultado, como las funciones matemáticas que vimos en el tema 10. Se puede hacer con la misma palabra "subproceso" que hemos empleado hasta ahora, pero muchos lenguajes de programación distinguen entre un "procedimiento" o "subrutina", cuando se da una serie de pasos pero no se devuelve ningún valor (como habíamos hecho hasta ahora), y una "función", cuando sí se devuelve un resultado (como haremos en esta ocasión), así que usaremos esta última nomenclatura. Su desarrollo se parece mucho a lo que hemos hecho hasta ahora, con la diferencia de que escogeremos un nombre para la variable que guardará el resultado, así:

Funcion resultado <- Maximo( n1, n2)
    Si n1 > n2  Entonces
        resultado <- n1
    Sino
        resultado <- n2
    FinSi
FinFuncion

Algoritmo Funciones01
    Escribir "El máximo de 5 y 12 es:"
    Escribir Maximo(5,12)
    Escribir "El máximo de 25 y 12 es:"
    Escribir Maximo(25,12)
FinAlgoritmo

Este programa crea una función que calcula cuál es el mayor de los dos números que se le indican como parámetro, y la usa dos veces, para mostrar el máximo de dos valores prefijados.

No sólo podemos devolver valores numéricos; también podemos devolver cadenas (como las funciones que vimos en el apartado 13) o "valores de verdad" (verdadero, falso). Por ejemplo, podemos crear una función que calcule si un número es primo o no (lo vamos a hacer de la forma más simple pero también de la menos eficiente: aplicar la definición, probando a dividir entre todos los números que hay entre 1 y n; si hemos encontrado dos divisores -o menos, para el número uno-, entonces el número es primo):

SubAlgoritmo resultado <- Primo ( num )
    cantidadDivisores <- 0
    Para cont <- 1 Hasta num Hacer
        Si num % cont = 0 Entonces
            cantidadDivisores <- cantidadDivisores + 1
        FinSi
    FinPara
    Si cantidadDivisores <= 2 Entonces
        resultado <- verdadero
    Sino
        resultado <- falso
    FinSi
FinSubAlgoritmo

Algoritmo PrimosDel1Al30
    Para n <- 1 hasta 30
        si Primo(n) Entonces
            Imprimir n
        FinSi
    FinPara
FinAlgoritmo

Hay más detalles que comentar sobre funciones, pero son un poco más avanzados, así que vamos a descansar un poco aquí de nuevos conceptos y a practicar lo que hemos visto...

Ejercicio de repaso propuesto 1: Crea un procedimiento EscribirCentrado, que reciba como parámetro un texto y lo escriba centrado en pantalla (suponiendo una anchura de 80 columnas; pista: deberás escribir 40 - longitud/2 espacios antes del texto).

Ejercicio de repaso propuesto 2: Crea una función CantidadDeDivisores, que reciba un número entero y devuelva la cantidad de divisores (por ejemplo, para el número 16, sus divisores son 1, 2, 4, 8, 16, por lo que la respuesta debería ser 5).

Ejercicio de repaso propuesto 3: Crea un programa que pida dos número enteros al usuario y diga si alguno de ellos es múltiplo del otro. Crea una función EsMultiplo que te ayude a que el proceso principal sea legible.

Ejercicio de repaso propuesto 4: Crea un procedimiento EscribirEspaciado, que reciba como parámetro un texto y lo escriba con un espacio adicional tras cada letra. Por ejemplo, "Hola, tú" se escribiría "H o l a , t ú ".

Ejercicio de repaso propuesto 5: Crea una función MayorDeTres, que reciba tres números enteros y devuelva el valor del mayor de ellos. Por ejemplo, para los números 5, 7 y 5, devolvería el valor 7.

Ejercicio de repaso propuesto 6: Crea una función EsPar que devuelva el valor lógico "verdadero" o "falso" según si el número que se indique como parámetro es par o no lo es.

Ejercicio de repaso propuesto 7: Crea una función Cubo, que reciba un número y lo devuelva elevado al cubo.

Ejercicio de repaso propuesto 8: Crea una función Iniciales, que devuelva una cadena formada por las iniciales de la frase que se indique como parámetro (primera letra y la letra que haya tras cada espacio; por ejemplo, para "Nacho Cabanes" devolvería "NC").

Ejercicio de repaso propuesto 12.9: Crea una función Contiene, que reciba una cadena y una (posible) subcadena, y devuelva "verdadero" o "falso", según si la primera contiene a la segunda (como "Nacho" contiene "ac") o no la contiene, (como "Aurora" no contiene "sol").

 

ACTIVIDAD


1. Hasta el momento en el proyecto global deberás tener desarrollado:

Módulo I: Modulo de Retiro.
Módulo II: Modulo de Consignación.
Modulo III: Cabio de Clave.
Modulo IV: Modulo de Transferencia.
Módulo V: Modulo de Otras Transacciones.
 

 

2. Seguir con la realizacíon de los módulos del software de un cajero automático así:

  1.  
    Esta semana trabajaremos en aplicar la tematica funciones a la aplicación e algunos de sus componentes.
  2. Debes implementar un plus a tu cajero o en otras palabras una función que te gustaria que tuviera tu software de cajero que no hayas visto que exista en otro software de cajero de la ciudad.
  3. Debes grabar un video de 5 minutos exponiendo tu proyecto cajero y debes insertarlo en una entrada de tu blog de clase.

 

 

jueves, 12 de noviembre de 2020

SEMANA No.14 - MATRICES

MATRICES:

Cuando necesitamos manejar muchos datos, generalmente hay soluciones más efectivas que tener muchas variables. Por ejemplo, si hay que guardar 10 números, resultará incómodo usar 10 variables llamadas n1, n2, n3, n4, n5, n6, n7, n8, n9, n10; si se trata de 100 números, puede pasar de resultar incómodo a ser totalmente inviable. En esos casos, será más eficiente almacenar esos 100 datos "juntos", formando lo que se conoce como una "matriz", en vez de usar 100 variables distintas.
La palabra "matriz" es una traducción del inglés "array". Algunos autores lo traducen alternativamente como tabla, vector o incluso "arreglo".
Normalmente, en una matriz podremos acceder individualmente a cada uno de sus elementos usando corchetes: el primer dato sería algo como "dato[1]".
Como primer contacto, se puede crear una matriz de 3 elementos, guardar datos en sus 3 posiciones y mostrar el primer dato y el tercero así:
Algoritmo Matriz3
Dimension datos[3]
datos[1] <- 10
datos[2] <- 25
datos[3] <- 50
Escribir "El primer dato es ", datos[1]
Escribir "Y el tercero es ", datos[3]
FinAlgoritmo
Como una matriz puede contener muchos datos, es frecuente recorrerlas de forma repetitiva, empleando una orden "para". Así un ejemplo que nos pida 6 datos y luego los muestre en orden contrario al que se han introducido podría ser:
Algoritmo MostrarAlReves
Dimension datos[6]
Para i <- 1 Hasta 6 Hacer
Escribir "Dime el dato numero ", i
Leer datos[i]
FinPara
Escribir "Los datos al reves son: "
Para i <- 6 Hasta 1 Con Paso -1 Hacer
Escribir datos[i]
FinPara
FinAlgoritmo
Que mostraría algo como:

(Haremos ejemplos más avanzados como parte de los ejercicios)
1. Realizar los siguientes ejercicios propuestos y subirlos a DRIVE  

Ejercicio de repaso propuesto 1: Crea un programa que pida un número al usuario un número de mes (por ejemplo, el 4) y diga cuántos días tiene (por ejemplo, 30). Debes usar una matriz.
Ejercicio de repaso propuesto 2: Haz un programa que pida al usuario 5 datos, los guarde en una matriz y luego muestre su media (la suma de los 5 datos, dividida entre 5).
Ejercicio de repaso propuesto 3: Crea una versión ampliada del ejercicio 2, en la que se pida al usuario 5 datos, se guarden en una matriz y finalmente se calcule su media, se muestre ésta y se muestren también los valores mayores que la media).
Ejercicio de repaso propuesto 4: Si has estudiado lo que es un vector, crea un programa que reserve espacio para dos vectores de 3 componentes, pida al usuario sus valores y calcule la suma de ambos vectores (su primera componente será x1+y1, la segunda será x2+y2 y así sucesivamente).
Ejercicio de repaso propuesto 5: Si has estudiado lo que es un vector, prepara un programa que reserve espacio para dos vectores de 3 componentes, pida al usuario sus valores y calcule su producto escalar (x1·y1+ x2·y2+x3·y3).
Ejercicio de repaso propuesto 6: Haz un programa que pida al usuario 7 números enteros y calcule (y muestre) cuál es el mayor de ellos. Nota: para calcular el mayor valor de una matriz, hay que comparar cada uno de los valores que tiene almacenados con el que hasta ese momento es el máximo provisional. El valor inicial de este máximo provisional no debería ser cero (porque el resultado sería incorrecto si todos los números son negativos), sino el primer elemento de la matriz.
Ejercicio de repaso propuesto 7: Crea un programa que prepare un array con 10 datos prefijados, luego pregunte al usuario qué dato desea buscar, avise si ese dato no aparece, y que en caso contrario diga cuántas veces se ha encontrado.
También se pueden crear arrays "de dos dimensiones" (por ejemplo, 3 filas y dos columnas), que se acercan más al concepto matemático de matriz:
Algoritmo Matriz32
Dimension datos[3,2]
datos[1,1] <- 10
datos[2,1] <- 25
datos[3,1] <- 50
datos[1,2] <- 11
datos[2,2] <- 26
datos[3,2] <- 51
Escribir "El primer dato en la primera columna es ", datos[1,1]
Escribir "Y el ultimo de la segunda columna ", datos[3,2]
FinAlgoritmo
Ejercicio de repaso propuesto 8: Crea un programa que pida al usuario dos bloques de 10 números cada uno (usando un array de dos dimensiones). Después deberá mostrar el mayor dato que se ha introducido en cada uno de esos dos bloques.
Ejercicio de repaso propuesto 9: Si has estudiado álgebra matricial, haz un programa que calcule el determinante de una matriz de 2x2, a partir de datos que introduzca el usuario.
Ejercicio de repaso propuesto 10: Si has estudiado álgebra matricial, prepara un programa que calcule el determinante de una matriz de 3x3.

EJEMPLO EXPLICACIÓN:

Clic...



2. Hasta el momento en el proyecto global deberás tener desarrollado:

Módulo I: Modulo de Retiro.
Módulo II: Modulo de Consignación.
Modulo III: Cabio de Clave.
Modulo IV: Modulo de Transferencia.

3. Seguir con la realizacíon de los módulos del software de un cajero automático así:
  1. Módulo V: Modulo de Otras Transacciones.
    Esta semana trabajaremos el módulo V.





jueves, 5 de noviembre de 2020

SEMANA No.13 - PARA

Repetir Un Cierto Número De Veces: Para

En muchas ocasiones, no queremos que algo se repita mientras se cumpla una condición, sino un cierto número de veces. Por ejemplo, para escribir "Hola" 3 veces en pantalla existe una orden más cómoda que la orden "mientras" o la orden "repetir... hasta". Es la orden "para", que hace que una variable tome una serie de valores que se van incrementando. Por ejemplo, una estructura como "para x con valores desde 2 hasta 4" haría que un bloque de programa se repitiera 3 veces. En la primera repetición, la variable "x" tendría el valor 2, en la segunda tendría el valor 3 y en la tercera tendría el valor 4. La sintaxis exacta en PSeInt es: " Para variable <- valorInicial Hasta valorFinal Hacer"
Su representación en un diagrama de flujo sería:
Y en el caso de PSeInt, ese icono generaría un esqueleto de programa como éste:

Por ejemplo, un programa que mostrara los números del 1 al 10, podría ser:
Algoritmo Para01
    Para x <- 1 Hasta 10 Hacer
        Escribir x
    FinPara
FinAlgoritmo
Cuyo resultado sería:

Si no queremos avanzar de uno en uno, sino con un incremento distinto, podemos indicar otro tamaño de "paso":
Algoritmo Para02
    Para x <- 10 Hasta 20 Con Paso 2 Hacer
        Escribir x
    FinPara
FinAlgoritmo
Y obtendríamos:

Hemos visto casi todas las construcciones que podremos encontrar en los lenguajes de programación convencionales (y, por tanto, al planificarlos usando pseudocódigo). En la próxima entrega veremos alguna otra posibilidad, como el manejo de matrices y las funciones matemáticas, para pasar después a algunos ejemplos completos.

1. Realizar los siguientes ejercicios propuestos y subirlos a DRIVE
Ejercicio de repaso propuesto 1: Crea un programa que escriba los números del 5 al 15, ambos incluidos.
Ejercicio de repaso propuesto 2: Crea un programa que escriba los múltiplos del 3, desde el 3 hasta el 30, usando un paso de tamaño 3.
Ejercicio de repaso propuesto 3: Crea un programa que escriba los múltiplos del 3, desde el 3 hasta el 30, contando del uno al diez pero mostrando ese contador multiplicado por tres.
Ejercicio de repaso propuesto 4: Crea un programa que escriba los números del 20 al 10, descendiendo.
Ejercicio de repaso propuesto 5: Crea un programa que escriba la tabla de multiplicar del 5: desde "5 x 0 = 0" hasta "5 x 10 = 50"
Ejercicio de repaso propuesto 6: También se puede contar usando una orden "mientras" o una orden "repetir", si usas una variable como contador e incrementas (o disminuyes) su valor en cada pasada de forma manual. Compruébalo creando un programa que escriba los números del 1 al 15 usando "mientras" en vez de "para".
Las estructuras repetitivas ("bucles") se pueden incluir una dentro de otra si fuera necesario. El resultado se conoce como un "bucle anidado". Por ejemplo, si se desea dibujar un rectángulo usando asteriscos, se puede plantear como escribir de forma repetitiva varias filas que, a su vez están formadas cada una por varias columnas, de forma también repetitiva, como muestra este ejemplo:
// Rectángulo formado por asteriscos

Algoritmo Rectangulo

  Escribir Sin Saltar "Introduce el ancho: "
  Leer ancho
  Escribir Sin Saltar "Introduce el alto: "
  Leer alto

  Para fila<-1 Hasta alto Hacer

    Para columna <- 1 Hasta ancho Hacer
      Escribir Sin Saltar "*" ;
    FinPara

    Escribir "";  // Avance de línea tras cada fila

  FinPara

FinAlgoritmo 
Ejercicio de repaso propuesto 7: A partir del ejemplo que dibuja un rectángulo de asteriscos, crea un que dibuje un cuadrado (deberá pedir sólo un dato, el lado, y ambas órdenes "para" deberán tener ese valor como límite).
Ejercicio de repaso propuesto 8: Dibuja un triángulo creciente de asteriscos, del tamaño que indique el usuario. Por ejemplo, si escoge 4, el resultado debería ser:
*
**
***
****

2. Hasta el momento en el proyecto global deberás tener desarrollado:

Módulo I: Modulo de Retiro.
Módulo II: Modulo de Consignación.
Modulo III: Cabio de Clave

3. Seguir con la realizacíon de los módulos del software de un cajero automático así:
  1. Módulo IV: Modulo de Transferencia.
    Esta semana 13 trabajaremos el módulo IV.




CIBERGRAFÍA: http://www.aprendeaprogramar.com