Saltar al contenido

Desarrollo Creativo

AP Principios de Ciencias de la Computación · Tema 1

Entrenar
Lección de video para este tema Abrir la página de video
6:15

Desarrollo creativo

Aquí hay un programa que debería imprimir el promedio de dos números. Ejecuta. No falla. Imprime una respuesta —y la respuesta es incorrecta. Dale cuatro y seis…

Narración en inglés · Subtítulos en inglés + 中文 quemados en pantalla

1.1

Colaboración

Syllabus

Comprensión duradera (CRD-1): La incorporación de múltiples perspectivas a través de la colaboración mejora las innovaciones computacionales a medida que se desarrollan.

Objetivo de aprendizaje CRD-1.A: Explicar cómo las innovaciones computacionales se mejoran mediante la colaboración. [Habilidad 1.C]

  • CRD-1.A.1 Una innovación computacional incluye un programa como parte integral de su función.
  • CRD-1.A.2 Una innovación computacional puede ser física (p. ej., un automóvil autónomo), software computacional no físico (p. ej., software de edición de imágenes) o un concepto computacional no físico (p. ej., comercio electrónico).
  • CRD-1.A.3 La colaboración efectiva produce una innovación computacional que refleja la diversidad de talentos y perspectivas de quienes la diseñaron.
  • CRD-1.A.4 La colaboración que incluye diversas perspectivas ayuda a evitar sesgos en el desarrollo de innovaciones computacionales.
  • CRD-1.A.5 La consulta y la comunicación con los usuarios son aspectos importantes del desarrollo de innovaciones computacionales.
  • CRD-1.A.6 La información recopilada de posibles usuarios puede utilizarse para comprender el propósito de un programa desde diversas perspectivas y para desarrollar un programa que incorpore plenamente estas perspectivas.

Objetivo de aprendizaje CRD-1.B: Explicar cómo las innovaciones computacionales son desarrolladas por grupos de personas. [Habilidad 1.C]

  • CRD-1.B.1 Las herramientas en línea apoyan la colaboración al permitir que los programadores compartan e intercambien retroalimentación sobre ideas y documentos.
  • CRD-1.B.2 Modelos comunes como la programación en parejas existen para facilitar la colaboración.

Objetivo de aprendizaje CRD-1.C: Demostrar habilidades interpersonales efectivas durante la colaboración. [Habilidad 1.C]

  • CRD-1.C.1 Los equipos colaborativos efectivos practican habilidades interpersonales, incluidas, entre otras:
    • comunicación
    • construcción de consensos
    • resolución de conflictos
    • negociación

Fuente: College Board AP Course and Exam Description

Un rompecabezas en progreso: la colaboración y el diseño modular unen las piezas para formar la solución
Un rompecabezas en progreso: la colaboración y el diseño modular unen las piezas para formar la solución

La informática es una actividad colaborativa. Trabajar en equipo aporta más perspectivas, detecta más errores y produce mejores programas que trabajar solo. Una buena colaboración utiliza la construcción de consensos, la comunicación clara y las fortalezas de cada miembro. La programación en parejas – dos personas en un mismo ordenador, una escribiendo código y otra revisándolo – es una práctica habitual. En el examen, debes ser capaz de explicar cómo la colaboración mejoró un programa (más ideas, menos fallos, pruebas más amplias).

1.2

Función y propósito del programa

Syllabus

Comprensión duradera (CRD-2): Los desarrolladores crean e innovan mediante un proceso de diseño iterativo centrado en el usuario, que incorpora ciclos de implementación y retroalimentación, y que deja amplio margen para la experimentación y la asunción de riesgos.

Objetivo de aprendizaje CRD-2.A: Describir el propósito de una innovación computacional. [Habilidad 1.A]

  • CRD-2.A.1 El propósito de las innovaciones computacionales es resolver problemas o perseguir intereses a través de la expresión creativa.
  • CRD-2.A.2 La comprensión del propósito de una innovación computacional proporciona a los desarrolladores una mayor capacidad para crear dicha innovación.

Objetivo de aprendizaje CRD-2.B: Explicar cómo funciona un programa o un segmento de código. [Habilidad 4.A]

  • CRD-2.B.1 Un programa es un conjunto de instrucciones de programa que realiza una tarea específica cuando es ejecutado por una computadora. A menudo se hace referencia a un programa como software.
  • CRD-2.B.2 Un segmento de código es un conjunto de instrucciones de programa que forma parte de un programa.
  • CRD-2.B.3 Un programa debe funcionar correctamente ante una variedad de entradas y situaciones.
  • CRD-2.B.4 El comportamiento de un programa es la manera en que opera durante su ejecución y suele describirse según la interacción del usuario con él.
  • CRD-2.B.5 Un programa puede describirse de forma general indicando lo que hace, o con más detalle especificando tanto lo que hace el programa como cómo las instrucciones logran esa función.

Objetivo de aprendizaje CRD-2.C: Identificar la(s) entrada(s) de un programa. [Habilidad 3.A]

  • CRD-2.C.1 Las entradas del programa son datos enviados a una computadora para ser procesados por un programa. La entrada puede presentarse en diversas formas, como táctil, auditiva, visual o textual.
  • CRD-2.C.2 Un evento está asociado a una acción y suministra datos de entrada a un programa.
  • CRD-2.C.3 Los eventos pueden generarse al presionar una tecla, hacer clic con el mouse, iniciar un programa u ocurrir cualquier otra acción definida que afecte el flujo de ejecución.
  • CRD-2.C.4 Las entradas suelen afectar la salida producida por un programa.
  • CRD-2.C.5 En la programación basada en eventos, las instrucciones del programa se ejecutan cuando son activadas, en lugar de hacerlo mediante un flujo de control secuencial.
  • CRD-2.C.6 La entrada puede provenir de un usuario o de otros programas.

Objetivo de aprendizaje CRD-2.D: Identificar la(s) salida(s) producidas por un programa. [Habilidad 3.A]

  • CRD-2.D.1 Las salidas del programa son todos los datos enviados desde un programa a un dispositivo. La salida del programa puede presentarse en diversas formas, como táctil, auditiva, visual o textual.
  • CRD-2.D.2 La salida del programa generalmente se basa en la entrada del programa o en su estado previo (p. ej., valores internos).

Fuente: College Board AP Course and Exam Description

Cada programa se escribe con un propósito: resuelve un problema o persigue un interés. Un programa toma entrada, la procesa y produce salida. Las entradas pueden provenir de un usuario, un dispositivo, un archivo u otro programa; las salidas pueden ser visuales, auditivas, textuales o señales enviadas a un dispositivo. Ser capaz de enunciar el propósito de un programa y describir claramente sus entradas y salidas es una habilidad fundamental (y parte de la tarea de rendimiento Create).

Cada programa se descompone en entrada, procesamiento y salida
Cada programa se descompone en entrada, procesamiento y salida
Cada programa sigue el modelo de entrada-procesamiento-salida
Cada programa sigue el modelo de entrada-procesamiento-salida
Explorar

Explorar el modelo entrada → procesamiento → salida

Recorrer el modelo IPO. Todo programa toma una entrada, realiza un procesamiento siguiendo sus instrucciones y luego produce una salida: rastrear un ejemplo de aplicación meteorológica a lo largo del proceso.

1.3

Diseño y desarrollo de programas

Syllabus

Comprensión perdurable (CRD-2): Los desarrolladores crean e innovan mediante un proceso de diseño iterativo centrado en el usuario, que incorpora ciclos de implementación y retroalimentación, y que deja amplio margen para la experimentación y la asunción de riesgos.

Objetivo de aprendizaje CRD-2.E: Desarrollar un programa utilizando un proceso de desarrollo. [Habilidad 1.B]

  • CRD-2.E.1 Un proceso de desarrollo puede ser ordenado e intencional, o tener una naturaleza exploratoria.
  • CRD-2.E.2 Existen múltiples procesos de desarrollo. Las siguientes fases se utilizan comúnmente al desarrollar un programa:
    • investigación y reflexión
    • diseño
    • prototipado
    • prueba
  • CRD-2.E.3 Un proceso de desarrollo iterativo requiere refinamiento y revisión basados en la retroalimentación, las pruebas o la reflexión a lo largo del proceso. Esto puede implicar volver a fases anteriores del proceso.
  • CRD-2.E.4 Un proceso de desarrollo incremental es aquel que divide el problema en partes más pequeñas y asegura que cada parte funcione correctamente antes de integrarla al conjunto completo.

Objetivo de aprendizaje CRD-2.F: Diseñar un programa y su interfaz de usuario. [Habilidad 1.B]

  • CRD-2.F.1 El diseño de un programa incluye la investigación para determinar sus requisitos.
  • CRD-2.F.2 La investigación en un proceso de desarrollo es útil para comprender e identificar las restricciones del programa, así como las preocupaciones e intereses de las personas que lo utilizarán.
  • CRD-2.F.3 Algunas formas en que se puede realizar la investigación son las siguientes:
    • recopilación de datos mediante encuestas
    • pruebas con usuarios
    • entrevistas
    • observaciones directas
  • CRD-2.F.4 Los requisitos de un programa describen cómo funciona y pueden incluir una descripción de las interacciones con el usuario que el programa debe proporcionar.
  • CRD-2.F.5 La especificación de un programa define los requisitos del mismo.
  • CRD-2.F.6 En un proceso de desarrollo, la fase de diseño describe cómo lograr la especificación dada del programa.
  • CRD-2.F.7 La fase de diseño de un programa puede incluir:
    • lluvia de ideas
    • planificación y guion gráfico
    • organización del programa en módulos y componentes funcionales
    • creación de diagramas que representen los diseños de la interfaz de usuario
    • desarrollo de una estrategia de pruebas para el programa

Objetivo de aprendizaje CRD-2.G: Describir el propósito de un segmento de código o de un programa escribiendo documentación. [Habilidad 4.A]

  • CRD-2.G.1 La documentación del programa es una descripción escrita de la función de un segmento de código, evento, procedimiento o programa y de cómo fue desarrollado.
  • CRD-2.G.2 Los comentarios son una forma de documentación del programa escrita dentro del mismo para ser leída por personas y no afectan el funcionamiento del programa.
  • CRD-2.G.3 Los programadores deben documentar un programa a lo largo de su desarrollo.
  • CRD-2.G.4 La documentación del programa ayuda a desarrollar y mantener programas correctos cuando se trabaja individualmente o en entornos de programación colaborativa.
  • CRD-2.G.5 No todos los entornos de programación admiten comentarios, por lo que pueden requerirse otros métodos de documentación.

Objetivo de aprendizaje CRD-2.H: Reconocer segmentos de código utilizados de otras fuentes. [Habilidad 1.C]

  • CRD-2.H.1 Es importante reconocer cualquier segmento de código que haya sido desarrollado de manera colaborativa o por otra fuente.
  • CRD-2.H.2 El reconocimiento de un segmento de código escrito por otra persona y utilizado en un programa puede realizarse en la documentación del programa. Dicho reconocimiento debe incluir el origen o el nombre del autor original.

Fuente: College Board AP Course and Exam Description

Un programador depurando en una estación de trabajo con múltiples monitores — diseño e prueba iterativos
Un programador depurando en una estación de trabajo con múltiples monitores — diseño e prueba iterativos

Los programas se construyen mediante un proceso iterativo, no en línea recta: investigar el problema y los usuarios, diseñar (a menudo con un diagrama o plan escrito), implementar en código y probar – luego repetir. Un problema grande se divide en partes más pequeñas (descomposición). Los comentarios y los nombres claros documentan el diseño para que otros (y tu yo futuro) puedan entenderlo. El desarrollo es incremental: construir y probar una pequeña pieza, luego añadir la siguiente.

Las etapas del desarrollo de programas, donde la prueba retroalimenta para corregir y refinar
Las etapas del desarrollo de programas, donde la prueba retroalimenta para corregir y refinar
El software se construye mediante un proceso de desarrollo iterativo e incremental
El software se construye mediante un proceso de desarrollo iterativo e incremental

Investigar qué necesitan realmente los usuarios

Antes de escribir cualquier código, el desarrollador investiga el problema y las personas que usarán el programa. Tres formas de hacerlo:

  • encuestas enviadas a posibles usuarios, que recopilan datos de muchas personas rápidamente;
  • entrevistas y observación directa de los usuarios realizando la tarea manualmente;
  • estudio de soluciones existentes para ver qué funciona ya y qué frustra a la gente.

Los hallazgos se convierten en un diseño. Dos artefactos lo logran: una lista de requisitos del programa que dice exactamente qué debe hacer el programa, y diagramas que representan la interfaz de usuario – bocetos que muestran qué controles aparecen dónde y qué hace cada uno al usarse. Diseñar la interfaz en papel primero es más barato que descubrir tras la codificación que los botones están en el lugar equivocado.

Eventos y programas que esperan

No todos los programas se ejecutan directamente de arriba hacia abajo. Un evento se genera cuando se presiona una tecla, se hace clic con el ratón, se inicia un programa u ocurre cualquier otra acción definida, y un evento cambia el flujo de ejecución: el programa pausa lo que estaba haciendo y ejecuta el código asociado a ese evento, llamado manejador de eventos.

Por eso un programa con interfaz gráfica puede parecer que no está haciendo nada: está esperando el próximo evento. El orden en que llegan esos eventos lo decide el usuario, no el programador, por lo que el mismo programa puede ejecutar sus bloques en un orden diferente cada vez que se usa.

Explorar

Recorrer el proceso de desarrollo iterativo

El desarrollo es iterativo: repites las etapas, mejorando el programa un poco en cada pasada. Recorre el ciclo y observa que vuelve al inicio en lugar de terminar después de una sola ejecución.

Vocabulario Entrenar
Inglés Chino Pinyin
collaborative/kəˈlæbrətɪv/ 协作 xié zuò
Pair programming/peə ˈprəʊɡræmɪŋ/ 结对编程 jié duì biān chéng
input/ˈɪnpʊt/ 输入 shū rù
output/ˈaʊtpʊt/ 输出 shū chū
iterative/ˈɪtərətɪv/ 迭代 dié dài
decomposition/ˌdiːkɒmpəˈzɪʃn/ 分解 fēn jiě
Comments/ˈkɒments/ 注释 zhù shì
surveys/ˈsɜːveɪz/ 调查问卷 diào chá wèn juǎn
diagrams representing the layout of the user interface 用户界面 yòng hù jiè miàn
event/ɪˈvent/ 事件 shì jiàn
event handler/ɪˈvent ˈhændlə/ 事件处理程序 shì jiàn chǔ lǐ chéng xù
debugging/ˈdiːbʌɡɪŋ/ 调试 tiáo shì
syntax error/ˈsɪntæks ˈerə/ 语法错误 yǔ fǎ cuò wù
runtime error/ˈrʌntaɪm ˈerə/ 运行时错误 yùn xíng shí cuò wù
logic error/ˈlɒdʒɪk ˈerə/ 逻辑错误 luó jí cuò wù
1.4

Identificación y corrección de errores

Syllabus

Comprensión perdurable (CRD-2): Los desarrolladores crean e innovan mediante un proceso de diseño iterativo centrado en el usuario, que integra ciclos de implementación y retroalimentación, y que deja amplio margen para la experimentación y la asunción de riesgos.

Objetivo de aprendizaje CRD-2.I: Para los errores en un algoritmo o programa: a. Identificar el error. [Habilidad 4.C] b. Corregir el error. [Habilidad 4.C]

  • CRD-2.I.1 Un error de lógica es un fallo en el algoritmo o programa que provoca que este se comporte de manera incorrecta o inesperada.
  • CRD-2.I.2 Un error de sintaxis es un fallo en el programa donde no se cumplen las reglas del lenguaje de programación.
  • CRD-2.I.3 Un error en tiempo de ejecución es un fallo en el programa que ocurre durante la ejecución de este. Los lenguajes de programación definen sus propios errores en tiempo de ejecución.
  • CRD-2.I.4 Un error de desbordamiento es un error que ocurre cuando una computadora intenta manejar un número que está fuera del rango de valores definido.
  • CRD-2.I.5 Las siguientes son formas efectivas de encontrar y corregir errores:
    • casos de prueba
    • trazado manual
    • visualizaciones
    • depuradores
    • añadir statement(s) de salida adicionales

Objetivo de aprendizaje CRD-2.J: Identificar entradas y salidas esperadas o comportamientos correspondientes que puedan utilizarse para verificar la corrección de un algoritmo o programa. [Habilidad 4.C]

  • CRD-2.J.1 En el proceso de desarrollo, las pruebas utilizan entradas definidas para asegurar que un algoritmo o programa produce los resultados esperados. Los programadores usan los resultados de las pruebas para revisar sus algoritmos o programas.
  • CRD-2.J.2 Las entradas definidas utilizadas para probar un programa deben demostrar los diferentes resultados esperados que están en o justo más allá de los extremos (mínimo y máximo) de los datos de entrada.
  • CRD-2.J.3 Se necesitan requisitos del programa para identificar las entradas definidas apropiadas para las pruebas.

Fuente: College Board AP Course and Exam Description

Un error (bug) es un fallo en un programa; la depuración es encontrarlo y corregirlo. Tres tipos:

Una tabla de trazado registra el valor de cada variable mientras se ejecuta el programa, para encontrar errores
Una tabla de trazado registra el valor de cada variable mientras se ejecuta el programa, para encontrar errores
  • un error de sintaxis viola las reglas del lenguaje, por lo que el programa no se ejecutará;
  • un error de tiempo de ejecución provoca un fallo del programa mientras se ejecuta (p. ej., división por cero);
  • un error de lógica permite que se ejecute pero da un resultado incorrecto.

Encuentra errores mediante la prueba con diferentes entradas, añadiendo instrucciones de impresión para ver valores y rastreando el código manualmente. Elige las entradas de prueba deliberadamente: deben demostrar los diferentes resultados esperados en o justo más allá de los extremos – los valores mínimo y máximo que el programa debería aceptar, y un valor justo fuera de cada uno de ellos. Un programa que funciona bien con datos ordinarios a menudo falla con una lista vacía, un cero o un valor una posición después del final de un rango, por lo que esas son las entradas que vale la pena probar primero. Corregir un error a la vez y volver a probar es el método fiable.

Habilidad para el examen: ser capaz de nombrar el tipo de error y describir una estrategia de prueba que lo detectaría – un tema recurrente tanto en preguntas de opción múltiple como en tareas Create.

Tres tipos de error de programación: sintaxis, lógica y tiempo de ejecución
Tres tipos de error de programación: sintaxis, lógica y tiempo de ejecución

Ejemplo resuelto. Un programa diseñado para imprimir el promedio de dos números en su lugar ejecuta avg = a + b / 2. Al rastrear el orden de las operaciones, / se ejecuta antes que +, por lo que calcula $a+\tfrac{b}{2}$ en lugar del promedio. Añade paréntesis para corregirlo: avg = (a + b) / 2. La prueba con $a=4,\ b=6$ confirma la corrección – la línea con error da $4+3=7$, la línea corregida da $\tfrac{10}{2}=5$. Probar con entradas conocidas es exactamente cómo encuentras y confirmas un error de lógica.

Explorar

Rastrear la lógica del juego de adivinanzas y detectar un error lógico

Arrastra el número de prueba y observa qué rama se ejecuta. Un error lógico enviaría el mismo número por la rama incorrecta: el programa sigue funcionando, pero muestra el mensaje equivocado. El número secreto aquí es 50.

1.4

Consejos para el examen

  • Gran parte de CSP se evalúa a través de las tareas de rendimiento Create y escritas – explica tu razonamiento con claridad, no solo tu resultado.
  • Conoce los beneficios de la colaboración y cómo las perspectivas diversas reducen el sesgo en un programa.
  • Usa vocabulario preciso (desarrollo iterativo, requisitos del programa) cuando describes un proceso de diseño.
  • Ofrece y recibe comentarios de manera constructiva; atribuye mérito a los colaboradores y fuentes.
  • Divide un problema grande en módulos más pequeños que un equipo pueda construir en paralelo.

Lecciones interactivas sobre este tema

Trátalo paso a paso, con ejercicios de verificación instantánea.

Exámenes Anteriores

Más temas en AP Principios de Ciencias de la Computación

Iniciar sesión o crear cuenta

IGCSE, A-Level & AP