Методические указания к лабораторным работам по теме "Turbo Pascal"
Оценка 4.8

Методические указания к лабораторным работам по теме "Turbo Pascal"

Оценка 4.8
Лабораторные работы
doc
информатика
Взрослым
30.04.2018
Методические указания к лабораторным работам по теме "Turbo Pascal"
все лабораторные работы Pascal.doc
Программирование линейных алгоритмов Цель работы: выработать практические навыки работы с системой Turbo Pascal, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме диалога, познакомиться с диагностическими   сообщениями   компилятора   об   ошибках   при   выполнении   программ,  реализующих   линейные алгоритмы.  Общие сведения: Линейным  называется  алгоритм,  в котором  результат  получается  путем  однократного   выполнения заданной последовательности   действий   при   любых   значениях   исходных   данных.   Операторы   программы   выполняются последовательно, один за другим, в соответствии с их расположением в программе.  Пример1 Пример1:  Определить расстояние на плоскости между двумя точками с заданными координатами M1(x1,y1) и   M2(x2,y2) Этапы решения задачи:  1. Математическая   модель:   расстояние   на   плоскости   между   двумя   точками   M1(x1,y1)   и   M2(x2,y2) высчитывается по формуле  2. Составим схему алгоритма Уточним содержимое блокас "Вычисление и печать расстояния"  Дальнейшая детализация не требуется. Переводим блок­схему на язык Паскаль.  program example1; var x1, x2, y1, y2: integer;     d:real;  begin      write('x1= '); readln(x1);      write('y1= '); readln(y1);      write('x2= '); readln(x2);      write('y2= '); readln(y2);      d:=sqrt(sqr(x2­x1)+sqr(y2­y1));  writeln('d=',d);  end.  Доработаем программу, так чтобы она обладала некоторым интерфейсом.:  program example1;  var x1, x2, y1, y2: integer;      d:real;  begin      writeln('Эта программа вычисляет расстояние между двумя точками на плоскости');      writeln('Введите координаты двух точек:');      write('x1= '); readln(x1);      write('y1= '); readln(y1);      write('x2= '); readln(x2);      write('y2 ='); readln(y2);      d:=sqrt(sqr(x2­x1)+sqr(y2­y1));      writeln('d= ',d);      writeln('нажмите Enter для завершения работы программы');      readln;  end.  Пример2 Пример программы для решения квадратного уравнения Program  Decision_of_quadratic_equalation; var    a, b, c, D, x1, x2 : real;      begin      { Ввод коэффициентов уравнения }      writeLn ('Решение квадратного уравнения: ');      writeLn ('Введите последовательно коэффициенты a,b,c');      readLn ( a, b, c );      { Вычисление дискриминанта }      D := sqr (b) ­ 4 * a * c;      { Вычисление корней }      x1 := (­ b ­ sqrt (D)) / (2 * a);      x2 := (­ b + sqrt (D)) / (2 * a);      { Вывод результата }      writeLn ('Корни уравнения:');      writeLn ('X1 = ', x1 : 8 : 5);      writeLn ('X2 = ', x2 : 8 : 5); end. Сделаем некоторые комментарии   В программе отсутствует проверка знака у дискриминанта D .   При вычислении дискриминанта используЮтся встроенные математические функции sqr(b), sqrt(D) ,  возвращающие квадрат числа b и квадратный корень из числа D соответственно. Список встроенных  математических функций Вы можете найти в конспекте.   Вероятно, Вы уже знакомы с операторами ввода и вывода : write(), writeLn(), read(), readLn() .  Операторы вывода предоставляют возможность форматированного вывода значений. На примере  оператора writeLn ('X1 = ', x1 : 8 : 5) это означает, что у переменной x1 будет выведено только 8  знаков, причём, 5 знаков после запятой и 2 знака перед запятой, поскольку один знак будет отведён под  точку (8 = 2 + 1 + 5). Если у переменной x1 будет 10 знаков до запятой, то выведутся все 10 знаков.  При решении предложенных задач предлагается использовать предложенный стиль программирования. Часто  при решении задач необходимо использовать случайные значения чисел.  Пример3 Пример3: Вывод случайных чисел.  Program  RAND; var    a, b, c : real;      begin      { Инициализация начального элемента псевдослучайных чисел}      Randomize;      { a ­ cлучайное число от 0 до 1 }      a := Random();      { b ­ cлучайное число от 0 до 100 }      b := Random(100);      { c ­ cлучайное число от 5 до 18 }      c := Random(13) + 5;      { Вывод полученных значений }      writeLn (' Значение  a = ', a);      writeLn (' Значение  b = ', b);      writeLn (' Значение  c = ', c);   end.    Задание 1 Задания для самостоятельно работы:       Даны x, y, z . Вычислить a, b, если: 1.       2. 3. 4. 5. 6. 7. 8.                                     9.       10.       11.       12.       13. 14.       15.       16.       17.       18.       19.       20.       21.       22.       23.       24.       25. 26.       27.       28.       29.       30. 31.             32.       33.       Задание 2 Задания для самостоятельно работы: 1. Записать оператор присваивания, который будет менять знак у переменной Y.  (Примечание. В Паскале знак присваивания выглядит как :=. Оператор присваивания записывается в  соответствии с общим правилом: Х:=А, где X — идентификатор переменной, А — выражение. )  2. Чему будут равны значения переменных X и Y после выполнения следующих операторов:  X:=3; Y:=6; X:=2*Y; Y:=Xmod5; 3. Присвоить переменной A сумму цифр двузначного числа B.  (Примечание. Воспользоваться функциями div, mod). 4. Напишите программу, запрашивающую три стороны треугольника A, B, C и вычислящую его площадь по  формуле Герона: S=(p(p­a)(p­b)(p­c))1/2, где p=(a+b+c)/2 — полупериметр. 5. Напишите программу, запрашивающую ваш год рождения, год рождения вашей мамы и печатающую, во  сколько лет вас родила мама. 6. Напишите программу, запрашивающую высоту дома h(в метрах), ускорение свободного падения g и  вычисляющую время падения кирпича t (в секундах) с крыши этого дома по формуле t=(2h/g)1/2. Задание 3 Присвоить случайным образом значения числовым переменным а1, а2,..., а10, а11, а12 . Вывести на экран  значения этих переменных следующей таблицей:               1. 4. 7. а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 а1 а2 а3 а4 а5 а6 а7 а8 10. а1 а2 а3 а4 а5 а6 а7 а8 2. 5. 8. а1 а2 а3 а4 а5 а6 а7 а8 а9 а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 а11 а12 а1 а2 а3 а4 а5 а6 а7 а8 а9 3. 6. 9. а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 11. а1 а2 а3 а4 а5 а6 а7 а8 а9 12. а1 а2 а3 а4 а5 а6 а7 а8 а9 13. а1 а2 а3 а4 a5 а6 а7 а8 а9 а10 14. а1 а2 а3 а4 а5 а6 а7 а8 15. а12 а11 а10 a9 а8 а7 a6 a5 а4 а3 а2 a1 Задачи повышенной сложности 1. Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление соединения.  2. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.  3. Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.  4. Треугольник задан координатами своих вершин. Найти:   периметр треугольника;   площадь треугольника.  5. Вычислить высоту треугольника, опущенную на сторону а, по известным значениям длин его сторон a, b,  c.  6. Вычислить объем цилиндра с радиусом основания r и высотой h.  7. Определить расстояние, пройденное физическим телом за время t, если тело движется с постоянным  ускорением а и имеет в начальный момент времени скорость V0  8. Вычислить площадь треугольника по формуле Герона, если заданы его стороны.  9. Определить координаты вершины параболы y=ax2+bx+c (a№0). Коэффициенты a,b,c заданы.  10. 11. По данным сторонам прямоугольника вычислить его периметр, площадь и длину диагонали.  Студент начал решать задачи данного урока программирования, когда электронные часы  показывали h1 часов и min1 минут, а закончил, когда было h2 часов и min2 минут. Составьте программу,  позволяющую определить, сколько времени студент решал эти задачи. (Будем считать, что задачи  решались не дольше суток.)  12. Дано действительное число а. Не пользуясь никакими другими операциями, кроме умножения,  получить: а) а4 за две операции; б) а6 за три операции; в) а7 за четыре операции; г) а8 за три операции; д) а9 за четыре операции; е) а10 за четыре операции; ж) а13 за пять операций; з) а15 за пять операций; и) а21  за шесть операций; к) а28 за шесть операций; л) а64 за шесть операций;  13. Найти максимум и минимум двух натуральных чисел не используя ветвления алгоритма. ПРОГРАММЫ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ ЦЕЛЬ РАБОТЫ: Закрепление знаний о программах разветвляющейся структуры, составление  программы и работа с ней. 2. ОСНОВНЫЕ СВЕДЕНИЯ  Алгоритм разветвляющейся структуры ­ это алгоритм, в котором вычислительный процесс осуществляется либо по одной, либо по другой ветви, в зависимости от выполнения некоторого условия. Программа разветвляющейся структуры реализует такой алгоритм.  2.1. Условный оператор IF  В программе разветвляющейся структуры имеется один или несколько условных операторов.  Условный оператор в языке Паскаль имеет формат:  if  <условие> then <оператор1> else <оператор2>;  (полная форма)    или  if <условие> <оператор1>;   (сокращенная форма). Точка с запятой перед зарезервированным словом else не ставится.  При выполнении условия исполняется оператор1, при невыполнении ­ оператор2 (при полной форме условного  оператора). Для неполной формы условного оператора при выполнении условия исполняется оператор1, в  противном случае оператор1 пропускается и исполняется оператор, следующий за условным оператором.  Оператор1 и оператор2 могут представлять простые операторы (один оператор), в этом случае они не  заключаются в операторные скобки. Если же оператор1 и/или оператор2 представляют составной оператор  (несколько операторов), то их нужно заключить в операторные скобки begin : end.  Пример1 В качестве примера приведем программу вычисления наибольшего из значений функции y1=x2+1, y2=7­x2 или  y=x+1 для любого x .   program    razvetvl ; {программа разветвляющейся структуры}    var           x , y1 , y2 , y3 ,  max :  real;    begin     writeln ('Введите x');     readln (x);      y1:=x*x+1;      y2:=7­x*x ;      y3:=x+1;      if  y1> y2   then   max:=y1 else max:=y2;      if   y3 > max   then         max:=y3;      writeln (' y1=',y1: 6:2'  y2=',y2: 6:2, '  y3=',y3: 6:2,);      writeln ('при x=',x: 6:2,'  наибольшее  значение функций=',max: 6:2);  end.  2.2. Оператор варианта Case  Если количество разветвлений программы больше двух, то используется оператор вариантов Case, который  является более общим случаем условного оператора. Оператор Case выполняет один из нескольких операторов  в зависимости от значения селектора. Если селектор не совпадает ни с одним из значений, то выполняется  оператор после else или следующий после case, если else отсутствует. Селектор может быть целого, символьного, перечислимого, интервального типа или выражением.  Пример2 Например, определим время года по введенному номеру месяца.  Program  lab3; {  множественный выбор} Label m;   Var    num: integer;  begin  m: writeln ('Введите номер месяца');     readln (num);     write ('Время года: ', num);     case num of { выбор значений селектора num}       1, 2, 12:   writeln ('Зима');       3..5:       writeln  ('Весна');       6..8:       writeln ('Лето');       9..11:      writeln ('Осень');       else             begin writeln ('нет с таким номером месяца!'); goto m  ; end;      end {завершение оператора case} end. В приведенном примере программы при вводе номера месяца от 1 до 12 на экране печатается соответствующее  время года и выполнение программы заканчивается. Если же номер месяца превышает 12 или меньше 0, то  выводится сообщение о неверном вводе месяца, для чего служит зарезервированное слово else и выполняется  переход на ввод нового значения месяца с помощью метки m. В данной программе num ­ селектор.  3. ВЫПОЛНЕНИЕ РАБОТЫ  1. Набрать и откомпилировать приведенные выше программы, исправить выявленные ошибки. Ввести  несколько вариантов значений аргумента (в различных интервалах), вычислить функцию вручную и  сравнить с полученными по программе результатами.  2. Составить программы разветвляющейся структуры согласно вариантам задания 1 (используя IF) и  задания 2 (используя CASE) , откомпилировать ее, ввести исходные данные, проверить полученный  результат.  Варианты задания 1  1. Даны четыре числа X, Y, W и Z. Определить сколько среди них отрицательных.  2. Даны четыре числа K, L, M и N. Определить порядковый номер наименьшего среди этих чисел.  3. Даны два числа Y и Z. Большее из этих двух чисел заменить их полусуммой, а меньшее удвоенным  произведением.  4. Даны три числа Х, Y и Z. Меньшее среди них заменить на 0 .  5. Даны четыре числа А, В, С и D. Найти разность между наибольшим и наименьшим среди них.  6. Даны три числа K, M и N. Поменять их значения местами таким образом, чтобы K < M < N.  7. Даны четыре разных числа X, F, Y, Z. Найти среди них два наибольших.  8. Даны три числа L, M и N. Поменять местами большее и меньшее из этих чисел .  Варианты задания 2  1. Вводится число экзаменов N<=20. Напечатать фразу "Мы успешно сдали N экзаменов", согласовав слово "экзамен" с числом N. Предусмотреть ситуацию ввода N<0.  2. Вводится число ­ номер месяца. Вывести количество дней в месяце (год невисокосный). Предусмотреть  неправильный ввод номера месяца.  3. Вводится число лет (N<=25). Напечатать фразу "Мне N лет", согласовав слово "лет" с числом N.  Предусмотреть ситуацию ввода N<0.  4. Вводится число книг N<=10. Вывести фразу "Я взял из библиотеки N книг", согласовав слово "книга" с числом N. Предусмотреть ситуацию ввода N<0. 5. Вводится число карандашей N<=10. Вывести фразу "Я купил N карандашей", согласовав слово  "карандаш" с числом N. Предусмотреть ситуацию ввода N<0.  6. Вводится число версий N<=10. Вывести фразу "Следователь проверил N версий", согласовав слово  "версия" с числом N. Предусмотреть ситуацию ввода N<0.  7. Вводится число программ N<=10. Напечатать фразу "Я разработал N программ", согласовав слово  "программа" с числом N. Предусмотреть ситуацию ввода N<0.  8. Вводится целое число С. Если ­9<=C<=9 вывести величину числа в словес ной форме с учетом знака, в  противном случае ­ предупреждающее сообщение и повторный ввод.  Задачи повышенной трудности Даны действительные положительные числа x, y, z. Выяснить, существует ли треугольник с длинами сторон x, y,  z.  1. Дано действительное а. Для функции f(a), график которой представлен на рисунке, вычислить f(a).  2. Пусть D ­ заштрихованная часть плоскости и пусть u определяется по x и y следующим образом (запись  (х, у)ОD означает, что точка с координатами х, у принадлежит D):  a) b) 1. Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).  2. Даны действительные числа x, y. Если x, y отрицательны, то каждое значение заменить его модулем; если  отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательны и ни одно из них не принадлежит отрезку [0.5, 2.0], то оба значения уменьшить в 10 раз; в остальных  случаях x, y оставить без изменения.  3. Определить и вывести на печать номер квадранта, в котором расположена точка М(x,y), x и y заданные  вещественные числа.  4. Из величин, определяемых выражениями a=sinx, b=cosx, c=ln|x| при заданном х, определить и вывести на  экран дисплея минимальное значение.  5. Определить, какая из двух точек ­ M1(x1,y1) или M2(x2,y2) ­ расположена ближе к началу координат.  Вывести на экран дисплея координаты этой точки.  6. Определить, какая из двух фигур (круг или квадрат) имеет большую площадь. Известно, что сторона  квадрата равна а, радиус круга r. Вывести на экран название и значение площади большей фигуры.  7. Определить, попадает ли точка M(x,y) в круг радиусом r с центром в точке (x0,y0)  8. Две точки заданы на плоскости своими координатами, которые могут быть как декартовыми, так и  полярными. Требуется вычислить расстояние между этими двумя точками.  1. Даны действительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a,b,c в прямоугольное  отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из  его ребер было параллельно или перпендикулярно каждой из сторон отверстия.  2. Сможет ли шар радиуса R пройти в ромбообразное отверстие со стороной P и острым углом Q?  3. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет  заданные условия:   квадрат заданного трехзначного числа равен кубу суммы цифр этого числа;   сумма двух первых цифр заданного четырехзначного числа равна сумме двух его последних цифр;   среди цифр заданного трехзначного числа есть одинаковые;   среди первых трех цифр из дробной части заданного положительного вещественного числа есть цифра 0. Проверить, можно ли из четырех данных отрезков составить параллелограмм. Написать программу,  определяющую попадает ли точка с координатами (x, y) в заштрихованную область  ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ 1. ЦЕЛЬ РАБОТЫ: Закрепление знаний о программах циклической структуры, составление программы и  работа с ней.  2. ОСНОВНЫЕ СВЕДЕНИЯ  Алгоритм циклической структуры ­ это алгоритм, в котором происходит многократное повторение одного и  того же участка программы. Такие повторяемые участки вычислительного процесса называются циклами.  Программа циклической структуры содержит один или несколько циклов. Различают детерминированные циклы с заранее известным числом повторений и итерационные циклы, в которых число повторений заранее неизвестно. Изменяющаяся в цикле переменная называется параметром цикла.  Для организации цикла необходимо выполнить следующие действия:         1) задать перед циклом начальное значение параметра цикла;         2) изменять параметр перед каждым новым повторением цикла;         3) проверять условие повторения цикла;         4) управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончании.  В языке Паскаль существует 3 вида циклов: 1) цикл с параметром или цикл типа for, 2) цикл с предусловием  или цикл типа while, 3) цикл с постусловием или цикл типа repeat ... until. В цикле типа for число  повторений известно заранее, в циклах типа while и repeat ... until число повторений цикла заранее  неизвестно, производится проверка условия повторения цикла: в цикле типа while ­ перед циклом, в цикле типа  repeat ... until ­ после его окончания.  В циклах типов for и while повторяющаяся часть (тело цикла) состоит из одного оператора, если требуется  выполнить в цикле несколько операторов, они заключаются в операторные скобки begin ... end, образуя  составной оператор. В цикле типа repeat ... until тело цикла помещается между зарезервированными  словами языка (лексемами) repeat и until, операторные скобки не требуются, в названии цикла его тело  условно обозначается тремя точками.  С помощью цикла типа for удобно находить суммы, произведения, искать максимальные и минимальные  значения и т.п. При нахождении суммы некоторой переменной, например S присваивается значение 0, затем в  цикле к этой переменной прибавляется соответствующий член заданной последовательности. При нахождении  произведения переменной присваивается значение 1, затем в цикле эта переменная умножается на общий член  последовательности.  Пример цикла типа for. Вычисление n чисел Фибоначчи:  F1=1; F2=1; :; Fn=Fn­1+Fn­2 ,  например: F3=F2+F1=1 + 1 = 2; F4 = 2 + 1 = 3 и т.д.  program fib;  {Нахождение чисел Фибоначчи} var  x, y, z, i, n : integer; begin writeln  ('Введите n');   read (n);  x:=1; y:=0;  for   i:=1 to n do     begin        z:=x ;  x:=x+y ;  y:=z ;        write ('   ', x ) ;      end;  end. Пример цикла типа while. Cоставление таблицы функции y = a3/(a2+x2) для х, принадлежащих отрезку [­1; 1] с шагом 0.1. Так как параметр цикла типа for должен быть целочисленным, удобнее использовать цикл while, в  котором значение x можно изменять при каждом шаге на  х = 0.1.  program cycl_while;     uses crt;   {вызов модуля Crt для управления режимом экрана}    var  a, x, y : real ;   i :  integer;  begin   clrscr ; {процедура очистки экрана  из модуля Crt}     writeln('Введите а  ' );  readln(a);      x:= ­1.;  writeln ('     x   ', '      y      ');   while do x<1.05 begin                      y:= sqr(a)*a/ (a*a+x*x);                      writeln  (x:6:2, y:8:4);                      x:=x+0.1                      end  end. Условие х<1.05 соответствует каждому значению x плюс половина шага .  Пример цикла типа repeat ... until. Определить число n, при котором сумма квадратов натурального ряда  чисел от 1 до n не превысит величину K, введенную с клавиатуры. Т.е.,  , где  .  k, s, n : integer; program sum_sq;  {Сумма квадратов натурального ряда }  uses crt;  var   begin   clrscr ;  writeln( 'Введите K' );  readln (k);      s:=0;  n:=1;   repeat   s :=s+n*n;   n := n+1;   until  s > k;   writeln  ('N= ', n : 3,  '   s= ' ,  s : 5 );  end. Цикл повторяется до тех пор, пока условие записанное после ключевого слова until, будет ложным (не  выполняется). Как только это условие выполнится, происходит выход из цикла. После окончания цикла  производится печать результата (оператор writeln).  Отметим, что цикл с предусловием (типа while) может не выполниться ни разу, цикл с постусловием  repeat ... until выполнится по крайней мере 1 раз.  Когда число повторений цикла неизвестно заранее, применяются циклы с предусловием или с постусловием .  Когда число повторений цикла известно заранее, как правило, применяется цикл типа for. Но любой цикл типа  for можно заменить циклом с предусловием или постусловием.  3. ВЫПОЛНЕНИЕ РАБОТЫ  1. Разобрать и проанализировать приведенные выше программы с циклами типа for, while и repeat ...  2. Составить алгоритм задачи : Вычислить сумму ряда, указанного в варианте задания для любого значения  until  N, введенного с клавиатуры.  3. Составить 3 варианта программ циклической структуры типа for, while и repeat, откомпилировать их,  ввести исходные данные, сравнить полученные результаты. Варианты заданий    1.    3.    5.    7.      2.    4.    6.    8.    Вычисление выражений:  Дано натуральное n. Вычислить:  1.  ; 2.  ; Дано действительное число х, натуральное число n. Вычислить:  3.x ( x ­ n )( x ­ 2 n )( x ­ 3 n )…( x ­ n2 );  4.  ; 5.  ; Дано натуральное n. Вычиcлить:  6.  ; 7.  ; Вычислить приближенно значение бесконечной суммы (справа от каждой суммы дается ее точное значение, с которым можно сравнить полученный ответ):  8. =  ; 9. =  ; 10. =  ; Нужное приближение считается полученным, если вычислена сум­+\.ма нескольких первых слагаемых, и  очередное слагаемое оказалось по модулю меньше данного положительного числа e.  Задачки на смекалку 1. Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.  2. Найти все трехзначные числа, сумма цифр которых равна данному целому числу.  3. Найти все трехзначные числа, средняя цифра которых равна сумме первой и второй цифр.  4. Найти все трехзначные числа, которые можно представить разностью между квадратом числа,  образованного первыми двумя цифрами и квадратом третьей цифры.  5. Найти все двузначные числа, сумма квадратов цифр которых делится на 17.  6. Найти все трехзначные числа, представимые в виде сумм факториалов своих цифр.  7. Найти двузначное число, обладающее тем свойством, что куб суммы его цифр равен квадрату самого  числа.  8. Найти двузначное число, равное утроенному произведению его цифр.  9. В каких двузначных числах удвоенная сумма цифр равна их произведению?  10. Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных  чисел? Написать программу решения этой задачи. Задачи повышенной сложности 1. Определить, является ли заданное число совершенным , т.е. равным сумме всех своих (положительных)  делителей, кроме самого этого числа (например, число 6 совершенно: 6=1+2+3).  2. Дано натуральное k. Напечатать k­ю цифру последовательности 1234567891011121314..., в которой  выписаны подряд все натуральные числа.  3. Дано натуральное k. Напечатать k­ю цифру последовательности 149162536..., в которой выписаны подряд квадраты всех натуральных чисел.  4. Дано натуральное k. Напечатать k­ю цифру последовательности 1123581321..., в которой выписаны  подряд все числа Фибоначчи.  5. Вычислить , многократно применяя итерационную формулу   . Начальное приближение выбрать  самостоятельно. Прекратить вычисления, если разность двух последовательных итераций станет меньше,  чем произведение последнего приближения на . ОБРАБОТКА МАССИВОВ 1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении программ с массивами.  2. ОСНОВНЫЕ СВЕДЕНИЯ  Массивы ­ структурированный тип данных с элементами одного типа. Количество элементов определяет размер  массива. Например, массив составляют заработные платы сотрудников подразделения предприятия, здесь число  элементов равно числу сотрудников; массив образуют набор чисел, их количество равно числу элементов  массива. Номер элемента массива называется его индексом. Массив может иметь не один, а большее число  индексов. Число индексов называется размерностью массива, например, массив с двумя индексами называется  двумерным массивом. Таким двумерным массивом является, в частности, матрица системы n линейных  алгебраических уравнений с n неизвестными. В то же время столбец свободных членов этой системы является  одномерным массивом.  Массив должен быть описан либо в разделе переменных VAR, либо в разделе типов TYPE следующим образом:  TYPE <имя_типа> = ARRAY [t1,t2....,tn] OF <тип_элементов_массива>;       VAR <имя_массива>  :  <имя_типа> ; или  VAR <имя_массива>: ARRAY [t1,t2,...,tn] OF <тип_элементов_массива>; где tl,...,tn ­ тип индекса (перечислимый или интервальный).  Например:  1) VAR a: ARRAY [1..5] OF real;  Описан массив а действительных чисел, который состоит из 5 элементов.  2) TYPE t = ARRAY[1..3,1..4] OF integer;  VAR b : t;  Описана матрица b из 3 строк и 4 столбцов, элементы которой являются целыми числами.  3) TYPE        tl = ARRAY [1..4] OF integer;        t = ARRAY [1..5] OF t1;  VAR d : t;         к : t1;  В начале описан тип одной строки t1, затем тип всей матрицы t через тип строки t1. В разделе переменных  указано ,что d ­двумерный массив размером (5,4), a k ­ одномерный массив k(4).  2.1. Пример обработки одномерного массива  Дан одномерный массив MAS(12) из вещественных чисел. Найти наибольший элемент массива и его индекс.  program  pr4_1 ;  const  n = 12;  (*константа n определяет размер массива в описании*)  type    m = array [1..n] of real ;      (*  m ­ тип массива mas  *)  var mas : m ;      i, num : integer; max : real; begin    for i:=l to n do       begin          writeln('введите элемент массива', i) ;            read(mas[i]);  (*ввод элементов массива mas по 1 в строке*) end;    num := 1; max := mas[1];    for i: =2 to n  do       if  mas[i] > max then begin          max := mas[i]; num := i ;       end;    writeln;  (* вывод массива в строку*)    for i:=l to n do write (mas[i]:5:1);       writeln;      writeln ('максимальный элемент = ', max:4:1,'   его индекс=' ,num ); end. Переменная max сравнивается с элементами массива, и если элемент массива больше max, то переменной max  присваивается значение элемента массива, а переменной num ­ индекс этого элемента. По окончании цикла  переменная max будет иметь значение, равное максимальному элементу массива, а переменная num ­ значение  индекса этого элемента.  2.2. Пример обработки многомерного массива  Как правило, при обработке многомерных массивов используются вложенные циклы, т.е. цикл по столбцам  располагается внутри цикла по строкам.  Дана матрица A(3,4), и вектор B(4), состоящие из целых чисел. Умножить матрицу А на вектор В.  program  pr4­2 ;  const m=3;   n=4;  var      a : array [l .. m, 1 .. n] of integer; (* описание матрицы *)     b : array [1 .. n] of integer;         (* описание вектора *)     c : array [1 .. m] of integer;         ( * описание  С  *)     i, j: integer; begin    for i:=l to m do                        (* ввод матрицы  *)       begin          writeln ('введите элементы ', i , '­той строки');          for j:=1 to n do read(a[i, j] );           writeln;        end;    writeln ('введите элементы вектора');    for j:=1 to n do                        (* ввод  вектора *)       read (b[ j]);       writeln;    for i:=l to m do       begin          c[i]:=0;             for j:=l to n do c[i] := c[i]+a[i,j]* b[j];       end;    for i:=l to m do                        (*форматный вывод матрицы  *)       begin          for j:=1 to n do write(a[i,j]:4);            writeln;        end;    for j:=l to n do write(b[j]:4);         (* вывод  массива B *)    writeln ;    for i:=l to m do write(c[i]:4);         (* вывод  массива С  *)    readln; end. В программе элементы матрицы вводятся по строкам по одному с подтверждением клавишей Enter. А  выводятся в общепринятом виде: каждая строка матрицы с новой строки экрана (цикл i по строкам внешний, а  цикл j ­ внутренний).  3. ВЫПОЛНЕНИЕ РАБОТЫ 1. Набрать и откомпилировать приведенные выше программы, исправить выявленные ошибки. Ввести  элементы массива, убедиться в правильности выполнения программ.  2. Составить и выполнить программы с применением массивов согласно вариантам заданий .  Варианты задания 1.  Ввести массив А из 10 элементов  1. Найти наибольший элемент и переставить его с первым элементом. Преобразованный массив вывести.  2. Найти наименьший элемент и переставить его с последним элементом. Преобразованный массив вывести. 3. Найти произведение положительных элементов и вывести его на экран.  4. Найти произведение отрицательных элементов и вывести его на экран.  5. Найти сумму положительных элементов и вывести ее на экран.  6. Найти сумму отрицательных элементов и вывести ее на экран.  7. Найти сумму элементов, больших 3 и меньших 8 и вывести ее на экран.  8. Найти сумму элементов, меньших по модулю 5 и вывести ее на экран.  Варианты задания 2  1. Даны матрица A размером m*n и вектор В размером m. Записать на главную диагональ элементы вектора, а в вектор ­ элементы главной диагонали.  2. Выбрать максимальный элемент матрицы С (размер m*n), элементы четных строк разделить на  максимальный элемент, а к элементам нечетных прибавить максимальный элемент .  3. Найти минимальный элемент матрицы С (размер m*n), и поменять его местами с первым элементом.  4. Дана матрица Е размером m*n. Вычислить суммы элементов каждого столбца. Определить наибольшее  значение этих сумм и номер соответствующего столбца.  5. В матрице К размером m*n найти в каждом столбце произведение отрицательных элементов и количество  нулевых элементов в матрице .  6. Даны две матрицы А и В одинаковой размерности m*n. Получить матрицу C = max (ai,j, bi,j ), и  матрицу D = min (ai,j, bi,j).  7. Дана матрица Р размером m*n. Найти сумму минимальных элементов каждого столбца матрицы.  8. Даны две матрицы: А размером m*k и В размером k*n. Получить матрицу С=A*В.

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"

Методические указания к лабораторным работам по теме "Turbo Pascal"
Скачать файл