Алгоритмизация и программирование являются одной из трудных для понимания учащимися тем в предмете информатика, а при наличии дефицита часов, выделяемых на изучение предмета, перед учителем встает довольно сложная задача «Как познакомить хотя бы с основами программирования всех учащихся, в том числе и непрофильных классов?». Между тем, как мы видим и в новых стандартах и в демо-версии ЕГЭ по информатике эта тема занимает существенное место. Предлагаемые ниже материалы помогают познакомить ребят с основными алгоритмическими конструкциями и реализацией их на языке программирования Паскаль и дать начальное представление о языке. Заинтересовавшиеся учащиеся могут в дальнейшем продолжить изучение языка программирования на спецкурсе.
Предлагаю задания к трем урокам: по линейному алгоритму, ветвлению и циклам. Типы переменных и структура программы на Паскале рассматриваются на предыдущих уроках.
Начальная подготовка учащихся.
- Знание основных алгоритмических конструкций: линейный алгоритм, ветвление, цикл.
- Знание основных типов переменных.
- Знание структуры программы на Паскале.
Ход урока.
Перед каждым уроком учитель раскладывает на столах «Папки ученика», в которых находятся листы с заданиями, таблица «Реализация элементов блок – схемы алгоритма на языке Паскаль», «Алгоритм создания программы по шаблону» и другой справочный материал. Если предполагается создание программы по шаблону, т.е. ученики редактируют уже имеющуюся программу, то соответствующий файл *.pas с текстом программы должен находится на жестком диске в соответствующем каталоге.
Для знакомства с реализацией алгоритмической конструкции средствами языка используется сайт http://schools.keldysh.ru/gym1522/inform/pascal/ (см. Приложение1)
Обсуждается задание, проговаривается сценарий, составляется блок-схема алгоритма.
Далее ученики работают самостоятельно по предложенному заданию. На каждый тип алгоритма дано несколько заданий, одно выполняется в классе, остальные могут быть домашним или дополнительным заданием.
В качестве заданий на ветвление и циклы взяты задачи по физике, так как программирование изучается на уроках интегрированного с физикой курса «Компьютерное моделирование физических процессов и явлений» в 9 классе.
Описание приложений.
- Адрес сайта «Паскаль для начинающих» - http://schools.keldysh.ru/gym1522/inform/pascal/ Немного сокращенный вариант находится в архиве (Приложение1.zip). Сайт выполнен с использованием флэш-технологии, позволяет в анимационной форме дать начальное представление о языке Паскаль 7.0 Для демонстрации надо разархивировать в каталог на жестком диске. Главная страница сайта – index.html
- Тексты программ для создания программ по шаблону – файлы Приложение2.pas и Приложение3.pas. Их надо переименовать в Shablon1.pas и Shablon2.pas и поместить в соответствующий каталог на диске.
Использованная литература дана в Приложении 1 на сайте в разделе «ссылки».
Реализация элементов блок – схемы алгоритма на языке Паскаль.
Элемент блок схемы |
В программе |
Действия |
BEGIN |
Начало работы
программы |
|
END. |
Конец работы
программы |
|
WRITE (‘A,B) |
На экране появляется надпись:
введите A, B (оператор вывода данных) |
|
WRITE (C) |
На экране появляется значение
переменной C. (оператор вывода данных) |
|
WRITE (‘результат=’,S) |
На экране появляется текст результат=
и значение переменной S. (оператор вывода данных) |
|
READ (X,Y) |
Надо вводить два числа с
клавиатуры (оператор ввода данных) |
|
C:=4*T ; D:=A+B; I:=I+1; |
После выполнения операторов, переменным присваиваются следующие значения: C=4T, D=A+B, I=I+1 (операторы присваивания) | |
IF A>B THEN
ELSE
|
Если условие A>B верно, то выполняется группа операторов ОП.1, в противном случае – группа операторов ОП.2 (условный оператор) | |
WHILE I<=N DO
|
Пока будет выполнено I? N, выполняется
группа операторов ОП.1 (оператор цикла с предусловием, ОП.1 – тело цикла) |
|
REPEAT ОП.1 UNTIL I>N |
Выполняется группа опера-торов
ОП.1 до тех пор, пока не будет выполнено
условие I>N. (оператор цикла с постусловием, ОП.1 – тело цикла) |
|
FOR I:=1 TO N DO
|
Для каждого I от 1
до N выполняется группа операторов ОП.1
(оператор цикла с параметром, I – параметр цикла) |
Линейный алгоритм. Простейшая программа (ввод/вывод данных, вычисление суммы, разности, произведения и частного двух чисел).
Задание Написать программу, которая
Примерный вид экрана при работе |
|||
Введите свое
имя Вася Привет, Вася Введите 2 числа 2 6 Сумма чисел равна 8 |
Для выполнения задания можно использовать приведенный ниже текст программы или заранее подготовленный учителем файл Shablon1.pas (файл Приложение2.pas) с текстом программы, который находится в каталоге CLASS (там же находятся личные папки учащихся). Ученик проставляет вместо вопросительных знаков необходимые операторы и служебные слова. Комментарии в фигурных скобках поясняют, что необходимо сделать. Программа состоит из двух частей. В первой части программы демонстрируется использование операторов ввода и вывода, во второй, после комментария {ЗАДАНИЯ}, ученику надо самому записать необходимые операторы, используя приведенную выше блок-схему и комментарии в программе. Алгоритм создания программы по шаблону дан ниже.
Текст программы по линейному алгоритму
PROGRAM P1;
{Объявление переменной S для ввода имени, надо указать тип переменной - строковый}
VAR S: ???? ;
{Объявление переменных A и B для ввода чисел, надо указать тип переменных - целые числа со знаком}
VAR A,B: ???? ;
{Объявление переменной C для вывода результата, надо указать тип переменной - все действительные числа}
VAR C: ???? ;
{Начало раздела инструкций}
BEGIN
{Оператор вывода на экран сообщения (просьба ввести имя)}
WRITE ('Введите свое имя');
{Оператор ввода данных (значение переменной S = имя пользователя)}
READLN (S);
{Вывод на экран сообщения (приглашения к работе) – слово "Привет" и значение переменной S (введенное пользователем имя)}
WRITELN ('Привет, ', S);
{ЗАДАНИЯ:}
{1)Запишите оператор вывода на экран приглашения к вводу 2 чисел (переменные A и В)}
???????
{2) Запишите оператор ввода для переменных A и В}
???????
{3) Запишите оператор присваивания для вычисления значения переменной С (сумма, разность, произведение, частное двух чисел)}
C:=?????;
{4) Запишите оператор вывода на экран результата вычислений (сумма (разность, произведение, частное) = <значение переменной>}
????????
{Конец программы, конец раздела инструкций}
END.
Ветвление. Моделирование равномерного прямолинейного движения двух тел.
Задания Построить компьютерную модель движения двух тел. I. Найти скорость сближения (удаления) 2-х тел. Рассмотреть случаи: 1. Тела двигаются в одном направлении. 2. Тела двигаются в противоположных направлениях.
Примерный вид экрана при работе |
|||
Введите скорость 1
тела 10 Введите скорость 2 тела 5 Введите направление 1 тела L Введите направление 2 тела R Скорость равна 15 |
|||
II. Добавить ввод начальных
координат тел и определить сближаются или
отдаляются тела. III. Определить расстояние между телами через время t (ввести с клавиатуры). IV. Выводить на экран текущие координаты тел. V. Выводить на экран картину движения тел. |
|||
Примечания:
|
Текст программы на ветвление
PROGRAM P2;
{Объявление переменных V1, V2 и V для значений скоростей, тип переменных - целые числа со знаком }
VAR V1, V2, V: ??? ;
{Объявление переменных A1 и A2 для значений направлений, значения переменных - символы}
VAR A1, A2: ??? ;
{Начало раздела инструкций}
BEGIN
{Оператор вывода на экран сообщения (просьба ввести скорость первого тела)}
WRITE ('Введите скорость 1 тела');
{Оператор ввода данных (значение переменной V1)}
READLN (V1);
{Тоже для второго тела}
?????????????
?????????????
{Аналогично осуществить ввод направлений движения}
WRITE ('Введите направление 1 тела' );
READLN (A1);
?????????????
?????????????
{Условный оператор: проверка условия равенства значений переменных A1 и A2}
IF A1 = A2 THEN V := V1 - V2 ELSE V := V1 + V2;
{Определение модуля вектора ABS – функция вычисление абсолютной величины}
V:=ABS(V);
{Оператор вывода на экран результата вычислений }
????????
{Конец программы, конец раздела инструкций}
END.
Текст программы находится в файле Приложение3.pas (в кодировке MS DOS). Его надо переименовать в Shablon2.pas и можно использовать при создании программы по шаблону (см. алгоритм ниже).
Алгоритм создания программы по шаблону.
1. Войти в систему программирования Turbo Pascal 7.0.
2. Открыть файл ShablonK.pas (K - номер шаблона):
2.1. File -> Open
2.2. Перейти в каталог CLASS (в списке Files выбрать ..\)
2.3. Выбрать файл ShablonK.pas (K - номер шаблона)
2.4. Подтвердить выбор (Open)
3. Выполнить задание, заменяя ????.
4. Сохранить файл в своем каталоге:
4.1. (File -> Save as)
4.2. Убедится, что находитесь в своем каталоге (нижняя строчка)
4.3. Ввести имя файла
4.4. Подтвердить сохранение (Ok)
5. Запустить программу (Run -> Run или Ctrl+F9)
6. При наличии ошибок, внести изменения в программу и повторить пункт 5.
7. Просмотреть результат выполнения программы (Debug User Screen или Alt+F5)
8. Сохранить файл (File -> Save или F2)
9. Выйти из системы программирования (File -> Exit или Alt+X)
Для циклического алгоритма уже текст программы не дается. Учащиеся должны сами составить программу по блок – схеме.
Циклы. Моделирование равноускоренного движения.
Задания Построить модель равноускоренного движения тела (X=X0+V0t+At2/2). I.. Тело двигается по прямой. Выводить на экран координату тела через каждые 10 секунд движения. Исходные данные (задаются с клавиатуры): 1. Начальная скорость тела (V0, м/с). 2. Ускорение тела со знаком (A, м/с2). 3. Начальное положение тела (X0, м). 4. Время движения (TK, с). Расчетные данные (выводятся на экран):
Примерный вид экрана при работе |
|||||
Введите
скорость тела 10 Введите ускорение тела 2 Введите нач. положение тела 0 Введите время движения тела 200 T = 0 X = 0 T = 10 X = 200 T = 20 X = 600 ……….. T = 200 X = 42000 |
|||||
II. Рассмотреть случай, когда
известно конечное положение тела, но неизвестно
время движения. III. Организовать ввод/вывод данных в других единицах (км, км/час, час) с пересчетом в программе. Примечание: блок-схема и фрагменты программы даны для задания I. |
|||||
Реализация блока расчета и вывода на экран времени движения и положения тела |
|||||
Цикл с предусловием |
Цикл с постусловием | Цикл с параметром | |||
x:=x0; t:=0; While T <= TK do begin X:=X0+V0*T+A*T*T/2; Writeln (‘T = ‘,T,’ X = ‘,X); T:=T+10; end; |
X:=X0; T:=0; Repeat X:=X0+V0*T+A*T*T/2; Writeln (‘T = ‘,T,’ X = ‘,X); T:=T+10; Until T>=TK; |
X:=X0; T:=0; N:=Trunc(TK/10); For i:=0 to N do begin T:=i*10; X:=X0+V0*T+A*T*T/2; Writeln (‘T = ‘,T,’ X = ‘,X); end; |