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

Языки программирования. Основные структурные элементы

По § 2: язык и программа, переменные и типы, выражения и операторы. Полный разбор программы на Pascal, самостоятельное изменение кода, скрытые ответы, презентация и план на 45 минут.

Открыт · Презентация · Методичка

Конспект урока

Как записать алгоритм для компьютера

На первом уроке мы записали алгоритм вычисления периметра словами: получить стороны, сложить их, удвоить сумму и сообщить ответ. Чтобы такой способ решения мог выполнить компьютер, его записывают по правилам языка программирования.

Язык программирования — формальный язык для записи программ. Он задаёт правила записи команд и данных, а также их смысл.

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

Алгоритм описывает способ решения задачи. Программа выражает его средствами определённого языка. Один алгоритм можно записать на разных языках. В этом уроке основной пример будет на Pascal, как в учебнике. Познакомимся с языком через чтение короткой программы: сначала разберём каждую строку, затем изменим вычисление.

Языки высокого уровня и выполнение программ

Процессор выполняет команды своей системы команд, представленные машинным кодом. Людям удобнее описывать действия с помощью имён, чисел и знакомых слов. Языки высокого уровня позволяют записывать алгоритмы без подробного описания каждой машинной команды. Примеры: Pascal, Python, C++, Java.

Язык низкого уровня тесно связан с устройством и командами процессора. Пример — ассемблер, в котором машинные команды обозначают символическими именами. «Высокий» и «низкий» уровень здесь не означают «хороший» и «плохой»: это степень близости к устройству компьютера.

Чтобы выполнить программу, используют специальные программные средства.

  • Транслятор преобразует программу из одного языка или представления в другое.
  • Компилятор переводит исходную программу в другую форму, например в машинный или промежуточный код, который затем выполняется.
  • Интерпретатор выполняет программу, обрабатывая её команды или промежуточное представление во время работы.

В одной системе эти способы могут сочетаться. Поэтому нельзя раз и навсегда разделить все языки на «только компилируемые» и «только интерпретируемые». PascalABC.NET, упомянутый в учебнике, включает редактор и компилятор; язык Pascal и среда PascalABC.NET — связанные, но разные понятия.

Синтаксис и семантика

Синтаксис — правила записи конструкций языка. Семантика — смысл этих конструкций.

Например, в Pascal запись p := 2 * (a + b); означает: вычислить выражение справа и присвоить полученное значение переменной p. Скобки, знак *, сочетание := и точка с запятой используются по правилам языка. Значение записи определяется его семантикой.

«Формальный язык» означает, что правила заданы точно: программа не должна рассчитывать, что компьютер догадается о пропущенном действии или знаке.

Из чего состоит программа

Алфавит, слова и имена

Для записи программы используются буквы, цифры, знаки операций и разделители. Например, + обозначает сложение, * — умножение, а скобки задают порядок вычислений. У разных языков правила различаются.

Служебные слова имеют установленное языком назначение. В Pascal var начинает описание переменных, а begin и end обозначают границы блока действий. Их нельзя использовать вместо собственных имён переменных.

Идентификатор — имя объекта программы, например переменной или подпрограммы. В наших примерах имена начинаются с латинской буквы и могут содержать латинские буквы, цифры и знак подчёркивания: a, side2, total_sum. Имя 2side не подходит, потому что начинается с цифры. Имя begin занято служебным словом. Для своей программы выбирай имена, которые помогают понять смысл данных.

Данные, типы, переменные и константы

Переменная — именованная величина, значение которой может изменяться при выполнении программы. У неё есть имя, тип и текущее значение. Тип данных определяет допустимые значения и операции с ними. Константа обозначает постоянное значение, которое в ходе выполнения не изменяют.

Тип в PascalЧто хранитПример значения
integerЦелое число в диапазоне этого типа5, −2
realВещественное число, в том числе с дробной частью; хранится с ограниченной точностью2.5
booleanЛогическое значениеTrue, False
charОдин символ'A'
stringСтроку символов'Hello'

Значение 10 — число, а '10' — текст из двух цифр. Одинаковый внешний вид ещё не означает одинаковый тип. В примерах кода дробную часть отделяют точкой. Кроме простых типов существуют структурированные: например, массив объединяет несколько элементов. Массивы начнём изучать на следующем уроке.

Представь переменную как подписанное место для значения: имя сохраняется, а значение можно заменить. Это только образ; точное поведение задаёт язык.

Выражение, оператор и присваивание

Выражение задаёт вычисление значения. Например, 2 * (a + b) — выражение. При a = 5 и b = 3 оно имеет значение 16.

Оператор задаёт законченное действие программы. Например, p := 2 * (a + b); — оператор присваивания. Сначала вычисляется правая часть, затем результат записывается в переменную слева. Знак := в Pascal означает присвоить, а не математическое равенство.

Если значение x равно 4, после x := x + 1; оно станет равно 5: программа прочитает старое значение, прибавит 1 и запишет новое. В выражении знак + обозначает операцию сложения; всё присваивание целиком является оператором. Не путай эти термины.

Полностью разобранная программа

Задача знакома: найти периметр прямоугольника. Чтобы сосредоточиться на записи программы, здесь берём целые длины сторон от 1 до 1000 см. Это допустимые входные данные нашего примера. Исполнитель получает два числа и выводит числовое значение периметра в сантиметрах.

var a, b, p: integer;
begin
  readln(a, b);
  p := 2 * (a + b);
  writeln(p);
end.
СтрокаЧто она означает
var a, b, p: integer;Описаны три целочисленные переменные: стороны и периметр
beginНачинается блок действий
readln(a, b);Два введённых целых числа записываются в a и b
p := 2 * (a + b);Вычисляется периметр, результат записывается в p
writeln(p);Значение p выводится на экран
end.Заканчивается главный блок программы

Ввод и вывод здесь выполняют стандартные процедуры readln и writeln. Точка в end. завершает программу; точка с запятой разделяет операторы. В Pascal умножение нужно записать явно: 2 * (a + b), а не 2(a + b).

Разберём выполнение для ввода 5 3:

  1. После ввода: a = 5, b = 3. Значение p ещё не вычислено нашим алгоритмом.
  2. Сначала вычисляется сумма в скобках: 5 + 3 = 8.
  3. Затем умножение: 2 * 8 = 16.
  4. После присваивания: p = 16.
  5. На экране появляется 16. По условию это периметр в сантиметрах.

При вводе 4 2 программа выведет 12. Код остаётся тем же, изменяются данные. Так проявляется массовость алгоритма из первого урока.

Как проверить пример в среде

Если PascalABC.NET уже установлен, создай файл программы, скопируй весь пример и запусти его командой выполнения в среде. В окне ввода набери 5 3 и нажми Enter. Ожидаемый вывод — 16. Затем выполни программу заново для 4 2: ожидается 12.

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

Почему программа может ошибаться

  • Ошибка записи: p := 2 * ; — после умножения пропущена часть выражения. Нарушен синтаксис.
  • Несовместимость типов: при целочисленной p нельзя присвоить ей строку командой p := 'hello';. Запись нарушает правила работы с типами.
  • Ошибка решения: p := a + b; записано допустимо, но вычисляет только сумму двух сторон. Для 5 3 получится 8 вместо периметра 16.

Компилятор обнаруживает многие ошибки записи и типов, но успешная компиляция не доказывает, что программа решает нужную задачу. Сравнивай результат с ожидаемым ответом.

Подпрограммы: готовая часть решения

Подпрограмма — часть программы, выполняющая отдельную задачу и вызываемая по имени. Она помогает использовать один и тот же способ действия в разных местах.

Функция возвращает значение, которое можно использовать в выражении: например, Abs(-3) даёт 3. Процедура выполняет действие и не возвращает значение как результат вызова. Например, writeln(p) выводит число. Это не означает, что процедура «бесполезна»: её результатом для пользователя может быть вывод на экран или изменение данных.

В этом уроке достаточно узнавать вызовы готовых подпрограмм. Писать собственные функции и процедуры с нуля пока не требуется.

Парадигмы программирования

Парадигма программирования — совокупность идей о том, как организовать программу и решение задачи. Это не название языка. Один язык может поддерживать несколько парадигм.

Подход из § 2На что обращает внимание
Структурное программированиеПонятная структура из следования, ветвлений, циклов и подпрограмм
Процедурное программированиеРазделение действий на вызываемые процедуры и функции
Функциональное программированиеВычисление результатов функций и их сочетаний
Объектно-ориентированное программированиеОбъекты, объединяющие состояние и поведение, и их взаимодействие

Эти подходы не обязательно исключают друг друга. Наш пример имеет последовательную структуру и использует процедуры ввода и вывода. При объектном подходе, например, у экранной кнопки есть состояние и поведение при нажатии. Подробное проектирование классов и функциональные программы выходят за рамки сегодняшней практики.

Самостоятельная работа

Сначала запиши свои ответы, затем открой разбор. Задачи опираются на разобранную программу, поэтому к её строкам можно возвращаться.

А. Прочитай программу

Для программы периметра выше:

  1. Назови язык, переменные и их тип. Какая строка получает данные, а какая выводит результат?
  2. Какой вывод получится при вводе 6 3? Запиши промежуточную сумму.
  3. Выпиши отдельно выражение вычисления периметра и оператор, который сохраняет его значение.

Б. Проверь запись и смысл

  1. Какие имена подходят по правилам наших примеров: side2, 2side, begin, total_sum? Объясни отказ для остальных.
  2. При объявлении p: integer программа содержит p := 'hello';. В чём проблема?
  3. Задача — периметр, но строку вычисления заменили на p := a + b;. Для входа 6 2 найди фактический и ожидаемый ответы. Может ли компилятор принять такую строку?

В. Измени готовую программу

Нужно вычислить площадь прямоугольника. Допустимые длины сторон — целые числа от 1 до 1000 см. Вспомни: площадь равна произведению сторон и измеряется в квадратных сантиметрах.

Напиши полную программу по образцу, затем выполни проверки.

  1. Оставь ввод a и b. Назови переменную результата area и добавь её в описание вместо p.
  2. Запиши вычисление площади и вывод результата.
  3. Предскажи вывод для 5 3 и 4 2. Если есть компьютер, запусти программу и сравни с прогнозом.
  4. Объясни, зачем понадобилось изменить и описание переменной, и строку вывода.

Что нужно запомнить

Язык программирования задаёт запись и смысл программ. В программе есть данные и действия: переменные имеют имена, типы и значения; выражения вычисляют значения; операторы выполняют действия. Подпрограммы позволяют вызывать готовые части решения. Средства выполнения программы и сам язык — разные понятия.

Проверь себя без подсказки: объясни, чем программа отличается от алгоритма; покажи в примере выражение и оператор; объясни, почему компиляция без ошибок ещё не гарантирует верный ответ.

Домашнее задание: прочитай § 2, особенно определения и примеры раздела 2.3. По образцу напиши программу периметра квадрата. Вводится целая сторона от 1 до 1000 см, выводится периметр. Используй имена a и perimeter, тип integer. Проверь сторону 3 см, затем 5 см. Подпиши строку ввода, выражение и строку вывода. Компьютер для домашнего задания необязателен.

Источники

Котов В. М. и соавторы. «Информатика. 10 класс». Народная асвета, 2020, § 2, с. 11–21. Определения пересказаны своими словами; примеры и задания оригинальные. Справка PascalABC.NET. Обзор парадигм даёт ориентир для чтения параграфа, а не требует освоить все подходы за один урок.

План для учителя (PDF)

Скачать и открыть

Материалы урока

2 материала

Подготовка к уроку

2 материала

От сообщества

Материалы сообщества0

Дополнения от учителей к этому уроку. Проверены модерацией, но не являются редакционным контентом MediaSchool.

Поделиться материалом

Поделитесь первым материалом

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

Комментарии

Войдите, чтобы оставлять комментарии.

Пока нет комментариев. Будьте первым!