Министерство образования Российской Федерации РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Н.Ю.Ястремская, А.В.Солдатов МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Практикум по основам программирования в среде Turbo – Pascal 7.0
г. Ростов – на – Дону 2000 год.
2
Настоящие методические указания предназначены для студентов 1 и 2 курса
физического
факультета.
Работа
посвящена
вопросам
программирования в среде TURBO-PASCAL 7.0. В ней подробно рассматриваются примеры решения задач, приводятся задания для самостоятельного решения.
3
Программирование в среде Turbo-Pascal 7.0 Рассмотрим работу в среде TURBO-PASCAL 7.0 в графической оболочке NORTON-COMANDER. Для входа в PASCAL нужно вызвать меню клавишей F2 , выбрать TURBO-PASCAL 7.0 и нажать ENTER. Запустив указанную программу, вы попадаете в основной экран интегрированной среды, представленный на рисунке 1. Первая строка экрана представляет пользователю основное меню, содержащее 10 элементов: • работа с окном WINDOWS; • FILE-работа с файлами; • EDIT-редактирование; • SEARCH-поиск; • RUN-выполнение(запуск); • COMPILE-компиляция; • TOOLS-инструменты (инструментальные средства); • OPTIONS-опции; • WINDOW-окно; • HELP-помощь. Вторая строка - имя открытого файла. При первом входе в систему, до сохранения информации, это имя всегда бывает NONAME00.PAS. Таких безымянных не сохраненных файлов может быть одновременно не более ста, и все они различаются номерами.
Функциональные клавиши
Функциональные клавиши используют для управления средой TURBO-PASCAL. Они обозначаются F1, F2,…, F12 и располагаются в
4
самом верхнем ряду клавиатуры. Приведем команды, которые передаются среде TURBO-PASCAL функциональными клавишами и некоторыми их комбинациями с клавишами Ctrl и Alt: F1 – обратиться за справкой к встроенной справочной службе (Help – помощь); F2 – записать редактируемый текст в дисковый файл; F3 – прочитать текст из дискового файла в окно редактора; F4 – используется в отладочном режиме: начать или продолжить исполнение программы и остановиться перед исполнением той ее строки, на которой стоит курсор; F5 – распахнуть активное окно на весь экран; F6 – сделать активным следующее окно; F7 – используется в отладочном режиме: выполнить следующую строку программы; если в строке есть обращение к процедуре (функции), войти в эту процедуру и остановиться перед исполнением первого ее оператора; F8 – используется в отладочном режиме: выполнить следующую строку программы; если в строке есть обращение к процедуре (функции), исполнить ее и не прослеживать ее работу; F9 – компилировать программу, но не выполнять ее; F10 – перейти к диалоговому выбору режима работы с помощью главного меню; Ctrl-F9
–
выполнить
прогон
программы:
компилировать
программу, находящуюся в редакторе, загрузить ее в оперативную память и выполнить, после чего вернуться в среду TURBO-PASCAL; Alt-F5 – сменить окно редактора на окно вывода результатов работы(прогона) программы; Alt-X – выход из TURBO-PASCAL.
5
Процесс создания программы
Процесс создания программы складывается из нескольких шагов. Вначале с помощью встроенного редактора создается текст программы. Затем запускается команда COMPILE из меню COMPILE, чтобы скомпилировать
(проверка
правильности
написания
операторов
программы) и сгенерировать исполняемый модуль. Если, выбрав в меню COMPILE в строке Destination указать Disk , и выполнить в этом режиме команду COMPILE, то наша программа становится исполняемым модулем, имеющим расширение “exe”. Если процесс завершится благополучно, после отладки файл нужно сохранить на диске. Теперь можно запускать программу командой RUN. В противном случае система укажет на ошибку и поместит курсор на строку с ошибкой. При выполнении программы в окне появляется экран MS-DOS, в котором отражаются этапы выполнения. Одновременным нажатием клавиш
+ можно переключать экраны для просмотра результатов выполнения программы. Если при выполнении программы возникают синтаксические ошибки, то система также выдает сообщение об ошибках. Если в программе присутствуют логические ошибки, то никакой диагностики не выдается, просто программа делает не то, что вы хотели. Любая программа, написанная на языке Pascal, должна состоять из названия (program …), начала программы (begin) и конца программы (end). Рассмотрим пример программы, которая выводит на экран приветствие “Добро пожаловать!”. (Рис.2) Оператор READLN нужен для того, чтобы после выполнения программы мы продолжаем находиться в окне выполнения программы. В стандартном режиме после завершения выполнения программы это окно закрывается и система возвращается в окно редактирования.
6
Структура программы В программе могут быть следующие разделы, каждый из которых, кроме последнего, завершается точкой с запятой: • заголовок программы; • раздел объявления меток; • раздел объявления констант; • раздел объявления типов; • раздел объявления переменных; • раздел объявления процедур и функций; • тело программы (обязательная часть).
Раздел 1. Вычисление функций Пример: Вычисление синуса и косинуса. PROGRAM PRG1; VAR ANGLE:REAL; RESULT1, RESULT2:REAL; BEGIN WRITELN ('ЗАДАЙТЕ ЗНАЧЕНИЕ УГЛА В РАДИАНАХ'); READ (ANGLE); RESULT1:=SIN(ANGLE); RESULT2:=COS(ANGLE); WRITELN ('СИНУС РАВЕН', RESULT1); WRITELN ('КОСИНУС РАВЕН', RESULT2); END.
7
Задание 1. Вычислить тангенс угла, заданного в радианах.(угол= 10 рад) Задание 2. Вычислить площадь круга и длину окружности.(радиус=0,25м)
Раздел 2. Оператор присваивания
Пример: Найти среднее значение двух чисел. PROGRAM PRG2; VAR FIRST,SECOND:INTEGER; SUM:INTEGER; BEGIN WRITELN ('ВВЕДИТЕ ДВА ЧИСЛА, СРЕДНЕЕ ЗНАЧЕНИЕ КОТОРЫХ ВЫ ХОТИТЕ ПОЛУЧИТЬ'); READ (FIRST,SECOND); SUM:=FIRST+SECOND; WRITELN ('СРЕДНЕЕ ЗНАЧЕНИЕ РАВНО',(SUM DIV 2)) END. Задание. Найти среднее арифметическое последовательности из трех чисел. Последовательность: 5, -1, 10.
8
Раздел 3. Условный оператор Пример: Вычислить квадратный корень из заданного числа. PROGRAM PRG3; VAR X, Y:REAL; BEGIN WRITE(‘ВВЕДИТЕ ЛЮБОЕ ЧИСЛО Х’); READ (X); IF X<0 THEN WRITE(‘КВАДРАТНЫЙ КОРЕНЬ ЗАДАННОГО ЧИСЛА НЕ СУЩЕСТВУЕТ’) ELSE BEGIN Y:=SQRT(X); WRITE(‘КВАДРАТНЫЙ КОРЕНЬ ИЗ ЗАДАННОГО ЧИСЛА X РАВЕН’,Y); END END. Задание. Вычислить корни квадратного уравнения. 1) a=6, b=7, c=4 2) a=5, b=-6, c=1 3) a=3, b=6, c=3
Раздел 4. Оператор цикла
Пример: Обработка числовых последовательностей. Вводится последовательность из N целых чисел. Найти сумму всех отрицательных
чисел.
Длина
последовательность: 5, -1, -1, 25, -48. PROGRAM PRG4; VAR N,X,SUM,I:INTEGER; BEGIN
последовательности
N=5,
9
REPEAT WRITE (‘ВВЕДИТЕ ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N=’); READ (N); UNTIL N>0; SUM:=0; FOR I:=1 TO N DO BEGIN WRITE (‘ВВЕДИТЕ Х=’); READ(X); IF X<0 THEN SUM:=SUM+X END; IF SUM=0 THEN WRITE('ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ НЕТ') ELSE WRITE (‘СУММА ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ SUM=’,SUM) END. Задание 1.Вводится последовательность из N чисел. Найти, сколько в ней нулей. Последовательность: 3, 0, -5, 1, 7, 0, -1. Задание 2.Вводится последовательность из N целых чисел. Найти наибольшее
число.
Длина
последовательности
N=5.
Последовательность: 3, -1, -9, 25, -48. Задание 3.Вводится последовательность из N целых чисел. Найти наибольшее из всех отрицательных чисел. Задание
4.Вводится
последовательность
целых
чисел,
0-конец
последовательности. Найти два наименьших числа. Последовательность: 5,4,3,2,0. Задание
5.Вводится
последовательность
чисел,
0-конец
последовательности. Определить, содержит ли последовательность хотя бы два равных соседних числа (а j =а j + 1 ). Последовательность: 5,4,4,4,0.
10
Задание 6.Вводится последовательность ненулевых чисел, 0-конец последовательности. Определить сколько раз последовательность меняет знак. Длина последовательности N=5, последовательность: 3,-1, -9, 25, 48.
Раздел 5. Символьные переменные и строки
Пример: Дана строка символов. Удалить из нее все знаки препинания. PROGRAM PRG5; VAR STR:string; L,I:INTEGER; M:SET OF CHAR; BEGIN M:=['.',',','!','?','-']; WRITELN ('Введите текст'); READLN (STR); L:=LENGTH(STR); WRITELN (‘Преобразованный текст’); FOR I:=1 TO L DO IF NOT (STR[I] IN M) THEN WRITE(STR[I]); WRITELN END. Задание 1. Дана строка символов. Удалить из нее все знаки препинания. Текст: “Казнить, нельзя помиловать!” Задание 2. Дана строка символов. Заменить в ней все “ДА” на “НЕТ”. Текст: “Понятно? Да!”
11
Задание 3. Вывести в одну строку ZYY… AA… A.. Задание 4. Дана строка символов. Заменить в ней все восклицательные знаки на точки. Текст: “ Ура! Каникулы!“ Задание 5. Дана строка символов. Заменить в ней все “А” на ”ААА”. Текст: DFGRA AA BNC. Задание 6. Дана строка символов. Заменить в ней все точки на запятые. “Лето. Жара. Хочется пить.”
Раздел 6. Одномерные массивы
Пример: Дан массив чисел. Найти значение максимального элемента. Если таких элементов несколько, то определить, сколько их. Размер массива N=6, элементы массива: 5, 6, -12, 148, 54, 148. PROGRAM PRG6; CONST M=100; VAR MAS:ARRAY [1..M] OF INTEGER; I,MAX,K,N:INTEGER; BEGIN WRITE('ВВЕДИТЕ РАЗМЕР МАССИВА N='); READLN (N); WRITE ('ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА'); READLN (MAS[1]); MAX:=MAS[1]; K:=1; FOR I:=2 TO N DO BEGIN
12
WRITE ('ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА'); READLN (MAS[I]); IF MAX<MAS[I] THEN BEGIN MAX:=MAS[I]; K:=1 END ELSE IF MAX=MAS[I] THEN K:=K+1; END; WRITELN ('MAX=',MAX,'ЭТИХ ЭЛЕМЕНТОВ‚',K) END. Задание 1. Дан массив чисел. Найти сколько в нем пар одинаковых соседних элементов. Элементы массива: 1, 5, 1, 7, 3, 3, 3. Задание 2. Дан массив чисел. Найти наибольший элемент, поставить его первым. Размер массива N=6, элементы массива 5, 12, 48, 48, 44, 6. Задание 3. Дан массив чисел. Расставить их по убыванию. Элементы массива: 23,53,12,9, 31,7.
Раздел 7. Двумерные массивы Пример: Дана матрица NxM, состоящая из натуральных чисел. Найти в ней наименьший элемент и определить его местоположение. Если таких элементов несколько, то вывести на экран положение каждого из них. Количество строк N=3, количество столбцов M=6.
13
2
2
0
-17
25
-17
3
4
10
-17
0
0
5
4
10
-17
20
45
PROGRAM PRG7; CONST T=100;S=100; VAR A:ARRAY [1..T,1..S] OF INTEGER; N,M,IM,JM,I,J,MIN,K:INTEGER; BEGIN WRITE ('ВВЕДИТЕ КОЛИЧЕСТВО СТРОК N='); READLN (N); WRITE ('ВВЕДИТЕ КОЛИЧЕСТВО СТОЛБЦОВ M='); READLN(M); FOR I:=1 TO N DO BEGIN WRITELN('ВВЕДИТЕ ЧЕРЕЗ ПРОБЕЛ ‘,M,’ЧИСЕЛ'); FOR J:=1 TO M DO READ (A[I,J]) END; MIN:=A[1,1]; IM:=1;JM:=1;K:=0; FOR I:=1 TO N DO FOR J:=1 TO M DO IF MIN>A[I,J] THEN BEGIN K:=1;IM:=I;JM:=J; MIN:=A[I,J] END ELSE IF MIN=A[I,J] THEN K:=K+1;
14
IF K=1 THEN BEGIN WRITELN('В МАТРИЦЕ ОДИН МИНИМАЛЬНЫЙ ЭЛЕМЕНТ’ MIN=',MIN); WRITELN('В',IM,'СТРОКЕ, В',JM,'СТОЛБЦЕ') END ELSE BEGIN WRITELN('В МАТРИЦЕ',K,'МИНИМАЛЬНЫХ ЭЛЕМЕНТОВ MIN=',MIN); FOR I:=IM TO N DO FOR J:=1 TO M DO IF MIN=A[I,J] THEN WRITELN('В СТРОКЕ',I, 'В СТОЛБЦЕ',J) END END. Задание 1. Дана матрица NxM, состоящая из натуральных чисел. Найти в строках
самые
правые
наименьшие
элементы
и
определить
их
местоположение. Матрица: 2
7
11
31
1
0
1
5
3
5
6
10
42
8
4
7
Задание 2. Дана квадратная матрица NxN, состоящая из натуральных чисел. Повернуть ее на 90 градусов по часовой стрелке и вывести результат на экран. Задание 3. Дана квадратная матрица NxN, состоящая из натуральных чисел. Зеркально отразить ее элементы относительно горизонтальной оси симметрии. Вывести результат на экран.
15
Задание 4. Дана квадратная матрица NxN, состоящая из натуральных чисел. Зеркально отразить ее элементы относительно главной диагонали. Вывести результат на экран. Матрица:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Раздел 8. Процедуры и функции
Пример: Написать процедуру ввода элементов матрицы T. PROGRAM PRG8; CONST U=100; VAR N,M:INTEGER; T:ARRAY[1..U,1..U] OF INTEGER; PROCEDURE TAB(VAR L,K:INTEGER); VAR I,J:INTEGER; BEGIN FOR I:=1 TO L DO BEGIN FOR J:=1 TO K DO BEGIN WRITE('T[',I,',',J,']='); READ(T[I,J]) END; WRITELN
16
END; END; BEGIN WRITELN('ВВЕДИТЕ РАЗМЕР МАТРИЦЫ N X M'); WRITE('N='); READ(N); WRITE('M='); READ(M); TAB(N,M) END. Задание 1. Написать процедуру вывода элементов матрицы Т. Задание 2. Написать функцию, которая из двух целых чисел выбирает наименьшее число. Задание 3. Написать функцию, которая из двух целых чисел выбирает наибольшее число. Задание 4. Написать функцию, которая находит сумму цифр целого числа.
Раздел 9. Работа с текстом. Графика
Пример 1: На экране несколько раз разными цветами напечатать фразу ONE MOMENT, PLEASE…, расположив эти надписи лесенкой.
PROGRAM PRG91; USES CRT; VAR I:INTEGER;
17
BEGIN TEXTBACKGROUND(2); CLRSCR; DELAY(1000); TEXTCOLOR(0); FOR I:=1 TO 11 DO BEGIN TEXTCOLOR(I+4); WRITELN; WRITE(' ':2*I); WRITELN('ONE MOMENT,PLEASE...'); DELAY(1500); END; READLN; TEXTBACKGROUND(1); CLRSCR END. Задание 1. Нарисовать на экране прямоугольник и заставить его двигаться по горизонтали, сопровождая движение звуком. Задание 2. Нарисовать на экране прямоугольник и заставить его двигаться по вертикали, сопровождая движение звуком. Задание 3. Нарисовать на экране прямоугольник и заставить его двигаться по диагонали, сопровождая движение звуком.
18
Пример 2: Построить семейство одинаковых кругов, центры которых расположены на синусоиде. PROGRAM PRG92; USES GRAPH, CRT; VAR DRIVER, MODE, X,Y:INTEGER; BEGIN DRIVER:=DETECT; INITGRAPH(DRIVER,MODE,'C:\BP\BGI'); SETCOLOR(3); SETFILLSTYLE(1,1); FLOODFILL(1,4,1); X:=-5; Y:=GETMAXY DIV 2; SETCOLOR(16); REPEAT X:=X+10; Y:=GETMAXY DIV 2+ TRUNC(50*SIN(10*X)); SETFILLSTYLE(1,10); FILLELLIPSE(X,Y,20,20); UNTIL X>=GETMAXX; REPEAT UNTIL KEYPRESSED; CLOSEGRAPH END. Задание 1. Построить семейство одинаковых окружностей, центры которых лежат на расходящейся спирали.
19
Приложение Меню FILE (“Файл”) Это меню предназначено для открытия существующих файлов, создания новых сохранения и вывода на печать и выхода из среды BORLAND PASCAL 7.0. Меню “Файл” содержит следующие опции: NEW (новый)-позволяет создать новый файл; OPEN (открыть)-позволяет открыть сохраненный ранее файл с расширением *.pas; SAVE (сохранить) –позволяет сохранить открытый файл на диске; SAFE AS (сохранить как)-позволяет сохранить открытый файл, но запрашивает имя файла, под которым будет проведено сохранение; SAVE ALL (сохранить все)-сохраняет все открытые файлы, а не только текущий; PRINT (вывести на печать)-распечатывает текст программы в текущем окне; EXIT (выход)-прекращает работу со средой и осуществляет выход в WIDOWS. Выход
из
среды
можно
произвести
с
помощью
“горячих
клавиш”+.
Меню RUN (“Выполнение”, или “Запуск”) Меню позволяет запускать программу на выполнение. Содержит в себе 2 опции:
20
RUN
(запустить
программу)-
+-позволяет
запустить
программу на выполнение, если ее текст не был изменен, если да, то выводится окно с вопросом, нужно ли ее перекомпилировать. PARAMETRS (параметры)-позволяет задать такие же параметры, как при запуске программы с помощью командной строки.
Меню COMPILE (“Компилировать”) Позволяет управлять процессом компиляции. Это меню содержит опцию: COMPILE (компилировать)-+-компилирует файл, находящийся в активном окне. Если обнаружена синтаксическая ошибка, выдается сообщение о ней и курсор устанавливается на место ошибки; INFORMATION
(информация)-выводит
информацию
о
текущем
(основном) файле. Зарезервированные слова Приведенные слова не могут быть переопределены. AND-логическое И ARRAY-объявление массива BEGIN-начало тела программы, подпрограммы или составного оператора CONST-задание константы DIV-получение целой части от деления DO-признак начала оператора цикла DOWNTO-указание на просмотр элементов цикла от большего значения к меньшему ELSE-альтернативная часть в условном операторе END-конец тела программы, подпрограммы или составного оператора
21
FOR-начало безусловного цикла FUNCTION-начало объявления функции GOTO-оператор перехода IF-начало условного оператора IN-проверка принадлежности множеству LABEL-объявление метки MOD-получение остатка от деления OF-тип –компонент в определении массива PROCEDURE-начало объявления процедуры PROGRAM-заголовок программы REPEAT-начало цикла с постусловием STRING-объявление стоки SQR-квадрат числа SQRT-квадратный корень из числа THEN-часть условного оператора TO-указание на просмотр элементов цикла от меньшего значения к большему TYPE-идентификатор раздела типов UNTIL-конец цикла с постусловием VAR-идентификатор раздела переменных WHILE-начало цикла с предусловием
22
Рис.1
23
Рис.2
24
Литература 1. А.И.Гусева, Учимся программировать:PASCAL 7.0., Москва, ДиалогМИФИ, 1997г., 2. Д.Прайс,
Программирование
на
языке
Паскаль
(практическое
руководство), Москва “Мир”, 1987г. 3. Фаронов В.В., TURBO-PASCAL 7.0, Начальный курс, учебное пособие., Москва, “Нолидж”, 1997г.