
- •С Кафедра моп эвм истема программирования Borland Pascal Методическая разработка к лабораторным работам фавт
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •??? Страница Directories окна свойств проекта
- •??? Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в системе Паскаль Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •If f then writeln('существует');
- •Var описание_переменных;
- •If условие then оператор1 else оператор2
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Оператор цикла с убывающим параметром
- •Контрольные вопросы
- •Var список_имен_массивов: array [тип_индекса1,тип_индекса2...] of базовый_тип;
- •Варианты заданий
- •Контрольные вопросы
- •Var список_имен_переменных:string[максимальная_длина_строки];
- •Var список_имен_переменных:string;
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами Основные сведения
- •Var имя_файловой_переменной : text;
- •Пример выполнения
- •I : integer; {счетчик символов текущей строки выходного файла}
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 9. Работа с типизированными файлами и записями Основные сведения
- •Var имя_файловой_переменной : file of тип_записи_файла;
- •Var имя_переменной_записи:имя_типа_записи;
- •Пример выполнения
- •ICurs: integer {курс }
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
- •Содержание
Оператор цикла с убывающим параметром
for параметр:=начальное_значение downto конечное_значение do оператор
Параметру присваивается начальное значение, после чего проверяется не меньше ли параметр конечного значения. Если меньше, выполнение цикла завершается, если нет, выполняется оператор и параметр уменьшается на 1, после чего он снова сравнивается с конечным значением и так до тех пор, пока параметр не получит значение меньше конечного. При изначальной ситуации, когда начальное значение меньше конечного, оператор ни разу не выполняется.
Оператор прерывания цикла
break;
Осуществляет безусловное прерывание выполнения цикла for, while или repeat и передает управление первому следующему за циклом оператору.
Оператор продолжения цикла
continue;
Осуществляет безусловный переход на следующую итерацию цикла for, while или repeat.
Пример выполнения
Дано натуральное число N. Получить все его натуральные делители.
program Primer;
var N,I:integer;
begin
writeln('введите N');
readln(N);
writeln('делители:');
for I:=1 to N do
if N mod I = 0 then writeln(I)
end.
Варианты заданий
1. Даны целые числа m, n (m<>0, n<>0). Получить все их общие делители (положительные и отрицательные).
2. Пусть ai=(i-1)/(i+1)+sin((i-1)3/(i+1)), i=1,2...n. Дано натуральное n. Среди a1 ...an выбрать наименьшее положительное число. Если положительных чисел нет, выдать сообщение.
3. Пусть a1=0.01, ak=sin(k+ak-1), k=2...1000. Определить, какие из ai, i=1,2,4,8,16... (степени 2) имеют значение, меньшее, чем 0.25. Если таковых нет, выдать сообщение.
4. Дано натуральное число n. Найти наибольшее среди чисел k*esin(k+1), k=1..n, а также сумму всех этих чисел.
5. Пусть x1=0.3, x2=-0.3, xi=i+sin(xi-2), i=3,4... . Среди x1...x1000 найти ближайшее к числу 8 и его индекс.
6. Пусть x1 = y1 = 1, xi = xi-1+yi-1/i2, yi = yi-1+xi-1/i, i=2,3... . Даны два натуральных числа m и n. Найти xm и yn.
7. Даны натуральные числа m и n. Получить (m!+n!)/(m+n)!.
8. Дано натуральное число n. Вычислить произведение первых n сомножителей: (2/1)*(2/3)*(4/3)*(4/5)*(6/5)*(6/7)*... .
9. Пусть a0=cos21, a1=-sin21, ak=2ak-1-ak-2, k=2,3... . Найти сумму квадратов тех чисел a1...a1000, которые не превосходят 2.
10. Пусть ak=sin2(3k+5)-cos(k2-15), k=1,2...1000. Определить, какие из ai, i=1,2,4,8,16... (степени 2) имеют значение, меньшее, чем 0.25. Если таковых нет, выдать сообщение.
11. Дано натуральное число n. Получить все такие натуральные q, что n делится на q2 и не делится на q3.
Контрольные вопросы
Можно ли внутри цикла for изменять значение переменной цикла ?
Каким образом можно написать цикл «по счетчику» с шагом отличным от 1 и –1 ?
В чем основные отличия циклов while и repeat until ?
Можно ли с помощью цикла while реализовать цикл for ?
Можно ли с помощью цикла while реализовать цикл repeat until?
Можно ли с помощью цикла for реализовать цикл while ?
Можно ли с помощью цикла repeat until реализовать цикл while?
Лабораторная работа 4. Использование массивов
Основные сведения
Описание массива
Var список_имен_массивов: array [тип_индекса1,тип_индекса2...] of базовый_тип;
Тип индекса может быть boolean, char, перечислимый или ограниченный.
Обращение к элементу массива имя_массива[индекс1,индекс2...]
Элемент массива является переменной базового типа массива и с ним можно производить любые операции, доступные для переменных этого типа.
Ввод и вывод массивов осуществляется только поэлементно.
Пример выполнения
Даны матрицы вещественных чисел A3x6 и B6x10. Вычислить матрицу C3x10 = A*B.
program PRIMER;
var A :array [1..3,1..6] of real;
B :array [1..6,1..10] of real;
C :array [1..3,1..10] of real;
SUM :real;
i,j,k :integer;
begin
writeln('введите A');
for i:=1 to 3 do
for j:=1 to 6 do
read(A[i,j]);
writeln('введите B');
for i:=1 to 6 do
for j:=1 to 10 do
read(B[i,j]);
for i:=1 to 3 do
for j:=1 to 10 do begin
SUM:=0;
for k:=1 to 6 do
SUM:=SUM+A[i,k]*B[k,j];
C[i,j]:=SUM
end;
writeln('матрица C:');
for i:=1 to 3 do begin
for j:=1 to 10 do
write(C[i,j]:7);
writeln
end
end.