Языки программирования. Основные структурные элементы
По § 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:
- После ввода:
a = 5,b = 3. Значениеpещё не вычислено нашим алгоритмом. - Сначала вычисляется сумма в скобках:
5 + 3 = 8. - Затем умножение:
2 * 8 = 16. - После присваивания:
p = 16. - На экране появляется
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 | На что обращает внимание |
|---|---|
| Структурное программирование | Понятная структура из следования, ветвлений, циклов и подпрограмм |
| Процедурное программирование | Разделение действий на вызываемые процедуры и функции |
| Функциональное программирование | Вычисление результатов функций и их сочетаний |
| Объектно-ориентированное программирование | Объекты, объединяющие состояние и поведение, и их взаимодействие |
Эти подходы не обязательно исключают друг друга. Наш пример имеет последовательную структуру и использует процедуры ввода и вывода. При объектном подходе, например, у экранной кнопки есть состояние и поведение при нажатии. Подробное проектирование классов и функциональные программы выходят за рамки сегодняшней практики.
Самостоятельная работа
Сначала запиши свои ответы, затем открой разбор. Задачи опираются на разобранную программу, поэтому к её строкам можно возвращаться.
А. Прочитай программу
Для программы периметра выше:
- Назови язык, переменные и их тип. Какая строка получает данные, а какая выводит результат?
- Какой вывод получится при вводе
6 3? Запиши промежуточную сумму. - Выпиши отдельно выражение вычисления периметра и оператор, который сохраняет его значение.
Б. Проверь запись и смысл
- Какие имена подходят по правилам наших примеров:
side2,2side,begin,total_sum? Объясни отказ для остальных. - При объявлении
p: integerпрограмма содержитp := 'hello';. В чём проблема? - Задача — периметр, но строку вычисления заменили на
p := a + b;. Для входа6 2найди фактический и ожидаемый ответы. Может ли компилятор принять такую строку?
В. Измени готовую программу
Нужно вычислить площадь прямоугольника. Допустимые длины сторон — целые числа от 1 до 1000 см. Вспомни: площадь равна произведению сторон и измеряется в квадратных сантиметрах.
Напиши полную программу по образцу, затем выполни проверки.
- Оставь ввод
aиb. Назови переменную результатаareaи добавь её в описание вместоp. - Запиши вычисление площади и вывод результата.
- Предскажи вывод для
5 3и4 2. Если есть компьютер, запусти программу и сравни с прогнозом. - Объясни, зачем понадобилось изменить и описание переменной, и строку вывода.
Что нужно запомнить
Язык программирования задаёт запись и смысл программ. В программе есть данные и действия: переменные имеют имена, типы и значения; выражения вычисляют значения; операторы выполняют действия. Подпрограммы позволяют вызывать готовые части решения. Средства выполнения программы и сам язык — разные понятия.
Проверь себя без подсказки: объясни, чем программа отличается от алгоритма; покажи в примере выражение и оператор; объясни, почему компиляция без ошибок ещё не гарантирует верный ответ.
Домашнее задание: прочитай § 2, особенно определения и примеры раздела 2.3. По образцу напиши программу периметра квадрата. Вводится целая сторона от 1 до 1000 см, выводится периметр. Используй имена a и perimeter, тип integer. Проверь сторону 3 см, затем 5 см. Подпиши строку ввода, выражение и строку вывода. Компьютер для домашнего задания необязателен.
Источники
Котов В. М. и соавторы. «Информатика. 10 класс». Народная асвета, 2020, § 2, с. 11–21. Определения пересказаны своими словами; примеры и задания оригинальные. Справка PascalABC.NET. Обзор парадигм даёт ориентир для чтения параграфа, а не требует освоить все подходы за один урок.
Скачать и открыть
Материалы урока
2 материалаПодготовка к уроку
2 материала· для учителей
21 слайд по § 2: язык и программа, имена и типы, выражения и операторы, полный разбор программы на Pascal, трассировка и самостоятельное изменение кода. Четыре оригинальные иллюстрации.
Презентация · MediaSchool
План для учителя на 45 минут: объяснение понятий, полный код и трассировка, самостоятельные задания с ключами, критерии понимания, домашнее задание и варианты без компьютеров и проектора. Шесть страниц.
Методичка · MediaSchool
От сообщества
Материалы сообщества0
Дополнения от учителей к этому уроку. Проверены модерацией, но не являются редакционным контентом MediaSchool.
Поделитесь первым материалом
Рабочий лист, презентация или методичка помогут другим учителям подготовиться к уроку.
Комментарии
Войдите, чтобы оставлять комментарии.
Пока нет комментариев. Будьте первым!