Перейти к содержанию

Программирование

Информатика IGCSE · Тема 8

Видеоурок по этой теме Открыть страницу видео
13:16

Программирование

Вот короткая программа. Она считывает пять тестовых оценок и выводит их сумму. Пять оценок: восемь, девять, семь, шесть и десять, поэтому сумма должна быть сорок. Смотрите…

Английское озвучивание · Английский + китайские субтитры (встроенные)

8.1

Переменные и константы

Программа
Candidates should be able to: Notes and guidance
1 Declare and use variables and constants
2 Understand and use basic data types • Including: – integer – real – char – string – Boolean
3 Understand and use input and output
4 (a) Understand and use the concept of sequence
(b) Understand and use the concept of selection • Including: – IF statements – CASE statements
(c) Understand and use the concept of iteration • Including: – count-controlled loops – pre-condition loops – post-condition loops
(d) Understand and use the concepts of totalling and counting
(e) Understand and use the concept of string handling • Including: – length – substring – upper – lower • The first character of the string can be position zero or one
(f) Understand and use arithmetic, relational and logical operators • Arithmetic, limited to: – + – – – / – * – ^ (raised to power of) – MOD – DIV • Relational, limited to: – = – < – <= – > – >= – <> (not equal to) • Logical, limited to: – AND – OR – NOT
5 Understand and use nested statements • Including nested selection and iteration • Candidates will not be required to write more than three levels of nested statements
6 (a) Understand what is meant by procedures, functions and parameters (b) Define and use procedures and functions, with or without parameters (c) Understand and use local and global variables • Procedures and functions may have up to three parameters
7 Understand and use library routines • Including: – MOD – DIV – ROUND – RANDOM
8 Understand how to create a maintainable program • Including appropriate use of: – meaningful identifiers – the commenting feature provided by the programming language – procedures and functions – relevant and appropriate commenting of syntax • Use meaningful identifiers for: – variables – constants – arrays – procedures and functions

Источник: Программа Cambridge International

Переменная — это именованный хранилище, которое содержит значение, которое может изменяться во время выполнения программы. Константа — это именованный хранилище, значение которого фиксировано и не изменяется.

Переменная с именем age, хранящая значение 16
Переменная — это именованный контейнер для данных, значение которого может изменяться
Строки программного кода на экране
Переменные и константы — это именованные хранилища для значений, заданные в коде программы

Их следует объявить (указать имя и тип) перед использованием:

DECLARE Score : INTEGER
DECLARE Name : STRING
CONSTANT Pi ← 3.142
Два модуля оперативной памяти RAM
Во время выполнения программы ее переменные хранятся в памяти компьютера (RAM)

Используйте константу для значения, которое никогда не меняется (например, Пи), чтобы оно было задано в одном месте и легко читалось.

Исследовать

Переменные и присваивание

Пройдите по строкам кода и наблюдайте, как каждая переменная принимает своё новое значение.

English Русский
variable/ˈveərɪəbl/ переменной
constant/ˈkɒnstənt/ постоянно
declare/dɪˈkleə/ объявить
integer/ˈɪntɪdʒə/ integer
real/rɪəl/ вещественный
char/tʃɑː/ char
string/strɪŋ/ строки
8.1

Типы данных

Тип данных указывает, какое значение хранит переменная. Вы должны знать пять основных типов.

Типы данных: целочисленный (7), вещественный (3.5), символьный ('A'), строковый ("hello"), логический (true/false)
Основные типы данных: целочисленный, вещественный, символ, строка и логический
Тип Хранит Пример
целочисленный целое число 42, -7
вещественный число с десятичной точкой 3.14, -0.5
символьный один символ 'A', '?'
строка последовательность символов "Hello"
Boolean (логический тип) один из двух значений TRUE или FALSE
English Русский
data type/ˈdeɪtə taɪp/ тип данных
Boolean/ˈbuːlɪən/ Boolean
8.1

Ввод и вывод

Ввод считывает значение от пользователя. Вывод отображает значение на экране.

OUTPUT "What is your name?"
INPUT Name
OUTPUT "Hello ", Name
English Русский
input/ˈɪnpʊt/ входные данные
output/ˈaʊtpʊt/ вывода
sequence/ˈsiːkwəns/ последовательность
selection/sɪˈlekʃn/ выбор
iteration/ˌɪtəˈreɪʃn/ итерации
8.1

Три основные структуры

Каждая программа строится из трёх управляющих структур.

Три небольшие блок-схемы: последовательность (блоки в линию), выбор (проверка условия с двумя ответвлениями) и итерация (проверка условия с телом, которое возвращается назад)
Три управляющие структуры: последовательность выполняет шаги по порядку, выбор выбирает ветку, итерация повторяет тело

Последовательность

Последовательность означает, что шаги выполняются один за другим, в порядке сверху вниз.

INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT Area

Выбор

Выбор определяет, какие шаги выполнять, исходя из условия. Используйте оператор IF или оператор CASE, когда вариантов выбора много.

IF Score >= 50
  THEN
    OUTPUT "Pass"
  ELSE
    OUTPUT "Fail"
ENDIF
CASE OF Grade
    'A' : OUTPUT "Excellent"
    'B' : OUTPUT "Good"
    OTHERWISE OUTPUT "Keep trying"
ENDCASE

Итерация

Итерация (цикл) повторяет шаги. Существует три вида.

Цикл с подсчётом повторяется заданное количество раз:

FOR I ← 1 TO 5
    OUTPUT "Hello"
NEXT I

Цикл с предварительным условием проверяет условие перед каждым повторением, поэтому он может не выполниться ни разу:

WHILE Answer <> "stop" DO
    INPUT Answer
ENDWHILE

Цикл с постусловием проверяет условие после каждого повторения, поэтому он всегда выполняется как минимум один раз:

REPEAT
    INPUT Password
UNTIL Password = "secret"
Две циклические блок-схемы: WHILE проверяет условие перед телом; REPEAT выполняет тело сначала и проверяет после
Цикл с предварительным условием (WHILE) проверяет до тела, поэтому может не выполниться ни разу; цикл с постусловием (REPEAT) проверяет после, поэтому выполняется как минимум один раз
Исследовать

Как цепочка IF … ELSE IF принимает решения

Условия проверяются сверху вниз; первым выполняется условие, которое истинно, остальные пропускаются. Перемещайте баллы и следите, какая ветка активируется.

Исследовать

Выбор

Измените значение и посмотрите, какой блок кода выполнится — работа условного оператора в действии.

English Русский
loop/luːp/ цикла
count-controlled loop/kaʊnt kənˈtrəʊld luːp/ цикл с числовым управлением
pre-condition loop/priː kənˈdɪʃn luːp/ цикл с предварительным условием
post-condition loop/pəʊst kənˈdɪʃn luːp/ цикл с последующим условием
length/leŋθ/ длина
8.1

Подсуммирование и подсчёт

  • подсуммирование — непрерывно прибавлять значения к общей сумме: Total ← Total + Value.
  • подсчёт — прибавлять 1 к счётчику каждый раз: Count ← Count + 1.
count = count + 1 увеличивает на 1; total = total + value добавляет к текущей сумме
Счетчик увеличивает значение на 1; сумматор формирует накопительную сумму
Таблица трассировки для цикла над значениями 4, 7 и 5: total меняется 0, 4, 11, 16, а count меняется 0, 1, 2, 3
Таблица трассировки отслеживает цикл подсуммирования и подсчёта шаг за шагом
Total ← 0
FOR I ← 1 TO 10
    INPUT Mark
    Total ← Total + Mark
NEXT I
OUTPUT Total

Разобранный пример. Программа должна считать 5 оценок, затем вывести сумму и среднее значение.

Total ← 0
FOR I ← 1 TO 5
    INPUT Mark
    Total ← Total + Mark
NEXT I
Average ← Total / 5
OUTPUT Total, Average

Две строки содержат оценки. Total ← 0 должно находиться до цикла: если поместить его внутрь, сумма будет сбрасываться при каждой итерации, и программа выведет только последнюю оценку. А Average ← Total / 5 должно находиться после цикла, потому что сумма не будет полной, пока все оценки не будут сложены. Инициализация до, расчёт после — именно этот порядок на самом деле проверяет вопрос.

English Русский
totalling/ˈtəʊtəlɪŋ/ суммирование
counting/ˈkaʊntɪŋ/ подсчет
remainder/rɪˈmeɪndə/ остаток
nested statement/ˈnestɪd ˈsteɪtmənt/ вложенное утверждение
8.1

Операторы

Арифметические операторы

Оператор Значение
+ - * / сложение, вычитание, умножение, деление
^ возведение в степень
MOD остаток от деления
DIV целая часть результата деления

Например, 17 MOD 5 — это 2, а 17 DIV 5 — это 3.

Реляционные операторы

Они сравнивают два значения и дают логический результат: =, <, <=, >, >= и <> (не равно).

Логические операторы

Они объединяют условия: AND (оба должны быть истинными), OR (хотя бы одно должно быть истинным), NOT (инвертирует true/false).

Три семейства операторов: арифметические операторы, такие как плюс и умножить, дают число; реляционные операторы, такие как меньше, сравнивают и дают true или false; логические операторы AND OR NOT объединяют условия
Три семейства операторов: арифметические, реляционные и логические
IF Age >= 13 AND Age <= 19
  THEN
    OUTPUT "Teenager"
ENDIF
8.1

Обработка строк

Строка состоит из символов. Полезные операции:

  • длина — количество символов в строке;
  • подстрока — меньшая часть, извлечённая из строки;
  • заглавные буквы — преобразовать буквы в верхний регистр;
  • строчные буквы — преобразовать буквы в нижний регистр.
name ← "Computer"
OUTPUT LENGTH(name)          // 8
OUTPUT SUBSTRING(name, 1, 4) // "Comp"
OUTPUT UCASE(name)           // "COMPUTER"
OUTPUT LCASE(name)           // "computer"

(Первый символ может нумероваться как позиция 0 или позиция 1 в зависимости от языка.)

Исследовать

SUBSTRING: взять часть строки

Первый символ имеет позицию 1. SUBSTRING(Word, Start, Length) берет Length символов, начиная со Start — перетащите две ручки и прочитайте вызов, который она формирует.

English Русский
substring/ˈsʌbstrɪŋ/ подстрока
upper case/ˈʌpə keɪs/ заглавные буквы
lower case/ˈləʊə keɪs/ строчные буквы
8.1

Вложенные инструкции

Вложенная инструкция — это одна управляющая структура, размещённая внутри другой. Можно вставлять выбор и итерацию друг в друга.

FOR I ← 1 TO 3
    IF MOD(I, 2) = 0
      THEN
        OUTPUT I, " is even"
      ELSE
        OUTPUT I, " is odd"
    ENDIF
NEXT I

Вам не придётся писать более трёх уровней вложения.

8.1

Процедуры и функции

Чтобы избежать дублирования кода, можно разбить программу на именованные блоки.

  • Процедура — это именованный блок кода, который выполняет задачу. Вы запускаете её с помощью CALL.
  • Функция похожа на процедуру, но она возвращает значение обратно туда, откуда была вызвана.

Параметр — это значение, передаваемое в процедуру или функцию (до трёх параметров).

PROCEDURE Greet(PersonName : STRING)
    OUTPUT "Hello ", PersonName
ENDPROCEDURE

CALL Greet("Sam")
FUNCTION Square(N : INTEGER) RETURNS INTEGER
    RETURN N * N
ENDFUNCTION

Answer ← Square(5)   // answer is 25

Локальные и глобальные переменные

  • Локальная переменная объявляется внутри процедуры или функции. Её можно использовать только там.
  • Глобальная переменная объявляется в основной программе. Её можно использовать где угодно.

Локальные переменные безопаснее, так как их нельзя случайно изменить из другой части программы.

English Русский
procedure/prəˈsiːdʒə/ процедура
function/ˈfʌŋkʃn/ функцией
parameter/pəˈræmɪtə/ параметром
local variable/ˈləʊkl ˈveərɪəbl/ локальная переменная
global variable/ˈɡləʊbl ˈveərɪəbl/ глобальная переменная
library routine/ˈlaɪbrəri ruːˈtiːn/ библиотечная процедура
maintainable/meɪnˈteɪnəbl/ поддерживаемость
meaningful identifiers/ˈmiːnɪŋfl aɪˈdentɪfaɪəz/ осмысленные идентификаторы
comments/ˈkɒments/ комментариев
8.1

Библиотечные подпрограммы

Библиотечная подпрограмма — это готовый кусок кода, которым можно воспользоваться. Вы должны знать следующие:

Подпрограмма Что делает
MOD даёт остаток от деления
DIV даёт целую часть от деления
ROUND округляет вещественное число до количества знаков после запятой
RANDOM даёт случайное число
8.1

Написание поддерживаемой программы

Поддерживаемая программа легко читается и изменяется другими людьми позже. Чтобы сделать одну такую:

  • используйте осмысленные идентификаторы — понятные имена для переменных, констант, массивов, процедур и функций (totalScore, а не x);
  • добавляйте комментарии, чтобы объяснить, что делают части кода;
  • используйте процедуры и функции, чтобы разделить работу на маленькие блоки.
8.2

Массивы

Программа
Кандидаты должны уметь: Примечания и рекомендации
1 Объявление и использование одномерных (1D) и двумерных (2D) массивов
2 Понимание использования массивов • Включая использование переменных в качестве индексов в массивах
3 Запись значений в массив и чтение из него с использованием итерации • Первый индекс может быть равен нулю или единице • Включая вложенную итерацию

Источник: Программа Cambridge International

Массив — это одна переменная, которая хранит множество значений одного типа, доступных по индексу (номеру позиции).

Одномерные массивы

Одномерный (1D) массив подобен одному списку.

DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
OUTPUT Scores[1]
Пять коробок в ряд, пронумерованных от 1 до 5, содержащих значения, при этом значение по индексу 2 выделено как 75
Двумерный массив 1D хранит множество значений в одной переменной; каждое значение определяется по своему индексу

Вы можете использовать цикл для заполнения или чтения массива:

FOR I ← 1 TO 5
    INPUT Scores[I]
NEXT I

Двумерные массивы

Двумерный (2D) массив похож на таблицу со строками и столбцами. Он использует два индекса.

DECLARE Grid : ARRAY[1:3, 1:3] OF INTEGER
Grid[1, 1] ← 5
Grid[2, 3] ← 8
Сетка размером 3 на 3 с пронумерованными строками и столбцами; ячейка в строке 2, столбце 3 выделена и подписана как строка сетки 2, столбец 3
2D-массив — это таблица; каждое значение находится по двум индексам: [строка, столбец]

Вы читаете 2D-массив с помощью цикла внутри цикла (вложенная итерация).

Исследовать

Массивы

Выберите строку и столбец, чтобы прочитать одну ячейку. Массивы Cambridge нумеруются с 1, а элемент 2-D записывается с ОДНОЙ парой скобок — Grid[2, 3].

English Русский
array/əˈreɪ/ массив (array)
index/ˈɪndeks/ индекс
one-dimensional (1D) array/wʌn daɪˈmenʃənl əˈreɪ/ одномерный массив (1D)
two-dimensional (2D) array/tuː daɪˈmenʃənl əˈreɪ/ двумерный массив (2D)
8.3

Обработка файлов

Программа
Кандидаты должны уметь: Примечания и рекомендации
1 Понимание цели хранения данных в файле для последующего использования программой
2 Открытие, закрытие и использование файла для чтения и записи • Включая: – чтение и запись отдельных элементов данных – чтение и запись строки текста

Источник: Программа Cambridge International

Программа может хранить данные в файле, чтобы они сохранились после его завершения. Вы должны открыть файл, использовать его, а затем закрыть.

OPENFILE "data.txt" FOR WRITE
WRITEFILE "data.txt", "Hello"
CLOSEFILE "data.txt"

OPENFILE "data.txt" FOR READ
READFILE "data.txt", Line
CLOSEFILE "data.txt"

Можно читать и записывать отдельные элементы данных или целую строку текста. Всегда закрывайте файл, когда закончите с ним работать.

English Русский
file/faɪl/ файл
8.3

Советы для экзамена

  • Переменная может изменяться во время работы программы; константа остается неизменной. Изучите пять типов данных: целочисленный, вещественный, символьный, строковый, логический.
  • Каждая программа построена из трех структур: последовательность, выбор (IF / CASE) и итерация (циклы).
  • Цикл WHILE проверяет условие до тела, поэтому он может не выполниться ни разу; цикл REPEAT … UNTIL проверяет после, поэтому он выполняется хотя бы один раз.
  • MOD дает остаток, а DIV — целочисленную часть деления: 17 MOD 5 равно 2, 17 DIV 5 равно 3.
  • Функция возвращает значение; процедура нет. Локальная переменная работает только внутри своего блока; глобальная — везде.

Интерактивные уроки по этой теме

Пройдите его шаг за шагом с упражнениями мгновенной проверки.

Архив экзаменационных работ

Больше тем в Информатика IGCSE

Войти или создать аккаунт

IGCSE, A-Level & AP