Saltar al contenido
Introducción a la Programación Sistemática – Semana 1

Introducción a la Programación Sistemática – Semana 1

Si has estado aquí desde la semana pasada, estoy seguro de que estás esperando con ansias saber cómo fue la primera semana de clases. Bueno, ¡la espera ha terminado!

7min read

Si has estado aquí desde la semana pasada, estoy seguro de que estás esperando con ansias saber cómo fue la primera semana de clases. Bueno, ¡la espera ha terminado!

Para aquellos de ustedes que recién están sintonizando, consulte la "Introducción" a la serie de Introducción a la Programación Sistemática aquí para obtener más información sobre lo que estamos a punto de entrar.

La semana 1 consistió en 9 lecciones centradas en el tema de los primitivos en Dr. Racket. Repasaré cada lección aquí una por una, dando una descripción rápida de los puntos principales del tema que cubrimos y cualquier dato adicional interesante que pueda haber recogido. Recuerde que algunos términos de esta clase, como se mencionó en la publicación 1, se usan de manera diferente a la mayoría de la programación tradicional. Trataré de anotar esto cuando pueda, pero en algunos casos, es posible que ni siquiera sea consciente de cómo se usa tradicionalmente, ¡ya que mucho de esto también es nuevo para mí!

Lección 1: Introducción al Diseño Sistemático de Programas

El punto principal que se trata en esta primera lección es que, "¡La computación es lo que hace que las 'cosas' sucedan!" Este curso se basa en la idea de que los programas, y el diseño de los programas, es lo que hace posible la mayoría de nuestras interacciones "típicas" del primer mundo. Desde los alimentos hasta el transporte, es probable que un programa informático estuviera involucrado en algún lugar del proceso de transición del producto desde la producción hasta el usuario final, independientemente de si el producto se considera "tecnología".

A continuación, revisamos la pregunta: "¿Qué es el 'método de diseño'?" En esta clase, el método de diseño se define como una estructura que te lleva desde un problema mal definido hasta una solución bien estructurada. Para mí, esto trasciende el simple desarrollo de software, y se puede utilizar a lo largo de la existencia diaria si se aplica de manera reflexiva.

Lección 2: Expresiones

Dr. Racket está configurado de tal manera que el área de definiciones está por encima del área de interacciones, como puedes ver aquí:

Dr. Racket está configurado de tal manera que el área de definiciones está por encima del área de interacciones, como puede ver

En Dr. Racket, las expresiones se evalúan para producir valores. Para crear una expresión, se debe utilizar la siguiente receta:

Por ejemplo, para que Dr. Racket calcule "3+6", debe ingresar lo siguiente en su área de definiciones:

(+ 3 6)

Notas adicionales de esta sección:

; designa una línea que se va a comentar

#i designates an inexact number

Lesson 3: Evaluation

Las Reglas en Dr. Racket para Evaluar Expresiones son:

  1. Una expresión es una "llamada primitiva" cuando comienza como (*......

Con * representa cualquiera de los operadores primitivos, incluidos, entre otros: +, -, /, *

  1. Todos los elementos después del operador se designan como operandos
  2. El primer paso en la evaluación es reducir todos los operandos a valores
  3. Los operandos se reducen a valores de izquierda a derecha y de adentro hacia afuera

Notas adicionales de esta sesión:

Recuerde incluir espacios antes de los operandos y los números o, de lo contrario, su expresión no podrá ser evaluada.

Lección 4: Cuerdas e imágenes

Esta lección cubrió cómo definir cadenas e imágenes, así como algunas de sus funciones básicas que utilizará el curso. Estos son algunos de los aspectos más destacados:

Strings

"Esto es una cuerda en Dr. Racket"

Las cadenas se consideran valores y no son números, incluso si la cadena contiene un número o un valor numérico.

(string-append "Ada", "Lovelace") se evaluará como "AdaLovelace"

(longitud de cadena "manzana") se evaluará como 5

(subcadena "Caribou" 2 4) se evaluará a ri

La subcadena utiliza la indexación basada en cero, que en términos sencillos, significa que comienza a contar desde 0. Por lo tanto, Caribou estaría numerado C – 0, A-1, R-2, I-3, B-4, O-5, U-6.

La subcadena toma la parte de la cadena que comienza con el primer operando, así como el resto de los números del medio, pero no incluye el operando de cierre.

Imágenes

Con el fin de utilizar imágenes en el lenguaje Dr. Racket, la parte superior del programa debe incluir la línea (requiere 2ndp/image). Esto hace referencia a la segunda edición de las reglas de imagen del libro Cómo diseñar.

Para generar un círculo

Para generar un círculo

Para generar un rectángulo

Para generar un rectángulo

Mensaje de texto

Texto

Encima

Encima

Beside

Beside

 

Pila

Pila

Lesson 5: Constant Definitions

La idea de definir una constante en Dr. Racket es similar, si no idéntica, a lo que he experimentado en otros lenguajes de programación. Genéricamente hablando, definir una constante significa dar un nombre a un valor (que ha sido codificado de forma rígida) para ser utilizado en el futuro. Las constantes suelen definirse en MAYÚSCULAS, para diferenciarlas de otros tipos de valores definidos.

Para definir una constante en Dr. Racket, se usaría la expresión:Un ejemplo funcional de esto sería: (definir WIDTH 400). Esto crearía un valor con nombre denominado WIDTH que se evaluaría como el número 400 cuando se utilizara en una expresión.

Notas adicionales de esta sección:

Definir una constante NO es igual a un valor de salida.

Las constantes pueden ser imágenes. Por ejemplo, (rotar 10 CONSTANT) rotará una constante 10 grados.

Lección 6: Definiciones de funciones

Las funciones son el mecanismo que permite producir un resultado diferente cada vez que se ejecuta un programa, y se pueden utilizar repetidamente con cualquier valor (válido). En mi experiencia, de manera similar a la definición de constantes, esta definición es cierta en muchos, si no en todos, los lenguajes de programación. En todos los idiomas, un parámetro es el valor modificable que se pasa a la función.

El uso de funciones permite a los programadores evitar la trampa de "cortar y pegar" en la que pueden estar inclinados a caer para revisar múltiples valores, y permite un código más limpio y conciso.

Para escribir una función en Dr. Racket, se utiliza la siguiente receta:

Lección 7: Expresiones booleanas y If

Los valores booleanos son expresiones que se evalúan como verdaderas o falsas; Este resultado también se conoce como predicado. No hay un punto intermedio para los booleanos, y esto también es cierto en la mayoría de los lenguajes de programación.

Las expresiones If dependen de este predicado para ramificar sus respuestas. Si las declaraciones le preguntan al programa: "¿Es esto cierto? Si es así, haz lo siguiente. Si no, ¡haz esto!". En Dr. Racket, una declaración if se expresa de la siguiente manera:

Lección 8: Uso del paso a paso

En la Lección 8 se repasó cómo utilizar una herramienta de Dr. Racket llamada "The Stepper". Este programa permite al desarrollador evaluar su programa paso a paso, para determinar dónde puede estar un error. Es una gran herramienta para aquellos que usan la clase, pero no creo que sea necesario entrar en demasiados detalles aquí.

Lección 9: Descubriendo los primitivos

Lo que me pareció realmente interesante de la lección 9 fue que sus principios básicos parecían contradictorios con la mayoría de los otros tipos de aprendizaje, pero muy indicativos de cómo me siento acerca de memorizar teoremas y métodos. Como esta clase tiene su propio lenguaje de programación "inventado" para que lo usemos, nadie está íntimamente familiarizado con las primitivas (¡o cualquier cosa, en realidad!) que tenemos disponibles. El consejo para esto es doble. En primer lugar, se nos anima a "¡Adivinar!" porque lo más probable es que, dado que la programación es intuitiva, podríamos tener razón. La segunda sugerencia es "Buscar y desplazarse", que se explica como buscar una primitiva similar y ver qué más relacionado está disponible en nuestra guía. Como dije, soy un gran admirador de este enfoque, porque no obliga al estudiante a memorizar innumerables horas de detalles, sino que les permite sumergirse directamente en el trabajo interactivo y aprender en el camino.

ALRIGHT

Eso es todo para las lecciones de la semana 1. Creo que fue un gran comienzo porque pude refrescar muchos conceptos básicos, pero también tener una idea general de cómo funciona Dr. Racket. Las tareas eran bastante básicas y pude superarlas con relativa facilidad. Lo que sí me quedé atascado, para aquellos de ustedes que están siguiendo como compañeros de curso, es que al poner los resultados de la evaluación, ¡NO olviden las "s" que rodean sus cuerdas! Olvidé esto y casi reprobo el examen de la tarea por eso. Afortunadamente, nuestro cuestionario de la semana 1 permite repetirlo, así que pude corregir mi error y estoy feliz de decir que obtuve el 100%.

Solicitar una demostración