BLOQUE 2 Y 3 ALGORITMOS Y DIAGRAMAS DE FLUJO PROFS.: … · 2020. 3. 20. · GUIA INFORMATICA II...

19
GUIA INFORMATICA II 2020 BLOQUE 2 Y 3 ALGORITMOS Y DIAGRAMAS DE FLUJO PROFS.: Arturo Conde Duque. Jairo Pérez Rivera _______________________________________________________ Subsecretaría de Educación Media Superior Dirección General de Bachillerato Escuela Preparatoria Federal por Cooperación “QUETZALCOATL” CLAVE: EMS-2/123 CCT. 17SBC2123R Tepoztlán Morelos

Transcript of BLOQUE 2 Y 3 ALGORITMOS Y DIAGRAMAS DE FLUJO PROFS.: … · 2020. 3. 20. · GUIA INFORMATICA II...

  • GUIA INFORMATICA II 2020

    BLOQUE 2 Y 3

    ALGORITMOS Y DIAGRAMAS DE FLUJO

    PROFS.: Arturo Conde Duque.

    Jairo Pérez Rivera

    _______________________________________________________

    Subsecretaría de Educación Media Superior Dirección General de Bachillerato

    Escuela Preparatoria Federal por Cooperación “QUETZALCOATL”

    CLAVE: EMS-2/123 CCT. 17SBC2123R Tepoztlán Morelos

  • Algoritmos y diagramas de flujo

    1.1 PASOS PARA LA SOLUCION DE TAREAS

    En la naturaleza hay muchos procesos que puedes considerar como Algoritmos ya que tienen procedimientos y reglas. Incluso, muchas veces no somos conscientes de ellos.

    Por ejemplo, el proceso digestivo es un concepto de algoritmo con el que convivimos a diario sin que nos haga falta una definición precisa de este proceso. El hecho de que conozcamos cómo funciona el sistema digestivo, no implica que los alimentos que consumimos nos alimenten más o menos.

    La familiaridad de lo que sucede día a día nos impide ver muchos algoritmos que pasan a nuestro alrededor. Procesos naturales como la gestación, las estaciones, la circulación sanguínea, los ciclos planetarios, etc, son algoritmos naturales que generalmente pasan desapercibidos.

    Ejemplo Lavarnos los dientes es un procedimiento que realizamos varias veces al día. Veamos la forma de expresar este procedimiento como un Algoritmo:

    1. Tomar la crema dental 2. Destapar la crema dental 3. Tomar el cepillo de dientes 4. Aplicar crema dental al cepillo 5. Tapar la crema dental 6. Abrir la llave del lavamanos 7. Remojar el cepillo con la crema dental 8. Cerrar la llave del lavamanos 9. Frotar los dientes con el cepillo 10. Abrir la llave del lavamanos 11. Enjuagarse la boca 12. Enjuagar el cepillo 13. Cerrar la llave del lavamanos 14. Secarse la cara y las manos con una toalla

    Ejemplo Veamos que algo tan común como los pasos para cambiar una bombilla (foco) se pueden expresar en forma de Algoritmo:

    1. Ubicar una escalera o un banco debajo de la bombilla fundida

    2. Tomar una bombilla nueva 3. Subir por la escalera o al banco 4. Girar la bombilla fundida hacia la izquierda hasta soltarla 5. Enroscar la bombilla nueva hacia la derecha en el plafón

    hasta apretarla 6. Bajar de la escalera o del banco 7. Fin

  • 1.3. Ejercicio Discutamos el ejemplo de la bombilla y propongamos algunas mejoras. Luego, escribir el Algoritmo con la inclusión de tus mejoras.

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11.

    12.

    1.2 ALGORITMO

    Los Algoritmos permiten describir claramente una serie

    de instrucciones que debe realizar el computador para

    lograr un resultado previsible. Vale la pena recordar que

    un procedimiento de computador consiste de una serie

    de instrucciones muy precisas y escritas en un lenguaje

    de programación que el computador entienda como lo es

    Scratch.

    En resumen, un Algoritmo es una serie ordenada de

    instrucciones, pasos o procesos que llevan a la solución

    de un determinado problema. Los hay tan sencillos y

    cotidianos como seguir la receta del médico, abrir una

    puerta, lavarse las manos, etc; hasta los que conducen a

    la solución de problemas muy complejos.

  • Ejercicio Describe, lo más detalladamente posible y en orden, los pasos a realizar para llevar a cabo cada una de las siguientes tareas.

    NOTA: Ejercicio adaptado de “La esencia de la lógica de programación”

    Prepara palomitas de maíz

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11.

    12.

    Preparar una rica naranjada

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11.

    12.

    Empacar un regalo en caja

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11.

    12.

    Cocinar un huevo en sartén

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11.

    12.

  • Ejercicio Construye un avión de papel paso a paso y en forma ordenada. Luego escribe en orden los pasos, para explicarle a otra persona cómo elaborarlo.

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

  • Ejercicio Reflexiona sobre el lenguaje que utilizas diariamente para comunicarte con tus padres, hermanos, profesores y compañeros.

    ¿Utilizas un lenguaje preciso?

    ¿Utilizas palabras corrientes?

    _

    Ejercicio A diferencia de los seres humanos que realizan actividades sin detenerse a pensar en los pasos que deben seguir, los computadores son muy ordenados y necesitan que quien los programan les diga cada uno de los pasos que deben realizar y el orden lógico de ejecución.

    Numera en orden lógico los pasos siguientes (para pescar):

    El pez se traga el anzuelo.

    Enrollar el sedal.

    Tirar el sedal al agua.

    Llevar el pescado a casa.

    Quitar el Anzuelo de la boca del pescado.

    Poner carnada al anzuelo.

    Sacar el pescado del agua.

  • Ejercicio Consigue los siguientes elementos:

    Arroz, lentejas o maíz (medio puñado). Una banda de caucho (liga). Un vaso plástico. Un trozo de papel resistente (15cm x 15cm aproximadamente).

    Con los elementos anteriores elabora una “maraca”

    siguiendo en orden secuencial estas instrucciones: 1. Recortar del papel resistente un trozo más grande

    que la boca del vaso plástico. 2. Poner el papel sobre la boca del vaso el papel. 3. Fijar el papel al vaso con ayuda de la banda de

    caucho. 4. Asegurarse que la boca del vaso quede sellada. 5. Introducir el arroz, las lentejas o el maíz en el vaso

    (cada elemento produce una sonoridad diferente).

    ¿Qué sucedió? ¿Pudiste elaborar la maraca?

    ¿Qué cambiarias en el orden de las instrucciones?.

    Ejercicio En una hoja aparte, describe detalladamente los pasos que seguirías para lograr cada una de las siguientes tareas:

    1. Poner saldo a tu teléfono.

    2. Hacer café.

    3. Lavarte las manos.

    4. Hacer un avión con una hoja de papel.

    5. Hacer un barco con una hoja de papel.

  • Pseudocódigo.

    Cuando empezamos a programar necesitamos hacer dos cosas, la primera adaptar nuestro tren de

    pensamiento y asi poder describir los pasos necesarios para resolver cierto problema. Y la segunda escribir

    esos pasos en un lenguaje de programación que pueda entender un computador. En ocasiones puede ser una

    tarea un poco desesperante hacer las dos cosas al mismo tiempo, sobre todo al comenzar. Para facilitar un

    poco nuestras vidas podemos echar mano del pseudocódigo algo que se ve y se comporta (un poco) como

    código, pero no lo es.

    ¿Por qué digo que parece código pero no es? Porque recuerda la sintaxis de algunos lenguajes pero no es tan

    estricto como estos, está hecho para que nosotros los humanos podamos expresar ideas de forma un poco

    más parecida al lenguaje de programación.

    Un algoritmo expresado en pseudocódigo se ve más o menos así:

    Inicio

    a = 0;

    b = 0;

    imprimir "Introduzca el primer número"

    leer -> a

    imprimir "Introduzca el segundo número"

    leer -> b

    procesar c = a + b

    imprimir "La suma de " a " y " b es " c

    Fin

    Hablemos un poco del algoritmo:

    Es relativamente seguro decir que el algoritmo describe el proceso de sumar dos números.

    Al principio del algoritmo asignamos el valor a las dos variables que se usarán en el, a esto se le

    llama inicializar variables y lo hacemos para que dichas variables comiencen con valores controlados

    por nosotros.

    Podemos notar que el algoritmo está delimitado por las palabras Inicio y Fin.

    Podemos notar que luego del inicio del algoritmo indentamos las siguientes instrucciones. Esto, para

    recalcar el hecho de que formar parte de un bloque.

  • Con la palabra imprimir denotamos una salida, en este caso los mensajes que nuestro algoritmo

    muestra al usuario son: “Introduzca el primer número”, “Introduzca el segundo número” y “La suma de

    “ a “ y “ b “ es “ c, luego comentaremos algo más sobre este último.

    La palabra leer la usamos para denotar que nuestro algoritmo “lee” la entrada que le suministra un

    usuario y la almacena en la memoria. La forma como denotamos que lo escrito por el usuario es

    guardado en la variable es mediante la flecha ->, como indicando que los datos entran en la variable.

    Luego hablaremos un poco más sobre la asignación a memoria.

    Cuando programamos cambiamos un poco la forma en que hacemos las fórmulas matemáticas, en este

    caso estamos diciendo que el resultado de la operación matemática a + b será guardado en la

    variable c.

    Finalmente, le mostramos al usuario el resultado de la operación, en este caso tenemos una mezcla de

    texto fijo y variables, lo encerrado entre comillas se considera texto fijo y lo que no son las

    variables. Cuando se muestre el mensaje de salida al usuario las etiquetas de las variables serán

    sustituidas por sus valores, por ejemplo si el usuario introdujo un valor de 4 para a y un valor de 1

    para b el mensaje quedaría de la siguiente forma: La suma de 4 y 1 es 5.

    Esto es todo, nuestro algoritmo espera que el usuario le proporcione dos números, los sumará y mostrará

    al usuario de vuelta el resultado.

    Asignaciones a memoria

    Como nosotros los humanos no manejamos la información de la misma forma de los computadores,

    preferimos asignar etiquetas a la parte de la memoria donde queremos guardar información y a estas

    etiquetas le llamamos variables. Así podemos referirnos a los datos guardados en la misma de forma

    relativamente fácil.

    Las variables pueden tener cualquier etiqueta siempre y cuando comience con una letra.

    Cuando queremos que el usuario nos proporcione datos usamos la instrucción leer:

    leer -> variable

    El algoritmo se “detiene” y espera por la entrada del usuario. Y dicha entrada sera almacenada en la

    variable.

    Es una buena práctica de programación asignar valores por defecto a las variables que se van a usar al

    principio del programa o algoritmo. Esto nos asegura que no toman valores aleatorios que ya estuviesen en la

    memoria del computador.

  • Procesar: con esta palabra indicamos que la siguiente acción a realizar es un proceso, acción u operación que

    se llevara a cabo, por ejemplo c= a + b. esta es una suma del valor de a con el valor de b y el resultado se

    almacena en la variable c.

    Ejemplo realizar el pseudocódigo de la suma de 3 números y dividir el valor del resultado entre 2.

    Quedaría de la siguiente manera.

    Inicio

    a = 0;

    b = 0;

    imprimir "Introduzca el primer número"

    leer -> a

    imprimir "Introduzca el segundo número"

    leer -> b

    imprimir "Introduzca el segundo número"

    leer -> c

    procesar d = a + b + c

    procesar e = d / 2

    imprimir "La suma de " a " mas “ b ” y " c es " d

    imprimir "La división de " d " entre 2 es " e

    Fin

    Ejercicios:

    1.- Realiza el algoritmo en pseudocódigo de la multiplicación de 3 números.

    2.-Escribe el pseudocódigo de calcular el área de un cuadrado.

    3.- Realiza el algoritmo en pseudocódigo de la suma de 2 números y al resultado se multiplica por 2.

    4.- Diseña un algoritmo en pseudocódigo que calcule el área de un triangulo.

  • Estructuras condicionales

    Los algoritmos anteriores fueron bastante lineal, se hizo una sola cosa, tuvo un comienzo y un solo final.

    Pero podemos complicarlo un poco más y ser más expresivos y especificar mejor nuestro algoritmo. ¿Qué

    pasa si el usuario introduce algo que no es un número? Veamos esta nueva versión de nuestro algoritmo:

    Inicio

    a = 0;

    b = 0; imprimir "Introduzca el primer número"

    leer -> a

    si a no es un numero entonces

    imprimir a " no es un valor válido, no puedo continuar." ir a fin

    fin si

    imprimir "Introduzca el segundo número"

    leer -> b

    si b no es un numero entonces

    imprimir b " no es un valor válido, no puedo continuar." ir a fin

    fin si

    c = a + b

    imprimir "La suma de " a " y " b es " c Fin

    Listo, ahora nuestro algoritmo se enfrentará a decisiones, se cuestionara que tipo de información le ha

    suministrado el usuario, y tomara un curso de acción dependiendo del resultado lógico del anterior

    cuestionamiento.

    Dicho coloquialmente, verificara que la entrada del usuario es la que se quiere y si no lo es mostrara un

    mensaje de error y saldrá.

    Terminar el algoritmo de esta manera es un tanto extremo, pero luego veremos una forma de hacer el

    algoritmo más amigable.

    Veamos ahora la anatomía de una estructura de decisión:

    si cuestionamiento lógico entonces

    Bloque de código que se ejecuta si cuestionamiento lógico es cierto

    fin si

  • Traducido quiere decir, si cuestionamiento lógico resulta ser cierto realiza lo siguiente. Es como si por

    ejemplo, la mamá le dice a uno:

    — Mijo, vaya a la tienda y si el queso está a menos de 50 pesos, compre un kilo.

    si precio_queso < 50 entonces

    Comprar queso

    fin si

    Como puede verse, el precio del queso en cuestión, es menor a 50 o no lo es. La evaluación lógica da como

    resultado verdadero o falso. Si la evaluación resulta verdadera se procede a comprar el queso, de lo

    contrario se regresa a casa con las manos vacías.

    En otras ocasiones es necesario hacer algo distinto cuando el cuestionamiento lógico no es verdadero.

    si precio_queso < 50 entonces

    Comprar 1Kg de queso

    de lo contrario

    Comprar 1/4 Kg de queso

    fin si

    En este ejemplo, vamos a la tienda y si el precio del queso es menor a 50 compramos un kilo, en cualquier

    otro caso compramos 1/4 de kilo.

    La forma general de escribir esta estructura de decisión es la siguiente:

    si cuestionamiento lógico entonces

    Bloque de código que se ejecuta si cuestionamiento lógico es cierto

    de lo contrario

    Bloque de código que se ejecuta si cuestionamiento lógico es falso.

    fin si

    Es posible evaluar más condiciones con el si, con el siguiente ejemplo podemos verlo:

    Colocar un de lo contrario al final es completamente opcional.

    si precio_queso < 50 entonces

    Comprar 2Kg de queso

    de lo contrario si precio_queso == 60 entonces

    Comprar 1Kg de queso

    de lo contrario

    Comprar 1/4Kg de queso

    fin si

    Nótese que la comprobación de igualdad lleva dos signos igual ==.

  • En este ejemplo tenemos tres opciones, si el precio es menor a 50 compramos 2 kilos, si es igual a 60

    compramos 1 kilo y si ninguno de los dos anteriores es verdadero compramos un cuarto de kilo.

    Podemos tener tantos de lo contrario si como opciones tengamos que manejar

    En conclusión un pseudocódigo es un algoritmo en el que se utilizan palabras específicas y estructuradas para representar dicho algoritmo.

    Las palabras específicas a utilizar son las siguientes. Fin: palabra de pseudocódigo para indicar el final del algoritmo o de un bloque.

    imprimir: palabra de pseudocódigo para indicar que el algoritmo va mostrar información al usuario.

    Inicio: palabra de pseudocódigo para indicar el inicio del algoritmo o de un bloque.

    leer: palabra de pseudocódigo para indicar que el algoritmo tomará información suministrada por el

    usuario, usualmente dicha información se guardará en memoria.

    si: estructura de decisión, que permite que el algoritmo actúe de forma distinta basado en el resultado

    de una evaluación lógica.

    para: estructura de repetición definida que repite un bloque de código o instrucciones una cantidad

    predeterminada de veces. Se llama definida porque la cantidad de veces que se ejecutara el bloque se

    define al momento de comenzar a ejecutarla. Esta estructura de repetición cuenta con una variable

    contador que a la que se le evalúa el valor para determinar si se termina el ciclo o no. También posee una

    manera de incrementar o decrementar dicha variable de forma automática en deltas definidos.

    repita mientras: es una estructura de repetición indefinida que ejecuta un bloque de código o

    instrucciones mientras una premisa lógica da verdadero. En esta estructura la premisa lógica se evalúa al

    principio. De resultar esta falsa el ciclo no se ejecutara, quiere decir que este ciclo se ejecuta cero o

    más veces.

    repita hasta: es una estructura de repetición indefinida que ejecuta un bloque de código o

    instrucciones hasta que una premisa lógica da verdadero. En esta estructura la premisa lógica se evalúa al

    final. De resultar esta verdadera el ciclo se detendrá, quiere decir que este ciclo se ejecuta una o más

    veces.

  • Ejemplo: Determinar un algoritmo en pseudocódigo que compare cuál de las edades de 2 jóvenes es

    mayor.

    Inicio

    edad1 = 0;

    edad2 = 0; imprimir "Introduzca la edad del primer usuario "

    leer -> edad1 imprimir " Introduzca la edad del segundo usuario "

    leer -> edad2

    si edad1 > edad2 entonces imprimir “La edad del primer joven es mayor que la del segundo joven”

    De lo contrario

    imprimir “La edad del segundo joven es mayor que la del primer joven”

    ir a fin

    fin si

    Fin

    Ejercicios: Desarrolla los siguientes algoritmos en pseudocódigo condicionales.

    1.- Determinar a través de la edad si es mayor o menor de edad.

    2.- Saber si la calificación de una materia es aprobatoria o reprobatoria.

    3.- Comparar si un número es mayor que otro.

  • DIAGRAMAS DE FLUJO.

    Introducción.

    Los diagramas de flujo son una manera de representar visualmente el flujo de datos a través de

    sistemas de tratamiento de información. Los diagramas de flujo describen que operaciones y en que

    secuencia se requieren para solucionar un problema dado.

    Un diagrama de flujo u organigrama es una representación diagramática que ilustra la secuencia de

    las operaciones que se realizarán para conseguir la solución de un problema. Los diagramas de flujo

    se dibujan generalmente antes de comenzar a programar el código frente a la computadora. Los

    diagramas de flujo facilitan la comunicación entre los programadores y la gente del negocio. Estos

    diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la

    comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el

    diagrama de flujo, llega a ser fácil escribir el programa en cualquier idioma de alto nivel. Vemos a

    menudo cómo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros.

    Por lo tanto, está correcto decir que un diagrama de flujo es una necesidad para la documentación

    mejor de un programa complejo.

    Reglas para dibujar un diagrama de flujo.

    Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo,

    algunos símbolos especiales pueden también ser desarrollados cuando sean requeridos. Algunos

    símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora

    se muestran a continuación:

    Inicio o fin del programa

    Pasos, procesos o líneas de instrucción de programa de computo

    Operaciones de entrada y salida de datos

    Toma de decisiones y Ramificación

    Conector para unir el flujo a otra parte del diagrama

  • Conector de pagina

    Líneas de flujo

    Mostrar datos en pantalla

    Imprimir datos

    Observación: Para obtener la correcta elaboración de los símbolos, existen plantillas. Las puedes conseguir en

    Papelerías.

    Símbolos gráficos

    Dentro de los símbolos fundamentales para la creación de diagramas de flujo, los símbolos gráficos son utilizados

    específicamente para para operaciones aritméticas y relaciones condicionales. La siguiente es una lista de los

    símbolos más comúnmente utilizados:

    + Sumar

    - Menos

    * Multiplicación

    / División

    ± Mas o menos

    = Equivalente a

    > Mayor que

    < Menor que

    >= Mayor o igual que

  • Reglas para la creación de Diagramas de flujo. 1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.

    2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la

    información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales).

    3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se

    pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores

    cuando sea estrictamente necesario.

    4. No deben quedar líneas de flujo sin conectar

    5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.

    6. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.

    7. Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida.

    Ejemplos de diagramas de flujo

    Diagrama de flujo que encuentra la suma de los primeros 50 numeros naturales

  • Ahora la descripción del diagrama anterior

    Suma, es la variable a la que se le va agregando la valor de cada número natural. N, es el contador. Éste recorrerá lo números hasta llegar al 50.

    El primer bloque indica el inicio del Diagrama de flujo

    El segundo bloque, es un Símbolo de procesos En este bloque se asume que las variables suma y N han sido declaradas previamente y las inicializa en 0 para comenzar a el conteo y la suma de valores (Para declararlas existe el bloque Tarjeta perforada).

    El tercer bloque, es también un Símbolo de procesos En éste paso se incrementa en 1 la variable N (N = N + 1). Por lo que, en la primera pasada esta N valdrá 1, ya que estaba inicializada en 0.

    El cuarto bloque es exactamente lo mismo que el anterior Pero en éste, se le agrega el valor de N a la variable suma

    El quinto bloque es uno Símbolo de Toma de decisiones y Ramificación En este bloque es una pregunta para comparar los valores que actualmente influyen en el

    proceso ¿Es N=50?, Obviamente la respuesta es no, ya que N todavía es 1. por lo que el flujo de nuestro programa se dirigirá hacía la parte en donde se observa la palabra no: Tercer Bloque, éste le sumará 1 (N=N+1) y vuelve a llegar a éste bloque, donde preguntará ¿Es N=50?... ¡No!,

    todavía es 2. Ha pues, regresa al Tercer bloque y vuelve hacer lo mismo. Y así hasta llegar a 50, obteniendo así la suma de los primeros 50 primeros números naturales.

  • Por último indicamos que el resultado será mostrado en la impresora (Este lo puedes cambiarlo por el display

    para mostrar datos).

    Fin del programa (o diagrama)

    EJERCICIOS: Instrucción 1. Realiza los siguientes diagramas de flujo con su algoritmo para poder guiarte y solucionar más rápido

    1. Obtener el área de un triangulo

    2. Obtener el área de un circulo

    3. Leer la edad de una persona e identificar si la persona es mayor de edad o no

    4. Elabora un diagrama de flujo para elaborar la suma de numero naturales comprendidos entre 1 y el 5

    es decir: 1+2+3+4+5

    5. Leer un numero e identifica si el número es negativo o positivo

    6. Una persona quiere colocar pasto en su patio el cual tiene las siguientes medidas 20m de largo por 9m

    de ancho, el precio del pasto es de $ 42.00 pesos el M2, en donde comprara el pasto le informa que si

    compra más de 150m2 se le realizara un descuento del 22% ¿Cuánto pagara la persona por el total del

    pasto

    Puedes observar los siguientes videos los cuales te podrían ayudar a entender mejor los ejemplos de diagrama de flujo ya que te dan una explicación de cómo realizar uno. https://www.youtube.com/watch?v=qDttSc3RQBc

    https://www.youtube.com/watch?v=HwFPiwWC004

    https://www.youtube.com/watch?v=aBbDHjgTkYQ

    https://www.youtube.com/watch?v=IFIxFhfS2LY

    https://www.youtube.com/watch?v=qDttSc3RQBchttps://www.youtube.com/watch?v=HwFPiwWC004https://www.youtube.com/watch?v=aBbDHjgTkYQhttps://www.youtube.com/watch?v=IFIxFhfS2LY