Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование. Практикум.doc
Скачиваний:
5
Добавлен:
30.04.2019
Размер:
901.63 Кб
Скачать

1. Проектирование и реализация линейного алгоритма

Цель

Научиться проектировать алгоритм линейной структуры и реализовывать его средствами языка Pascal. Познакомиться с основными принципами написания программ.

Теория

Линейный алгоритм задается базовой структурой «следование». Образуется из последовательности действий, следующих одно за другим.

В алгоритмическом языке линейным является алгоритм, состоящий из команд, выполняющихся одна за другой. Они в записи алгоритма располагаются в том порядке, в каком должны быть выполнены предписываемые ими действия. Такой порядок выполнения называется естественным. Последовательность команд образует составную команду «цепочка».

Оператор присваивания.

Оператор присваивания (:=) предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны иметь один и тот же тип. Исключение представляет случай, когда переменная имеет вещественный тип, а выражение - целочисленный. Допустимо присваивание любых типов данных, кроме файловых. Формат: имя_переменной := выражение;

Пример:

Sort := 1; Cost := 15.23;

Name := 'Модель ВАЗ 2109';

Result := sin(A) + cos(B);

Y := Sqrt(X) + 1; L := M and N;

Операторы ввода-вывода.

В любом языке программирования предусмотрена возможность обмена или пересылки информации между ОЗУ (оперативным запоминающим устройством) и внешними устройствами (принтер, дисплей, дисководы и т.д.).

Для ввода в ОЗУ (чтения) и вывода из ОЗУ (записи) данных в Турбо Паскале существуют стандартные (встроенные) процедуры ввода-вывода, вызываемые соответственно, операторами Read и Write.

Ввод данных. Для организации процедуры чтения данных с клавиатуры в ОЗУ используются три оператора:

Read(список_переменных); - каждое вводимое значение последовательно присваивается переменным из списка; вводимые числа должны отделяться друг от друга при вводе пробелами или нажатием клавиши Enter;

ReadLn(список_переменных); - то же, что и оператор Read, только на экране после ввода данных происходит переход на новую строку (т.е. следующий оператор ввода будет вводить данные с новой строки); вводимые числа должны отделяться друг от друга при вводе пробелами или нажатием клавиши Enter;

ReadLn; - происходит переход на новую строку без ввода данных.

Значения вводимых переменных должны соответствовать типам переменных из списка ввода. В Турбо Паскале допускается вводить значения следующих данных: целых (integer), вещественных (real), символьных (char), а также строковых переменных (string).

С клавиатуры нельзя ввести:

  • значение логической переменной;

  • значение переменной типа "перечисление";

  • значение переменной типа "массив" (можно вводить значения отдельных элементов массива);

  • значение переменной типа "множество" (можно вводить значения отдельных элементов множества);

  • значение переменной типа "запись" (можно вводить значения отдельных полей записи);

Вывод данных. Вывод данных обычно принимает форму, которая зависит от выходного устройства: на экран, на запоминающие устройства, в порты ввода/вывода. Для организации процедуры чтения данных из ОЗУ и записи на экран используются три оператора:

Write(список_переменных); - выводит последовательно значения переменных из списка;

WriteLn(список_переменных); - то же, что и оператор Write, но после вывода значений на экране осуществляется переход на новую строку (следующий оператор вывода будет выводить данные с начала новой строки);

WriteLn; - осуществляет переход на новую строку без вывода данных (вывод "пустой" строки).

В Паскале допустим вывод значений следующих данных:

  • целых переменных (integer);

  • вещественных переменных (real);

  • символьных переменных (char);

  • логических переменных (boolean);

  • символьных констант;

  • арифметических и логических выражений;

  • строковых переменных.

С помощью оператора вывода нельзя вывести:

  • значение переменной типа "перечисление";

  • значение переменной типа "массив" (можно выводить значения отдельных элементов массива);

  • значение переменной типа "множество" (можно выводить значения отдельных элементов множества);

  • значение переменной типа "запись" (можно выводить значения отдельных полей записи);

Пример:

program Pr; var I: integer; R: real; C: char; B: boolean; ................ Write(‘Введите целое число I=’);

Readln(I);

I:=I+5;

R:=3.52;

C:=’+’;

B:=True;

Write('ПРИМЕР'); WriteLn;

WriteLn(' I =',I,' R =',R); WriteLn(' Символ - ',C); Write(' B =',B); Если ввести в переменную I значение –10, то в результате выводимые значения будут такими: ПРИМЕР I =-5 R = 3.5200000000E+00 Символ - + B =TRUE

В Паскале предусмотрен вывод данных в определенном пользователем форматом (форматированный вывод). В общем случае формат имеет следующий вид: P:M, где P - имя переменной, M - целая константа, указывающая на число позиций, необходимых для выводимой величины P (в качестве параметра M может указываться не число, а имя константы, описанное в разделе const).

Для вещественных переменных формат может быть задан в таком виде: P:M:N (элемент : длина : количество цифр), где M - общее число позиций для выводимой переменной P, включая знак числа, целую часть, точку и дробную часть; N - число позиций дробной части. В этом случае переменная P выводится в виде константы с фиксированной точкой. Пример: Используем форматированный вывод переменных из предыдущего примера: .................. WriteLn(' I =',I:3,' R =',R:5:2); WriteLn(' Символ - ',C:5); Write(' B =',B:8); Результат: I = -5 R = 3.52 Символ - + B = TRUE

Примеры программ линейной структуры.

Пример: Осуществить вывод на экран таблицы, в которой записаны значения сторон прямоугольника и его площадь.

Program DemoWriteln; Uses CRT; Var { A, B - стороны, Area - площадь } A, B, Area : integer; Begin A := 8; B := 4; Area := A * B; WriteLn('-----------------------------------'); WriteLn('| Сторона A | Сторона B | Площадь |'); WriteLn('-----------------------------------'); WriteLn('|', A:6, '|':6, B:6, '|':6, Area:6, '|':4); WriteLn('-----------------------------------'); End. В результате работы программы получим таблицу: ---------------------------------------- | Сторона A | Сторона B | Площадь | ---------------------------------------- |         8         |         4         |      32       | ---------------------------------------- каждая строка которой будет печататься с первой позиции новой строки. Пример: Программа, пересчитывающая расстояние, выраженное в милях, в расстояние, выраженное в километрах. program MilToKm; uses CRT; var Mil : real; { Расстояние в милях } Km : real; { Расстояние в километрах } Begin ClrScr; Write('Задайте расстояние в милях: '); ReadLn(Mil); Km := Mil * 1.6; WriteLn(Mil:5:2, ' миль это ', Km:5:2, ' километров'); ReadLn End. Примечание: Оператор ReadLn можно применить для задержки вывода результата работы программы на экране до нажатия на клавишу Enter.

Задачи А.

  1. Даны два действительных числа a, b. Получить их сумму, разность и произведение.

  2. Даны действительные числа х, у. Получить .

  3. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности .

  4. Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.

  5. Даны два действительных числа . Найти среднее геометрическое этих чисел и среднее геометрическое их модулей .

  6. Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.

  7. Смешано L1 литров воды температуры t1 с L2 литрами воды температуры t2. Найти объем и температуру образовавшейся смеси.

  8. Определить периметр правильного n-угольника ,описанного около окружности радиуса r.

  9. Три сопротивления R1,R2,R3 соединены параллельно .Найти сопротивление соединения.

10. Даны х, у, z. Вычислить a, b, если

, ;

11. Даны х, у, z. Вычислить a, b, если

, .

12. Даны х, у, z. Вычислить a, b, если

, b= ;

13. Даны х, у, z. Вычислить a, b, если

, b=

14. Даны х, у, z. Вычислить a, b, если

, ;

15. Даны х, у, z. Вычислить a, b, если

,

Задачи В.

1.Дана сторона равностороннего треугольника. Найти площадь этого треугольника.

2.Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности.

3. Известна длина окружности . Найти площадь круга, ограниченного этой окружностью.

4.Найти площадь кольца, внутренний радиус которого равен 20 ,а внешний –заданному числу r(r>20).

5.Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника.

6.Найти сумму членов арифметической прогрессии

по данным значениям a, d, n.

7.Даны действительные числа с, d. Вычислить

,где х1-больший, а х2-меньший корни уравнения .

8. Найти площадь равнобочной трапеции с основаниями а и b и углом a при большем основании а.

9. Треугольник задан длинами сторон. Найти длины высот.

10. Треугольник задан длинами сторон. Найти длины медиан.

11. Треугольник задан длинами сторон. Найти длины биссектрис.

12. Треугольник задан длинами сторон. Найти радиусы вписанной и описанной окружностей.

13. Вычислить расстояние между двумя точками с координатами x1, y1 и x2, y2.

14.Треугольник задан координатами своих вершин. Найти периметр треугольника;

15.Треугольник задан координатами своих вершин. Найти площадь треугольника.

Задачи С.

1. Дано действительное число х. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить

2x4—3x3+4x2—5x+6.

Разрешается использовать не более четырех умножений и четырех сложений и вычитании.

2. Даны действительные числа х, у. Не пользуясь никакими операциями, кроме умножения, сложения и вычитания, вычислить

3x2y22ху27x2y — 4 у2 + 15ху + 2х2Зх + 10 у + 6.

Разрешается использовать не более восьми умножений и восьми сложений и вычитании.

3. Дано действительное число х. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить

12x+3x24x3 и 1+2x+3x2+4x3

Разрешается использовать не более восьми операций.

4. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить а4 за две операции.

5. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a6 за три операции.

6. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a7 за четыре операции.

7. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить за три операции.

8. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a9 за четыре операции.

9. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a10 за четыре операции.

10. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a13 за пять операций.

11. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a15 за пять операций.

12. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a21 за шесть операций.

13. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a28 за шесть операций.

14. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a30 за шесть операций.

15. Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a3 и a10 за пять операций.