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

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

Операции ввода с клавиатуры и вывода на экран — следующие за присваиванием по порядку изучения, так как без них практически не бывает программ. Различия между операциями read и readln, write и writeln опишите путем указания на визуальное расположение информации на экране. Впоследствии, при изучении текстовых файлов, этот вопрос можно уточнить. При описании оператора вывода подчеркните возможность включения в список вывода строк (текстовых констант), что позволяет комментировать выводимые данные. Тут же уместно показать простые варианты форматного вывода, так как простейшего оформления выводимых на экран результатов работы программы целесообразно добиваться с самого начала.

НЕ нашли? Не то? Что вы ищете?

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

Условный оператор соответствует знакомой учащимся алгоритмической структуре «развилка». При его изучении обычно не возникает существенных проблем. Необходимо обратить внимание на то, что после служебного слова if следует условное выражение, а не только простые условия в виде равенств и/или неравенств. Практические навыки разработки алгоритмов и программ, реализующих разветвляющиеся процессы, поначалу отрабатывают на простейших задачах типа «найти большее число из двух, последовательно вводимых с клавиатуры», затем переходят к задачам, требующим либо вложения развилки в развилку, либо организации составных условий (часто эти приемы равносильны).

Более общим (и более мощным) средством, аналогичным условному оператору, является оператор множественного ветвления. Объяснив его достаточно сложную структуру, покажите на примерах, что применение этого оператора часто избавляет от громоздких конструкций — многократно вложенных развилок, делает программу более читаемой. Обратите также внимание, что селектор и метки могут быть не обязательно типа integer (допустим любой порядковый тип), что в свою очередь добавляет выразительности программам.

Операторы цикла обычно начинают изучать с цикла с предусловием (цикла while). При реализации циклических алгоритмов часто возникает искушение организовывать данные в массивы, но поначалу делать это нецелесообразно. Достаточно ограничиться приемами обработки данных, последовательно вводимых с клавиатуры. Задачи типа «найти сумму чисел, вводимых с клавиатуры» не требуют структурирования данных. Затем переходим к более сложным задачам, требующим суперпозиции операторов цикла и развилки (типа «среди последовательно вводимых с клавиатуры чисел найти суммы положительных»), — подобных задач много в любом сборнике задач по программированию. Сочетание же изучения цикла с использованием структурированных данных ведет к лишним трудностям (хотя для сильных учащихся это вполне возможно).

Цикл с постусловием (цикл repeat) и в теоретическом, и в практическом плане по существу равносилен циклу с предусловием. Обратите внимание учащихся на то, что для цикла с постусловием тело цикла выполнится как минимум один раз, независимо от условия, а для цикла с предусловием может не выполниться ни разу. Вновь решайте те же задачи, что и при отработке первого из видов цикла, с использованием второго, фиксируя внимание учащихся на трансформации условий.

Как правило, при организации циклических процессов при заранее известном числе выполнения тела цикла наиболее удобен цикл с параметром (цикл for). Познакомьте с ним учащихся; обратите внимание, что по организации работы в Паскале этот цикл вначале проверяет условие, а затем реализует тело цикла. Цикл for устроен достаточно сложно, и детальное, по пунктам, «проговаривание» порядка его исполнения существенно помогает пониманию темы. Обратите внимание учащихся на то, что параметр цикла может иметь не только тип integer, но и любой порядковый тип. Разберите, например, задачу: вывести на экран последовательность латинских букв а, Ь, ..., z - Достичь этого можно, например, так:

var i, j, k: integer;

…………………………………………………………………………

i:=ord(a); j:=ord(z); for k:=i to j do write (chr(k), '_')

но можно и более изящно:

var с:char;

………………………………………………………………………

for c:= 'a' to 'z' do write (c, '_')

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

Необходимо показать учащимся и задачи, в которых цикл с параметром неприменим (или применение его требует особых ухищрений). Это, прежде всего, итерационные циклические процессы, в которых выход из цикла определяется не заранее известным числом шагов, а условием, связанным с чем-то, вычисляемым в теле цикла. Хорошим примером будут математические задачи типа: найти приближенное значение по итерационной формуле  с выходом из итераций при достижении условия |хя+1 - х„| < е.

Определенные затруднения при первом знакомстве вызывает у учащихся освоение конструкций типа «цикл в цикле». Вероятно, более целесообразно отложить ее рассмотрение до введения понятия «массив» («двумерный массив»), поскольку при этом появляются более адекватные конструкции задачи.

Тема «Перечислимый и интервальный типы данных»

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

Начните эту тему с примеров описания типов. Некоторая свобода, допускаемая Паскалем при выборе средств описания между разделами var и type, может быть при начальном изучении языка ликвидирована выбором в пользу var. Однако, начиная с данной темы, использование type становится неизбежным.

Приведя примеры определения перечислимых типов, остановитесь на допустимых операциях над соответствующими переменными и константами (операциями отношения) и функциях pred, succ, ord — лишь сейчас их можно определить в полной мере.

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

С интервальным типом проблем гораздо меньше. Фактически отдельные задачи на отработку навыков использования этого типа данных решать необязательно. В дальнейшем, особенно при описании массивов, использование интервального типа станет обычным (и не всегда осознаваемым) делом.

Тема «Процедуры и функции»

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

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

Начиная изучение этой сложной и принципиально важной темы, повторите принципы структурного программирования, особенно принцип модульности. Учащиеся должны понять, что без введения процедур ни одной профессиональной программы в принципе не бывает.

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

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

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

Нелегко также учащимся понять различия между формальными параметрами-значениями и параметрами-переменными. Многословные объяснения в ряде руководств иногда лишь затрудняют понимание этого важного вопроса. Для начала вполне достаточно, если в разбираемых примерах процедур параметры будут четко подразделяться на входные и выходные и будет соблюдаться простое правило: входные параметры есть параметры-значения, выходные — параметры-переменные. Это правило страхует от ошибок, связанных с непониманием механизмов замещения параметров при обращении к процедуре. Разумеется, впоследствии этот вопрос должен быть отработан глубже.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135