Aquí hay una tarea: construir un sistema para gestionar el stock de toda una tienda —cada producto, cada venta, cada entrega, cada informe. Como un problema gigante, es demasiado grande para…
English narration · English + 中文 subtitles burned in · Narración en inglés · Subtítulos en inglés + 中文 quemados en pantalla
Need for and benefits of using abstraction Describe the purpose of abstraction Produce an abstract model of a system by only including essential details
Describe and use decomposition
Break down problems into sub-problems leading to the concept of a program module (procedure / function)
Español
Los candidatos deben ser capaces de:
Notas y orientaciones
Demostrar comprensión de la abstracción
Necesidad y beneficios del uso de la abstracción. Describir el propósito de la abstracción. Producir un modelo abstracto de un sistema incluyendo únicamente los detalles esenciales.
Describir y utilizar la descomposición
Desglosar problemas en subproblemas, lo que conduce al concepto de módulo de programa (procedimiento / función).
Source: Cambridge International syllabus · Fuente: Plan de estudios Cambridge International
English
Computational thinking 计算思维 is the set of mental tools for analysing a problem and designing a solution a computer can run. Two key ones are abstraction and decomposition.
Abstraction
Abstraction 抽象 means keeping the essential features of a problem and ignoring the irrelevant detail, giving a simpler model.
Examples:
a train-network map keeps the stations and lines but drops the geography.
a class in object-oriented programming keeps only the attributes and methods the system needs.
a function hides a piece of work behind a name.
A full model of any real problem would be too big to reason about, so abstraction is essential.
The examiner asks for the purpose of abstraction and for its benefits. Purpose: to produce a simpler model of a problem that contains only the details needed to solve it. Benefits: the problem is easier to understand and to program; the program is smaller and faster to write and test; the same model can be reused for similar problems. When you are asked to produce an abstract model of a system, list only the data and actions the task needs. For a school timetable that means the classes, rooms, teachers and periods; it does not mean the colour of the rooms or the age of the teachers.
Decomposition
Decomposition 分解 means breaking a large problem into smaller sub-problems, each easier to solve and tackled one at a time.
find the main parts of the task.
break each into smaller sub-tasks.
continue until each is small enough to design directly.
solve the small tasks and combine them.
For stock control: "manage stock" → "record sales", "record deliveries", "produce reports" → ("record sales") "look up product", "decrease stock count", "save the transaction". Decomposition makes big problems manageable, lets a team divide the work, and gives modular code — each module becomes a procedure 过程 or function.
"Explain why decomposition is used" is a three-mark question with a fixed shape. Give three separate benefits: each sub-problem 子问题 is small enough to design, code and test on its own; different programmers can work on different modules 模块 at the same time; a module that already exists (or a library routine) can be reused, and a fault is easier to find because it lies inside one module. A structure chart (topic 12) is the diagram of a decomposition: the program at the top, its modules beneath, and the data passed between them.
Español
El pensamiento computacional 计算思维 es el conjunto de herramientas mentales para analizar un problema y diseñar una solución que un ordenador pueda ejecutar. Dos conceptos clave son la abstracción y la descomposición.
El pensamiento computacional divide un problema grande en partes más pequeñas y fáciles — como resolver un rompecabezas
Abstracción
La abstracción 抽象 significa mantener las características esenciales de un problema e ignorar los detalles irrelevantes, creando así un modelo más simple.
Ejemplos:
un mapa de una red ferroviaria mantiene las estaciones y líneas, pero omite la geografía real.
una clase en programación orientada a objetos conserva solo los atributos y métodos que el sistema necesita.
una función oculta una parte del trabajo tras un nombre.
Un modelo completo de cualquier problema real sería demasiado complejo para analizar, por lo que la abstracción es esencial.
Al examinador le piden el propósito de la abstracción y sus beneficios. Propósito: producir un modelo más simple de un problema que contenga únicamente los detalles necesarios para resolverlo. Beneficios: el problema es más fácil de entender y programar; el programa es más pequeño, se escribe y prueba más rápido; el mismo modelo puede reutilizarse para problemas similares. Cuando se te pide crear un modelo abstracto de un sistema, enumera solo los datos y acciones que la tarea requiere. Para un horario escolar, esto significa clases, aulas, profesores y periodos; no significa el color de las aulas ni la edad de los profesores.
La abstracción mantiene lo esencial (estaciones y líneas) y elimina los detalles irrelevantes (la geografía)
Descomposición
La descomposición 分解 significa dividir un problema grande en subproblemas más pequeños, cada uno más fácil de resolver y abordado uno a la vez.
encontrar las partes principales de la tarea.
dividir cada parte en subtareas más pequeñas.
continuar hasta que cada una sea lo suficientemente pequeña para diseñarla directamente.
resolver las tareas pequeñas y combinarlas.
Para el control de stock: "gestionar stock" → "registrar ventas", "registrar entregas", "producir informes" → ("registrar ventas") "consultar producto", "disminuir contador de stock", "guardar transacción". La descomposición hace manejables los problemas grandes, permite que un equipo divida el trabajo y proporciona código modular — cada módulo se convierte en una procedimiento 过程 o función.
"Plicar por qué se usa la descomposición" es una pregunta de tres puntos con una estructura fija. Da tres beneficios separados: cada subproblema 子问题是 lo suficientemente pequeño para diseñar, codificar y probar por sí mismo; diferentes programadores pueden trabajar en diferentes módulos 模块 al mismo tiempo; un módulo que ya existe (o una rutina de biblioteca) puede reutilizarse, y un fallo es más fácil de localizar porque está contenido dentro de un solo módulo. Un diagrama estructural (tema 12) es el diagrama de una descomposición: el programa en la parte superior, sus módulos debajo, y los datos que se pasan entre ellos.
Descomponer un programa en módulos y submódulos
Explore · Explorar
Resolver un problema a la manera computacional
Recorra los cuatro pilares en el orden en que los usaría: descomponga el problema, identifique lo que se repite, simplifíquelo a lo esencial y luego escriba los pasos.
Show understanding that an algorithm is a solution to a problem expressed as a sequence of defined steps
Use suitable identifier names for the representation of data used by a problem and represent these using an identifier table
Write pseudocode that contains input, process and output
Write pseudocode using the three basic constructs of sequence, selection and iteration (repetition)
Document a simple algorithm using a structured English description, a flowchart or pseudocode
Write pseudocode from: • a structured English description • a flowchart
Draw a flowchart from: • a structured English description • pseudocode
Describe and use the process of stepwise refinement to express an algorithm to a level of detail from which the task may be programmed
Use logic statements to define parts of an algorithm solution
Español
Los candidatos deben ser capaces de:
Notas y orientación
Demostrar comprensión de que un algoritmo es una solución a un problema expresada como una secuencia de pasos definidos
Utilizar nombres de identificadores adecuados para la representación de datos utilizados por un problema y representarlos mediante una tabla de identificadores
Escribir pseudocódigo que contenga entrada, proceso y salida
Escribir pseudocódigo utilizando las tres construcciones básicas de secuencia, selección e iteración (repetición)
Documentar un algoritmo simple mediante una descripción en inglés estructurado, un diagrama de flujo o pseudocódigo
Escribir pseudocódigo a partir de: • una descripción en inglés estructurado • un diagrama de flujo
Dibujar un diagrama de flujo a partir de: • una descripción en inglés estructurado • pseudocódigo
Describir y utilizar el proceso de refinamiento progresivo para expresar un algoritmo hasta un nivel de detalle desde el cual la tarea pueda ser programada
Utilizar sentencias lógicas para definir partes de una solución algorítmica
Source: Cambridge International syllabus · Fuente: Plan de estudios Cambridge International
English
Bubble sort, pass by pass
An algorithm 算法 is a solution expressed as a sequence of defined steps. Each step is unambiguous 无歧义 (one meaning), deterministic 确定性 (same input → same output), finite (the steps end), and effective (each can be done). An algorithm says what to do, independent of the programming language used to implement it.
Español
Ordenamiento burbuja, paso a paso
Un algoritmo 算法 es una solución expresada como una secuencia de pasos definidos. Cada paso es sin ambigüedad 无歧义 (un significado), determinista 确定性 (misma entrada → misma salida), finito (los pasos terminan) y efectivo (cada uno puede ejecutarse). Un algoritmo dice qué hacer, independientemente del lenguaje de programación utilizado para implementarlo.
Explore · Explorar
Selección: seguir las ramas IF / ELSE
Arrastra la puntuación y observa qué rama se ejecuta. La selección prueba cada condición a su vez y toma la PRIMERA que sea verdadera; así es como funciona IF … ELSE IF … ELSE.
When you start an algorithm, list every piece of data in an identifier table 标识符表 — its identifier 标识符 (the variable 变量 name), data type 数据类型, and description. The exam's table has exactly these three columns:
Identifier
Data type
Description
Category
STRING
the product category
SaleDate
DATE
when the item was sold
ItemCost
REAL
cost of the item
InStock
BOOLEAN
TRUE if in stock
Sales
ARRAY[1:30] OF REAL
the last 30 daily sales totals
Use descriptive names (ItemCost, not x): an identifier starts with a letter, contains no spaces, and is written the same way every time it appears. Common types are INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE, plus arrays. The table forces you to name every piece of data before writing code, and a "complete the identifier table" question gives one mark for each correct data type or description, so write the type exactly as the pseudocode guide does.
Español
Cuando inicias un algoritmo, lista cada pieza de datos en una tabla de identificadores 标识符表 — su identificador 标识符 (el nombre de la variable 变量), tipo de dato 数据类型 y descripción. La tabla del examen tiene exactamente estas tres columnas:
Identificador
Tipo de dato
Descripción
Category
STRING
categoría del producto
SaleDate
DATE
cuándo se vendió el artículo
ItemCost
REAL
costo del artículo
InStock
BOOLEAN
TRUE si está en stock
Sales
ARRAY[1:30] OF REAL
los totales diarios de ventas de los últimos 30 días
Usa nombres descriptivos (ItemCost, no x): un identificador comienza con una letra, no contiene espacios y se escribe de la misma manera cada vez que aparece. Los tipos comunes son INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE, además de arreglos. La tabla te obliga a nombrar cada pieza de datos antes de escribir código, y una pregunta de "completar la tabla de identificadores" otorga un punto por cada tipo de dato o descripción correcta, así que escribe el tipo exactamente como lo hace la guía de pseudocódigo.
Una tabla de identificadores nombra cada pieza de datos antes de escribir código
Pseudocode — the three basic constructs · Pseudocódigo — las tres construcciones básicas
English
Pseudocode 伪代码 is a structured, language-neutral way to describe algorithms.
1. Sequence
Steps run one after another (sequence 顺序):
2. Selection
A choice of which steps run, based on a condition (selection 选择):
For more options, use CASE OF ... ENDCASE.
3. Iteration
Repeating a block (iteration 迭代, a loop 循环):
A WHILE loop tests the condition before each pass (may run zero times); a REPEAT...UNTIL loop tests after each pass (always runs at least once).
Choosing the loop is itself a mark: FOR when you know how many times (a count-controlled loop 计数循环); WHILE when the loop might not run at all (a pre-condition loop 前测循环); REPEAT ... UNTIL when it must run at least once, as in validating an input (a post-condition loop 后测循环). A "describe the iteration construct" answer names the construct, says where the condition is tested, and gives the consequence (zero times or at least once).
Common operations
assignment 赋值: x ← 5 (an arrow; = is for comparison).
RAND(100) gives a real number from 0 up to (but not including) 100. INT(RAND(100)) + 1 gives an integer from 1 to 100.
Two habits earn marks on every question: declare every variable you use, with the type from your identifier table, and initialise 初始化 every counter 计数器 and total (Count ← 0, Total ← 0) before the loop that changes it.
Input → Process → Output
Every program follows this shape:
Listing the inputs and outputs first makes the algorithm cleaner.
Worked example. Write pseudocode that inputs 100 integers and outputs how many of them, and the total of those, that lie between 10 and 20 inclusive.
Identifier table: Count : INTEGER (loop counter), Value : INTEGER (the integer just input), InRange : INTEGER (how many were in range), Total : INTEGER (their sum).
If the question then asks you to "identify two constructs and state how each is used", answer in the same shape: iteration, the FOR loop, repeats the input 100 times; selection, the IF statement, adds a value only when it is in range.
Worked example. A program picks a secret integer from 1 to 100. The user guesses until they are right; after each wrong guess the program says "Too low" or "Too high", and at the end it outputs how many guesses were made.
Identifier table: Secret : INTEGER (the number to guess), Guess : INTEGER (the user's input), Tries : INTEGER (how many guesses so far).
A REPEAT ... UNTIL loop is the right choice because the user must guess at least once. The marks are for: the random number in the right range, a loop that ends on a correct guess, the counter that starts at zero and increases inside the loop, the two messages under the right conditions, and the final output.
Worked example. Output two different random integers, each between $-10$ and $10$ inclusive.
There are 21 possible values, so INT(RAND(21)) gives 0 to 20 and subtracting 10 shifts it to the range $-10$ to $10$. The second number must be generated again until it differs from the first:
Español
El pseudocódigo 伪代码 es una forma estructurada y neutral al lenguaje para describir algoritmos.
Los tres bloques constructores de cualquier algoritmo: secuencia, selección e iteración
1. Secuencia
Los pasos se ejecutan uno después de otro (secuencia 顺序):
INPUT Name
INPUT Age
OUTPUT "Hello", Name
2. Selección
Una elección de qué pasos ejecutar, basada en una condición (selección 选择):
IF Age >= 18 THEN
OUTPUT "Adult"
ELSE
OUTPUT "Minor"
ENDIF
Para más opciones, usa CASE OF ... ENDCASE.
3. Iteración
Repetir un bloque (iteración 迭代, un bucle 循环):
FOR i ← 1 TO 10
OUTPUT i
NEXT i
Un bucle MIENTRAS verifica la condición antes de cada pasada (puede ejecutarse cero veces); un bucle REPETIR...HASTA verifica después de cada pasada (siempre se ejecuta al menos una vez).
WHILE Total < 100 DO
INPUT Value
Total ← Total + Value
ENDWHILE
REPEAT
INPUT Mark
UNTIL Mark >= 0 AND Mark <= 100
Un bucle MIENTRAS verifica antes de que se ejecute el cuerpo; un bucle REPETIR ... HASTA verifica después, por lo que su cuerpo siempre se ejecuta al menos una vez
Elegir el bucle es en sí mismo un punto: FOR cuando sabes cuántas veces (un bucle controlado por contador 计数循环); WHILE cuando el bucle podría no ejecutarse en absoluto (un bucle de precondición 前测循环); REPEAT ... UNTIL cuando debe ejecutarse al menos una vez, como en la validación de una entrada (un bucle de poscondición 后测循环). Una respuesta que "describe la construcción de iteración" nombra la construcción, dice dónde se verifica la condición y da la consecuencia (cero veces o al menos una vez).
Operaciones comunes
asignación 赋值: x ← 5 (una flecha; = es para comparación).
RAND(100) da un número real desde 0 hasta (pero sin incluir) 100. INT(RAND(100)) + 1 da un entero de 1 a 100.
Dos hábitos ganan puntos en cada pregunta: declarar todas las variables que uses, con el tipo de tu tabla de identificadores, e inicializar 初始化 todo contador 计数器 y total (Count ← 0, Total ← 0) antes del bucle que lo cambia.
Entrada → Proceso → Salida
Todo programa sigue esta forma:
INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT "Area = ", Area
Listar las entradas y salidas primero hace que el algoritmo sea más limpio.
Ejemplo resuelto. Escribe pseudocódigo que introduzca 100 enteros y devuelva cuántos de ellos y la suma de aquellos que están entre 10 y 20 inclusive.
Tabla de identificadores: Count : INTEGER (contador de bucle), Value : INTEGER (el entero acaba de ser introducido), InRange : INTEGER (cuántos estaban en rango), Total : INTEGER (su suma).
DECLARE Count, Value, InRange, Total : INTEGER
InRange ← 0
Total ← 0
FOR Count ← 1 TO 100
INPUT Value
IF Value >= 10 AND Value <= 20 THEN
InRange ← InRange + 1
Total ← Total + Value
ENDIF
NEXT Count
OUTPUT InRange, Total
Si la pregunta luego te pide "identificar dos construcciones y stating cómo se usa cada una", responde con la misma estructura: iteración, el bucle FOR, repite la entrada 100 veces; selección, la instrucción IF, añade un valor solo cuando está en rango.
Ejemplo resuelto. Un programa elige un entero secreto de 1 a 100. El usuario adivina hasta acertar; después de cada intento incorrecto el programa dice "Demasiado bajo" o "Demasiado alto", y al final devuelve cuántos intentos se hicieron.
Tabla de identificadores: Secret : INTEGER (el número a adivinar), Guess : INTEGER (la entrada del usuario), Tries : INTEGER (cuántos intentos ha habido hasta ahora).
DECLARE Secret, Guess, Tries : INTEGER
Secret ← INT(RAND(100)) + 1
Tries ← 0
REPEAT
INPUT Guess
Tries ← Tries + 1
IF Guess < Secret THEN
OUTPUT "Too low"
ELSE
IF Guess > Secret THEN
OUTPUT "Too high"
ENDIF
ENDIF
UNTIL Guess = Secret
OUTPUT "You took ", Tries, " guesses"
Un bucle REPEAT ... UNTIL es la opción correcta porque el usuario debe adivinar al menos una vez. Los puntos son para: el número aleatorio en el rango correcto, un bucle que termina con un acierto, el contador que empieza en cero y aumenta dentro del bucle, los dos mensajes bajo las condiciones correctas, y la salida final.
El mismo juego de adivinanza como diagrama de flujo: los dos rombos de decisión son las dos instrucciones SI, y la flecha de retorno es el bucle REPETIR ... HASTA
Ejemplo resuelto. Devuelve dos enteros aleatorios diferentes, cada uno entre $-10$ y $10$ inclusive.
Hay 21 valores posibles, por lo que INT(RAND(21)) da de 0 a 20 y restar 10 lo desplaza al rango $-10$ a $10$. El segundo número debe generarse nuevamente hasta que difiera del primero:
DECLARE First, Second : INTEGER
First ← INT(RAND(21)) - 10
REPEAT
Second ← INT(RAND(21)) - 10
UNTIL Second <> First
OUTPUT First, Second
Todo programa sigue la forma Entrada, Proceso, Salida
Explore · Explorar
IF … ELSE selección
Cambia el valor y observa qué rama se ejecuta: cómo un programa toma una decisión.
structured English 结构化英语 — natural language with indentation and fixed keywords; good for a high-level description.
flowchart 流程图 — a diagram with standard shapes:
Shape
Meaning
Rounded rectangle
Start / Stop
Parallelogram
Input / Output
Rectangle
Process
Diamond
Decision
Arrow
Flow of control
pseudocode — the keyword notation above; closest to code.
You should be able to convert between any pair: each IF is a decision diamond, each loop is a back-arrow, and a sequence is stacked rectangles.
IF ... THEN
... ELSE ...
ENDIF
Español
El mismo algoritmo puede escribirse de tres formas.
inglés estructurado 结构化英语 — lenguaje natural con sangría y palabras clave fijas; bueno para una descripción de alto nivel.
diagrama de flujo 流程图 — un diagrama con formas estándar:
Forma
Significado
Rectángulo redondeado
Inicio / Parada
Paralelogramo
Entrada / Salida
Rectángulo
Proceso
Rombo
Decisión
Flecha
Flujo de control
pseudocódigo — la notación de palabras clave anterior; más cercano al código.
Deberías poder convertir entre cualquier par: cada IF es un rombo de decisión, cada bucle es una flecha de retorno, y una secuencia son rectángulos apilados.
SI ... ENTONCES
... DE LO CONTRARIO ...
FIN SI
Un diagrama de flujo para promediar una lista de números, usando las formas estándar
9.2
Stepwise refinement · Refinamiento progresivo
English
Stepwise refinement 逐步求精 starts with a high-level outline and expands each step until it is small enough to code. For an average of $n$ numbers:
Level 1:
Level 2:
Each refinement keeps the previous structure and adds detail.
A six-mark "apply stepwise refinement" question gives you a high-level outline and wants each step expanded into the concrete statements a programmer could code. Keep the steps in the same order, name the data each step reads or produces, and stop when every line is a single input, assignment, output, loop or condition. For example, "validate the password" becomes: input the password; check its length is at least 8; check it contains at least one digit; output "accepted" if both checks pass, otherwise output "rejected".
Español
El refinamiento progresivo 逐步求精 comienza con un esquema de alto nivel y expande cada paso hasta que sea lo suficientemente pequeño para codificarlo. Para un promedio de $n$ números:
Nivel 1:
Read in the numbers
Compute the average
Output the average
Nivel 2:
INPUT n
total ← 0
FOR i ← 1 TO n
INPUT value
total ← total + value
NEXT i
average ← total / n
OUTPUT average
Cada refinamiento mantiene la estructura anterior y añade detalles.
Una pregunta de seis puntos de "aplicar refinamiento progresivo" te da un esquema de alto nivel y quiere que cada paso se expanda en las instrucciones concretas que un programador podría codificar. Mantén los pasos en el mismo orden, nombra los datos que cada paso lee o produce, y detente cuando cada línea sea una sola entrada, asignación, salida, bucle o condición. Por ejemplo, "validar la contraseña" se convierte en: introducir la contraseña; verificar que su longitud sea de al menos 8; verificar que contenga al menos un dígito; output "aceptado" si ambas verificaciones pasan, de lo contrario output "rechazado".
Refinamiento progresivo: expande cada paso de alto nivel en pseudocódigo detallado
Explore · Explorar
Refinamiento paso a paso: de esquema a código
Descender los niveles. Comienza con toda la tarea en una sola línea y sigue expandiendo cada paso en pasos más pequeños — hasta que cada paso sea lo suficientemente simple para codificarse directamente.
9.2
Logic statements · Sentencias lógicas
English
A logic statement 逻辑语句 is a Boolean 布尔 condition that controls branching, built from comparisons (x > 10), connectives (AND, OR, NOT) and brackets. Use it as the condition of IF, WHILE or REPEAT...UNTIL:
Precedence 优先级 (highest to lowest): NOT, then AND, then OR. Use brackets when unsure. Common mistakes:
a = 1 OR 2 is wrong — write a = 1 OR a = 2.
NOT a > 5 means NOT (a > 5), i.e. a <= 5.
NOT (A AND B) is the same as (NOT A) OR (NOT B) (De Morgan's law 德摩根定律) — handy for simplifying conditions.
Turning a sentence into a logic statement is a skill the papers test directly. "A ticket is free for anyone under 5 or over 65" becomes Age < 5 OR Age > 65. "A mark is valid if it is a whole number from 0 to 100" becomes Mark >= 0 AND Mark <= 100. "The loop stops when the file is finished or ten records have been read" becomes UNTIL EOF(File) OR Count = 10. Write each comparison in full: Age > 65 and Age < 5, never Age > 65 OR < 5.
Worked example. Write an identifier table and pseudocode to read 10 numbers and output the largest. The identifier table names each variable with its data type and purpose: Count : INTEGER (loop counter), Num : REAL (the number just read), Max : REAL (largest so far).
The design decision carrying the marks is initialising Max: it must start lower than any possible input - or, safer still, be set to the first number read. Initialise it to 0 and the algorithm wrongly returns 0 for a list of negative numbers, a bug your trace only exposes if the test data include a negative.
Español
Una sentencia lógica 逻辑语句 es una condición Booleana 布尔 que controla el salto, construida a partir de comparaciones (x > 10), conectores (AND, OR, NOT) y paréntesis. Úsala como condición de IF, WHILE o REPEAT...UNTIL:
WHILE attempts < 3 AND NOT loggedIn DO
INPUT password
IF password = correctPassword THEN
loggedIn ← TRUE
ELSE
attempts ← attempts + 1
ENDIF
ENDWHILE
Prioridad 优先级 (de mayor a menor): NOT, luego AND, luego OR. Usa paréntesis si estás inseguro. Errores comunes:
a = 1 OR 2 es incorrecto — escribe a = 1 OR a = 2.
NOT a > 5 significa NOT (a > 5), es decir, a <= 5.
NOT (A AND B) es lo mismo que (NOT A) OR (NOT B) (Ley de De Morgan 德摩根定律) — útil para simplificar condiciones.
Convertir una oración en una sentencia lógica es una habilidad que los exámenes prueban directamente. "Un boleto es gratis para cualquiera menor de 5 o mayor de 65" se convierte en Age < 5 OR Age > 65. "Una nota es válida si es un número entero de 0 a 100" se convierte en Mark >= 0 AND Mark <= 100. "El bucle se detiene cuando el archivo termina o se han leído diez registros" se convierte en UNTIL EOF(File) OR Count = 10. Escribe cada comparación completa: Age > 65 y Age < 5, nunca Age > 65 OR < 5.
Prioridad: NO se une a logueado primero, luego Y combina ambos lados
Ejemplo resuelto. Escribe una tabla de identificadores y pseudocódigo para leer 10 números y devolver el mayor. La tabla de identificadores nombra cada variable con su tipo de dato y propósito: Count : INTEGER (contador de bucle), Num : REAL (el número acabado de leer), Max : REAL (mayor hasta ahora).
Max ← -999999
FOR Count ← 1 TO 10
INPUT Num
IF Num > Max THEN
Max ← Num
ENDIF
NEXT Count
OUTPUT Max
La decisión de diseño que lleva los puntos es inicializar Max: debe empezar más bajo que cualquier posible entrada - o, aún más seguro, ser configurado al primer número leído. Inicializarlo a 0 haría que el algoritmo devolviera erróneamente 0 para una lista de números negativos, un error que solo expones si los datos de prueba incluyen un negativo.
Pick one and the site follows you — notes, papers, videos and practice all open on it. · Selecciona uno y el sitio te sigue — notas, documentos, videos y práctica se abren en él.
Type to search notes, lessons, code, vocabulary and past-paper questions across every subject. · Escribe para buscar notas, lecciones, código, vocabulario y preguntas de exámenes anteriores en todas las materias.