Паскаль для начинающих (3 урока по основным типам алгоритмов)

Разделы: Информатика


Алгоритмизация и программирование являются одной из трудных для понимания учащимися тем в предмете информатика, а при наличии дефицита часов, выделяемых на изучение предмета, перед учителем встает довольно сложная задача «Как познакомить хотя бы с основами программирования всех учащихся, в том числе и непрофильных классов?». Между тем, как мы видим и в новых стандартах и в демо-версии ЕГЭ по информатике эта тема занимает существенное место. Предлагаемые ниже материалы помогают познакомить ребят с основными алгоритмическими конструкциями и реализацией их на языке программирования Паскаль и дать начальное представление о языке. Заинтересовавшиеся учащиеся могут в дальнейшем продолжить изучение языка программирования на спецкурсе.

Предлагаю задания к трем урокам: по линейному алгоритму, ветвлению и циклам. Типы переменных и структура программы на Паскале рассматриваются на предыдущих уроках.

Начальная подготовка учащихся.

  • Знание основных алгоритмических конструкций: линейный алгоритм, ветвление, цикл.
  • Знание основных типов переменных.
  • Знание структуры программы на Паскале.

Ход урока.

Перед каждым уроком учитель раскладывает на столах «Папки ученика», в которых находятся листы с заданиями, таблица «Реализация элементов блок – схемы алгоритма на языке Паскаль», «Алгоритм создания программы по шаблону» и другой справочный материал. Если предполагается создание программы по шаблону, т.е. ученики редактируют уже имеющуюся программу, то соответствующий файл *.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 на сайте в разделе «ссылки».

Реализация элементов блок – схемы алгоритма на языке Паскаль.

Элемент блок схемы

В программе

Действия

img1.gif (1061 bytes)

BEGIN

Начало работы программы
(служебное слово)

img2.gif (1041 bytes)

END.

Конец работы программы
(служебное слово)

img3.gif (1387 bytes)

WRITE (‘A,B)

На экране появляется надпись: введите A, B
(оператор вывода данных)
img4.gif (1227 bytes)

WRITE (C)

На экране появляется значение переменной C.
(оператор вывода данных)
img5.gif (1246 bytes)

WRITE (‘результат=’,S)

На экране появляется текст результат= и значение переменной S.
(оператор вывода данных)
img6.gif (1087 bytes)

READ (X,Y)

Надо вводить два числа с клавиатуры
(оператор ввода данных)
 img7.gif (1149 bytes) C:=4*T ;
D:=A+B;
I:=I+1;
После выполнения операторов, переменным присваиваются следующие значения: C=4T, D=A+B, I=I+1 (операторы присваивания)
img8.gif (1358 bytes) IF A>B THEN

BEGIN
ОП.1
END

ELSE

BEGIN
ОП.2
END

Если условие A>B верно, то выполняется группа операторов ОП.1, в противном случае – группа операторов ОП.2 (условный оператор)
img9.gif (1383 bytes) WHILE I<=N DO

BEGIN
ОП.1
END

Пока будет выполнено I? N, выполняется группа операторов ОП.1
(оператор цикла с предусловием, ОП.1 – тело цикла)
img10.gif (1351 bytes) REPEAT
ОП.1
UNTIL I>N
Выполняется группа опера-торов ОП.1 до тех пор, пока не будет выполнено условие I>N.
(оператор цикла с постусловием, ОП.1 – тело цикла)
img11.gif (1323 bytes) FOR I:=1 TO N DO

BEGIN
ОП.1
END

Для каждого 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. Тела двигаются в противоположных направлениях.

  • Скорости вводятся с клавиатуры после вывода на экран соответствующего приглашения.
  • Направление движения каждого тела задаются буквами (L – влево, R – вправо)

Примерный вид экрана при работе

  Введите скорость 1 тела 10

Введите скорость 2 тела 5

Введите направление 1 тела L

Введите направление 2 тела R

Скорость равна 15

 
II. Добавить ввод начальных координат тел и определить сближаются или отдаляются тела.

III. Определить расстояние между телами через время t (ввести с клавиатуры).

IV. Выводить на экран текущие координаты тел.

V. Выводить на экран картину движения тел.

Примечания:
  • блок-схема и заготовка для программы даны для I;
  • II, III – повышенного уровня;
  • 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, с).

Расчетные данные (выводятся на экран):

1. Текущее положение тела (X, м).

2. Текущее время движения (T, с).

Примерный вид экрана при работе

  Введите скорость тела 10

Введите ускорение тела 2

Введите нач. положение тела 0

Введите время движения тела 200

T = 0 X = 0

T = 10 X = 200

T = 20 X = 600

………..

T = 200 X = 42000

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

III. Организовать ввод/вывод данных в других единицах (км, км/час, час) с пересчетом в программе.

Примечание: блок-схема и фрагменты программы даны для задания I.

Реализация блока расчета и вывода на экран времени движения и положения тела

Цикл с предусловием

Цикл с постусловием Цикл с параметром
img15.gif (2495 bytes) img16.gif (2496 bytes) img17.gif (2544 bytes)
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;