MSI101, Tarea 1

Tarea 1

MSI101 Fundamentos de Programación y Base de Datos
Universidad Ducens

Ensayo

Entregar un ensayo definiendo que es la programación para el estudiante.

¿Qué es la programación?

Dependiendo del contexto, la palabra programación puede tomar diferentes significados, desde el hecho de programar una cita con el dentista, pasando por programar el código correcto en un control universal para controlar diferentes equipos electrónicos en el hogar, y obviamente el tema que nos concierne, el hacer que una computadora realice una tarea determinada.

En un contexto general, podemos definir programación cómo la acción de resolver un problema o una tarea mediante una serie de instrucciones o pasos ordenados que produzcan resultados consistentes. Programación, en el contexto de las Ciencias de la Computación es, según el Diccionario Oxford de la Lengua Inglesa “El proceso de escribir y probar programas de computadora”; así mismo, el Diccionario de la Real Academia Española (RAE) la define como “Elaborar programas para su empleo en computadoras”.

Como podemos ver existe un punto en común entre estas definiciones incluso al ser en idiomas diferentes, este es la palabra programa. Pero entonces ¿qué es un programa? Si buscamos su definición en el RAE encontraremos lo siguiente: “Conjunto unitario de instrucciones que permite a una computadora realizar funciones diversas, como el tratamiento de textos, el diseño de gráficos, la resolución de problemas matemáticos, el manejo de bancos de datos, etc.”, por lo tanto, tomando nuestra definición general y aplicándola en el contexto de CS podemos decir que la programación es ”La elaboración de una serie de instrucciones que permite a una computadora realizar funciones diversas”.

Ahora bien, desde mi punto de vista, la programación no solo implica saber escribir dichas instrucciones para resolver el problema sino que va mucho mas allá, ya que para poder resolver un problema debemos primero entenderlo, analizar lo que se debe hacer y como se debe hacer, se debe conocer los resultados o al menos como validar que estos sean correctos, y como asegurar que los resultados sigan siendo correctos después de realizar cambios a las instrucciones iniciales.

Algoritmos

Definir un algoritmo para las siguientes actividades: Cocinar Hot Cakes, Preparar un Banquete, Salir de Viaje, Estudiar.

Cocinar Hot Cakes

Fuente: https://www.marthastewart.com/338185/basic-pancakes

  • Obtener ingredientes:
    • 1 taza de harina
    • 2 cucharadas de azúcar
    • 2 cucharaditas de polvo para hornear
    • 1/2 cucharadita de sal
    • 1 taza de leche
    • 2 cucharadas de mantequilla sin sal derretida
    • 1 huevo grande
    • 1 cucharada de aceite vegetal
  • Obtener utensilios:
    • 1 recipiente pequeño
    • 1 batidor de globo
    • 1 recipiente mediano
    • 1 sartén grande
    • 1 cuchara
    • 1 espátula
    • 1 plato
  • En el recipiente pequeño mezcla con el batidor de globo el harina, azúcar, polvo para hornear y sal.
  • En el recipiente mediano mezcla con el batidor de globo la leche, mantequilla y el huevo.
  • Agrega al recipiente mediano los ingredientes secos que están en el recipiente pequeño y mezcla brevemente.
  • Calienta el sartén grande a fuego medio. Humedece el interior del sartén con un poco de aceite.
  • Vierte de 2 a 3 cucharadas de la mezcla en el sartén usando la cuchara para extender la mezcla en forma circular.
  • Cocina hasta que la superficie tenga algunas burbujas y algunas de ellas se han abierto (aproximadamente 2 minutos).
  • Voltea con cuidado el hotcake con una espátula y cocina hasta que la parte inferior se vea cafe claro (aproximadamente 2 minutos).
  • Retira el hotcake del sartén y colócalo en un plato.
  • Repite los pasos anteriores hasta que se termine la mezcla.

Preparar un Banquete

  • Solicitar el numero de personas para el banquete, la fecha y el menu deseado.
  • Confirmar si hay personas con requerimientos especiales, en cuyo caso se deberá solicitar la cantidad de personas y sus menus.
  • Uno o dos días antes del banquete comprar los ingredientes para la elaboración de todos los tiempos del menu.
  • De seis a ocho horas antes del banquete iniciar la elaboración de los platillos.

Salir de Viaje

  • Decidir el destino, la fecha y la duración del viaje.
  • Dias (o incluso meses) antes de la fecha del viaje investigar si hay requisitos especiales, como visas, vacunas, reservaciones, etc.
  • Cotizar y reservar los diferentes medios de transporte (avión, tren, barco, etc.).
  • Cotizar y reservar el hospedaje en el/los destinos del viaje.
  • Dias (o semanas) antes del viaje investigar el clima promedio para las fechas del viaje.
  • Según el clima en el/los destinos comprar ropa adecuada que haga falta.
  • Un par de días antes del viaje preparar la maleta con la ropa, artículos de aseo personal y accesorios necesarios. Preferentemente hacer una lista de lo que se guardó en la maleta para revisar al regreso que no se olvide nada.
  • El día del viaje, un par de horas antes de salir, revisar que no se olviden documentos necesarios para el viaje (identificaciones, pasaportes, visas, tarjetas de crédito, etc.).

Estudiar

  • Decidir el tema a estudiar.
  • Recopilar material de estudio.
  • Preparar el lugar de estudio, cómodo, sin distracciones, y con todo lo necesario a la mano.
  • Preparar material de apoyo, como libreta de apuntes, bolígrafo, etc.
  • Si el material de estudio es en formato digital, cerrar programas que puedan distraer y poner los dispositivos en modo no molestar.
  • Leer detenidamente el material de estudio escrito.
  • Ver / escuchar el material de estudio multimedia.
  • Hacer ejemplos basados en el material estudiado para reafirmar los nuevos conocimientos.

Pseudocódigo

Pasar los algoritmos definidos en el punto anterior a pseudocódigo.

Cocinar Hot Cakes

DEFINE Ingredientes = [ 
    "1 taza de harina", 
    "2 cucharadas de azúcar", 
    "2 cucharaditas de polvo para hornear", 
    "1/2 cucharadita de sal", 
    "1 taza de leche", 
    "2 cucharadas de mantequilla sin sal derretida", 
    "1 huevo grande", 
    "1 cucharada de aceite vegetal" 
]

DEFINE Utensilios = [ 
    "1 recipiente pequeño", 
    "1 batidor de globo", 
    "1 recipiente mediano", 
    "1 sartén grande", 
    "1 cuchara", 
    "1 espátula", 
    "1 plato"
]

OBTENER Ingredientes
OBTENER Utensilios

CON "recipiente pequeño", "batidor de globo" COMO "utensilios" EN Utensilios 
Y CON "harina", "azúcar", "polvo para hornear", "sal" COMO "ingredientes" EN Ingredientes:
  MEZCLA "ingredientes" CON "utensilios" COMO "ingredientes secos"

CON "recipiente mediano", "batidor de globo" COMO "utensilios" EN Utensilios 
Y CON "leche", "matequilla", "huevo" COMO "ingredientes" EN Ingredientes:
  MEZCLA "ingredientes" CON "utensilios" COMO "ingredientes húmedos"

CON "recipiente mediano", "batidor de globo" COMO "utensilios" EN Utensilios 
Y CON "ingredientes secos", "ingredientes humedos" COMO "ingredientes":
  MEZCLA(brevemente) "ingredientes" CON "utensilios" COMO "mezcla"

CON "sartén grande" COMO "sartén", "cuchara", "espátula", "plato" EN Utensilios 
Y CON "aceite" EN Ingredientes:
  MIENTRAS hay "mezcla"
    APLICA(poco) "aceite" EN "sartén"
    CALIENTA(medio) "sartén"
    MIENTRAS hay espacio EN "sartén":
      VIERTE(circular) "mezcla" CON "cuchara" EN "sartén" COMO "hotcake"
    SI hay burbujas EN "hotcake" Y algunas burbujas están abiertas
      VOLTEA(cuidado) "hotcake" CON "espátula"
    SI parte inferior EN "hotcake" ES cafe claro
      RETIRA "hotcake" DE "sartén" EN "plato"

Preparar un Banquete

SOLICITAR "numero de personas"
SOLICITAR "fecha"
SOLICITAR "menu"
SOLICITAR "requerimientos especiales"
SI "requerimientos especiales":
  SOLICITAR "numero de personas"
  SOLICITAR "menus"
SI AHORA = "fecha" - 2 dias:
  COMPRAR ingredientes en [ "menu", "requerimientos especiales"."menu" ]
SI AHORA =  "fecha" - 8 horas:
  ELABORAR [ "menu", "requerimientos especiales"."menu" ]

Salir de Viaje

SOLICITAR "destino"
SOLICITAR "fecha"
SOLICITAR "duración"
SI AHORA < "fecha" - 1 mes:
  RESERVA "transporte"
  RESERVA "hotel"
  COMPRA "ropa adecuada"
  COMPRA "accesorios"
SI AHORA = "fecha" - 2 dias:
  PREPARA "maleta"
  RECOPILA "lista" DE "maleta"
SI AHORA = "fecha":
  VERIFICA "identificaciones", "pasaportes", "visas", "tarjetas de credito" EN "maleta"

Estudiar

DECIDIR "tema"
RECOPILAR "material de estudio"
PREPARAR "lugar de estudio"
PREPARAR "material de apoyo"
SI "material de estudio" ES digital:
    CERRAR programas
    ACTIVAR DND
LEER | VER | ESCUCHAR (detenidamente) "material de estudio"
PRACTICAR "ejemplos" DE "material de estudio"

Diagramas

Crear el diagrama de cada algoritmo definido en el punto anterior.

Cocinar Hot Cakes

Preparar un Banquete

Salir de Viaje

Estudiar

Clasificación de los Lenguajes de Programación Actuales

Dada la amplitud de la pregunta, solo se puede proporcionar una respuesta igual de amplia.

Algunas formas de clasificar a los lenguajes de programación actuales son:

Bajo Nivel1

Proveen poca o nula abstracción de la arquitectura y lenguaje de maquina. Se denominan de “bajo” nivel dado que sus instrucciones son muy similares (sino idénticas) a las instrucciones de la arquitectura del procesador para el que son programadas.

Ejemplos de lenguajes de bajo nivel: Código de maquina, Language ensamblador.

Alto Nivel2

Implementan abstracciones de alto nivel, proveyendo de palabras clave (generalmente en Inglés), variables, operadores, etc. que evitan o esconden los detalles del lenguaje de maquina, registros, memoria, la arquitectura del procesador, etc.

Ejemplos de lenguajes de alto nivel: Python, Java, Perl, PHP, JavaScript, etc.

Fuertemente Tipados3

Lenguajes de alto nivel en el que el sistema de tipos cuenta con una serie de reglas estrictas que son validadas a la hora de compilar.

Ejemplos de lenguajes fuertemente tipados: C, Java.

Debilmente Tipados3

Lenguajes de alto nivel con sistemas de tipos mas flexibles los cuales permiten almacenar y/o convertir automáticamente en tiempo de ejecución diferentes tipos de datos.

Ejemplos de lenguajes débilmente tipados: PHP, JavaScript.

Compilados4

Languajes cuyo código fuente es traducido a un archivo en lenguaje de maquina para luego ser distribuido y utilizado en forma binaria. La definición es algo vaga pues en teoría cualquier lenguaje de programación puede ser compilado e interpretado.

Ejemplos de lenguajes compilados: C, C++, Java, Go, Rust, Swift.

Interpretados5

Lenguajes cuyos programas son distribuidos generalmente en forma de código fuente y sus instrucciones son ejecutadas por un interprete linea por linea al ser ejecutados. En la actualidad muchos lenguajes interpretados son realmente híbridos, esto es, compilados a un modo intermedio optimizado para el motor que lo va a terminar compilando y ejecutando.

Ejemplos de lenguajes interpretados: JavaScript, PHP, Lisp, Ruby, Tcl, etc.

Transcompilados6

Lenguajes que son traducidos a otro lenguaje de programación antes de ser compilados o interpretados. Generalmente se consideran “super sets” del lenguaje de destino que agregan funcionalidad no existente o simplifican el exceso de código necesario para realizar determinadas tareas.

Ejemplos de lenguajes transcompilados: TypeScript, Flow, Elm, ClojureScript, CoffeeScript, etc.


  1. https://en.wikipedia.org/wiki/Low-level_programming_language 
  2. https://en.wikipedia.org/wiki/High-level_programming_language 
  3. https://en.wikipedia.org/wiki/Strong_and_weak_typing 
  4. https://en.wikipedia.org/wiki/Compiled_language 
  5. https://en.wikipedia.org/wiki/Interpreted_language 
  6. https://en.wikipedia.org/wiki/Source-to-source_compiler