Curso de programación

Clase 1: Definiciones y algoritmos

Definiciones

¿Qué es un programa?

Un programa podría definirse como un conjunto de instrucciones que se utiliza para realizar una tarea específica en una computadora.

El programa puede ser diseñado para realizar una gran variedad de tareas, desde simples operaciones matemáticas hasta complejas operaciones de procesamientos de datos, gestión de bases de datos, video juegos y mucho mas.

Los programas de computadora se crean mediante la utilización de un lenguaje de programación y se ejecutan sobre una computadora.

¿Qué es una computadora?

Una computadora es una máquina electrónica que puede recibir, almacenar, procesar y producir información.

    Contiene los siguientes componentes:
  • Hardware (CPU, memoria, almacenamiento)
  • Software (Programas)

Hardware - CPU

El CPU (unidad central de procesamiento, central processing unit por sus siglas en inglés) es el componente principal de una computadora que realiza la mayoría de las operaciones y cálculos. Es el cerebro de la computadora y se encarga de interpretar y ejecutar las instrucciones del software.

Hardware - Memoria (RAM)

La RAM (Random Access Memory) es una forma de memoria volátil que se utiliza en las computadoras para almacenar temporalmente datos e instrucciones mientras se ejecutan los programas.

La cantidad de RAM que tiene puede afectar su rendimiento general del equipo. Cuanta más RAM tenga un equipo, más programas podrá ejecutar a la vez sin ralentizar la máquina.

Hardware - almacenamiento

NO confundir con memoria.
Es un tipo de memoria no volatil. Los datos pueden permanecer en el tiempo, incluso cuando la computadora se apague.

Discos rígidos, discos ssd, pendrives, etc.

¿Preguntas?

Algoritmos

¿Qué es un algoritmo?

Un algoritmo es un conjunto de instrucciones o sentencias precisas y bien definidas que se utilizan para resolver un problema o realizar una tarea.

Un algoritmo puede ser expresado en una variedad de formas, incluyendo en lenguaje natural, diagramas de flujo, pseudocódigo y lenguajes de programación.

A fines prácticos usaremos instrucciones y sentencias como sinónimos. Mas info.

Flujo en los algoritmos

Un algoritmo es en parte una secuencia de instrucciones.

La secuencia indica que se procesa una instrucción tras otra. En orden de arriba hacia abajo.

Ejemplo de un algoritmo

El siguiente podría ser el programa que hace que la aspiradora robot mencionada funcione:


							encender aspiradora
							limpiar
							moverse hacia adelante
							limpiar
							moverse hacia adelante
							limpiar
							...
							apagar aspiradora
						

El orden de las instrucciones está dado de arriba hacia abajo. Primero se procesa la línea 1, luego la 2 y termina en la línea 8.

Ejemplo de un algoritmo

Un programa hace funcionar un semáforo:


							encender luz roja
							esperar 30 segundos
							encender luz amarilla
							esperar 2 segundos
							encender luz verde
							esperar 30 segundos
							...
						

*Se asume que solo una luz puede estar encendida al mismo tiempo.

Ejemplo de algoritmo

Algoritmo: Robot que limpia


							limpiar
							avanzar
							limpiar
							avanzar
							limpiar
							...
						

Ejemplo de algoritmo

Algoritmo: Robot que limpia


							limpiar
							avanzar
							limpiar
							avanzar
							limpiar
							...
						

Ejemplo de algoritmo

Algoritmo: Robot que limpia


							limpiar
							avanzar
							limpiar
							avanzar
							limpiar
							...
						

Ejemplo de algoritmo

Algoritmo: Robot que limpia


							limpiar
							avanzar
							limpiar
							avanzar
							limpiar
							...
						

Ejemplo de algoritmo

Algoritmo: Robot que limpia


							limpiar
							avanzar
							limpiar
							avanzar
							limpiar
							...
						

Ejemplo de algoritmo

Algoritmo: Robot que limpia


							limpiar
							avanzar
							limpiar
							avanzar
							limpiar
							...
						

Ejemplo para hacer en grupo

Más área para limpiar con la aspiradora.


Las instrucciones disponibles son:
  • limpiar
  • avanzar
  • girar a derecha

¿Cómo se les ocurre que puede ser?

Partes de los algoritmos

  • Entrada (Input): Es la información que damos al algoritmo con la que va a trabajar para ofrecer la solución esperada.
  • Procesamiento: Es el conjunto de pasos para que, a partir de los datos de entrada, llegue a la solución de la situación.
  • Salida (Output): Son los resultados, a partir de la transformación de los valores de entrada durante el proceso.

Pre y poscondiciones de un algoritmo

  • Precondición: es la información que se conoce como verdadera antes de comenzar el algoritmo.
  • Poscondición: es la información que se conoce como verdadera después de finalizado el algoritmo, siempre que se cumpla con las precondiciones.

Condiciones lógicas

Una condición es algo que puede ser evaluado y tiene como respuesta o resultado un verdadero o falso.

Supongamos que nos pasan un número cualquiera. Una condición lógica podría ser ¿El número es par?. La respuesta sería o no (verdadero o falso).

Otro ejemplo, ¿10 es mayor a 9? en este caso sería verdadero.

Profundizaremos mas adelante en el curso sobre condiciones lógicas y el tipo de datos asociado a las mismas.

pseudocódigo

El pseudocódigo puede verse como un lenguaje de programación informal que se utiliza para describir el funcionamiento de un algoritmo de manera clara y concisa.

El pseudocódigo se asemeja al lenguaje natural pero con una serie de convenciones que facilitan la comprensión de los algoritmos.

Los ejemplos que veremos a continuación sobre algoritmos están expresados en pseudocódigo.

¿Preguntas?

Estructuras de control

Estructuras de control

Las estructuras de control son construcciones en la programación que permiten controlar el flujo de ejecución de un programa.

Podemos destacar las siguientes estructuras de control: las estructuras de repetición, las estructuras de selección, estructuras de iteración y las estructuras de salto.

Estructuras de control
(Repetición)

Es una instrucción que lleva a cabo la repetición de un bloque de código un número n de veces predefinido y conocido de antemano.


							repetir (3 veces)
								limpiar
								avanzar
						

Observar que las instrucciones limpiar y avanzar están "tabuladas". Eso significa que esas instrucciones están dentro del bloque de instrucciones repetir.

Las instrucciones, limpiar y avanzar están en un bucle o loop.

Bloque de código o de instrucciones

Es un conjunto de instrucciones que están dentro de otra instrucción.

Un bloque suele estar definido por la identación (espacios delante), entre { } o en palabras claves como begin end


							instruccion_a
							instruccion_b
							repetir(3 veces)
								instruccion_c
								instruccion_d
							instruccion_e
						

Bloque de código o de instrucciones

Es un conjunto de instrucciones que están dentro de otra instrucción.

Un bloque suele estar definido por la identación (espacios delante), entre { } o en palabras claves como begin end


							instruccion_a
							instruccion_b
							repetir(3 veces)
							{
								instruccion_c
								instruccion_d
							}
							instruccion_e
						

Bloque de código o de instrucciones

Es un conjunto de instrucciones que están dentro de otra instrucción.

Un bloque suele estar definido por la identación (espacios delante), entre { } o en palabras claves como begin end


							instruccion_a
							instruccion_b
							repetir(3 veces) begin
								instruccion_c
								instruccion_d
							end
							instruccion_e
						

Por cuestiones de claridad en el código, además de estar entre las palabras claves o entre caracteres se suele agregar una identación.

Estructuras de control
(Selección)

  • Selección: Se utilizan para tomar decisiones en función de una o varias condiciones. El ejemplo más común es el "si-sino", que permite al programa realizar una acción si se cumple una determinada condición y otra acción si no se cumple.

Estructuras de control
(Selección)

Algoritmo "por si llueve" v1


							mirar por la ventana
							si (llueve)
								agarrar paraguas
								agarrar piloto
								agarrar botas
							ir al curso
						

El flujo del algoritmo, en caso que llueva será, la línea 1,2,3,4,5 y 6. Pero si no llueve, será 1,2 y 6.

Observar que (llueve) tiene como resultado un valor lógico que puede evaluarse como verdadero o falso.

Se utilizan los paréntesis para destacar la instrucción si y a la condición llueve.

Estructuras de control
(Selección)

Algoritmo "por si llueve" v2


							mirar por la ventana
							si (llueve)
								agarrar paraguas
								agarrar llaves del auto
							sino
								agarrar la sube
							ir al curso
						

El flujo del algoritmo, en caso que llueva será, la línea 1,2,3,4 y 7. Pero si no llueve, será 1,2,5,6 y 7.

Estructuras de control
(Selección múltiple)

Existe una estructura para decidir entre múltiples alternativas.

Se les conoce como case o switch por la forma en que generalmente se los utiliza en los lenguajes de programación.

Estructuras de control
(Iteración)

  • Iteración: Se utilizan para repetir una acción o un conjunto de acciones hasta que se cumpla una determinada condición.

Es como un mientras se cumpla una condición (la condición es verdadera) repito un conjunto de acciones. A diferencia de la repetición que vimos antes, esta estructura se usa cuando no se sabe de antemano cuantas veces se va a repetir ya que depende de una condición.

Estructuras de control
(Iteración)

Algoritmo "llenar pileta con agua"


							abrir canilla
							mientras (la pileta no este llena)
								echar agua
								hacer otra cosa
							cerrar canilla
						

El flujo será: línea 1 y luego las líneas 2,3 y 4 se repitirán indefinidamente hasta que se llene la pileta. Luego continúa con las próximas sentencias.

Es importante destacar que una vez que el programa entra al mientras, las instrucciones que están dentro del bloque se ejecutarán TODAS. Una vez que terminen de ejecutarse todas, se vuelve a evaluar la condición para ingresar otra vez (o no) a la iteración.

Condicionales negativas

Es posible evaluar una condición negativa


							instruccion_a
							si NO (llueve)
								instruccion_b
								instruccion_c
								...
							mientras NO (condición)
								instruccion_d
								instruccion_e
								...
						

En los casos mencionados, entra en el bloque del si, si NO llueve y entra en el loop del mientras e itera sobre él mientras NO se cumpla la condición.

En algunos lenguajes se suele usar la palabra not o el signo ! para realizar una negación de una condición.

Estructuras de control
(Iteración/selección)

Algoritmo "Saludamos a lxs alumnxs"


							abrir centro de formacion
							mientras (es horario de atencion)
								si (llega una persona)
									si (viene al curso de programacion)
										saludar "Bienvenidx al curso de programacion"
									sino
										saludar "Bienvenidx"
								sino
									espero
							cerrar centro de formacion
							
						

En este ejemplo se muestra que es posible anidar estructuras de control. En este caso se anidaron una iteración y dos selecciones pero no hay límites.

Las condiciones que están dentro del mientras y de los si pueden ser verdadero o falso.

Estructuras de control
(Salto)

  • Salto: Las estructuras de salto se utilizan para alterar el flujo normal de ejecución del programa, permitiendo saltar a una determinada posición en el código.

Anteriormente se utilizaba una instrucción especial llamada goto pero ya no es recomentable. Más adelante veremos en el curso como usar eficientemente una alternativa a esta estructura de control utilizando funciones.

Repaso

  • Instrucciones secuencia: Se ejecuta una instrucción tras otra. El orden es de arriba hacia abajo.
  • Condicionales: Algo que el resultado puede ser verdadero o falso.

    Estructuras de control:
  • Repetición: Repite un conjunto de instrucciones un número predeterminado de veces.
  • Selección: Permite cambiar el flujo del programa si se cumple (o no) determinada condición.
  • Iteración: Se repite un bloque de instrucciones mientras se cumpla una condición.

  • Precondición: La información relevante que se conoce como verdadera antes de iniciar el programa.
  • Postcondición: La información que debería ser verdadera al concluir el algoritmo.

Con las herramientas vistas hasta ahora volcadas en un lenguaje de programación se pueden desarrollar una gran cantidad de programas.

¿Preguntas?

Ejercicios en clase

Ejercicio en clase

Escribir un algoritmo que permita a la aspiradora barrer la primer fila. Utilice todas las herramientas aprendidas que considere útiles.

El área a limpiar es la que se muestra en la imágen.

¡Fin de la clase!

Ir al inicio
Práctica 1
Exportar clase a PDF