Unidad I

Introducción a la programación

Lógica de Programación y Pensamiento Computacional

Facultad de Informática Culiacán · Universidad Autónoma de Sinaloa

Escudo de la Universidad Autónoma de Sinaloa Escudo de la Facultad de Informática Culiacán
UAS - Lógica de Programación y Pensamiento Computacional

Al finalizar esta unidad podrás

1.1 Comprender la importancia de programar

Explicar por qué aprender a programar implica desarrollar capacidades de análisis, abstracción y resolución de problemas.

1.2 Distinguir conceptos básicos

Diferenciar computadora, algoritmo, programa y lenguaje, y explicar cómo se relacionan.

1.3 Representar algoritmos

Reconocer y utilizar de manera introductoria lenguaje natural, pseudocódigo y diagramas de flujo.

1.4 / 1.5 Razonar y resolver

Aplicar razonamiento lógico para construir soluciones y expresarlas como algoritmos.

UAS - Lógica de Programación y Pensamiento Computacional

Antes de empezar

¿Programar significa escribir código?

No exactamente.

Antes de escribir una sola línea necesitamos comprender:

Y después:

¿qué sabemos?
      ↓
¿qué necesitamos conseguir?
      ↓
¿qué información es relevante?
      ↓
¿qué solución podemos construir?

La programación comienza mucho antes del teclado.

UAS - Lógica de Programación y Pensamiento Computacional

Una situación sencilla

Quieres explicarle a alguien que nunca ha preparado café cómo hacerlo.

Le dices:

"Haz café".

¿Es suficiente?

Probablemente no.

La persona podría preguntarte:

  • ¿cuánta agua?
  • ¿qué tipo de café?
  • ¿en qué orden?
  • ¿qué utensilios?
  • ¿cuándo termina?
UAS - Lógica de Programación y Pensamiento Computacional

1

Comprender el problema

UAS - Lógica de Programación y Pensamiento Computacional

¿Qué es un problema?

Antes de diseñar un algoritmo necesitamos comprender qué queremos resolver.

Un problema puede describirse mediante cuatro elementos:

1 Situación inicial

¿Dónde estamos?

2 Objetivo

¿A dónde queremos llegar?

3 Datos

¿Con qué información contamos?

4 Restricciones

¿Qué condiciones debemos respetar?

UAS - Lógica de Programación y Pensamiento Computacional

Ejemplo: aprobar una asignatura

Situación inicial

Tenemos la calificación final de un estudiante.

Objetivo

Determinar si aprueba.

Datos

Calificación final y criterio de aprobación.

Restricción

Debe respetarse el criterio establecido.

No necesitamos conocer en este problema el nombre del estudiante, su edad,
su carrera o su domicilio.

Esos datos pertenecen a la realidad, pero no son relevantes para esta solución.

UAS - Lógica de Programación y Pensamiento Computacional

De la realidad al modelo

Una computadora no trabaja directamente con toda la realidad.

Necesitamos construir una representación de los aspectos relevantes.

01 REALIDAD

La situación completa

02 OBSERVAR

Identificar información

03 ABSTRAER

Seleccionar lo relevante

04 MODELO

Representar lo necesario

Abstraer significa concentrarnos en los aspectos relevantes para el problema y dejar fuera los detalles que no necesitamos para construir la solución.

UAS - Lógica de Programación y Pensamiento Computacional

¿Por qué importa la abstracción?

Imagina un sistema para calcular el costo de un viaje.

La realidad incluye:

  • color del automóvil
  • marca del automóvil
  • música que escucha el conductor
  • distancia recorrida
  • consumo de combustible
  • precio del combustible.

Para calcular el costo quizá solo necesitamos:

distancia
consumo
precio del combustible
UAS - Lógica de Programación y Pensamiento Computacional

La primera gran idea

Esta idea será importante durante toda la carrera.

UAS - Lógica de Programación y Pensamiento Computacional

2

¿Qué significa programar?

UAS - Lógica de Programación y Pensamiento Computacional

Programar es más que escribir código

01 COMPRENDER

¿Qué problema tenemos?

02 ANALIZAR

¿Qué información importa?

03 DISEÑAR

¿Qué solución podemos construir?

04 REPRESENTAR

¿Cómo expresamos la solución?

05 IMPLEMENTAR

¿Cómo la convertimos en programa?

En esta unidad nos concentraremos principalmente en comprender, analizar y diseñar soluciones algorítmicas.

UAS - Lógica de Programación y Pensamiento Computacional

¿Por qué aprender a programar?

Analizar

Identificar qué información importa y cómo se relaciona.

Abstraer

Separar lo relevante de lo que no necesitamos para el problema.

Resolver

Construir procedimientos ordenados que puedan repetirse y comunicarse.

UAS - Lógica de Programación y Pensamiento Computacional

Programar también es comunicar

Un algoritmo no solo debe funcionar.

También debe poder ser:

  • entendido
  • revisado
  • explicado
  • modificado
  • implementado

Una solución que solo funciona porque su autor "sabe qué quiso decir" es una solución difícil de comunicar y mantener.

UAS - Lógica de Programación y Pensamiento Computacional

Una idea histórica

En 1843, Ada Lovelace publicó notas sobre la Máquina Analítica de Charles Babbage que incluían un procedimiento para calcular números de Bernoulli.

Lo importante para nosotros no es memorizar la fecha.

Es observar una idea:

El Computer History Museum documenta la relación de Lovelace con la Máquina Analítica y sus notas de 1843.

UAS - Lógica de Programación y Pensamiento Computacional

La historia también muestra otra idea

La programación evolucionó buscando diferentes maneras de expresar instrucciones:

máquina
   ↓
instrucciones
   ↓
lenguajes
   ↓
programas
   ↓
abstracciones

La historia de la programación no es solo una sucesión de lenguajes.

También es la historia de cómo hacemos más manejable la expresión de soluciones computables.

UAS - Lógica de Programación y Pensamiento Computacional

3

Computadora, algoritmo, programa y lenguaje

UAS - Lógica de Programación y Pensamiento Computacional

Computadora

Una computadora es un sistema capaz de:

recibir información
       ↓
procesarla mediante instrucciones
       ↓
producir resultados

La computadora no determina por sí misma qué problema queremos resolver.

Necesita instrucciones que indiquen qué hacer.

UAS - Lógica de Programación y Pensamiento Computacional

Algoritmo

Un algoritmo es un procedimiento para resolver un problema mediante una secuencia de pasos que debe estar suficientemente definida para poder ejecutarse y terminar.

En esta unidad utilizaremos una formulación operativa:

La formulación recoge características clásicas estudiadas en la literatura de algoritmos y programación.

Fuente principal: Joyanes Aguilar (2020).

UAS - Lógica de Programación y Pensamiento Computacional

¿Qué características necesita un algoritmo?

No todas las listas utilizan exactamente la misma terminología, pero en la introducción clásica de algoritmos aparecen características fundamentales.

Finitud

El procedimiento termina después de un número finito de pasos.

Definitud

Cada paso está suficientemente definido y no depende de una interpretación arbitraria.

Entrada

Puede recibir cero o más datos de entrada.

Salida

Produce uno o más resultados.

UAS - Lógica de Programación y Pensamiento Computacional

¿Y la efectividad?

Un algoritmo no puede depender de una acción imposible de ejecutar.

Cada paso debe poder realizarse mediante un procedimiento efectivo.

Por ejemplo:

No es una instrucción suficientemente definida:

"Haz lo necesario para resolver el problema."

Es mejor:

"Ordena los datos de menor a mayor."

La efectividad se refiere a que las operaciones del procedimiento puedan realizarse de manera efectiva, no significa que el algoritmo necesariamente sea rápido u óptimo.

UAS - Lógica de Programación y Pensamiento Computacional

Propiedades necesarias ≠ criterios de calidad

Esta diferencia es importante.

Para ser un algoritmo

Debe cumplir características fundamentales como terminación y definición suficiente de sus pasos.

Para ser una buena solución

Además podemos evaluar corrección, claridad, generalidad y eficiencia.

UAS - Lógica de Programación y Pensamiento Computacional

¿Qué hace buena una solución algorítmica?

1 Corrección

Produce el resultado esperado para los problemas que debe resolver.

2 Claridad

Puede entenderse y revisarse.

3 Generalidad

No depende únicamente de un caso particular.

4 Eficiencia

Utiliza razonablemente los recursos disponibles.

La eficiencia se estudiará con mayor profundidad posteriormente. Aquí solo introducimos la idea de que dos soluciones correctas pueden diferir en los recursos que necesitan.

UAS - Lógica de Programación y Pensamiento Computacional

Algoritmos en la vida cotidiana

Lavarse las manos

Mojar → aplicar jabón → frotar → enjuagar → secar.

Cruzar una calle

Detenerse → observar → esperar una situación segura → cruzar.

Preparar un sándwich

Preparar ingredientes → colocarlos en orden → cerrar → servir.

UAS - Lógica de Programación y Pensamiento Computacional

Actividad: instrucciones literales

Objetivo: experimentar la importancia de la precisión.

En parejas:

  1. Escribe instrucciones para realizar una tarea cotidiana.
  2. Intercámbialas con otra persona.
  3. Tu compañero debe seguirlas literalmente.
  4. No puede preguntarte qué quisiste decir.
  5. Identifiquen dónde apareció una ambigüedad.
  6. Reescriban ese paso.

Pregunta: ¿qué característica del algoritmo acabamos de experimentar?

UAS - Lógica de Programación y Pensamiento Computacional

4

Algoritmo, solución y programa

UAS - Lógica de Programación y Pensamiento Computacional

No son lo mismo

Problema

La situación que necesitamos resolver.

Solución

La estrategia que proponemos para resolverlo.

Algoritmo

La solución expresada mediante pasos suficientemente precisos.

Lenguaje de programación

Un sistema formal de reglas y símbolos para expresar programas.

Programa

Una implementación de una solución algorítmica expresada en un lenguaje de programación.

UAS - Lógica de Programación y Pensamiento Computacional

La cadena completa

01 PROBLEMA

¿Qué necesitamos resolver?

02 SOLUCIÓN

¿Qué estrategia proponemos?

03 ALGORITMO

¿Cómo expresamos los pasos?

04 REPRESENTACIÓN

¿Cómo comunicamos el algoritmo?

05 PROGRAMA

¿Cómo lo implementamos?

UAS - Lógica de Programación y Pensamiento Computacional

Una distinción fundamental

Algoritmo ≠ programa

Un algoritmo puede expresarse mediante:

  • lenguaje natural
  • pseudocódigo
  • diagrama de flujo

Un programa utiliza un lenguaje de programación y está destinado a ser ejecutado por una computadora.

UAS - Lógica de Programación y Pensamiento Computacional

5

Lenguajes de programación

UAS - Lógica de Programación y Pensamiento Computacional

¿Qué es un lenguaje de programación?

Un lenguaje de programación proporciona reglas y elementos para expresar instrucciones que pueden ser procesadas por una computadora.

Podemos pensarlo como un medio de comunicación formal entre quien desarrolla un programa y la máquina.

Python, C, C++, Java y muchos otros son lenguajes de programación.

No son algoritmos.

No son computadoras.

No son programas por sí mismos.

UAS - Lógica de Programación y Pensamiento Computacional

¿Por qué existen tantos lenguajes?

Porque diferentes lenguajes ofrecen diferentes formas de expresar soluciones y fueron diseñados en distintos contextos y con diferentes objetivos.

Podemos encontrar lenguajes orientados a:

  • sistemas
  • aplicaciones
  • ciencia
  • web
  • automatización
  • educación
  • inteligencia artificial
UAS - Lógica de Programación y Pensamiento Computacional

Un ejemplo histórico: C

Dennis Ritchie desarrolló el lenguaje C en Bell Labs.

Ken Thompson y Dennis Ritchie fueron figuras centrales en el desarrollo de Unix.

La distinción es importante:

C
↓
lenguaje de programación

Unix
↓
sistema operativo

programa
↓
implementación concreta

La ACM reconoce a Thompson y Ritchie por el desarrollo de la teoría de sistemas operativos y, específicamente, por la implementación de Unix.

UAS - Lógica de Programación y Pensamiento Computacional

6

Representar algoritmos

UAS - Lógica de Programación y Pensamiento Computacional

¿Por qué representar un algoritmo?

Porque una solución que solo existe en nuestra cabeza:

  • es difícil de revisar
  • es difícil de explicar
  • puede contener ambigüedades
  • es difícil de implementar

Representarla permite hacer visible el razonamiento.

UAS - Lógica de Programación y Pensamiento Computacional

Tres formas de representación

En esta unidad trabajaremos con:

1 Lenguaje natural

Describe los pasos utilizando palabras.

2 Pseudocódigo

Organiza las instrucciones de forma estructurada sin depender de la sintaxis de un lenguaje específico.

3 Diagrama de flujo

Representa gráficamente las acciones y sus relaciones.

UAS - Lógica de Programación y Pensamiento Computacional

Lenguaje natural

Es el punto de partida más cercano a nuestra forma cotidiana de explicar procedimientos.

Ejemplo

Problema: preparar una taza de café.

1. Tomar una taza.
2. Calentar agua.
3. Colocar café en la taza.
4. Agregar el agua caliente.
5. Mezclar.
6. Servir.

Es fácil de leer.

Pero puede contener ambigüedades.

UAS - Lógica de Programación y Pensamiento Computacional

Pseudocódigo

El pseudocódigo organiza la solución de una manera más estructurada.

Algoritmo PrepararCafe

    tomar taza
    calentar agua
    colocar café
    agregar agua caliente
    mezclar
    servir

FinAlgoritmo

No pertenece a un lenguaje de programación específico.

Su objetivo es ayudarnos a expresar el algoritmo de manera clara antes de implementarlo.

UAS - Lógica de Programación y Pensamiento Computacional

Diagrama de flujo

Un diagrama de flujo utiliza símbolos gráficos para representar el procedimiento.

Diagrama de flujo para determinar si un número es par o impar

El valor del diagrama no está en los símbolos por sí mismos.

Está en hacer visible:

  • el orden
  • el flujo
  • las acciones
  • las decisiones cuando existen.
UAS - Lógica de Programación y Pensamiento Computacional

Una solución, diferentes representaciones

                 ALGORITMO
                     │
          ┌──────────┼──────────┐
          ↓          ↓          ↓
      Natural    Pseudocódigo  Flujo
UAS - Lógica de Programación y Pensamiento Computacional

¿Y las herramientas?

Las herramientas ayudan a construir representaciones.

Pero:

Herramienta

Software utilizado para construir, editar o ejecutar una representación.

Representación

La forma en que expresamos el algoritmo.

No debemos confundir pseudocódigo con el programa que utilizamos para escribirlo.

Tampoco debemos confundir diagrama de flujo con el software que utilizamos para dibujarlo.

UAS - Lógica de Programación y Pensamiento Computacional

Recurso opcional: Scratch

Scratch puede utilizarse como una experiencia introductoria para observar cómo una solución algorítmica puede convertirse en una implementación visual.

ALGORITMO
    ↓
BLOQUES
    ↓
EJECUCIÓN

Scratch es un entorno de programación visual. No sustituye al pseudocódigo ni al diagrama de flujo y no constituye una representación algorítmica equivalente.

Su uso en esta unidad es opcional.

UAS - Lógica de Programación y Pensamiento Computacional

7

Razonamiento lógico

UAS - Lógica de Programación y Pensamiento Computacional

Razonar antes de programar

El razonamiento lógico nos permite analizar relaciones entre hechos, acciones y consecuencias.

Para construir una solución necesitamos preguntarnos:

¿Qué sabemos?
      ↓
¿Qué queremos conseguir?
      ↓
¿Qué relaciones existen?
      ↓
¿Qué debe ocurrir primero?
      ↓
¿Qué ocurre después?
UAS - Lógica de Programación y Pensamiento Computacional

Tres elementos básicos

Secuencia

Organizar acciones en un orden coherente.

Relación

Identificar cómo una acción o condición se relaciona con otra.

Consecuencia

Anticipar qué resultado puede producir una acción.

UAS - Lógica de Programación y Pensamiento Computacional

8

Pensamiento computacional

UAS - Lógica de Programación y Pensamiento Computacional

Una forma de apoyar el razonamiento

El pensamiento computacional puede ayudarnos a abordar problemas de manera sistemática.

En esta unidad utilizaremos cuatro ideas:

1 Descomposición

Dividir un problema en partes manejables.

2 Patrones

Reconocer semejanzas que puedan aprovecharse.

3 Abstracción

Conservar lo relevante para el problema.

4 Diseño algorítmico

Organizar una solución mediante pasos.

Adaptación didáctica para esta unidad a partir del marco de pensamiento computacional de Wing (2006).

UAS - Lógica de Programación y Pensamiento Computacional

Descomposición

Problema: organizar un viaje de fin de semana.

En lugar de tratarlo como una sola tarea:

ORGANIZAR VIAJE
      ↓
transporte
alojamiento
alimentación
actividades
presupuesto

Dividir un problema no significa necesariamente resolver cada parte de forma independiente. Significa reducir su complejidad para poder analizarlo.

UAS - Lógica de Programación y Pensamiento Computacional

Reconocimiento de patrones

Supongamos que necesitamos organizar tres viajes.

Podemos observar que todos requieren:

destino
transporte
presupuesto
fecha
UAS - Lógica de Programación y Pensamiento Computacional

Abstracción

No todos los detalles tienen la misma importancia.

Para calcular el costo de un viaje:

importa:

  • distancia
  • consumo
  • precio

puede no importar:

  • color del automóvil
  • música
  • marca del asiento.

Abstraer es seleccionar los elementos relevantes para el problema.

UAS - Lógica de Programación y Pensamiento Computacional

Diseñar el algoritmo

Después de comprender, descomponer y abstraer:

PROBLEMA
   ↓
PARTES
   ↓
PATRONES
   ↓
INFORMACIÓN RELEVANTE
   ↓
SOLUCIÓN
   ↓
ALGORITMO
UAS - Lógica de Programación y Pensamiento Computacional

9

Resolver problemas en forma algorítmica

UAS - Lógica de Programación y Pensamiento Computacional

Ejemplo integrador

¿Aprueba el estudiante?

Situación

Queremos determinar automáticamente si una persona aprueba una asignatura.

Situación

Tenemos una calificación final.

Objetivo

Determinar el resultado.

Regla

Se aprueba con 6 o más.

Salida

Aprobado / No aprobado.

UAS - Lógica de Programación y Pensamiento Computacional

Construimos la solución

Primero preguntamos:

¿Qué información necesitamos?

La calificación.

¿Qué regla debemos aplicar?

Compararla con el criterio de aprobación.

¿Qué resultado necesitamos?

Aprobado o No aprobado.

UAS - Lógica de Programación y Pensamiento Computacional

El algoritmo en lenguaje natural

1. Obtener la calificación final.
2. Comparar la calificación con el criterio de aprobación.
3. Si cumple el criterio, indicar "Aprobado".
4. Si no lo cumple, indicar "No aprobado".

Observa que todavía no hemos escrito código.

UAS - Lógica de Programación y Pensamiento Computacional

¿Qué ocurrió?

PROBLEMA
   ↓
¿Qué queremos resolver?
   ↓
MODELO
   ↓
¿Qué información importa?
   ↓
SOLUCIÓN
   ↓
¿Qué estrategia utilizamos?
   ↓
ALGORITMO
   ↓
¿Cómo expresamos los pasos?

Esta cadena es una de las ideas centrales de la unidad.

UAS - Lógica de Programación y Pensamiento Computacional

Otro ejemplo: par o impar

Problema

Determinar si un número es par o impar.

Solución

Un número entero es par cuando al dividirlo entre 2 el residuo es cero.

Algoritmo

1. Obtener un número.
2. Dividirlo entre 2.
3. Obtener el residuo.
4. Si el residuo es cero, indicar "Par".
5. Si el residuo no es cero, indicar "Impar".
UAS - Lógica de Programación y Pensamiento Computacional

Comprobar antes de implementar

Una solución no debería aceptarse simplemente porque "parece correcta".

Podemos probarla con ejemplos.

8

Residuo 0 → Par

7

Residuo 1 → Impar

0

Residuo 0 → Par

En esta unidad utilizamos ejemplos para comprobar una solución algorítmica. La metodología formal de pruebas y depuración se estudiará posteriormente.

UAS - Lógica de Programación y Pensamiento Computacional

Los casos límite

Los ejemplos también deben ayudarnos a pensar en situaciones que podrían revelar un error.

Para el problema de aprobación:

5 → No aprobado
6 → ¿?
7 → Aprobado

El valor 6 es importante porque está exactamente en el límite establecido.

UAS - Lógica de Programación y Pensamiento Computacional

Actividad de cierre

Elige un problema lógico sencillo.

1. Compréndelo

Identifica situación, objetivo, datos y restricciones.

2. Abstráelo

Decide qué información es relevante.

3. Diseña una solución

Explica la estrategia.

4. Construye el algoritmo

Escribe los pasos en lenguaje natural.

5. Represéntalo

Utiliza pseudocódigo o diagrama de flujo.

6. Compruébalo

Utiliza al menos dos situaciones de entrada.

UAS - Lógica de Programación y Pensamiento Computacional

10

La idea que debes llevarte

UAS - Lógica de Programación y Pensamiento Computacional

Programar no comienza con código

Y continúa:

PROBLEMA
   ↓
COMPRENSIÓN
   ↓
ABSTRACCIÓN
   ↓
MODELO
   ↓
SOLUCIÓN
   ↓
ALGORITMO
   ↓
REPRESENTACIÓN
   ↓
IMPLEMENTACIÓN
   ↓
PROGRAMA
   ↓
EJECUCIÓN
UAS - Lógica de Programación y Pensamiento Computacional

En una sola frase

UAS - Lógica de Programación y Pensamiento Computacional

Lo que ahora puedes explicar

Al terminar la unidad deberías poder responder:

¿Qué es un problema?

Una situación que puede analizarse para alcanzar un objetivo bajo determinadas condiciones.

¿Qué es un algoritmo?

Un procedimiento ordenado, definido y finito para obtener una solución.

¿Qué es un programa?

Una implementación de una solución expresada en un lenguaje de programación.

¿Qué es abstracción?

Seleccionar lo relevante para construir un modelo útil del problema.

UAS - Lógica de Programación y Pensamiento Computacional

Y también deberías poder hacerlo

Problema
   ↓
Analizar
   ↓
Abstraer
   ↓
Diseñar solución
   ↓
Escribir algoritmo
   ↓
Representarlo
   ↓
Comprobarlo
UAS - Lógica de Programación y Pensamiento Computacional

Lo que sigue

En la siguiente unidad comenzaremos a trabajar con elementos que permiten construir algoritmos de manera más precisa:

Datos

Cómo representamos información.

Variables

Cómo almacenamos valores.

Operadores

Cómo construimos expresiones.

Expresiones

Cómo combinamos elementos para producir resultados.

Primero aprendimos a pensar una solución. Ahora comenzaremos a trabajar con los elementos que necesitamos para expresarla con mayor precisión.

UAS - Lógica de Programación y Pensamiento Computacional

Referencias

UAS - Lógica de Programación y Pensamiento Computacional

Bibliografía principal

Joyanes Aguilar, L. (2020).

Fundamentos de programación: algoritmos, estructuras de datos y objetos (5.ª ed.).

McGraw-Hill Interamericana.

Uso en U1: conceptos de programación, computadoras, algoritmos, lenguajes, abstracción y resolución de problemas.

UAS - Lógica de Programación y Pensamiento Computacional

Cairo Battistutti, O. (2015).

Metodología de la programación: algoritmos, diagramas de flujo y programas (3.ª ed.).

Computec.

Uso en U1: algoritmos, representación, pseudocódigo y diagramas de flujo.

Levine Gutiérrez, G. (1994).

Introducción a la computación y a la programación estructurada (2.ª ed.).

McGraw-Hill.

Uso en U1: fundamentos de computación y programación.

UAS - Lógica de Programación y Pensamiento Computacional

Kernighan, B. W., & Ritchie, D. M. (1991).

El lenguaje de programación C (2.ª ed.).

Prentice-Hall Hispanoamericana.

Uso en U1: contexto de lenguajes y programas.

UAS - Lógica de Programación y Pensamiento Computacional

Referencias académicas complementarias

Wirth, N. (1976).

Algorithms + Data Structures = Programs.

Prentice-Hall.

UAS - Lógica de Programación y Pensamiento Computacional

Knuth, D. E. (1997).

The Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd ed.).

Addison-Wesley.

Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022).

Introduction to Algorithms (4th ed.).

The MIT Press.

UAS - Lógica de Programación y Pensamiento Computacional

Wing, J. M. (2006).

Computational Thinking.

Communications of the ACM, 49(3), 33–35.

https://doi.org/10.1145/1118178.1118215

Las referencias de Wirth, Knuth y Cormen se utilizan como fuentes complementarias de profundización. No sustituyen la bibliografía oficial de la asignatura.

UAS - Lógica de Programación y Pensamiento Computacional

Fuentes históricas y recursos

Computer History Museum.

Material histórico sobre Ada Lovelace y la Máquina Analítica.

ACM.

Información histórica sobre Dennis Ritchie y Ken Thompson.

Scratch Foundation.

Scratch. Recurso opcional de programación visual.

Las fuentes digitales se utilizan para contextualización histórica o apoyo didáctico. No sustituyen la bibliografía académica principal.

UAS - Lógica de Programación y Pensamiento Computacional

Para profundizar

Para recordar

No necesitas comenzar por el código.

Empieza por el problema.

Compréndelo.

Abstráelo.

Diseña una solución.

Exprésala como algoritmo.

Comprueba que funciona.

Después, prográmala.

UAS - Lógica de Programación y Pensamiento Computacional

estado: versión 2.0, producción académica fuente curricular: programa oficial de Lógica de Programación y Pensamiento Computacional, clave 22101 fuentes de contenido: - unidad01_materiales_referencias.md - RUTA_LECTURAS_UNIDAD01.md - CONTEXTO_UNIDAD.md - PLANEACION_UNIDAD.md criterios V2: - El programa oficial de la UAS es la fuente de verdad curricular. - Se conserva exclusivamente el contenido oficial de la Unidad I. - El pensamiento computacional funciona como marco pedagógico de apoyo, no como contenido curricular adicional. - La cadena conceptual central es: PROBLEMA → SOLUCIÓN → ALGORITMO → REPRESENTACIÓN → IMPLEMENTACIÓN → PROGRAMA. - Las representaciones trabajadas en U1 son: lenguaje natural, pseudocódigo y diagrama de flujo. - Pseudocódigo y diagrama de flujo se introducen a nivel conceptual e introductorio; la metodología formal de resolución de problemas se desarrolla posteriormente en Unidad III. - OmegaUp, DFD y otras herramientas del programa oficial no forman parte de la secuencia didáctica de esta versión. - Scratch se conserva únicamente como recurso opcional para observar la transición algoritmo → implementación visual. - No se desarrollan formalmente variables, tipos, operadores, estructuras de control, funciones ni estructuras de datos. - No se desarrolla metodología formal de pruebas de software. - La comprobación de algoritmos se realiza mediante ejemplos y situaciones de entrada sencillas. - Las definiciones de autores externos son paráfrasis, no citas textuales, salvo cuando se indique expresamente lo contrario. - Las afirmaciones históricas se mantienen solo cuando pueden respaldarse con fuentes confiables.