Лекции.Орг


Поиск:




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




Цель работы: Изучение стандартных типов данных; разработка алгоритмов и кодирование приложений линейной структуры.

В языке Delphi Win32 Language применяются перечисленные ниже стандартные типы данных.

Действительные типы данных имеют следующие диапазоны и форматы (в байтах) представления числовых значений (таблица 1):

                                                               Таблица 1

Тип                   Диапазон                       Формат                 
Real48           -2.9 · 1039.. 1.7 · 1038                        6    
Single       -1.5 · 1045  .. 3.4 · 1038                   4    
Double       -5.0 · 10324.. 1.7 · 10308                  8    
Extended       -3.6 · 104951.. 1.1 · 104932               10    

 

Целочисленные типы данных имеют следующие диапазоны и форматы (в битах) представления числовых значений (таблица 2):

                                                                 Таблица 2

Тип                 Диапазон            Формат  
Shortint                  -128..127                      8  
Smallint              -32768..32767                 16  
Longint    -2147483648..2147483647                 32  
Int64                   -263..263-1                 64  
Byte                      0..255                   8  
Word                      0..65535                 16  
Longword                      0..4294967295                 32  

 

Символьный тип (стандартное имя Char) представлен однобайтовым форматом и одиночным символом, заключенного в апострофы.

Логический тип (стандартное имя Boolean) представлен однобайтовым форматом и характеризуется двумя значениями: False (ложь) и True (истина).

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

Все величины, с которыми работает приложение, должны быть объявлены в разделе констант (служебное слово Const), если их значения не изменяются во время выполнения, или в разделе переменных (служебное слово Var) с указанием их типов, если их значения вычисляются.

       Основные операции для формирования арифметических и логических выражений и приоритеты их выполнения представлены в таблице 3

                                                                                                                     Таблица 3          .

      Приоритет выполнения операции         Операция    Выполняемое действие
               1              +,  -               not Присваивание знака Логическое отрицание
               2              *,   /           div, mod               and Умножение, деление Целочисленное деление Логическое умножение
               3               +, -             or, xor Сложение, вычитание Логическое суммирование
               4       =,<>,<,>,<=,>= Отношения (сравнения)

 

       Операции выполняются с учетом их приоритетов. Для изменения естественного порядка выполнения операций используются круглые скобки.

       Результатом операции div является частное от деления двух чисел, а mod – остаток от деления, например:

                                 (9 - 2) div 2 = 3;                   7 mod 2 = 1

     Стандартные функции и процедуры (таблица 4) описаны в файлах SysUtils и Math, которыедолжны быть включены в предложение uses:

                                                                                                                 Таблица 4

Стандартная функция Тип аргумента Тип результата Математическая запись, комментарий
abs(x) integer, real integer, real │x│
arctan(x) integer, real real arctg(x)
cos(x) integer, real real cos(x)
sin(x) integer, real real sin(x)
exp(x) integer, real real ex
ln(x) real, real real ln(x)
sqrt(x) integer, real real √x
sqr(x) integer, real integer, real x2
ord(x) порядковый integer ASCCI-код символа
succ(x) порядковый порядковый возвращает следующее значение х
pred(x) порядковый порядковый возвращает предыдущее значение х
round(x) real integer округляет х до целого
trunk(x) real integer отсекает дробную часть х
int(x) real real выделяет целую часть х
frac(x) real real выделяет дробную часть х
odd(x) integer boolean True (х-нечетное), False (х-четное)
random(range) integer integer генерирует случайное число x в диапазоне 0<= х<range
random - real генерирует случайное число x в диапазоне от 0<= x<1
uppercase(x) char char заменяет строчную букву латиницы на прописную
lowercase(x) char char заменяет прописную букву латиницы на строчную
Стандартная процедура Тип аргумента Тип результата Математическая запись, комментарий
inc(x,n) integer integer увеличивает х на n
inc(x) integer integer увеличивает х на 1
dec(x,n) integer integer уменьшает х на n
dec(x) integer integer уменьшает х на 1
randomize - - устанавливает генератор случайного числа на следующее значение. Используется совместно с random

 

Приложение линейной структуры содержит операторы присваивания, вызова процедур (будут рассмотрены ниже), команды ввода и вывода данных.

Оператор присваивания записывается следующим образом:

<имя переменной>:= <выражение>, вычисляет выражение (арифметическое или логическое) и присваивает полученное значение имени переменной. Например, в результате выполнения операторов присваивания

    s:= sqrt(p*(p- a)*(p- b)*(p- c))     и     f:= (a> c) and (a< b),

переменная s получит числовое значение, а переменная f – логическое.

  Ввод данных с клавиатуры осуществляется двумя стандартными командами (процедурами):

                                  read (<список ввода>) и   readln (<список ввода>),

где <список ввода> - это последовательность имен переменных, разделенных запятыми, значения которых необходимо ввести. При выполнении этих команд происходит приостановка выполнения приложения, после чего необходимо набрать на клавиатуре значения перечисленных в списке переменных (числа – через пробел, символы – без пробела). Вводимые данные должны соответствовать по типу и порядку следования перечисленным в списке переменным. По окончании ввода следует нажать клавишу <Enter>. Команда readln отличается от read только тем, что после считывания последнего в списке значения для одного оператора readln данные для следующего оператора будут считываться с начала новой строки. Вводить можно только переменные числового, символьного и строкового типов (строковый тип изложен в разделе 8).

Вывод на экран дисплея сообщений и результатов работы приложения осуществляется двумя стандартными командами (процедурами):

                        write (<список вывода>) и   writeln (<список вывода>),

где <список вывода> - это последовательность имен переменных, разделенных запятыми, значения которых необходимо вывести. Список вывода может содержать константы, переменные или выражения. При использовании команды write после вывода последней переменной из списка курсор остается в той же строке экрана, и следующий вывод будет начинаться с этой же позиции курсора. Действие команды writeln отличается тем, чтопосле вывода последнего в списке значения происходит перевод курсора к началу следующей строки. При выводе нескольких данных в строку они не отделяются друг от друга пробелами. Поэтому следует применять форматированный вывод данных, т.е. представлять результаты в нужном и удобном виде. Для этого в скобках команды вывода после идентификатора переменной или выражения размещаются символ «:» и число, обозначающее количество позиций в строке экрана, которое необходимо выделить для вывода значения переменной или выражения. Такое выделение применяют для вывода целого и строкового типов. При выводе действительного типа указывают общее количество позиций для вывода значения и количество позиций для дробной части. Например, для вывода целых a=2, b=-13 и действительного с=-75,123456 можно записать

                         writeln (‘ ‘:3,‘a=’,a:2,’ b=’,b:5,’ c=’c:10:5). В результате на экране появится следующая строка:

                         a= 2 b= -13 c= -75.12346. Как видно из примера форматировать можно не только данные, но и комментарии к ним.

       Пример 1: Вычислить и вывести в таблицу длины сторон треугольника по заданным целочисленным координатам его вершин. Алгоритм представляет собой линейную структуру, поскольку предполагает задание исходных данных, последовательный расчет длин сторон и вывод полученных результатов.

       Код приложения Примера 1:

Program Example_1;

{$APPTYPE CONSOLE}

Uses SysUtils;

Var x1,y1,x2,y2,x3,y3:longint; // координаты вершин

              a12,a23,a31:real;  // длины сторон

                            r1,r2:real48; // преобразование в действительный тип

Begin

writeln('Вычисление длин сторон треугольника по координатам вершин');

writeln('Введите координаты 1 вершины');

Readln(x1,y1);

writeln('Введите координаты 2 вершины');

Readln(x2,y2);

writeln('Введите координаты 3 вершины');

Readln(x3,y3);

{Вычисление длин сторон треугольника}

r1:=abs(x1-x2);r2:=abs(y1-y2);

a12:=sqrt(sqr(r1)+sqr(r2));

r1:=abs(x2-x3);r2:=abs(y2-y3);

a23:=sqrt(sqr(r1)+sqr(r2));

r1:=abs(x1-x3);r2:=abs(y1-y3);

a31:=sqrt(sqr(r1)+sqr(r2));

(*Вывод таблицы с исходными данными и результатами*)

writeln('=========================================================');

writeln('   Координаты вершин         Длины сторон');

writeln(' x1 y1 x2 y2 x3 y3 1 - 2 2 - 3 3 - 1');

writeln('_________________________________________________________');

Writeln;

writeln(x1:5,y1:5,x2:5,y2:5,x3:5,y3:5,a12:8:2,a23:8:2,a31:8:2);

writeln('_________________________________________________________');

writeln('=========================================================');

Readln;

End.

       Результаты работы приложения представлены в окне вывода (рис.1):

Рис.1. Результат работы приложения (Пример 1)

Примечание: в код приложения внесены комментарии. Комментарий – это любой поясняющий многострочный текст, заключенный в фигурные скобки {текст} или ограниченный комбинацией символов (*текст*). В Turbo Delphi возможно еще использование двух рядом стоящих символов //, которые любой текст до конца строки превращают в нечитаемый компилятором.

 

Варианты заданий

1. Вычислить дробную часть среднего геометрического трех заданных положительных чисел.

2. Вычислить длину окружности, площадь круга и объем шара одного и того же заданного радиуса.

3. По длинам двух сторон некоторого треугольника и углу (в градусах) между ними найти длину третьей стороны и площадь этого треугольника.

4. Найти произведение цифр заданного четырехзначного числа.

5. Определить число, полученное выписыванием в обратном порядке цифр заданного трехзначного числа.

6. Определить, равна ли сумма двух первых цифр заданного пятизначного числа произведению двух его последних цифр.

7. Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа.

8. Определить, есть ли среди первых трех цифр из дробной части заданного положительного вещественного числа цифра 0.

9. Вычислить периметр и площадь прямоугольного треугольника по заданным значениям катета и острого угла (в градусах).

10. Вычислить длину гипотенузы и площадь прямоугольного треугольника по двум заданным катетам.

11. Какую площадь и периметр будет иметь квадрат, если описанный круг имеет заданную площадь.

12. Вычислить площадь и периметр квадрата, если задана его диагональ.

13. Треугольник задан координатами вершин на плоскости. Вычислить высоты треугольника.

14. Треугольник задан координатами вершин на плоскости. Вычислить медианы треугольника.

15. Треугольник задан координатами вершин на плоскости. Вычислить биссектрисы треугольника.

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

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

18. Заданы два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.

19. Определить площадь кольца, внутренний радиус которого задан, а внешний – равен кубу заданного.

20. Определить площадь кольца, внешний радиус которого задан, а внутренний – равен кубическому корню из заданного радиуса.

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

22. Найти площадь равнобедренной трапеции с заданными основаниями и углом (в градусах) при большем основании.

23. Вычислить корни квадратного уравнения, заданного своими коэффициентами (первый коэффициент не равен 0, дискриминант - неотрицателен).

24. Определить площадь треугольника по двум заданным сторонам и углу (в градусах) между ними.

25. Найти сумму членов арифметической прогрессии, если заданы ее первый член, разность и количество членов.

 





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 368 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

847 - | 684 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.