domingo, 19 de marzo de 2023

Videos de programas aprendidos en el segundo corte

Trabajo Colaborativo (Proyecto)

Grupo #2

Estructura Según


Video creado por: Elizabeth Anahis Burgos Chilan

Estructura Para


Video creado por: Angel Daniel Zambrano Yong

Estructura Mientras


Video creado por: Freddy Vladimir Farinango Guandinango

Estructura Repetir


Video creado por: Jeremy Ruperto Gaibor Rodriguez 

Funciones, sub-algoritmos o sub-programas


Video creado por: Justyn Keith Cruz Perez

Arreglos unidimensionales


Video creado por: José Alejandro Lozano Morales

Arreglos bidimensionales


Video creado por: Juliana Romina Emanuel Pino


Anexos

Repartición de los temas


Reunión de grupo:

















Creación de la entrada:







lunes, 23 de enero de 2023

Algoritmos

DEFINICION

Desde la perspectiva de las ciencias de la computación, un algoritmo es cualquier proceso computacional bien definido que comienza con un estado inicial y un valor o conjunto de entradas sobre las cuales se aplica una secuencia final de pasos computacionales para producir un resultado o una solución. Un algoritmo puede verse como una herramienta para resolver cálculos bien definidos.

CARACTERISTICA

Básicamente, todo consta de tres partes principales:

Entrada: Este es el conjunto de datos que el algoritmo necesita como entrada para procesar.

Proceso: estos son los pasos necesarios que toma el algoritmo en la entrada que recibe para llegar a un resultado o resolver un problema.

Salida: Es el resultado obtenido por el algoritmo de procesamiento de entrada después de que se completa el proceso.


CONSTANTE Y VARIABLE

Una constante corresponde a un área reservada de longitud fija en la memoria principal de la computadora donde un programa almacena un valor fijo.

Por ejemplo:

El valor de pi = 3.1416, sueldo_ básico=400, valor_iva=12%, velocidad_ luz=3000000

Gravedad=9,81, grados_ebullicion_agua=100, num_euler=2,7182, Valo_ini=200

Por conveniencia, el nombre de las constantes suele escribirse en mayúsculas en la mayoría de lenguajes.

Las variables son áreas reservadas de la memoria que, como sugiere su nombre, pueden cambiar su contenido durante la ejecución del programa

Por ejemplo

iva = 0.15  pi = 3.1416  costo = 2500                      Suma = a + b     Resta = a-b    multi = a*1                           

total Python = 10                                                                   divi = a/b

EXPRESIONES

Las expresiones son combinaciones de constantes, variables y operadores de diferentes tipos que nos permiten manipular datos para obtener nueva información.

los tipos de operadores que incluyen, las expresiones pueden ser de cinco tipos:

* aritméticas

* lógicas

* relacionales

* alfanuméricas y de asignación.

EJEMPLOS

7 / 2 =   3.5

23 * 4 / 2 = 46

12 % 7 = 5

3 + 5 - 14 / 2 = 1

4 + 2 * 5=14

3 ^ 2=9

Entrada hecha por: Juliana Romina Emanuel Pino

Operaciones de asignación de un algoritmo

Definición

Los operadores de asignación se encargan de darle el resultado de alguna expresión matemática a una variable, es decir, se le asigna un valor a la variable del modo que se utiliza un operador de asignación entre la variable y la expresión, ya sea un valor matemático, etc.

Los operadores son representados habitualmente como (=) o (<-).

Utilización

Se utilizan habitualmente en la programación, en la cual el (=) indica que la computadora va a realizar lo que esta a la derecha y se lo va almacenar en la variable que se encuentre en la izquierda, es decir, va a resolver la expresión y lo va a almacenar en la variable.

Formas de asignación

En las operaciones de asignación siempre debe ir la variable en el lado izquierdo del (=) y la expresión a la derecha, donde quedaría de la siguiente forma:

variable = expresión

Reglas de asignación

La expresión debe tener un valor antes de que la sentencia de asignación se ejecute, hasta que un programa le de un valor, caso contrario no tendría un valor que se almacene en la variable.

Ejemplo1:

Gaibor Jeremy


En este ejemplo se muestra la suma de 2 números que realizo la ejecuciones manera correcta, debido a que la expresión (2+3) tuvo un resultado correcto que es 5, la cual se almacena en la variable es (b).

Ejemplo 2:

Gaibor Jeremy

En este ejemplo se muestra la suma de 3 números que realizo la ejecución de forma incorrecta, debido a que la expresión (2+b+3) ignoro la (b), esto sucede cuando dicha variable no tiene valor en la cual se debería agregar un valor, ejemplo: b=3, dándole un valor a la (b).

Otro error seria cuando se invierte los lugares de la variable y la expresión, en la cual dicha modificación no permitirá ejecutar el programa, tal como lo muestra la siguiente imagen.

Gaibor Jeremy

Ejemplos de asignación

Una asignación se encarga de otorgar un valor a la expresión, resolver algún problema ya sea matemático, etc. La cual el resultado de la expresión se almacenara en la variable.

Ejemplo:

Multiplicar 3 números ingresados por el teclado y dividirlo para 2.
En este caso le asignaremos el problema a la expresión, la cual nos quedaría de la siguiente manera:
m=(a*b*c)/2 
Es decir, el resultado de (a*b*c)/2 se almacena en la variable (m), como se lo muestra en la siguiente imagen.

Gaibor Jeremy

En la imagen, se muestra el proceso que se realiza, donde primeramente se asigna un valor a (a, b, c) es decir (2, 3, 2) donde el 2 que se divide ya tuvo ese valor inicial, y se procedió a asignar el problema que va a resolver, imprimiendo el resultado en la variable(m).

Contadores y acumuladores

Contador

Un contador se encarga de almacenar un valor que se incrementa, en alguna unidad, es decir, aumenta con un numero fijo de incremento, por lo general el contador inicia con la variable de 0 y se le va incrementando.

Ejemplo:

Gaibor Jeremy

En este ejemplo se nos muestra el conteo de la variable(contador) incrementado en 2 dándonos un conteo total de 13.

Acumuladores

El acumulador consiste en almacenar cantidades variables, es decir no importa si las cantidades son variables, de igual manera es acumulador los almacena en la variable.

Ejemplo:

Gaibor Jeremy

En este ejemplo se nos muestra el acumulado de la variable(acumulador) incrementado en cantidades variables dándonos un conteo total de 32.

Errores en la compilación de programas

Los tipos de errores que se encuentra en el diseño de un programa son:

1.- Errores de sintaxis: Estos errores se dan a conocer cuando no se respeta las reglas de gramática de lenguaje, como la omisión de signos, olvido de llaves o cierre, y escritura incorrecta de las palabras.

Ejemplo:

Gaibor Jeremy

En este ejemplo se muestra dos errores de sintaxis, debido a que estuvieron ausentes unas comillas(") y un coma(,).

2.- Errores lógicos: Estos son errores realizado por el programador y son difíciles de encontrar, esto se da por el uso de palabras reservadas del aplicativo.

Ejemplo:

Gaibor Jeremy

Este error lógico se debe al uso de una palabra reservada(suma), la cual impide la ejecución del programa.

3.- Errores semánticos: Esto se da al omitir o realizar un algoritmo de forma incorrecta, estas son fallas reconocidas por el programador al ver el resultado incorrecto y no son vistas por el sistema.

Ejemplo:

Gaibor Jeremy

En este ejemplo logramos ver el error semántico, debido a que el programa aunque haya ejecutado, no muestra el resultado correcto, esto se debe a la omisión de una sentencia la cual es (e=5).

4.- Error de ejecución: Este tipo de error aparece durante la ejecución de un programa y se debe al uso incorrecto del programa por parte del operador.

Ejemplo:

Gaibor Jeremy

Este error de ejecución se debe por la división de un numero por 0, lo cual no se puede realizar dicha división.

Operadores

Operadores matemáticos o aritméticos

Gaibor Jeremy

Operadores relacionales o de comparación

Son operadores encargados de unir o comparar valores, en la cual en la programación encontramos algunos tipos como:

Gaibor Jeremy

Estos valores son usados para las comparación de dos variables, la cual no se puede utilizar mas valores para la misma comparación, en el caso de utilizar mas, debe realizarse por pares.

Ejemplo:

a<b>c  Incorrecto

(a<b) && (b>c)  Correcto

Operadores lógicos

Los operadores lógicos son encargados de la unión de 2 o mas valores por medio de los operadores relacionales.

&&: Operador AND (Y), en la cual todas las condiciones deben ser verdaderas para su ejecución.

Ejemplos:

11>10 && 10 >12                                                  16<19 && 3>1

   V                 F                                                          V             V

             F                                                                             V

| | o #: Operador OR (O), en la cual de todas las condiciones, donde aunque una sea verdadera, el retos también lo será.

Ejemplos:

2*5=10 | | 3*4=8                                                    42-12+4=34 | | 20-2+5=23

    V              F                                                                 V                     V

             F                                                                                     V

!: Operador NOT (NO), en este operador se invierte las afirmaciones, es decir cambia de verdadero a falso y de falso a verdadero.

Tabla de verdad de los valores lógicos


Entrada hecha por: Jeremy Ruperto Gaibor Rodriguez


Diagrama de Flujo

Definición

Un diagrama de flujo representa la esquematización gráfica de un algoritmo que muestra de forma gráfica los pasos o procesos a seguir para lograr la resolución de un problema. Su construcción apropiada es extremadamente importante porque un programa en cualquier lenguaje de programación. Cuando el diagrama de flujo está completo y correcto, la transición de él a un lenguaje de programación es relativamente fácil y derecho.

Es importante recalcar que el diagrama de flujo representa al sistema como una red procesos funcionales interconectados por "tuberías" y "repositorios" de datos que lo hacen posible describir el movimiento de datos a través del sistema. Esto describirá: Lugares de origen y destino de los datos, transformaciones que sufren los datos, lugares donde los datos se almacenan dentro del sistema, los canales a través de los cuales circulan los datos.

Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas, es decir, es la representación grafica de las distintas operaciones que se tienen que realizar para resolver un problema, con indicación expresa el orden lógico en que deben realizarse.

Importancia de los diagramas de flujo

Los diagramas de flujo son importantes porque nos facilita la manera de representar visualmente el flujo de datos por medio de un sistema de tratamiento de información, en este realizamos un análisis de los procesos o procedimientos que requerimos para realizar un programa o un objetivo. 

Por ejemplo: si nosotros queremos realizar una pizza, primero necesitamos los ingredientes, este ya seria un proceso, luego de haber conseguido los ingredientes necesitamos realizar la masa, este seria otro proceso, luego realizamos la salsa, este seria otro procesos y finalmente unimos todo lo que hemos hecho y agregamos los complemento como el jamón, el queso, etc. Para la realización de esta pizza ya contamos con 4 procesos los cual podemos desarrollar en un diagrama de flujo y unirlos en el mismo. Para así obtener un producto final que seria nuestra pizza.

Simbolos utilizados en los diagramas de flujo


Problema resuelto con diagrama de flujo

1. Programa que calcule la calificación final y determine si el estudiante aprueba o reprueba el año.


Si introduzco menos de 7, el estudiante esta reprobado


Si introduzco mas de 7, el estudiante esta aprobado:



Codigo del programa hecho en Pseint:


2. Programa que determine el grado de satisfacción que tienes de tu ciudad según tu valoración


Si introduzco un numero del 1 al 5, me dara un mensaje sobre mi grado de satisfacción de mi ciudad

Si introduzco 1:
Si introduzco 2:


Si introduzco 3:

Si introduzco 4:


Si introduzco 5:


Si introduzco un numero diferente el programa dira un mensaje de que el valor de la opinion no es valido:



Método de ordenación  por burbuja

El método de ordenación por burbuja es un algoritmo de ordenamiento, que funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, e intercambiándolos de posición si esta está en el orden erróneo. Es estrictamente necesario realizar este proceso varias veces de modo que no necesite mas intercambios, hasta que este ordenada. En este método de ordenación se realiza el intercambio entre los más grandes y los mas pequeños (los más grandes quedan arriba y los pequeños abajo). Estos intercambios suceden en dos ciclos un ciclo que es interno que realiza las comparaciones y se asegura de que en la primera revisión que los elementos mas grandes suban a la posición más alta, y el otro ciclo que es un poco mas externo se encarga de realizar las revisiones. 


Ayudas y recomendaciones a la hora de hacer diagramas de flujo

Para la realización de un diagrama de flujo debemos tener el análisis lógico de lo que se quiere expresar o representar, es decir, hacer un breve razonamiento al problema o a dicha situación para luego ser representada en diagrama de flujo. Además de que los diagramas de flujo deben escribirse de arriba hacia abajo, y de izquierda a derecha. Debemos conocer bien los conectores y símbolos que son utilizados en la resolución de problemas ya sea para conocer el comienzo o el fin del diagrama y saber como fluye la solución del problema. Realizar los símbolos y unirlos con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información de los procesos, se deben utilizar solamente líneas de flujos horizontales o verticales, pero nunca diagonales. Nunca deben quedar líneas de flujo sin conectar. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. Utilizar y asignar valores que sean precisos ya que no se deben de admitir ambigüedades en la realización de los diagramas. Tratar de que el procedimiento sea genérico para que pueda ser usado con cualquier tipo de valor numérico. Tener en cuenta que el símbolo para las operaciones de asignación en este caso el rectángulo y cualquier símbolo de entrada y salida puedan ser precedidos de una o varias flechas, pero solo pueden ser seguidos por una. Las flechas de flujo no deben cruzarse.


Entrada hecha por: Justyn Keith Cruz Perez

Ejercicios con diagramas de flujo

Ejercicio para determinar el mayor de 2 números en diagrama de flujo


Ejercicio para determinar la velocidad de un auto en diagrama de flujo


Entrada hecha por: Angel Daniel Zambrano Yong

Pseudocódigo


Definición

Pseudo proviene del griego “seudo”, que puede traducirse como “falso” y Código, se origina del latín "codex". Que fueron utilizando para referirse a los documentos o libros donde los romanos tenían escritas todas y cada una de sus leyes.

Se desarrolló como un lenguaje idéntico al lenguaje natural y era un medio para representar básicamente las estructuras de control de programación estructurada. 

 


El seudocódigo es un conjunto acotado de palabras reservadas en español y símbolos especiales, que resultan suficiente para representar tanto algoritmos simples como algoritmos complejo.

Las maquinas no son capaces de entender directamente el seudocódigo ya que es un código escrito para que el ser humano comprenda. 

ventajas 

  • Ayuda en la la tarea de programar en un lenguaje formal.
  • Mejora la calidad en la resolución de problemas.
  • Reduce el espacio necesario a la hora de desarrollar un problema.
  • Es fácil de hacer tareas repetitivas y complejas.
  • Permite una transición sencilla al lenguaje de programación, más complejo y Estructurado.
  • Es mucho mejor que el diagrama de flujo.

Desventajas

  • Es complicado de ver la lógica de programas por falta de normas.
  • necesita de varios símbolos y lenguajes complicados.
  • Cada persona maneja su propio pseudocódigo.
  • Es de comprender en problemas muy numeroso.

Características

 -Representa un método que patrocina y la programación y solución del algoritmo del programa

 -Es un método fácil y comprensible de usar.

 -Disminuye y detalla el paso del programa al lenguaje de programación.

 -Se puede ejecutar en un ordenador.

 -Es la segunda representación del algoritmo después del diagrama de flujo.

 Ejemplo: 

Una instrucción para enviar los mensajes correspondientes "puntual" o "impuntual" entonces si se cumple o no, si la hora de llegada es <= 6

  si (hora <=6)

 imprimir (puntual)

  SiNo

  imprimir (impuntual)

 

      Indican la acción a realizar

    Es un identificador o variable, y su valor determina si se cumple o no.

     Son textos en el cual la computadora se desenrolla en el caso de que se cumpla o no la proposición planteada.

Ejemplo-ejercicio


   Ejecución
Si llega antes o igual que 6:00 será:

Ejecución
Si llega después del 6:00 será


Gramática, Pseudo-lenguaje

El seudocódigo es un lenguaje algorítmico y se sostiene con palabras de diferentes idiomas como; español, ingles, francés, según sea el caso necesario, en conjunto con las expresiones  matemáticas. 

El pseudo-lenguaje es muy importante en pseint ya que es la rama fundamental  para aprender la lógica de programación y además este lenguaje es configurable en los idiomas disponibles.

Palabras reservadas y símbolos utilizados en pseudocódigo

Las más comunes son:

inicio, fin, si-entonces-sino, mientras, repita-hasta, define, escribe, entre otros

El conjunto esta conformado por las siguientes palabras reservadas y símbolos especiales: 

1.Tipos de datos Simples:  

  • entero
  • real
  • booleano
  • carácter 
2. Estructuras de Selección: SiNo y alternar caso

3. Estructuras de Iteración: mientras, hacer mientras y para

4. Operador de Asignación: ¬

5. Enunciado de Entrada de datos: leer

6. Enunciado de Salida de datos o mensajes: Escribir

7. Operaciones lógicas
  • or(o)
  • not(no)
  • and(y)
8.Operaciones de relacionales
  • disyunción (|)
  • menor que (<)
  • mayor que (>) 
  • menor o igual que (<=) 
  • mayor o igual que (>=)
  • igualdad (= =) 
  • desigualdad o distinto (!=)

 9Operadores Aritméticos: 

  • exponenciación (^)
  • suma (+)
  • resta (-)
  • multiplicación (*)
  • división (/) 
  • resto (%)
10. Operadores para delimitar bloques de enunciados: { }

11. Comentarios: //  

Estructura del control pseudocódigo-algoritmo

Son  instrucciones importantes para el algoritmo ya que gracias a estas instrucciones no ayuda a resolver.

Esta estructura se podría definir en tres tipos diferentes que son:

  1. secuencial 
  2. selectiva
  3. interactiva

1.Estructura secuencial.- Se sitúa de forma ordenada en forma de secuencia como el nombre lo dice, y se coloca  una debajo de la otra y ejecutamos en el orden en que están escritas. 

2.Estructura selectiva.- También lo podemos llamar de selección ya que permite seleccionar tres decisiones y nos ayuda a saber tres condiciones que son:

  • Si
  • SiNo
  • Según 
   -Si.- Esta estructura selectiva solamente necesita una condición par ejecutarse, que seria, el si cumple y si no se cumple no hace nada.

   -SiNo.- Es una selección doble que nos permite encontrar otra condición mas, correspondiente al instrucción dos.


   -Según.- Es una selección múltiple en donde nos permite comparar una variable con distintos posible resultados.


3.Estructuras interactivas

esta estructura  nos autoriza efectuar  iteraciones (repeticiones) de nuestras instrucciones, con la condición de que  cada acción se realizará varias veces. La estructuras mas relevantes son:

  • mientras
  • hasta


En estas imágenes visualizamos la estructura de control mas detallado con cada sintaxis del pseudo-lenguaje 


         

    
        

           
        

 

 Gramática-Pseudolenguaje, notación BNF (Backus-Naur Form)

-Esta notación permite realizar gramáticas de libre contexto. Esta gramática se compone de algunas reglas muy importantes, una de ellas se representa de esta forma:

                                                     v -> w

V: es un símbolo no terminal, es decir, permite más derivaciones.

W: es una cadena de valores terminales, no permiten más derivaciones.

-La notación BNF es una forma de representar estas gramáticas de libre contexto de una forma muy similar a la de antes descrita, pero con algunos cambios como el uso de:

(<>) se usa en símbolos no terminales

(Y) se usa para símbolos terminales

(w) se usa para la asignación

Importante

Las gramáticas pueden poseer errores de ambigüedad, cuando existen muchos caminos iguales a partir de un símbolo no terminal, o símbolos inaccesibles, símbolos terminales o no terminales los cuales no pueden ser alcanzados a partir de ningún otro símbolo.

 La verificación de la gramática de pseudocódigo se podrá verificar con la correcta ejecución del intérprete, específicamente, el correcto desempeño del analizador sintáctico. 

 Fases del Pseudocódigo

Fase inicial.- en esta fase se realiza todas la operaciones iniciales: inicializar variable y abrir ficheros.

Fase repetitiva.- También lo podemos llamar como fase ciclo, es el cuerpo del programa en donde se repetirán una sucesión acciones hasta cumplir una o mas condiciones.

-En esta fase a lo largo del proceso se encontraran tres tipos de estructuras de control:

  • secuenciales 
  • condicionales 
  • repetitivas

Fase final.- terminamos el archivo, cerramos e inmediatamente visualizamos el resultado del Interprete y traductor del seudocódigo.

-Aquí visualizamos un diagrama a traducir y la estructura del interprete.

 

                                                             Programa en seudocódigo                        

                                                                                ↓

                                                                      análisis léxico

                                                                                |

                                                                      lista de tokens

                                                                               ↓ 

                                                                   análisis sintáctico

                                                                                | 

                                                           tablas de código y símbolos

                                                                               ↓

                                                                análisis semántico 

                                                                        ↙    ↘

                                           traducción de código  ejecución de codigo

                                                                ↓                         ↓

                                           programa traducido      programa ejecutado



 

Entrada hecha por: Freddy Vladimir Farinango Guandinango

Videos de programas aprendidos en el segundo corte

Trabajo Colaborativo (Proyecto) Grupo #2 Estructura Según Video creado por: Elizabeth Anahis Burgos Chilan Estructura Para Video creado por:...