
МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ ДЕТЕЙ
«СТАНЦИЯ ЮНЫХ ТЕХНИКОВ ГОРОДА ЕВПАТОРИИ РЕСПУБЛИКИ КРЫМ»
(МБОУДОД "СЮТ")

297402, Российская Федерация, Республика Крым, город Евпатория, ул. Революции, д. 75, тел. (06569) 3-03-30,
е-mail: mboudodsut@bk.ru
План-конспект учебного занятия
кружок «Компьютер и информационные технологии», группа 2 – А
Тема учебного занятия: «Практическая работа в языке программирования Pascal. Вычисление суммы цифр строки. Нахождение наибольшего значения отношения трёхзначного числа к сумме его цифр».
Цель учебного занятия: формирование у детей знаний и умений работы с языком программирования Pascal, организация работы по усвоению детьми основных понятий, принципов работы с данным языком.
Задачи учебного занятия:
Образовательная:
проконтролировать степень усвоения основных понятий, принципов работы с языком программирования Pascal, изученных и сформированных на предыдущих занятиях;
обеспечить усвоение основных задач, входящих в содержание темы учебного занятия;
научить создавать программу, позволяющую вычислять сумму цифр строки, и программу нахождения наибольшего значения отношения трёхзначного числа к сумме его цифр;
формировать умение правильно и грамотно выражать свои мысли.
Развивающая:
развивать творческие способности, память, мышление обучающихся, навыки индивидуальной практической деятельности.
Воспитательная:
воспитывать аккуратность, внимательность, вежливость, дисциплинированность и бережное отношение к вычислительной технике.
Тип учебного занятия: формирование новых знаний, навыков и умений.
Методы работы: объяснительно-иллюстративный, практическая работа.
Формы работы: индивидуальная, групповая.
Оборудование: персональные компьютеры, доска, мел.
Дидактические материалы: карточки с заданиями.
Ход учебного занятия.
Организационный момент;
ТБ при работе за компьютером;
Актуализация опорных знаний:
Мотивация учебной деятельности обучающихся:
Выполнение практической работы;
Физкультминутка;
Итоги учебного занятия:
1. Организационный момент.
Приветствие, проверка присутствующих. Объяснение хода учебного занятия.
2. ТБ при работе за компьютером.
3. Актуализация опорных знаний:
Основные принципы работы с языком Pascal.
Pascal – один из самых известных языков программирования. Создан в 1968 – 1969 годах швейцарским ученым Никлаусом Виртом, был назван в честь французского математика и физика Блеза Паскаля, и используется для обучения программированию по сей день.

Перед началом работы следует напомнить, что язык Pascal – это совокупность трёх составляющих: алфавита, синтаксиса (правил написания объектов языка) и семантики (правил использования этих объектов).
Алфавит Pascal состоит из:
Прописных и строчных букв латиницы: A...Z, a…z;
Цифр: 0...9;
Специальных символов: + — * / = .,:; ‘ # ( ) { } [ ] и их комбинаций: «=» «
Задача же синтаксиса и семантики состоит в том чтобы, правильно написать раздел программы и правильно составить ее структуру, в противном же случае ваша программа будет работать неправильно (или же не работать вовсе!).
Структура программы выглядит так:
Program «имя программы»; — заголовок программы;
(Примечание: в конце строки ставится точка с запятой, не во всех, но в большинстве)
Uses (название библиотеки); здесь подключаются библиотеки, которые дают дополнительные возможности при создании программ;
Label (имя метки); здесь, если необходимо, прописываются метки, позволяющие переходить в разные места программы (о них позже);
Const тут указываем переменные с постоянной величиной, например, p=3.14;
Var тут через запятую перечисляем все переменные, а затем, указываем тип данных (Пример: Var: K, L, M: integer; N, O: real; (если несколько типов));
Begin (здесь без точки с запятой)
Дальше следует основной блок программы;
end. – конец программы (обязательно после “end” точка, если только это конец программы, а не операторные скобки).
Следует заметить, что из вышеперечисленных разделов обязательными есть только «Var», «Begin» и «end», остальные же могут применяться, если это требуется в ходе выполнения поставленной задачи.
Откройте окно вашего компилятора, и введите следующие строки:
program Programma1;
begin
end.
Нажмите кнопку «Выполнить»(«Run»). Ничего не происходит? Так и есть, ведь наша программа «пустая», мы не указали, что она должна делать, потому ничего и не произошло. Обычно принцип работы программы написанной на языке Pascal состоит из трёх этапов: ввод данных – обработка данных – вывод данных. Теперь повторим как работает оператор “write”. Он служит для вывода данных без перехода на новую строку. Попробуем его применить, тем самым сделав нашу программу чуть сложнее и интереснее:
program Programma1;
begin
write(' Pascal ');
end.
Собственно, так он и применяется. Между апострофами мы можем ввести любой текст, на любой раскладке, и после выполнения программы он появится в окне вывода (или в командной строке, смотря какой у вас компилятор). В данном случае, должно появиться слово «Pascal».
Операторы write, writeln, read, readln
Теперь поговорим о вводе данных. Мы уже познакомились с оператором write, но существуют также и другие. Writeln, к примеру, используется для вывода данных с переходом на новую строку. Зачем? Ну, например, чтобы дать какой-нибудь переменной значение:
program Programma1;
var A:integer;
begin
writeln('A= '); read(A); {ввести значение и «прикрепить» его к переменной A}
write(A); {Вывести значение переменной A}
end.
Каждое действие описано в фигурных скобках. Это называется комментарий. В дальнейшем будем использовать их для объяснений.
В этом примере для присваивания переменной значения, введенного с клавиатуры, используется оператор read. Мы видим, что при выполнении он прочитал строку в переменную А. А другой оператор, readln работает по-другому. Используя его, мы можем сразу ввести нужную строку, и она прочитается в переменную:
program Programma1;
var A:integer;
begin
readln(A);
write('A= ', A); {строка будет выглядеть так: «А= ' введенное значение А ' „}
end.
Теперь, когда мы повторили как организовать ввод данных, повторим какие могут быть данные, и как их обрабатывать.
Типы данных в Pascal
Исходные данные, которые вводятся с клавиатуры или читаются из файла, находятся в переменных, а они, в свою очередь, хранятся в оперативной памяти. Тип данных определяет, какие именно данные можно хранить, и сколько они займут оперативной памяти. Типы данных бывают целыми и вещественными.
•Целые типы данных (для целых чисел):
— byte
Объем памяти значений этого типа составляет 1 байт. Диапазон значений для данного типа: от 0 до 255.
— word
Значения этого типа занимают уже 2 байта памяти, а диапазон значений уже побольше: от 0 до 65535.
— integer (уже нам знакомый)
Значения также занимают 2 байта памяти, диапазон такого же размера, но включает уже и отрицательные числа: -32786…32787.
— LongInt
Объем памяти, занимаемый значением типа равняется 4 байтам. Диапазон значений же полностью соответствует названию типа данных: от -2147483648 до 2147483647
— ShortInt
Значение типа потребляет 1 байт памяти, диапазон относительно небольшой: -128…127.
•Вещественные типы данных (для чисел с дробной частью):
— Real
Занимаемая значением типа память – 6 байт. Число значащих цифр – 11-12. (значащие цифры – это точные цифры, т.е. не округленные). Диапазон значений типа: от 2.9*10-39 до 1.7*1038.
— Double
Размер значения типа – 8 байт. Число значащих цифр – 15-16. Диапазон: 5.0*10324…1.7*10308.
— Extended
Занимает 10 байт. Число значущих цифр – 19-20. Диапазон: 3.4*10-4932…1.1*104932.
Помимо этих, существуют также символьный тип данных (char) и даже логический тип данных (boolean), переменные которого могут принимать значения только true или false.
Итак, мы уже немало знаем о вводе и выводе данных. Теперь же перейдем к самой сложной части – обработке данных.
Обработка данных. Математические операции. Условия. Логические операции.
Мы уже повторили как вводить данные в программу, теперь повторим как их обрабатывать. Первое, и самое главное, что нам пригодится в этом деле – оператор присваивания. Выражается он вот так: «:=», и используется для присваивания значения переменной. Примеры: A:=1.5; B:=2+A. Теперь, когда мы знакомы с оператором присваивания, можем рассмотреть математические операции Pascal:
Сложение (+);
Вычитание (-);
Умножение (*);
Деление (/);
Целочисленное деление (div) – возвращает целую часть от деления (Пример: 10 div 3 = 3);
Остаток от деления (mod) – возвращает только остаток от деления (Пример: 5 mod 2 = 1);
Помимо приведенных, существуют еще такие операции и функции для работы с числами:
abs(x) – возвращает модуль от x;
sin(x) – синус угла x (в радианах);
cos(x) – косинус угла x (в радианах);
int(x) – возвращает целую часть от x;
random(число) – случайное число от 0 до заданного;
sqr(x) – квадрат x;
sqrt(x) – квадратный корень x;
inc(x) – увеличить x на 1;
dec(x) – уменьшить x на 1.
Условия
Условия в Pascal играют очень большую роль, особенно если алгоритм выполнения программы разветвленный. Формулируется условие следующим образом:
if (условие 1) then (действие 1 — основное) else (действие 2 — альтернативное)
(if – если, then – то, else – иначе)
При построении условия пользуются логическими операциями and, not, or, xor:
• and – операнд, объединяющий несколько условий в одно. Действие будет выполняться, только если все перечисленные условия будут верны.
program Usloviya;
var a:integer;
begin
readln(a);
if (2*2=4) and (3+2=5) then a:=a+1 else a:=a-1;
write(a);
end.
На этом примере мы видим, что все условия, перечисленные через and верны, потому выполнялось только первое действие, идущее через than. Если хотя бы одно условие не было верно, тогда выполнилось бы второе действие.
• not – логическое действие с условием из одной части. Если условие неверно, то будет выполняться основное действие (первое), если верно – то альтернативное (второе).
program Usloviya;
var b:integer;
begin
readln (b);
if not 5=4 then b:=b+1 else b:=b-1;
write (b);
end.
Условие 5=4 неверно, следовательно, будет выполняться первое действие.
• or (или) – логический оператор для условия из нескольких частей. Основное действие будет выполняться, если верно хотя бы одно условие.
program Usloviya;
var d:integer;
begin
readln (d);
if (5=4+1) or (5=4) then d:=d+1 else d:=d-1;
write(d);
end.
Одно из условий верно, поэтому программа перейдет к основному действию. Тоже повторится, если верными будут все условия. Если же ни одно условие не будет верно, то выполниться альтернативное действие.
• xor – с этим оператором основное действие выполняется, если верно только одно условие. Если верны несколько условий, или же ни одного, то выполнится альтернативное действие.
program Usloviya;
var n:integer;
begin
readln(n);
if (6=4) xor (3=5-2) then n:=n+1 else n:=n-1;
write (n);
end.
(Примечание: Не стоит забывать что приоритет логических операций выше чем математических, поэтому, если одни совмещаются с другими, то желательно выделять математические операции скобками, чтобы не возникало ошибок при выполнении программы.)
Мы повторили основы обработки данных. Осталось поговорить о некоторых дополнительные процедурах, и функциях для управления программой, которые вам не раз пригодятся при дальнейшем обучении на Pascal.
Процедуры и функции для управления программой
Поговорим об упомянутой раньше метке. Эта процедура очень легка в использовании и позволяет при надобности перейти в любую часть программы, «перескочив» одну из следующих частей, или же наоборот, вернуться в предыдущую часть. Прописывается метка очень просто: сперва описываем метку в разделе меток (см. п. 3. Начало работы. Структура программы), а затем указывается место перехода, а нужный оператор помечается меткой.
program Metka;
label 1,2;
var A, B:integer;
begin
readln (A);
2: if A=5 then goto 1; {2: — действие после перехода на соответствующую метку,}
A:=A+1; {goto — переход на метку}
goto 2;
1: write (A);
end.
На данном примере, программа увеличивает на 1 введенное число, пока оно не станет равным пяти. Тут мы и можем проследить действие метки.
•Delay(время) – остановка программы с задержкой, время в кавычках указывается в миллисекундах.
•Readkey – остановка программы до нажатия клавиши, значение функции – код нажатой клавиши.
•Exit – досрочное завершение процедуры.
Следует заметить, что для работы delay, readkey, и exit необходимо подключить модуль crt (uses crt).
Язык программирования Pascal.
Тип данных Char. Функции Ord, Chr.
Мы с Вами уже рассмотрели типы данных, которые позволяют хранить и обрабатывать целые числа (integer) и дробные числа (real). Теперь рассмотрим тип данных, позволяющий хранить и обрабатывать различные символы. Символы – это все буквы и значки, которые мы можем увидеть на клавиатуре. Для того чтобы ввести в программу символьные переменные необходимо указать для них символьный тип данных Char.
01.Program number12;
02.uses crt;
03.var N:integer;
04.X:char;
05.begin
06.clrscr;
07.X:=’L’;
08.writeln (X);
09.N:=Ord (X);
10.writeln (N);
11.X:=Chr (N);
12.writeln(X);
13.readln
14.end.
Строка №4. Записываем переменную «X» и указываем для нее тип данных Char. Char – тип данных, который позволяет хранить символы. В данном случае в переменную «X» мы будем записывать не какие-то числа, а символы.
В строке №7 мы присвоили переменной «X» значение латинской буквы L. Сам символ, который необходимо записать в переменную, обязательно берется в апострофы. Напомню, что когда мы присваиваем переменной числовое значение, то число в апострофы не берется.
В строке №8 выводим на экран значение, которое мы присвоили переменной X, т.е. фактически на экран выведется буква L.
Строка №9. Функция Ord, преобразовывает букву в ее числовой код. Коды всех букв и символов можно посмотреть в кодовой таблице ASCII, которая приведена ниже. ASCII (American Standard Code for Information Interchange) - международный стандарт, принятый для кодирования текстовой информации. По этой таблице, любые символы имеют свой уникальный числовой код. В нашем примере переменной N присваивается значение функции Ord (L) т.е. (код) буквы «L» (по таблице ASCII код буквы «L» - 76).
В строке №10 выводим значение переменной «N» (т.е. числовой код буквы «L») на экран.
Строка №11. Функция Chr противоположна функции Ord. Эта функция будет преобразовывать числовой код символа в сам символ. В переменной N у нас записан код буквы «L». C помощью функции Chr мы преобразуем этот код в букву и запишем её в символьную переменную X. Таким образом, в строке №12 на экран выведется буква «L»


Дополнение к материалу.
В приведенном выше примере функция Ord возвращает в качестве значения код переменной «X», которой присвоено значение латинской буквы «L». После записи функции Ord переменная «X» стоит в круглых скобках (строка №9). Вместо записи переменной можно напрямую записать символ, код которого необходимо получить. Этот символ необходимо заключить не только в круглые скобки, но и в апострофы. Таким образом, программу можно записать так:
01.Program number13;
02.uses crt;
03.var N:integer;
04.X: char;
05.begin
06.clrscr;
07.writeln (‘L’);
08.N:=Ord (‘L’);
09.writeln (N);
10.X:=Chr (N);
11.writeln(X);
12.readln
13.end.
Кодовая таблица ASCII.


4. Мотивация учебной деятельности обучающихся:
Создавая Паскаль, Вирт преследовал 2 цели:
во-первых, разработать язык, пригодный для обучения программированию как систематической дисциплине;
во-вторых, реализация языка должна быть эффективной и надежной на существующих вычислительных машинах.
Одним из достоинств языка Pascal является то, что он воплотил в себе идею структурного программирования, суть которой заключается в том, что с помощью нескольких конструкций можно выразить в принципе любые алгоритмы: линейные, ветвление, циклические конструкции.
Это был самый первый простой язык (ord pascal) для программирования, помогающий решить множество практических задач прошлого столетия (1970 год). Он был разработан группой ученых. С расширением платформ были созданы новые версии этой программы, а Pascal стал классическим языком программирования.
5. Выполнение практической работы.
Задание1. Составить программу вычисления суммы цифр строки.
Вычисление суммы цифр строки. Дана строка, состоящая из символов, каждый из которых является знаком «+» или цифрой, начинающаяся и заканчивающаяся цифрой. Если в строке встречается сочетание «++», то выдать сообщение об ошибке, в противном случае вычислить получившуюся сумму.
Решение.
Дана строка, состоящая из символов, каждый из которых является знаком «+» или цифрой, начинающаяся и заканчивающаяся цифрой. Если в строке встречается сочетание «++», то выдать сообщение об ошибке, в противном случае вычислить получившуюся сумму.
Решение задачи на Паскале. Эта задача рассчитана больше на знание языка программирования, чем на сообразительность. Для решения задачи можно использовать функцию "ORD", которая позволяет получить порядковый номер любого символа согласно таблице ASCII-кодов. Например, номер символа '0' - 48, а номер символа '1' - 49. Как вы понимаете, чтобы получить искомую цифру, необходимо отнять от номера символа 48.
Внимание!
Во входной строке нет пробелов!
Функция ORD будет работать в Turbo Pascal, но не будет работать в Pascal ABC.
Pascal ABS поддерживает синтаксис Delphi, поэтому необходимо заменить строку "res:= res + (ord(s[i])-48);" на "res:= res + StrToInt(s[i]);"
const
s = '2+6+8+9+1+5';
var
i,res: integer;
begin
res:=0;
for i := 1 to length(s) - 1 do
if (s[i] = '+') and (s[i+1]= '+' ) then
begin
write('Error');
exit;
end;
for i := 1 to length(s) do
if s[i] '+' then
res := res + (ord(s[i])-48);
write(res);
end.
Задание2. Составить программу определения наибольшего значения отношения трехзначного числа к сумме его цифр.
Решение задачи на Паскале. Поскольку речь идет о трехзначных числах, то диапазон начинается с самого малого из них, т.е. 100, а заканчивается самым большим трехзначным числом 999. Задачу можно решить простым перебором всех вариантов, но никакого перебора не будет.
Запустим три цикла, два из которых вложенные:
Первый будет начинаться с 1 (т.к. у трехзначного числа первая цифра не может быть нулем) и предназначен для перебора сотен.
Второй начнется с нуля - будет перебирать десятки.
Третий также с нуля - будет перебирать единицы.
Текст программы на языке Паскаль.
var
a,b,c: integer;
res: real;
begin
res := 0;
for a := 1 to 9 do
for b := 0 to 9 do
for c := 0 to 9 do
if (a*100 + b*10 + c) / (a + b + c) res then
res:= (a*100 + b*10 + c) / (a + b + c);
write('Result = ', res:0:2);
end.
Три цикла - это не самый лучший вариант, но давайте подумаем, что мы получим на первом шаге: a=1, b=0, c=0 (число 100), а сумма его цифр равна единице. Вот собственно и правильный ответ: наибольшее значение отношения трехзначного числа к сумме его цифр равно 100. Никакой цикл, по большому счету и не потребовался.
Сохраните Вашу работу и покажите её педагогу.
6. Физкультминутка.
7. Итоги учебного занятия
Ответьте на следующие вопросы:
Что нового Вы узнали, решив задания на учебном занятии?
Задания были сложными? Задания были интересными?
Над изучением каких тем в разделе «Изучение языка программирования Pascal» Вы хотели бы ещё поработать?