Интегрированная среда программирования Turbo Pascal


Интегрированная среда программирования Turbo Pascal.

1.1общие сведения.

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

Turbo Pascal — интегрированное среда, объединяющая в себе текстовый

редактор, компилятор, компоновщик, отладчик и систему подсказки.

Программа вводится с клавиатуры и редактируется (edit) с помощью текстового редактора, затем компилируется (compile) — переводится на машинный язык (существует также интерпретация — пошаговый перевод на машинный язык (например, в BASIC)), и готовится к выполнению (осуществляется компоновка) — при этом к основной части- ни программы добавляются различные стандартные подпрограммы, выполняется объединение отдельных частей программы и тому подобное.После этого программу можно запустить на вы- ния. Неправильное написание команд и неверную расстановку переносов указывается поль- стувачеви во время компиляции. Логические ошибки можно найти с помощью видлагоджу- теля (debug).

Система Turbo Pascal имеет в своем составе много файлов, главные из них — turbo.exe, turbo.tpl, turbo.hlp.Первый из них поддерживает работу в турбосередовищи, второй содержит библиотеку подпрограмм, а файл turbo.hlp обеспечивает вывод на экран подсказки по отдельным режимам работы, конструкциям программ и тому подобное.Чтобы войти в среду, нужно запустить файл turbo.exe, который может находиться, например, в каталоге TP в подкаталоге BIN (можно также создать файл для вызова turbo.exe, например, Turbo.bat, или создать ярлык в Windows — это упрощает запуск программы).

После запуска на экране появится рабочий стол среды.  (Версия 7.0)

В верхней строке находятся все режимы главного меню, в нижнем — ря- док статуса, в котором перечислены имена функциональных клавиш, предназначенных для вы- полнение некоторых операций в конкретной ситуации. Чтобы перейти в главное меню, потри- бно нажать F10.Выбрать нужный пункт меню с помощью клавиш управления курсором и клавиши Enter.

1.2 Ввод и редактирование программы.

Для того чтобы создать новый файл, в котором будет записана программа нужно нажать F10 и выбрать File, New.На экране появится

окно синего цвета с названием NONAME00.PAS, в углу которого будет мигать курсор — можно набирать программу.Сохранить программу на диске можно выбрав File, Save в меню или натисну- вши F2.По этой команде файла будет присвоено имя, которое набирается в диалоговом из- КНИ:

Изменить название файла можно выбрав File, Save as ….

Открыть файл, сохраненный на диске — File, Open или F2.

Рекомендуется дать имя файла в начале работы, а потом дописывать изменения, нажимая F2.

Набирая программу можно использовать:

Enter — переход на новую строку,

Del — удаление символа после курсора,

BackSpace — удаление символа перед курсором, Ctrl + N — вставка строки после строки с курсором, Ctrl + Y — удаление строки с курсором,

Shift и стрелочками-клавишами управления курсора — выделять фрагмент текста,

Ctrl + Insert — копировать выделенный фрагмент в буфер обмена, Shift + Del — переносить выделенный фрагмент в буфер обмена, Shift + Insert — вставить после курсора фрагмент из буфера.

Turbo Pascal — многооконное среду -можно работать с несколькими возраст- нами. Переход от окна к окну осуществляется при нажатии F6. Развернуть окно на весь экран — F5.

 

1.3 компиляция программы.

Для компиляции программы в памяти компьютера нужно выбрать Compile, Compile или нажать Alt + F9.При этом возможно появится сообщение об ошибках:

Error 3: Unknown identifier — не указана в разделе описания данных переменная, Error 36: BEGIN expected — ожидается (пропущено) BEGIN,

Error 85: «,» expected — ожидается (пропущено) точку с запятой и многие другие. Если работу над программой завершено, можно создать файл с розширен-

нием exe: выбрать Compile, Destination Memory (изменится на Destination Disk), а во-том Compile, Compile или Alt + F9.

 

1.4 запуск программы

Чтобы запустить программу, можно нажать Ctrl + F9 или выбрать Run, Run.Если в программе не предусмотрено, чтобы результат задерживался на экране, то после вы- полнение на экране вновь появится текст вашей программы и результат можно пересмотрена ты нажав Alt + F5 или к запуску, открыв специальное окно внизу экрана — Debug, Output — в нем будут выводиться результаты (если все не помещается в окне, можно передвигать изображение стрелками).

 

1.5 Настройка программы (при первом чтении можно пропустить).

Настройка программы еще называют трассировкой — это пошаговое выполнение программы, при котором можно следить за изменениями в переменных. Чтобы программа вы- валась строка за строкой с остановкой после каждого шага, нужно нажимать F7 или F8 (при использовании F8 все будет проходить так же, но без входа в текст пидпро- грамма).Чтобы следить за переменными, следует открыть окно, в котором они будут от- обижаться — выбрать Debug, Add watch … или нажать Ctrl + F7 и ввести имя потри- бнои переменной.

Чтобы расположить удобно окно с текстом программы, окно с переменными и, возмож- во, окно с результатами (Debug, Output) можно изменять их размер и размещение на экране: выбрать Window, Size / Move или Ctrl + F5 и стрелочками перемещать окно, а одновременно Shift и стрелочками менять размер.Нажатие Enter фиксирует изменения.

 

1.6 Работа с системой подсказки.

Для получения справки нужно нажать F1. Чаще используется сочетание Ctrl + F1 (Help, Topic search). Если курсор стоит на каком-то слове в про- грамме, при нажатии этих клавиш появится справка именно по этому слову, где, в первую очередь, можно проверить правильность написания. Если курсор стоит на пустом месте, нажатие Ctrl + F1 вызовет список слов, употребляемых в Turbo Pascal. В списке можно выбрать нужное слово, поставив на него курсор и нажать Enter

— появится соответствующая справка, в конце которой обязательно программа-пример.Пример можно скопировать частично или полностью через буфер обмена (п. 1.2).

 

1.7 среда Pascal ABC

Поскольку в Windows версии 7 и выше среду TurboPascal можно запу- стить только в эмуляторе DOSBox, стоит использовать среда Pascal ABC, что можно скачать из интернета, и которое имеет интерфейс более привычный для графических оболо- нок.

Действия в среде можно выполнять через меню или через привычные кнопки панели инструментов или сочетанием клавиш на клавиатуре:

Ctrl + S — сохранить файл Ctrl + Shift + S — сохранить все файлы Ctrl + O — открыть существующий файл Ctrl + N — создать новый файл

Ctrl + C — скопировать фрагмент программы

Ctrl + X — вырезать фрагмент программы

Ctrl + V — вставить из буфера обмена в место, где стоит курсор

F9 — запустить программу

Для перезбереження файла под новым именем нужно выбирать: Файл — Сохранить как …

 

1.8 Работа с программами в операционной системе Linux.

В Linux можно создавать и запускать программы в той же среде Turbo Pascal, которое открывается с помощью специальных программ-эмуляторов, например DOSBox (если DOSBox установлена, то выбираем Меню Еще программы, Емуля- торы, DOSBox, а дальше действуем так, как описано в предыдущих пунктах).

Удобнее же пользоваться широким выбором текстовых редакторов Linux, имеют подсветку (видиляють цветами и начертанием служебные слова и кон струкции) языка Pascal. Возьмем, к примеру, редактор Kate (Меню Еще программы, Редакторы, Kate)

Редактор помогает в наборе программы не только подсветкой, но также нумерацией строк, структурными линиями слева от текста программы.Закладки слева от рабочей области дают доступ к навигации в открытых файлах и в файловой си- СТЭМе.Терминал, открывается закладкой снизу слева от рабочей области, позволяет откомпилировать и запустить программу.Для этого один раз щелкаем левой клави- шею мышки по значку терминала, набираем команду компиляции ppc386 название файлу.pas и компилятор и компоновщик FreePascal (если он установлен в системе) создаст готов к выполнению файл в том же каталоге где находится исходный файл.Исполняемый файл имеет такое же имя как и начальный, но без расширения pas и записано маленькими буквами.Чтобы запустить программу пишем ее название в командной строке и нажимаем Enter.

Примечание: иногда нужно перед именем ставить точку и слэш — ./ — указание на то, что файл находится в текущем каталоге.

 

2. Основные понятия языка Pascal.

2.1 Постоянные и переменные величины.

Создавая программу, мы будем пользоваться определенными символами. Сукуп- ность символов, которые можно использовать в речи, называется алфавитом.Алфавит Turbo Pascal состоит из таких символов:

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h,

i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, _ (символ подчеркивания), 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, а также спецсиволив: + — * / = <>. ,:; @ ‘() [] {} # $ ^.Другие символы можно исполь- зовать только в комментариях и в текстовых константах.

С помощью алфавита можно составлять различные конструкции: постоянные, переменными нет, операторы и тому подобное.

Числа записывают в Turbo Pascal почти так же как и в обычном математи- ночном записи:

обычный 1 -5 0,25 +49,22 2,035 10 мая
Pascal 1 -5 0.25 +49.22 2.035Е5

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

Для записи число с экспоненте (2,035 · 10 5) вместо числа 10 — буква Е.

Переменная — это часть памяти, которой дано имя и которая может принимать различные значения.Переменная определяется именем, которое начинается с буквы, может иметь в середине цифры и знак подчеркивания.Большие и малые буквы в именах не различаются, пробелы нед- опустими.

приборы:

A, Xsum, KilkistDniv, Y1, min_znach.

Переменная получает и может менять свое значение в процессе работы программы. Каждая переменная должна быть описана в начале программы после слова Var.После переменной через две точки указывается тип переменной.Чаще всего это integer — цели (от — 32768 до 32767) и real — действительные (от 10 -39 до 10 38), но существуют и другие типы.

пример:

Var a, b, c: real; k, l: integer;

Константа — постоянная величина, не меняется в процессе работы программы.Числовые константы тоже могут быть цели и действительны. Бывают также символьные константы — это последовательность любых символов в кавычках. Константы описываются после слова Const, что находится перед Var.После идентификатора константы идет знак «=» и значение константы.

пример:

Const M = 40; Temp = 36.6; Pusk = ‘Нажмите Enter’; Bukva = ‘B’.

Массив (array) — сложная переменная, состоящая из неизменном количестве переменных одного типа.Каждая переменная в массиве имеет свой идентификатор — номер, которым визначае- ться однозначно.

пример:

Var a: array [1 .. 10] of integer;

Массивы бывают одномерные и двумерные (матрицы): a: array [1 .. 100, 1 .. 100] of real;

 

2.2 Выражения.

С констант, переменных с помощью знаков операций и скобок можно составлять ари- фметични и логические выражения.Ниже приведены знаки арифметических операций в порядке убывания старшинства их выполнения:

* умножения
/ Диленные
div деления нацело
mod остаток от деления нацело
+ Добавление
вычитание

пример:

5 + 2.7; 3 — 4.5; 2 * 24; 1/5; -25/5.

Чтобы найти значение доли в целых числах, следует использовать специальную операцию деления нацело: — 25 div 5.Между знаком div и числами, участвующих в делении должно находиться хотя бы по одному пробела 1 .Остаток от деления нацело сказывается mod 35 mod 6,

-1 mod 2.Значение этих выражений равны соответственно 5 и — 1. Обе операции за- стосовуються только до целых чисел.

Также в выражениях могут применяться стандартные функции:

1 Пробел — незаполненная позиция в тексте, невидимый, но такой воспринимается компьютером, символ, занимающий в тексте одну позицию.

sin (x) синус
cos (x) косинус
arctan (x) арктангенс
abs (x) модуль
ln (x) натуральный логарифм
exp (x) экспонента (е x)
sqr (x) квадрат (x 2)
sqrt (x) корень квадратный (√ x )

пример:

Математика Turbo Pascal
ax 2 + b a * sqr (x) + b
a + b lc — dl (A + b) / abs (cd)
√x 2 + 1 sqrt (sqr (x) +1)
e x · ln (x + 2) exp (x) * ln (x + 2)
a b exp (b * ln (a))

 

задачи

1. Укажите правильные и неправильные имена переменных:

A1 sum; Kilkist; 2Y; min_znach; in_x_y; 123; sum10chisel; k; w12_34; p + r; 1_Znach; q # 2; x7.

2. Запишите на Turbo Pascal числа и укажите их тип:

1324; -2, +234; 23,456; -76,456; -1,756 · 10 мая; 7 · 10 -23; 0,000023; +114,32; 234,33 · 10 -10;

7, 777,7777; -29,078; 0,1; 1000.

Запишите все числа в виде числа с экспоненте.

3. В программе будут использованы целые переменные: a, b, действительны переменные: f, rezultat, двумерный целый массив 10 на10 элементов, а также константы n = 10, g = 9,8.Опишите эти данные.

4. Запишите на Turbo Pascal выражения:

312 , 8 января — 39 , 0 1 ∙ 6,1

12,5 + 31

 

7,086 + 2,31 · 81

124 , 1 февраля ∙ 3,1

2 + 3 3,234 · 12 октября + 5,856 · 15 октября

— 0, 334 5 ∙ 1 0 — 1 5

1 + 23

345 + 27 , 66

1 +   1 75

2357

a · x 2 + b · x + C 132n — (k + 3s) 5

 

5. решить примеры:

5 + 2 * 10 10/2 * 5

(5 + 105) div 7 (23 div 5) mod 3

(2 + 534) div (34 — 26) (65 mod 38) div (17 mod 3)

(100 * 29) mod 7 (33 div 8) — (34 mod 2)

(997 mod 23) div 234 (8 mod 25) + 35 * 7

(- 256 div 2) — 35 (674 div 23) mod (56 + 22)

2.3 Ввод-вывод данных.

2.3.1 введение данных.

Иногда данные нужно вводить во время выполнения программы. Это осуществляется с помощью стандартной процедуры ввода. Общий вид:

read (<переменная>) или readln (<переменная>) 2 .

Программа останавливается и ждет нажатия клавиши Enter после набора числа на клавиатуре, после чего значение заносится в переменную, указанную в скобках. Если переменных несколько, они записываются через запятую. При вводе нескольких цифр можно нажимать после каждого Enter или написать все числа через пробел и в конце нажать Enter.

пример: read (x) read (a, b, c, d) readln (znach).

 

2.3.2 вывод данных.

Результаты вычислений находятся в памяти компьютера. Чтобы мы могли их увидеть на экране, нужна стандартная процедура вывода

Общий вид:

write (<выражение>); или writeln (<выражение>) 3 ;

Если в скобках несколько частей, то они отделяются запятой.

пример:

write (x) write (2 * x + 3.25 / (sin (x))) writeln ( ‘Ответ’, x) write (a, «меньше», b).

Действия определяемых оператором:

значение выражений и константы, записанные в скобках, последовательно выводятся на

экран.

Натуральные числа выводятся в виде числа с экспоненте:

+2234,5234523 — 2.2345234523Е + 3,

4,0 — 4.0000000000Е +00 (то есть 4 · 10 0).

Чтобы ограничить количество символов, выводится можно применять такой

запись:

<Переменная>: <общий размер числа> <количество цифр после точки>

пример:

write (a: 5: 3).

 

2.4 Общий вид программы.

Структура типовой программы на языке Turbo Pascal можно представить следующим образом

2 read — читать; readln (read l ine n ew) — читать с новой строки.

3 write — писать; writeln (write l ine n ew) — писать с новой строки.

Чаще всего в программах следует придерживаться такой структуры:

Uses … (раздел подключения модулей с подпрограммами)

Const … (раздел описания констант) Type … (раздел описания типов данных); Var … (раздел описания переменных)

Begin (начало исполнительных операторов)

End. (конец программы)

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

пример:

Программа для вычисления площади круга. Uses crt;

Const p = 3.142; Var r: real; begin

read (r) write (p * sqr (r): 5: 3)

readkey; {Процедура, задерживает программу (для просмотра результата) к нажатию любой клавиши}

end.

Комментарии (объяснение) в программе записываются в фигурных скобках {} в любом месте программы на любом языке доступной в компьютере.

 

задачи

1. Данная сторона квадрата a. Найти его периметр P = 4 * a.

2. Данная сторона квадрата a. Найти его площадь S = a 2.

3. Данные стороны прямоугольника a и b. Найти его площадь S = a · b и периметр P = 2 · (a + b).

4. Данный диаметр круга d. Найти ее длину L = π · d. В качестве значения π исполь- стать 3.14.

5. Данная длина ребра куба a. Найти объем куба V = a 3 и площадь его поверхности S = 6 · a 2.

Читать  Turbo Pascal Лекция 5 – Базовые алгоритмические конструкции: Условие, цикл, CASE

6. Данные длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a · b · c и площадь поверхности S = 2 · (a · b + b · c + a · c).

7. Найти длину окружности L и площадь круга S заданного радиуса R: L = 2 · π · R, S = π · R 2.В качестве значения π использовать 3.14.

8. данные два числа a и b. Найти их среднее арифметическое: (a + b) / 2.

9. Данные два положительных или сла a и b.Найти их среднее геометрическое, то есть квадратный корень из их произведения: √a · b.

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

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

 

2.5 Операторы.

Мы можем написать выражение, и чтобы компьютер его вычислил нужно дать приказ, побуждение к действию, называется в Turbo Pascal оператором.

 

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

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

<Переменная> = <выражение>

Действия, определяются оператором:

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

пример:

x = 5.345;

x = (a + b) / abs (cd)

y = 3.3545 + 2.234532 / (3.34 + x)

c = (22 div b) +5.

 

задачи

        1. Дан и палач ты прямоугольного треугольника a и b.Найти его гипотенузу c и пери метр P: c = √a 2 + b 2, P = a + b + c.
        2. Данные два круга с общим центром и радиусами R1 и R2 (R1> R2).Найти площади этих кругов S1 и S2, а также площадь S3 круга, внешний радиус которого равен R1, а внутренний радиус равен R2: S1 = π · (R1) 2, S2 = π · (R2) 2, S3 = S1 — S2.В качестве значения π использовать 3.14.
        3. Данная длина окружности L. Найти радиус R и площадь круга S, учитывая, что L = 2 · π · R, S = π · R 2.В качестве значения π использовать 3.14.
        4. Данная площадь S круга.Найти его диаметр D и длину L окружности, учитывая, что L = 2 · π · R, S = π · R 2. В качества значение π использовать 3.14.
        5. Найти расстояние между двумя точками с заданными координатами x 1 и x 2 в чем- словам оси: | x 2 — x 1 |.
        6. дано три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их

сумму.

        1. Даны три точки A, B, C на числовой оси. Точка расположена C между точками A и

B. Найти произведение длин отрезков AC и BC.

        1. Даны координаты двух противоположных вершин прямоугольника: (x 1, y 1), (x 2, y 2).Стороны прямоугольника параллельны осям координат.Найти периметр и площадь этого прямоугольника.
        2. Найти расстояние между двумя точками с заданными координатами (x 1, y 1) и (x 2, y 2) на плоскости.Расстояние вычисляется по формуле (x 2 — x 1) 2 + (y 2 — y 1) 2.
        3. Даны координаты трех вершин треугольника: (x 1, y 1), (x 2, y 2), (x 3, y 3).Найти его периметр и площадь, используя формулу расстояния между двумя точками на пло-

щине (см. задачу Begin20). Для осуществления нахождения площади Мая икутника со сторонами a, b, c использовать формулу Герона: S = √p · (p — a) · (p — b) · (p — c), где p = (a + b + c) / 2 — пол-периметр.

        1. поменять местами содержание переменных A и B и вывести новые значение A и B.
        2. Данные переменные A, B, C. Изменить их значения, переместив содержимое A в B, B — C, C — A, и вывести новые значения переменных A, B, C.
        3. Данные переменные A, B, C. Изменить их значения, переместив содержимое A в C, C — B, B — A, и вывести новые значения переменных A, B, C.
        4. Найти значение функции y = 3x 6 — 6x 2 — 7 при данном значении x.
        5. Найти значение функции y = 4 (x-3) 6 — 7 (x-3) 3 + 2 при данном значения x.
        6. Дано число A. Вычислить A 8, используя вспомогательную переменную и три опера- ции умножения. для этого последовательно находить A 2, A 4, A 8. вывести все найдены степени числа A.
        7. Дано число A. Вычислить A 15, используя две вспомогательные переменные и пять операций умножения.Для этого последовательно находить A 2, A 3, A 5, A 10, A 15.Вывести все найденные степени числа A.
        8. Дано значение угла α в градусах (0 <α <360).Определить значение этого же угла в радианах, учитывая, что 180 ◦ = π радианов.В качестве значения π исполь- пользовать 3.14.
        9. Дано значение угла α в радианах (0 <α <2 · π).Определить значение этого же угла в градусах, учитывая, что 180◦ = π радианов. В качестве значения π ис — пользовать 3.14.
        10. Даны значения температуры T в градусах Фаренгейта.Определить значение этой температуры в градусах Цельсия. Температура по Цельсию T C и температура по Фаренгейту T F связаны следующим соотношением: T C = (T F — 32) · 5/9.
        11. Даны значения температуры T в градусах Цельсия.Определить значение этой температуры в градусах Фаренгейта. Температура по Цельсию T C и температура по Фаренгейту T F связаны следующим соотношением: T C = (T F — 32) · 5/9.
        12. Известно, что X кг конфет стоит A гривен.Определить, сколько стоит 1 кг и Y кг этих конфет.

 

2.5.2 Операторы ветвления.

Иногда в программе нужно выбирать из нескольких действий какую именно действие нужно вы- полнить, или: выполнять действие или нет. Этот выбор зависит от определенных условий заложенных в самой же программе. Разветвления на две ветви осуществляется в Turbo Pascal по по- мощью оператора условия (условного оператора).

Общий вид:

if b then s1 else s2 4 , где b — условие,

s1, s2 — операторы.

Действия определяемых оператором:

        1. проверяется значение условия,
        2. если условие истинно, то выполняется оператор после слова then, если хи- бы на — то после else.

Оператор может быть неполным: if b then s, тогда при ложной условии ничего не вы- полнять, а перейти к следующему оператора.

Условие состоит из двух выражений, соединенных операцией отношение:>

(больше), <(меньше),> = (не менее), <= (не более), = (равно), <> (не равно).

пример:

2> 1; 3 + 1> = 7; a + b = 5, k — l <> n — m.

Несколько условий можно соединять в сложное условие (логическое выражение) с помощью скобок и служебных слов: and (и), or (или) not (не).

4 если b то s1 иначе s2.

 

 

бний).

Логическое выражение может приобретать только двух значений — true (истинный) i false (хи-

 

пример:

4 <= 12 — истинный;

76 <> 43 + 2 — истинный;

(3 + 5 <10) and (2> 5) — ошибочный;

(A> = 5) or (a <= 24) — истинный, когда a [5, 24], ошибочный во всех других случаях; not (b <b + 1) — ошибочный при любом b;

Для определения истинности и ложности в сложных условиях можно воспользоваться

 

таблицами:

 

Оператор может быть простой или составлен. В сложенном операторе несколько простых берутся в операторные скобки — begin и end, между ними ставится точка с запятой.

пример:

if x <10 then

begin

y = x * 10; write (y)

end else

begin

y = x * 100 — 33.45;

write (y) end;

if (a * b> = 0) and (a <> o) then s = a;

Когда должно быть больше чем два варианта можно создавать сложные операторы условия, где s1 i s2 — тоже операторы условия, или в некоторых случаях за- стосовуваты оператор выбора.

Общий вид:

case k of

z1: s1;

z2: s2;

zN: sN

else s end 5 , где

k — переменная-селектор целого или символьного типа (значение должно быть введено к выполнению оператора выбора)

z1, …, zN — значение которые может принимать k; s, s1, …, sN — операторы.

Действия, определяются оператором:

1. проверяется значение переменной-селектора и ищется соответствующее значение в списке значений,

2. выполняется соответствующий оператор (записан через две точки в переменной),

3. если значение не указано в списке, выполняется оператор после else

(Else и соответствующий оператор можно не писать — тогда никакая действие не виконуе- комплект).

пример:

case kit of

5 в случае если k имеет значение z1: s1; …; zN: sN иначе s конец.

1: y = sin (x)

2: y = cos (x)

3: y = sin (x) + cos (x) else y = 0 end;

 

задачи

  1. Дано целое число.Если оно положительным, вывести на экран — «положительное»; иначе — «Отрицательное».
  2. Дано целое число.Если оно положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10.Вывести по- Мане число.
  3. Даны три целых числа. Найти количество положительных чисел в наборе.
  4. Даны три целых числа.Найти количество положительных и количество отрицательных чисел в начальном наборе.
  5. Даны два числа. Вывести более с них.
  6. Даны два числа. Вывести порядковый номер меньшего из них.
  7. Даны две переменные вещественного типа: A, B. Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений, а в B — больше.Вывести новые значения переменными них A и B.
  8. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. вывести новые значение переменных A и B.
  9. дано две переменные целого типа: A и B. если их значение НЕ уровне, то присвоить каж- ной переменной больше с этих значений, а если уровне, то присвоить переменным нулевые значения.вывести новые значение переменных A и B.
  10. Даны три числа. Найти наименьшее из них.
  11. Даны три числа.Найти среднее из них (то есть число, расположенное между наименьшим и крупнейшим).
  12. дано три числа. вывести сначала меньше всего, а потом наибольший с данных

чисел.

  1. На числовой оси расположены три точки: A, B, C. Определить, какая из двух послед-

НИП точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точ- ки A.

  1. Данные целочисленные координаты точки на плоскости.Если точка совпадает с началом координат, то вывести 0.Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2.Если точка не лежит на координатных осях, то вывести 3.
  2. Даны координаты точки, не лежит на координатных осях OX и OY. вы- значить номер координатной четверти, в которой находится данная точка.
  3. Данные целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.
  4. Данный номер года (положительное целое число).Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Вы- сокосним считается год делится на 4, за исключением тех лет, которые подразделяются на 100 и не делятся на 400 (например, годы 300, 1300 1900 не является високосными, а 1200 и 2000 — есть).
  5. Дано целое число.Вывести строку-описание вида «отрицательное четное число», «ну- Леве число», «положительное нечетное число» и т. д.
  6. дано целое число, что лежит в диапазоне 1-999. вывести строка — описание вида

«Парное двузначное число», «нечетное трехзначное число» и т. Д.

Задачи на использование оператору выбора:

  1. Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1-2 —

«Плохо», 3-4 — «Неудовлетворительно», 5-6- — «Удовлетворительно», 7-9 — «Хорошо», 10-12 —

«Отлично»). Если K не лежит в диапазоне 1-12, то вывести строку «ошибка».

  1. Данный номер месяца — целое число в диапазоне 1-12 (1 — январь, 2 — февраль и т. Д.).Вывести название соответствующего времени года ( «зима», «весна», «лето», «Осень»).
  2. Данный номер месяца — целое число в диапазоне 1-12 (1 — январь, 2-февраль и т. Д.).Определить количество дней в этом месяце для невисокосного года.
  3. Арифметические действия над числами пронумерованы следующим образом: 1 — додава- ния, 2 — вычитание, 3 — умножение, 4 — деление.Дан номер действия N (целое число в диапазоне 1-4) и целые числа A и B (B не равно 0). Выполнить над числами указанное действие и вывести результат.
  4. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. вывести значение D и M для даты, предыдущей указанной.
  5. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года.Вывести значения D и M для даты, следующей за указанной.
  6. Мастям игральных карт присвоены порядковые номера: 1 — пики, 2 — трефы, 3 — бубны, 4 — черви. достоинству карт, старших десятки, присвоены номера: 11 — валет, 12

— дама, 13 — король, 14 — туз. Данные два целых числа: N — достоинство (6 ≤ N ≤ 14) и M — масть карты (1 ≤ M ≤ 4). Вывести название соответствующей карты вида «шестерка бубен», «дама червь», «туз треф» и т. П.

  1. Дано целое число в диапазоне 20-69, определяющее возраст (в годах).Вывести ря- док-описание указанного возраста, обеспечив правильное согласование числа со словом

«Год», например: 20 — «двадцать лет», 32 — «тридцать два года», 41 — «сорок один год».

  1. Дано целое число в диапазоне 10-40, определяющее количество учебных за- дань по определенной теме.Вывести строку-описание указанного количества заданий, обеспечив правильное согласование числа со словами «учебное задание», например: 18 — «Виси- мнадцять учебных задач», 23 — «двадцать три учебные задачи», 31 — «трид- цать одно учебное задания».
  2. Дано целое число в диапазоне 100-999.Вывести строку-описание данного числа, на- пример: 256 — «двести пятьдесят шесть», 814 — «восемьсот четырнадцать ».

 

2.5.3 Операторы цикла.

Приказ многократно повторять серию операторов называется оператором цикла.Серия операторов называется телом цикла.

Общий вид цикла с пошаговым изменением параметра:

for p = pz to kz do s 6 , где

p — параметр (счетчик) цикла,

pz — начальное значение параметра, kz — конечное значение параметра,

s — тело цикла, а конструкция «for p = pz to kz» называется заголовком цикла.

Если тело цикла состоит более чем из одного оператора то серия операторов обязательно берется в операторные скобки — begin и end 7 .Параметр цикла является переменной целого типа, он не может быть действительным.В качестве начального и конечного значения параметра цикла можно использовать не только числа, но и выражения, принимающих цели значения.

Действия, определяются оператором цикла:

        1. вычисляется начальное и конечное значение параметра цикла,
        2. если начальное значение больше конечное, то тело цикла не виконуе- ться, а происходит переход к следующего по циклом оператору; в про-

6 для p = pz к kz повторять s

7 начало и конец.

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

пример:

for i: = 1 to 10 do begin

read (x)

sum = sum + x; end;

for j = n + 1 to n + 25 do k = k + j;

Если нужно осуществлять смену параметра от большего к меньшему числу употребляется: for p = pz downto kz do s

В цикле с пошаговым изменением параметра тело цикла выполняется определенное количество раз, что составляет разницу между конечным и начальным значением.Но иногда неизвестно сколько именно нужно повторений и это зависит от определенного условия. Поэтому существуют цикл с пердумовою и цикл с постусловием.Их следует рассматривать сравнивая:

 

Цикл с пердумовою Цикл с постусловием
Общий вид:

while b do s 8               repeat s until b 9 , где

b — условие, s — серия операторов (об условиях в следующем пункте).

 

Действия, определяются оператором:
1. проверяется значение условия.

2. Если условие истинно, то серию операторов выполнять и вновь вернуться к п.1; если условие ошибочна, то серию операторов не вы- конуетья, а происходит переход к следующему по циклу оператора.

1. выполняется серия операторов.

2. проверяется значение условия.

3. Если условие ошибочна, то серию операторов выполняется и программа возвращается к п.2; если условие истинно, то серию операторов не выполняется, а видбувае- ться переход к следующему по циклу оператора.

пример:

while t < 100 do repeat

begin t = t + 1;

t = t + 1; s = s * t; s = s * t; end; until t> = 100; 10

(Действия в обоих примерах выполняются одинаковые)

 

задачи

1. Даны целые числа K и N (N> 0). Вывести N раз число K.

2. Даны два целых числа A и B (A <B). Вывести в порядке возрастания все целые чи сла, расположены между A и B (включая сами числа A и B) а также количество N этих чисел.

3. Даны два целых числа A и B (A> B). Вывести в порядке убывания все целые чи сла, расположены между A и B (Не включая числа A и B) а также количество N этих чисел.

4. дано действительное число — цена 1 кг конфет. вывести стоимость 1, 2, . . . , 10 кг цуке-

рок.

5. дано два целых числа A и B (A < B). Найти сумму всех целых цифр от A к B

включительно.

8 пока b повторять s

9 повторять s до b

1 0 В цикле с постусловием слова repeat и until служат операторных скобками поэтому begin и end

не нужны.

6. дано два целых числа A и B (A < B). Найти произведение всех целых цифр от A до B включительно.

7. дано два целых числа A и B (A < B). Найти сумму квадратов всех целых цифр от A до B включительно.

8. Дано целое число N (> 0). Найти сумму 1 + 1/2 + 1/3 +. . . + 1 / N (действительное число).

9. Дано целое число N (> 0). Найти сумму N 2 + (N + 1) 2 + (N + 2) 2+. . .+ (2 · N) 2 (целое число).

10. Дано целое число N (> 0). Найти значение выражения 1.1 — 1.2 + 1.3 -. . . (N до — данков, знаки чередуются). Условный оператор не использовать.

11. Дано целое число N (> 0). Найти квадрат этого числа, используя для его вычисления следующую формулу: N 2 = 1 + 3 + 5 +. . .+ (2 · N — 1). После добавления к сумме каждого слагаемого выводить текущее значение суммы (в результате будут выведены квадраты целых чисел от 1 до N).

12. Дано действительное число A и целое число N (> 0). Найти A в степень N: A N = A · A ·. . .

· (Числа A перемножаются N раз).

13. Дано действительное число A и целое число N (> 0). Используя один цикл, вывести все целые степени числа A от 1 до N.

14. дано действительное число A и целое число N (> 0). используя один цикл, найти сумму 1 + A + A 2 + A 3+. . .+ N.

Задачи на цикл с условием.

15. Данные положительные числа A и B (A> B).На отрезке длины A размещено максимального возможное количество отрезков длины B (без наложений).Не используя операции умножения и диленные, Найти длину незанятой части отрезка A.

16. Данные положительные числа A и B (A> B).На отрезке длины A размещено максимального возможное количество отрезков длины B (без наложений).Не используя операции умножения и диленные, Найти количество отрезков B, размещенных на отрезке A.

17. Данные цели положительные числа N и K. Используя только операции сложения и вычитания, частное от деления нацело N на K, а также остаток от этого деления.

18. Дано целое число N (> 1). Найти наименьшее целое число K, при котором вы- ется неравенство 3K> N.

19. Дано целое число N (> 1). Найти наибольшее целое число K, при котором вы- ется неравенство 3K < N.

20. Начальный вклад в банке равен 1000 грн. За каждый месяц размер вклада увеличивается на P процентов от имеющейся суммы (P — вещественное число, 0 <P <25). По данным P определить, через сколько месяцев размер вклада превысит 1100 руб., И вывести найденное количество месяцев K (целое число) и итоговый размер вклада S.

21. Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Ко- жен следующий день он увеличивал длину пробега на P процентов от пробега предыдущего дня (P — вещественное, 0 <P <50).По данным P определить, после какого дня суммарный пробег лыжника за все дни превысит 200 км, и вывести найденное количество дней K (целое) и суммарный пробег S (вещественное число).

22. Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, вывести все его цифры, начиная с самой правой (разряда оди- ниц).

23. Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр.

24. Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от диленные, Найти число, полученное при прочтении числа N дело налево.

25. Дано целое число N (> 1). Определить является ли число простым, то есть не имеет положительных делителей, кроме 1 и самого себя

26. Данные цели положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида: НОД (A, B) = НОД (B, A mod B), если B = 0; НОД (A,

0) = A, где «mod» означает операцию взятия остатка от деления.

27. Дано целое число N (> 1). Последовательность чисел Фибоначчи F K определяется на- ступним образом: F 1 = 1, F 2 = 1, F K = F K-2 + F K-1, K = 3, 4,. . . .Проверить, является ли число N чи слом Фибоначчи.Если есть, то вывести TRUE, если нет — вывести FALSE

28. Дано целое число N (> 1). Найти первое число Фибоначчи, больше N (опреде- ния чисел Фибоначчи дано в задании 27).

29. Дано действительное число ε (> 0). Последовательность вещественных чисел A K определяется на- ступним образом: A 1 = 2, A K = 2 + 1 / A K-1, K = 2, 3,. . . .Найти первый из номеров K, для которых выполняется условие | A K — A K-1 | <Ε, и вывести этот номер, а также числа A K-1 и A K.

30. Дано действительное число ε (> 0). Последовательность вещественных чисел A K определяется на- ступним образом: A 1 = 1, A 2 = 2, A K = (A K-2 + 2 · A K-1) / 3, K = 3, 4,. . . .Найти первый из номеров K, для которых выполняется условие | AK — AK-1 | <Ε, и вывести этот номер, а также числа A K-1 и A K.

 

3. Подпрограммы.

Подпрограмма — это программа, удобно использовать в составе других про- грамм.  Подпрограммы повышают производительность труда, экономят память, делают

всю программу более наглядной, упрощают раз- ботку больших программ и тому подобное.Подпрограммы бу вают стандартными (read, write, sin, sqrt и т.д.) и описанными самостоятельно в программе.В главной программе все подпрограммы пользователя розмищу- ются после раздела описания данных перед словом Begin исполнительной части, а викликаю- ться при необходимости в процессе выполнения основной программы или другой подпрограммы.

В Turbo Pascal существуют два вида пидпро- грамм — процедуры и функции.

 

3.1 Процедуры.

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

Структура процедуры имеет вид: procedure имя (список формальных параметров)

раздел локальных данных

begin {раздел исполнительных операторов}

end;

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

; отдельные параметры и информация об их тип. Некоторые параметры предназначены для пере- чи данных в процедуру

(Аргументы), другие для возвращения результатов по процедуре той программно единицы, они вызваны.

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

В разделе исполнительных операторов записывают последовательность операторов, которые реали- зывают нужен алгоритм. При этом они оперируют с формальными параметрами, локальными и глобальными данными.

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

формальных / фактических параметров и с помощью глобальных переменных.

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

Пример: (программа для вычисления суммы цифр в пяти номерах)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объяснение: в главной программе после введения массива в цикле вызывается процедура sumcifr, туда передается следующий элемент x [i], а она возвращает sumx — сумму цифр конкретного числа. Кроме того, в процедуре переменная kil подсчитывает общую ко- лькисть цифр в обработанных элементах.

Глобальные переменные — kil. Локальные отсутствуют.

Формальные параметры — a (аргумент), isum (результат). Фактические параметры — x, sumx.

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

Список фактических параметров при обращении к процедуре отвечает список формальных параметров по количеству, типу и порядка прохождения.

Глобальная переменная kil описана в главной программе, а используется как в ней так и в процедуре. В главной программе эта переменная приобретает первоначальное значение, в про- процедур она меняется и снова в главной программе ее конечное значение выводится на экран.

В приведенном примере формальный параметр a — это параметр значение, так как перед ним в заголовке не стоит в слово var, а параметр isum — параметр- переменная.Наличие слова var перед параметром является внешним признаком его типа.

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

Формальном параметра isum соответствует фактический параметр sumx. При обращении в процедуру передается адрес этого фактического параметра. Таким чи ном, всякой смене в процедуре параметра isum соответствует такая же изменение фактически- го параметра sumx. То есть получается, что главная программа и процедура обращаются к одной ячейки памяти, имеет два названия: isum и sumx.

Парметр-значение употребляют тогда, когда в подпрограмму надо передать какую-то величину и она не должна в ней меняться.

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

 

задачи

1. Описать процедуру PowerA3 (A, B), которая вычисляет третью степень числа A и возвращает ее переменной B (A — входной, B — выходной параметр, оба параметры действительно — мы).С помощью этой процедуры найти третьи степени пяти данных чисел.

2. Описать процедуру PowerA234 (A, B, C, D), которая вычисляет вторую, третью и четвертую степень числа A и возвращает эти результаты в соответствии с меняющимися B, C и D (A — входной, B, C, D — выходные параметры; все параметры действительны).С помощью этой процедуры найти вторую, третью и четвертую степень пяти данных чисел.

3. Описать процедуру Mean (X, Y, AMean, GMean), которая о вычисляют среднее ари- фметичне AMean = (X + Y) / 2 и среднее геометрическое GMean = √X · Y двух положительных чисел X и Y (X и Y — входные, AMean и GMean — выходные параметры вещественного типа).С помощью этой процедуры найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), если дано: A, B, C, D.

4. Описать процедуру TrianglePS (a, P, S), которая вычисляется является п в стороне a равно- стороннего треугольника его периметр P = 3 · a и площадь S = a 2 · √3 / 4 (a — входной, P и S — выходные параметры; все параметры являются действительными).С помощью этой процедуры найти периметры и площади трех равносторонних треугольников с данными сторонами.

5. Описать процедуру RectPS (x1, y1, x2, y2, P, S), которая вычисляет периметр P

и площадь S прямоугольника со сторонами, параллельными осям координат по координата — мы (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, P и S — выходные параметры вещественного типа). С помощью этой процедуры найти периметры и площади трех прямоугольников с данными противоположными вершинами.

6. Описать процедуру DigitCountSum (K, C, S), находит количество C цифр целого положительного числа K, а также их сумму S (K — входной, C и S — выходные параметры целого типа).С помощью этой процедуры найти количество и сумму цифр для каждого из пяти данных целых чисел.

7. Описать процедуру InvertDigits (K), что меняет порядок следования цифр целого положительного числа K на обратный (K — параметр целого типа, являющийся одновременно вхи- дним и выходным).С помощью этой процедуры поменять порядок цифр на обратный для каждого из пяти данных целых чисел.

8. Описать процедуру AddRightDigit (D, K), что добавляет к целого положительного числа K справа цифру D (D — входной параметр целого типа, лежащий в диапазоне 0-9, K — параметр целого типа, являющийся одновременно входным и выходным).С помощью этой про- цедуры последовательно добавить к этому числу K справа данные цифры D1 и D2, выводя результат каждого добавления.

9. Описать процедуру AddLeftDigit (D, K), что добавляет к целого положительного числа K слева цифру D (D — входной параметр целого типа, лежащий в диапазоне 1-9, K — параметр целого типа, являющийся одновременно входным и выходным).С помощью этой про- цедуры последовательно добавить к этому числу K слева данные цифры D1 и D2, выводя ре- зультат каждого добавления.

10. Описать процедуру Swap (X, Y), что меняет содержание переменных X и Y (X и Y — целые параметры, что есть одновременно входными и выходными). С ее помощью данных для переменных

A, B, C, D последовательно поменять содержимое следующих пар: A и B, Cи D, B и C и вывести новые значения A, B, C, D.

11. Описать процедуру Minmax (X, Y), записывает в переменную X минимальное из значений X и Y, а в переменную Y — максимальное с этих значений (X и Y — цели параметры, что есть одновременно входными и выходными).Используя четыре вызова этой процедуры, найти минимальное и максимальное из данных чисел A, B, C, D.

12. Описать процедуру SortInc3 (A, B, C), которая меняет содержание переменных A, B, C таким образом, чтобы их значения оказались упорядоченными по возрастанию (A, B, C — действительные параметры, являющиеся одновременно входными и выходными).С помощью этой процедуры упорядочить по возрастанию два набора данных из трех чисел: (A1, B1, C1) и (A2, B2, C2).

13. Описать процедуру SortDec3 (A, B, C), которая меняет содержание переменных A, B, C таким образом, чтобы их значения оказались упорядоченными по убыванию (A, B, C — действительные параметры, являющиеся одновременно входными и выходными).С помощью этой процедуры упорядочить по убыванию два набора данных из трех чисел: (A1, B1, C1) и (A2, B2, C2).

14. Описать процедуру ShiftRight3 (A, B, C), выполняющего правый циклический сдвиг: значение A переходит в B, значение B — C, значение C — A (A, B, C — действительны параметры, являющиеся одновременно входными и выходными).С помощью этой процедуры выполнить правый циклический сдвиг для двух наборов данных из трех чисел: (A1, B1, C1) и (A2, B2, C2).

15. Описать процедуру ShiftLeft3 (A, B, C), что выполняет левый циклический сдвиг: значение A переходит в C, значение C — B, значение B — A (A, B, C — действительны параметры, является одновременно

входными и выходными). С помощью этой процедуры выполнить левый циклический сдвиг для двух наборов данных из трех чисел: (A1, B1, C1) и (A2, B2, C2).

 

3.2 Функции.

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

Структура функции:

function имя (список формальных параметров): тип имени; раздел локальных данных

begin

имя = ….;

… end;

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

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

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

Обращение к функции выполняется по какому-либо арифметического выражения так же, как к стандартным функциям типа sin (x), ln (x), т.Результат работы функции передае- ться в место ее вызова.

Пример: (программа для вычисления значения выражения z = x y + y x)

В этом примере функция step реализует операцию вычисления степени.

 

задачи

1. Описать функцию Sign (X) целого типа, которая возвращает для действительного числа X на-ступни значения: -1, если X <0; 0, если X = 0; 1, если X> 0.С помощью этой функции найти значение выражения Sign (A) + Sign (B) для данных действительных цифр A и B.

2. Описать функцию RootsCount (A, B, C) целого типа, определяющую количество корней квадратного уравнения A · x 2 + B · x + C = 0 (A, B, C — целые параметры, не равны 0).С ее помощью найти количество корней для каждого из трех квадратных уравнений с даны — мы коэффициентами. Количество корней определять по значению дискриминанта: D = B 2 — 4 · A · C.

3. Описать функцию CircleS (R) вещественного типа, находящую площадь круга радиуса R (R — действительное).С помощью этой функции найти площади трех кругов данным радиусами. Площадь круга с радиусом R вычисляется по формуле S = π · R 2.В качестве значения π использовать 3.14.

4. Описать функцию RingS (R1, R2) вещественного типа, находящую площадь кольца, образованного между двумя кругами с общим центром и радиусами R1 и R2 (R1 и R2 — цели, R1> R2).С ее помощью найти площади трех колец, для которых даны внешние и внутренние радиусы. Воспользоваться формулой площади круга радиуса R: S = π · R 2.В качестве значения π использовать 3.14.

5. Описать функцию TriangleP (a, h), что находит периметр ривнобедренного треугольника по его основой a и высотой h, проведенной к основанию, a и h — целые). С помощью этой функции найти периметры трех треугольников, для которых даны основы и высоты. Для нахождения боковой стороны b треугольника использовать теорему пи Фагор: b 2 = (a / 2) 2 + h 2.

6. Описать функцию SumRange (A, B) целого типа, находящую сумму всех целых чисел от A до B включительно (A и B — целые).Если A> B, функция возвращает 0. С помощью этой функции найти суммы чисел от X до Y и от Y до Z, если даны числа X, Y, Z.

7. Вид операции определяется параметром оp: 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — добавление. С помощью Calc выполнить для данных A и B операции, определяются данным целыми N1, N2, N3.

8. Описать функцию Quarter (x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми координатами (x, y).С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами.

9. Описать функцию Even (K) логического типа, возвращает TRUE, если целый параметр K является четным, и FALSE в противном случае.С ее помощью найти количество четных чисел в наборе из 10 целых чисел.

10. Описать функцию IsSquare (K) логического типа, возвращает TRUE, если это- лей параметр K (> 0) является квадратом некоторого целого числа, и FALSE в противном случае.С ее помощью Найти количество квадратов в наборе с 10 целых положительных чисел.

11. Описать функцию IsPower5 (K) логического типа, возвращает TRUE, если это- лей параметр K (> 0) является степенью числа 5, и FALSE противном случае.С ее помощью найти количество степеней числа 5 в наборе из 10 целых положительных чисел.

 

12. Описать функцию IsPowerN (K, N) логического типа, возвращает TRUE, если целый параметр K (> 0) является степенью числа N (> 1), и FALSE в противном случае.Дано чи сло N (> 1) и набор из 10 целых положительных чисел.С помощью функции IsPowerN найти количество степеней числа N в данном наборе.

13. Описать функцию IsPrime (N) логического типа, возвращает TRUE, если целый параметр N (> 1) является простым числом, и FALSE в противном случае (число, большее 1, назы — ется простым, если оно не имеет целых делителей, кроме 1 и самого себя).Данный набор из 10 целых чисел, больших 1.С помощью функции IsPrime найти количество простых чисел в данном наборе.

14. Описать функцию DigitCount (K) целого типа, находящую количество цифр целого положительного числа K. Используя эту функцию, найти количество цифр для ко- жного из пяти данных целых положительных чисел.

15. Описать функцию DigitN (K, N) целого типа, возвращает N-ое цифру целого до- ного числа K (цифры в числе нумеруются справа налево).Если количество цифр в числе K меньше N, то функция возвращает -1. Для каждого из данных целых положительных чисел K1, К2, . . ., K5 вызвать функцию DigitN с параметром N, что меняются от 1 к 5.

16. Описать функцию IsPalindrom (K), которая возвращает TRUE, если целый параметр K (> 0) является палиндромом (то есть его запись читается одинаково слева направо и справа налево), и FALSE в противном случае.С ее помощью найти количество палиндромов в наборе из 10 целых положительных чисел.При описании функции можно использовать функции DigitCount и DigitN из задач 14 и 15.

17. Описать функцию DegToRad (D) вещественного типа, находящую величину угла в радианах, если дано его величина D в градусах (D — действительное число, 0 <D <360).Воспользоваться следующим соотношением: 180 ◦ = π радианов.В качестве значения π использовать 3.14. С помощью функции DegToRad перевести из градусов в радианы пять данных углов.

18. Описать функцию RadToDeg (R) вещественного типа, находящую величину угла в градусах, если дано его величина R в радианах (R — действительное число, 0 <R <2 · π).Воспользоваться следующим соотношением: 180 ◦ = π радианов.В качестве значения π использовать 3.14. С помощью функции RadToDeg перевести с радианов в градусы пять данных углов.

19. Описать функцию fact (N) вещественного типа, которая вычисляет значение факториала N!= 1 · 2 ·. . .· N (N> 0 — параметр действительного типа; действительное вычислено значение ис — стовуеться для того, чтобы избежать целочисленного переполнения при больших значениях N).С помощью этой функции найти факториалы пяти данных целых чисел.

20. Описать функцию Fact2 (N) вещественного типа, которая вычисляет двойной фактори- ал: N !!= 1 · 3 · 5 ·. . .· N, если N — нечетное; N !! = 2 · 4 · 6 ·. . .· N, если N — четное (N> 0 — параметр действительного типа; действительное вычислено значение используется для того, чтобы избежать переполнения при больших значениях N).С помощью этой функции найти двойные факториалы пяти данных целых чисел.

21. Описать функцию Fib (N) целого типа, которая вычисляет N-ый элемент после- довательность чисел Фибоначчи FK, которая описывается следующим формулам: F 1 = 1, F 2 = 1, F K = F K-2 + F K-1, K = 3, 4,. . . .Используя функцию Fib, найти пять чисел Фибонач- чи данным номерами N1, N2,. . ., N5.

 

4. Работа с массивами.

Массив — это переменная, состоящая из многих переменных одного типа. Количество элементов массива в течение выполнения программы не меняется.

Когда в разделе var описывается одномерный массив — a: array [1..25] of byte — в памяти выделяется последовательность пронумерованных ячеек:

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

a

В программе, чтобы обратиться к отдельной ячейки, нужно указать имя массива и номер ячейки: а [1], a [7], a [25], a [i].

Массив можно заполнять данным с клавиатуры используя оператор ввода в цикле с пошаговым изменением параметра:

или то же самое, добавив сообщение с переменной:

Также, можно вводить элементы массива оператором присваивания и, например,

с помощью генератора случайных чисел:

где randomize — процедура, инициализирует генератор случайных чисел, а функ-

ция random формирует случайное целое число от 0 до целого числа указанного в скобках.

Выводить элементы массива можно с помощью оператора вывода и цикла с пошаговым изменением параметра:

В дальнейшем при поиске элементов массива, соответствующие определенным условиям,

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

Довольно часто на практике приходится упорядочивать элементы массива. Существует большое количество методов сортировки, отличаются своей эффективностью. Раз- посмотрим один из самых простых методов — перестановкой или метод «пузыря».

Задача: в массиве дан рост 20-ти учеников класса, нужно их отсортировать по спа- предоставлением.

В программе используется переменная p логично типа (boolean), которая может при-

йматы два значения true и false, что соответствует двум состояниям массива — упорядочено и неупорядоченно.В начале сортировки делаем предположение, что массив впоряд- ковано: p = true.Далее циклом с пошаговым изменением параметра перебираем пары суси-

дних элементов и сравниваем их — если больше элемент стоит после меньшего, то меняем их местами по помощью трех операторов присваивания и дополнительной переменной х: x = a [i]; a [i] = a [i + 1]; a [i + 1] = x; а переменной г. придаем значения false (массив невпоряд- ковано).Внешний цикл с постусловием работать пока не будет осуществлен проход по всему массиву без единой замены (в г. останется значение true).

При обработке массивов с помощью процедур и функций обязательно нужно вы- пользовать раздел Type, где описывать тип, соответствующий массива.Рассмотрим задачу: описать фунции, которые будут находить максимальный и минимальный элемент массива и с их помощью вычислить разницу между самым высоким и самым низким учеником в классе из 20 человек.

 

задачи

1. Дан массив из 10 действительных чисел. найти их сумму.

2. Дан массив из 10 действительных чисел. найти их произведение.

3. дано массив с 10 действительных чисел. Найти их среднее арифметическое.

4. дано массив с N действительных чисел. вывести сумму и произведение цифр с данного набора.

5. Дан массив из N положительных действительных чисел.Вывести в том же порядке целые ча стини всех чисел из данного набора (как вещественные числа с нулевой дробной частью), а также сумму всех целых частей.

6. Дан массив из N положительных действительных чисел. Вывести в том же порядке дробные части чисел из данного набора (как вещественные числа с нулевой целой частью), а также произведение всех дробных частей.

7. Дан массив из N действительных чисел. Вывести в том же порядке округленные значения всех цифр с данного набора (как цели числа), а также сумму всех скругленных значений.

8. Дан массив из N целых чисел.Вывести в том же порядке все четные числа из данного набора и количество K таких чисел.

9. Дано целое число N и набор из N целых чисел.Вывести в том же порядке номера всех нечетных чисел из данного набора и количество K таких чисел.

10. Дано целое число N (> 0). Сформировать и вывести целочисленный массив раз- мере N, содержащий N первых положительных нечетных чисел: 1, 3, 5,. . . .

11. Дано целое число N (> 0). Сформировать и вывести целочисленный массив раз- мере N, содержащий степени двойки от первой до N-й: 2, 4, 8, 16,. . . .

12. Дано целое число N (> 1), а также первый член и разность D арифметической прогрессии. Сформировать и вывести массив размера N, держит N первых членов этой про- гресии: A, A + D, A + 2 · D, A + 3 · D, . . . .

13. Дано целое число N (> 1), а также первый член а и знаменатель D геометрической прогрессии. Сформировать и вывести массив размера N, содержащий N первых членов этой про- гресии: A, A · D, A · D · D, . . . .

14. Дано целое число N (> 2). Сформировать и вывести целочисленный массив раз- мере N, содержащий N первых элементов последовательности чисел Фибоначчи F K: F 1 = 1, F 2 = 1, F K = F K-2 + F K-1, K = 3, 4, . . . .

15. Даны целые числа N (> 2), A и B. Сформировать и вывести целочисленный массив размера N, первый элемент которого равен A, второй равен B, а каждый следующий элемент равен сумме всех предыдущих.

16. дано массив размера N. вывести его элементы в обратном порядке.

17. Дано целочисленный массив размера N. Вывести все нечетные числа в порядке возрастания их индексов, а также их количество K.

18. Дано целочисленный массив размера N. Вывести все содержащиеся в данном массиве четные числа в порядке убывания их индексов, а также их количество K.

19. Дано целочисленный массив размера N. Вывести вначале все четные числа в порядке возрастания их индексов, а затем — все нечетные числа в порядке убывания их индексов.

Задачи с двумерными массивами.

20. Данная матрица размера M х N и целое число K (1 ≤ K ≤ M). Найти сумму и произведение элементов K-й строки этой матрицы.

21. Данная матрица размера M х N и целое число K (1 ≤ K ≤ N). Найти сумму и произведение элементов K-го столбца этой матрицы.

22. Данная матрица размера M х N. Для каждой строки матрицы найти сумму ее элементов.

23. Данная матрица размера M х N. Для каждого столбца матрицы найти произведение его элементов.

24. Данная матрица размера M х N. Для каждой строки матрицы с нечетным номе- ром (1, 3,…) Найти среднее арифметическое элементов.Условный оператор не исполь- пользовать.

25. Данная матрица размера M х N. Для каждого столбца матрицы с четным номе- ром (2, 4,…) Найти сумму его элементов.Условный оператор не использовать.

26. Данная матрица размера M х N. В каждой строке матрицы найти минимальный элемент.

27. Данная матрица размера M х N. В каждом столбце матрицы найти максимального элемент.

28. Данная матрица размера M х N. Найти номер ее строки с наибольшей суммой элементов и вывести этот номер, а также значение крупнейшей суммы.

29. Данная матрица размера M х N. Найти номер ее столбца с наименьшим произведением элементов и вывести этот номер, а также значение малейшего произведения.

30. Данная матрица размера M х N. В каждом ее строке найти количество элементов, меньших среднего арифметического всех элементов этих строк.

 

5. Использование текстовых данных.

В языке Turbo Pascal есть два вида текстовых данных: символьные (char) и строчные

(String).

Символьная константа — это один символ в кавычках.

пример:

‘?’, ‘A’, ‘5’, ‘f’, ‘&’.

Символьная переменная описывается словом char.

пример:

Var s, t, sim: char ;.

Для каждой символьной переменной будет выделен один байт памяти, куда можно записать соответствующее значение. Это можно сделать разными способами, например в операторе присваивания: S = ‘*’ ;. Оператор Readln (s) обеспечит ввод символа с клавиатуры.

В связи с тем, что символы закодированы в таблице 11 так, что выполняется нери- тивность ‘A’ < ‘B’ < ‘C’ <… < ‘Z’, есть возможность символьную переменную использовать в качестве параметра цикла.

пример:

for s = ‘A’ to ‘H’ do begin …

В этом случае переменная будет принимать значение ‘A’, ‘B’, …, ‘H’.

Символьную переменную можно сравнивать с соответствующей константой или другой переменными ной (if S = ‘*’ then …).

Для работы с символьными данными являются функции: Chr и Ord.Функция Chr по коду производит соответствующий символ, например, результатом функции Chr (65) будет символ ‘A’.Функция Ord производит код своего аргумента: значением функции Ord ( ‘A’) будет число 65.

Символьные данные можно объединять в массив.

пример:

Var p: array [1..50] of char; stor: array [1..60,1..80] of char;

Двумерный массив stor может представлять страницу текста, а массив г. — строка.Строчная константа — это последовательность символов, ограниченная знаками апостроф.пример:

«ALPHA», «ОТВЕТ: ‘,’ A + 3 ‘.

Наибольшая ее длина — 255 символов. Строчная переменная описывается служебным словом String, после которого может стоять в квадратных скобках число — длина строке.

пример:

Var t: string [50]; s, q: string;

В этом случае для переменной t будет выделено 51 байт памяти, а для переменных siq

— по 256 байтов. В эту память можно записать конкретную последовательность символов, длина последовательности может быть меньше описанную. Символы в строке имеют свои номера. Так после операции Т = ‘алгоритм’; в выделенной памяти будет размещено 8 сим- волов, так что в Т [1] будет символ ‘а’, в Т [2] — «л» и т.п. Непосредственно перед строкой (в Т [0]) автоматически записывается число — конкретная длина строке, то есть число 8.

Специальная функция Length (T) возвращает целое число — количество символов в ряд-

ку.

для введение к в же н в г в строке используется в к г. е м и и Readln.Для строчных данных допустимая операция сцепления (конкатенации).

пример:

Q: = ‘Большой’ + ‘Днепр’;

 

1 1 Таблица ASCII-кодов содержит 256 символов.

Элемент строки можно сравнивать с символьной константой, другим элементом или символьной переменной.

пример:

Var sim: char; t: string [25];

………

if t [3] = ‘+’ then …

if t [i] = t [i + 1] then … if t [10] = sim then …

Две строки можно сравнивать между собой, при этом сравнивается коды от- ющих символов.

пример:

if s> q then …

Например, в s записано «Харьков», а в q — «Киев», тогда строка s больше, чем q, что код буквы «Х» больше код буквы «К». Если первые буквы одинаковые, то сравниваются вторые и т.д.

Строки можно сочетать в массив. Var group: array [1..33] of string [50];

К отдельной строки можно обращаться, например, так: group [3] group [k]

Отдельные строки можно сравнивать между собой: if group [i]> group [i + 1] then …

Есть также возможность иметь доступ к какому-либо символа в строке: if group [i] [r] = ‘*’ then …

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

Название действие пример
процедура

insert (s1, s2, npoz)

Вставляет строку s1 в строку s2 начиная с позиции npoz s2 = ‘бука’; Insert ( ‘л’, s2,3) {В s2 будет — булка }
процедура

delete (s1, npoz, kil)

изымает из строке s1 под- строку с kil символов, начиная с позиции npoz. s1: = ‘закрепить’;

delete (s1,3,3) {В s1 будет

— запросы}

функция

copy (s1, npoz, kil)

выполняет копирования последовательности с kil сим- волов s2 = copy ( «Металлист», 5,3); {В s2 будет — лес}
Функция pos (s1, s2) ищет в s2 (с левого края) подстроку s1, ре- зультатом функции является целое число — номер позиции, начиная с которой подстрока s1 первый раз входит в s2 s2 = ‘Честь и слава «; n = pos ( », s2) {N станет ре- вним 6}
функция

concat (s1, s2, …, sn)

выполняет сцепление ряд- ков s1, s2, …, sn в одну строку s = concat ( ‘аз «,» бу «,» ка «)

{В s — «азбука ‘}

Процедура str (x, s) переводит число x в строку s x = 123.456; str (x, s);

{В s — «123.456 ‘}

процедура

val (s, x, cod)

переводит строку s в число x, если это немож- ливо, то в cod заноси- ться число отличное от нуля — номер ошибки s: = ‘123.456’; val (s, x, cod)

{В х — 123.456, в cod — 0}

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

 

задачи

1. данный символ C. вывести его код (то есть номер в кодовой таблицы).

2. Дано целое число N (32 ≤ N ≤ 126). Вывести символ с кодом, равным N.

3. Данный символ C. Вывести два символа, первый из которых предшествует символу C в кодовой таблице, а второй идет за символом C.

4. Дано целое число N (1 ≤ N ≤ 26). Вывести N первых крупных (прописных) букв латинского алфавита.

5. Дано целое число N (1 ≤ N ≤ 26). Вывести N последних строчных (малых) букв ла- латинское алфавита в обратном порядке (начиная с буквы «Z»).

6. Дана строка. Подсчитать в нем количество цифр.

7. дано строку. подсчитать в нем количество прописных латинских букв.

8. Дана строка. Подсчитать общее количество строчных латинских и украи- носках букв, которые содержатся в нем.

9. Дана строка. Превратить в ней все большие латинские буквы в строчные.

10. Дана строка. Превратить в ней все строчные буквы (как латинские, так и украи- НСК) в прописные.

11. Дана строка. Превратить в ней все строчные буквы (как латинские, так и украи- НСК) на большие, а большие — малы.

12. Дана строка. Если он представляет собой запись целого числа, то вывести «целое число», если действительного (с дробной частью) — вывести «действительное число»; если строка нельзя превратить в числа, то вывести «другое».Считать, что дробная часть вещественного числа отделяется от его целой части десятичной точкой «.».

13. Дано целое положительное число.Вывести символы, изображающие цифры этого числа (в порядке слева направо).

14. Дана строка, изображающая целое положительное число.Вывести сумму цифр этого или-

сла.

15. Дана строка, изображающая арифметическое выражение вида «<Цифра> ± <цифра> ± …

± <цифра> », где на месте знака операции« ± »находится символ« + »или« — »(напри- мер,« 4 + 7-2-8 »). Вывести значение данного выражения (целое число).

16. Дана строка, изображающая двоичную запись целого положительного числа.Вывести строку, изображающую десятичную запись этого числа.

17. Дана строка, изображающая десятичную запись целого положительного числа.Вывести строку, изображающую двоичную запись этого же числа.

18. Написать программу, определяющую является ли слово «оборотнем» (все равно чи- ется в обоих направлениях).

19. Написать программу замены букв в строке на симметричные (буквы симметричные, если находятся на одинаковом расстоянии от конца и с начала алфавита: ‘а’ симетри- ческая ‘я’).

20. написать программу для перестановки слов в предложении в обратном порядке.

 

6. Множества.

В языке Паскаль множество — это произвольная совокупность значений перечисленного типа.Тип множества описывается следующим образом:

<имя множества>: set of <тип элементов>;

Но сразу отметим, что количество элементов множества в языке Паскаль не может быть больше, чем 256.Это связано с тем, что разработчики компиляторов языка Паскаль наложили именно такое ограничение на это понятие. Однако, даже несмотря на это ограничение, основные свойства множеств и операции над ними можно удобно вы- пользовать при решении многих задач.

Укажем, что при выполнении операций над множествами в Паскале действуют следующие операции:

in — принадлежность элемента множеству.Обычно используют при проверке условия принадлежности множеству, например, пусть задано множество цифр:

cifra: set of char;

а в самой программе в начале это множество конкретно определим, перечислив элементы в квадратных скобках (можно указать начальный и конечный элемент):

cifra = [ ‘0’ .. ‘9 ‘];

Тогда проверку принадлежности введенного символа ch типа char на предмет принадлежности множеству цифр можно оформить как:

readln (ch);

if ch in cifra then write ( ‘Принадлежит цифрам’);

+ — объединение множеств.Если, например множество А = {1,2,3,4,5}, a B = {4,5,6,7}, то в результате выполнения операции С = А + В мы получим С = {1,2, 3,4,5,6,7}.

— разность множеств.Если, например множество А = {1,2,3,4,5}, a B = {4,5,6,7}, то в результате выполнения операции С = А-В мы получим С = {1,2, 3}.

* — сечение множеств.Если, например множество А = {1,2,3,4,5}, a B = {4,5,6,7}, то в результате выполнения операции С = А * В мы получим С = {4,5} .

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

 

задачи

1. Составить программу, которая находит все числа, делящиеся на 6, а также все числа делятся на 2 или на 3.

2. Составить программу, которая выведет все буквы алфавита, использованные в введенном

строке.

3. Составить программу, которая выведет все буквы алфавита, не использовании в

введенному строке.

4. Даны два слова. Проверить можно составить второе слово из букв первого.

5. В введенном предложении определить каких букв встречается больше — гласных или согласных.

6. Дано целое число N. Вывести в порядке возрастания все цифры, зустричаю- ться в этом числе.

7. Дано целое число N. Вывести в порядке убывания все цифры, не зустричаю- ться в этом числе.

8. дано предложения и отдельно — несколько символов. вывести все слова где все заданные си- мволы встречаются в любом порядке.

9. Даны два слова. Вывести символы, которые встречаются в первом слове и не встречаются в другому.

10. Дано квадратную матрицу 3 на 3 элемента, заполненную случайными числа- мы от 1 до 10. Вывести множества, является объединением, разницей и сечением множеств чи сел из каждой строки матрицы.

 

7. Записи — тип record.

Записи позволяют объединить под одним именем данные различных типов.Это удобно для решения различных задач.

Общий вид описания типа:

<название типа-записи> = record

<Имя поля 1>: <тип поля 1>;

<Имя поля 2> <тип поля 2>;

<Имя поля N> <тип поля N>;

end;

Целесообразно описывать этот тип в разделе описания типов данных.

пример:

Type Schoolboy = record Name: string [20]; Growth: real; Data: integer;

Rating: array [1..5] of byte;

End;

Запись состоит из отдельных полей, каждое поле имеет свой тип.Количество полей ограничено, порядок их прохождения любой. Поле в свою очередь может быть за- сом. Для таких переменных компиляторы распределяют память соответствии с прохождением полей и их типу. Чтобы обратиться к какому-либо поля, принимают составные имена, первая часть которых — имя переменной, вторая — имя поля.

пример:

Schoolboy.name =’Петренко А.М.’; Schoolboy.rating [1]: = 5;

Записи можно объединять в массив.

пример:

Var class: array [1..30] of schoolboy;

Чтобы обратиться теперь к конкретному поля какого-либо записи нужно: class [7]. data = 1986;

Чтобы не повторять часто имя переменной, можно использовать оператор приедна- ния With:

пример:

with Schoolboy do begin

name =’Петренко А.М.’; rating [1]: = 5;

end;

 

задачи

1. В одномерный массив А занесены записи о фамилии и рост 10 учеников. Выведите массив упорядочен по росту учеников (от самого высокого до самого низкого), а во-том упорядоченный по фамилиям в алфавитном порядке.

2. В одномерный массив А занесены записи о фамилии и оценки по 5 предметам 10 учеников. найдите учеников с низким и высоким средним баллом.

3. В одномерный массив А занесены записи о фамилии, пол и рост 10 учеников. Выведите данные сначала о девушках, а потом о ребятах, упорядоченные по росту.

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

4. В одномерный массив А занесены записи о марку, год выпуска и цену авто мобиля. выведите информацию о автомобили определенного года (год вводим с клавиатуры).

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

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

 

8. Работа с внешними файлами.

В тех случаях, когда данных много или их надо долго хранить, применяют файлы.

Файл — это совокупность данных любого типа.В отличие от массива, файл хра- медлит на диске, количество данных в файле при его описании не упоминается, элементы файла не имеют индексов, что затрудняет работу с ними.

Под словом файл понимают с одной стороны конкретную совокупность данных на диске под каким-нибудь именем, а с другой — файловую переменную в программе. Это дает возмож- ность принимать одну и ту же переменную для обработки различных файлов на дисках. Файл на диске никак не описывается, он только имя. Файловая переменная обязательно описывается в про- грамме так или иначе в зависимости от типа файла.

В языке Turbo Pascal есть три вида файлов: типовани, текстовые и нетиповани.

 

6.1 Типовани файлы.

Соответствующие переменные описываются, например, так: var f1: file of integer;

Элементом (компонентом) файла может быть любой тип данных, кроме файлового типа (то есть не используется «файл файлов»).

 

Модель файла:

0 элемент 1 элемент 2 элемент N элемент  

 

Элементы нумеруются, начиная с нуля, все они имеют одинаковую длину и тип, например, integer. Файл имеет специальный маркер конца, который размещается после последнего элемента.Этот маркер распознает функция eof 12 .

Часто используется файл записей record.Файл может быть сформирован из массивов.

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

В первую очередь файловую переменную нужно «связать» с конкретным файлом на диске с помощью оператора assign.

пример:

assign (fs, «zadacha.dat ‘);

или более универсальный способ: var imfil: string [12];

……………… writeln ( ‘Введите имя файла ‘); readln (imfil)

assign (fs, imfil)

Это позволяет использовать одну йй ту же программу для обработки файлов с ре- ними именами, но одинаковой структурой.

Кроме того, нужно указать направление передачи данных — из памяти в файл или из файла в память. Чтобы записать данные в файл его нужно предварительно открыть оператором rewrite, перед чтением данных из файла его открывают оператором reset.

пример:

reset (fs)

При выполнении этого оператора (с точки зрения пользователя) делается одна опреаций — некоторый внутренний указатель устанавливается на начало файла перед элементом с номером 0:

 

0 элемент 1 элемент 2 элемент N элемент  

— указатель

 

Но перед этим происходит поиск фала на диске.Этот процесс можно проконтролировать с помощью функции ioresult, которая принимает значение 0 при успешном открытии файла.Если файла на диске нет, эта функция производит значе- ния отличное от нуля.Перед открытием файла директиву И отключают (пишут

{$ I-}) чтобы не возникло аварийное завершение программы.

Выполнение оператора rewrite отличается от reset тем, что элементы существую- чего файла из него изымаются, файл становится пустым.Указатель размещается в самом начале файла.Если rewrite выполняется для несуществующего файла, то последний создается (в начале пустой).

Оператор write обеспечивает передачу данных с оперативной памяти в файл.Общий вид:

write (имя файловой переменной, имя области памяти);

пример:

var fs: file of real; x: real;

………

write (fs, x)

1 2 Сокращенно e nd o f f ile

Если нужно записать много элементов — используют цикл.

После окончания работы с файлом обязательно выполняют оператор close, который закрывает файл.

Для того, чтобы прочитать один элемент из файла в оперативную память, принимают оператор read.

Общий вид:

read (имя файловой переменной, имя области памяти);

пример:

read (fs, x)

Оператор read можно выполнять в цикле несколько раз.Он читает ьой элемент файла, перед которым стоит указатель, после чего указатель передвигается к следующему элементу.Чаще всего файл читают полностью, при этом используют функ цию eof.Эта функция имеет логический тип. Если достигнуто маркер «конец файла», она производит true, в противном случае — false.

пример:

Пояснения к программе: программа заносит в файл массивов случайные числа от 1 до 100.Затем считывает эти данные из файла и выводит их на экран, выполняя при цьо- м анализ: сколько четных и нечетных чисел в файле.

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

Процедура seek (f, n) выставляет указатель файла f перед элементом с номером n.

пример:

seek (f, 4); {Установит указатель перед пятым элементом}

Функция filesize (f) определяет количество элементов в файле f.Чтобы расширить файл f, надо выполнить следующие операции:

seek (f, filesize (f)) write (f, x)

 

задачи

      1. Дано имя файла и целое число N (> 1).Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел (2, 4,.. .).
      2. Дано имя файла и целые числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов арифметической прогрессии с первым членом A и разницей D: A, A + D, A + 2 · D, A + 3 · D ,. . . .
      3. Данный файл целых чисел.Создать два новых файла, первый из которых содержит четные числа из исходного файла, а второй — нечетные (в том же порядке).Если четные или нечетные числа в исходном файле отсутствуют, то соответствующий результирующий файл оста- ты пустым.
      4. данный файл действительных чисел. Найти среднее арифметическое его элементов.
      5. данный файл действительных чисел. Найти сумму его элементов с парными номе-

рамы.

5. данный файл действительных чисел. заменить в нем все элементы на их квадраты.

6. Данный файл действительных чисел.Поменять в нем местами минимальный и макси-

ный элементы.

7. Даны два файла вещественных чисел с именами S1 и S2, элементы которых упоряд- кованые по возрастанию.Объединить эти файлы в новый файл с именем S3 так, чтобы его элементы также оказались упорядоченными по ростом.

8. Даны три файла вещественных чисел с именами S1, S2 и S3, элементы которых впоряд- кованые по убыванию. Объединить эти файлы в новый файл с именем S4 так, чтобы его элементы также оказались упорядоченными по убыванию.

9. Даны два целых числа I, J и файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам).Вывести элемент матрицы, расположенный в I-й строчке и J-м столбце (строки и столбцы нумеруются от 1). Если нужный элемент от- ней, то вывести 0.

10. Данный файл вещественных чисел, содержащий элементы квадратной матрицы (по ря- дках).Создать новый файл, содержащий элементы матрицы, транспонированной (столба становятся строками и наоборот) до исходной.

 

6.2 текстовые файлы

Такие файлы описываются одним словом Text.

пример:

var ft: text;

Элементами текстового файла являются символы, организованные в строки в общем случае разной длины. В конце каждой строки стоит маркер «конец строке», а в конце файла — «конец файла».

Признаком конца строки символ # 13. Он может быть объединен с символом пере- носа строке # 10. При вводе данных с клавиатуры символ # 13 вводится при натискан- ни клавиши Enter. Признаком конца файла символ # 26. При вводе данных с кла- Виатур, этот символ записывается при одновременном нажатии Ctrl + Z. Этот признак рас- познается функцией eof, которая производит значение true, если достигнут символа # 26.Конец строки распознается функцией eoln 13 .Она производит значение true, если дося- гнуто признаки конца строки.

Текстовые файлы связываются с файловой переменной, открываются для записи и чтения и закрываются так же, как и обычные файлы — процедурами assign, rewrite,

1 3 E nd o f l i n e.

reset.Для записи символов в файл используется операторы write для записи сим- волу в строку без перехода к следующему строке, и оператор writeln для записи информации в текущую строку с переходом к следующему.

пример:

write (ft, inf)

writeln (ft, «Начало»)

Для чтения информации с текстового файу употребляют операторы read и readln, при этом read читает данные из файла без перехода на следующую строку, а оператор readln обеспечивает такой переход.

Пример: (программа посимвольного формирования строк файла)

Существует такая особенность текстовых файлов: их можно создавать в любом текстовом редакторе, то есть не программным путем, а обрабатывать в самой программе. Более того, в такой файл можно записать числа и использовать их в программе.

Пример: (обработка текстового файла с числами)

Пояснения к программе:

Например, в файле «text2» записаны целые положительные числа (числа разделены промежутком). Количество строк и количество отрицательных чисел в каждой строке неизвестна. Надо вычислить сумму (s) и количество (kol) отрицательных чисел в каждой строке и зага- льну количество строк.

Внешний цикл обеспечивает переход от одной строки к другой. Во внутреннем цикле читается и анализируется число за числом.

 

задачи

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

«*» (Звездочка).

      1. Дано имя файла и целое число N (0 <N <27). Создать текстовый файл с именем и записать в него N строк: первая строка должна содержать строчную (то есть маленькую) латинскую букву «a», вторая — буквы «ab», третья — буквы «abc» и др; посл — ной строка должна содержать N начальных строчных латинских букв в алфавитном по- ку.
      2. Дано имя файла и целое число N (0 <N <27). Создать текстовый файл с указанным именем и записать в него N строк длины N; строку с номером K (K = 1,…, N) должна содержать K начальных прописных (то есть заглавных) латинских букв, дополненных справа символами «*» (звездочка). Например, для N = 4 файл должен содержать строки «***», «AB **», «* ABC *», «ABCD».
      3. Даны текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).
      4. Дана строка S и текстовый файл. Добавить строку S в конец файла.
      5. Даны два текстовых файла. Добавить в конец первого файла содержание второго файла.
      6. Дана строка S и текстовый файл. Добавить строку S в начало файла.
      7. Дано целое число K и текстовый файл. Вставить пустую строку перед строкой файла с номером K. Если строки с таким номером нет, то оставить файл без изменений.
      8. Дан непустой текстовый файл. Удалить из него первый строку.
      9. Дано целое число K и текстовый файл.Удалить из файла строку с номером K. Если строки с таким номером нет, то оставить без файл изменений.
      10. Даны два текстовых файла.Добавить в конец каждой строки первого файла соответствующую строку второго файла.Если второй файл короче первого, то остальные ряд- ка первого файла не изменять.
      11. Дано целое число K и текстовый файл.Удалить из каждой строки файла первые K символов (если длина строки меньше K, то Удалить с него все символы).
      12. Даны текстовый файл.Заменить в нем все крупные украинские буквы на строчные, а все малые — на большие.

      1. Даны текстовый файл.Заменить в нем все идущие подряд пробелы на один пробел.
      2. дано текстовый файл, что содержит больше трех строк. Удалить с него последние три строки.
      3. Даны два файла целых чисел одинакового размера.Создать текстовый файл, содержащий эти числа, расположенные в два столбца шириной по 30 символов (в первом столбце содержатся числа с первого выходного файла, во втором — с другой файла).В начале и конце каждой строки текстового файла добавить разделитель «|» (код 124).Чи сла выравниваются по правому краю столбца.
      4. Даны три файла целых чисел одинакового размера.Создать текстовый файл, содержащий эти числа, расположены в три колонки шириной по 20 символов (в каждом столбце содержатся числа из соответствующего исходного файла). В начале и конце каждой строки текстового файла добавить разделитель «|» (код 124).Числа выравниваются по лево- м края.
      5. Даны действительные числа A, B и целое число N. Создать текстовый файл, содержащий таблицу значений функции √x на промежутке [A, B] с шагом (B — A) / N. Таблица складае- ться из двух с то впцив: с аргументами x (10 позиций, из них 4 под дробную часть) и со значениями √x (15 позиций, из них 8 под дробную часть).Столбцы выравниваются по правому края.
      6. Даны действительные числа A, B и целое число N. Создать текстовый файл, содержащий таблицу значений функции sin (x) и cos (x) на промежутке [A, B] с шагом (B — A) / N. Таблица состоит из трех столбцов: с аргументами x (8 позиций, из них 4 под дробную часть) и со значениями sin (x) и cos (x) (12 позиций, из них 8 под дробную часть).Столбцы выравниваются по правому края.
      7. Даны текстовый файл, каждая строка которого изображает целое число, дополненное слева и справа несколькими пробелами.Вывести количество этих чисел и их сумму.

 

9. Программирование в среде Lazarus.

Lazarus — это среда визуального программирования. Здесь программист получает возможность не просто создавать программный код, но и наглядно (визуально) показывает системе, что бы он хотел увидеть. Технология визуального программирования позволяет бу дувати интерфейс будущей программы из специальных компонентов, реализующих нужные свойства. Количество таких компонентов достаточно велика. Каждый из них содержит готовый программный код и все необходимые для работы данные, лишает про- грамиста от создания того, что уже создано ранее.

Подобный подход во много раз сокращает время написания программы. Кроме того, скорость создания программного кода в Lazarus достигается за счет того, что значительная часть текста формируется автоматически. Среда визуального программирования Lazarus сочетает в себе компилятор, объектно-ориентированные средства визуального программирования и различные технологии, облегчающие и ускоряющие создание программы.

 

9.1 интерфейс Lazarus.

Чтобы запустить программу, выбираем: Пуск — Программы — Lazarus.Видкрие- ться многооконный интерфейс, показанный на рисунке.

В верхней части окна располагается главное оконное меню (Файл, Правка, Поиск и т.д.) и панель инструментов.Слева расположено окно инспектора объектов, а справа окно редактора исходного кода.Если свернуть или сдвинуть окно редактора, то станет доступным окно формы (Form1).

Работу над программой в среде визуального программирования условно можно разбить на две части.Первая это создание внешнего вида (интерфейса) буду- щей программы, вторая — написание программного кода.Итак, инспектора объектов и окно формы нужны для создания интерфейса программы, а редактор исходного кода — для работы с ее текстом. Файлы, из которых в результате получается программа, называют проектом.

 

9.1.1 первая программа

Работу над программой начинаем с создания проекта: Проект — Новый проект (если вы только открыли Lazarus — проект создан).В диалоговом окне появится выберем Программа (Графическая программа).Сразу после создании сохраняем проект: Проект — Сохранить проект (или Сохранить проект как …).При сохранении будет создано несколько файлов и папок, касающиеся проекта, поэтому хранить следует в отдельной папке, созданной в процессе сохранение или заранее (например: Project1).

Теперь можно начинать разработку программы.В начале нам доступен один объект — форма Form1.На ней мы можем размещать другие объекты — поля ввода, метки, переключатели, таблицы, кнопки и тому подобное.Рассмотрим простой пример: найти произведение двух чисел.

Рассмотрим и изменим несколько свойств формы.Для начала изменим текст в заголовке окна: в инспекторе объектов дело найдем свойство Caption и изменим ее значение с Form1 на Пример 1, щелкнув по нему, набрав новый текст и закре- пил смену нажав Enter.Изменим высоту и ширину формы: Heigh 160, Width: 260.Расположение окна — всегда в центре экрана: Position: poScreenCenter.

Для того чтобы найти произведение двух чисел нам понадобятся два поля ввода — объекты TEdit — найдено их на панели инструментов и расположим на форме.Они авто томатически получат названия: Edit1, Edit2.Изменим их ширину одновременно — утриму- кая клавишу Shift щелкнем по ним мышкой по очереди и когда они будут выделены черными квадратиками, изменим свойство Width: 120.А также зададим точно их

расположение на форме: Left 130 — координата по горозонтали вехней левой точ- ки объекта, и отдельно для каждого: Top: 10 и Top: 50 — координаты по вертикали.Координаты отсчитываются от верхней левой точки формы вправо и вниз. Удалим из объектов надписи — в свойстве Text удаляем все и нажимаем на клавиатуре Enter. Разместим также объекты типа надписи Tlabel: Label1 — подпись до первого числа, Label2 — подпись ко второму числа, Label3 — место для результата.Для них зададим свойство Left: 15 свойства Top: 10, 50 и 125 соответственно.Чтобы изменить текст, находим свойство Caption и меняем текст на Число1 :, чи сло2 :, Результат:.Чтобы увеличить буквы в надписях, выделим их, удерживая Shift и изменим свойство Font.В поле значение этого свойства нажмем кноку с тьома

точечками и в диалоговом окне зададим параметры шрифта: Arial, 12.

Осталось создать кнопку, которая запустит вычисления.Находим на панели задач объект TButton и размещаем его на форме со свойствами: Left: 15 Top 90, Width: 233, Caption: Вычислить.

Если все сделано правильно, форма выглядит так:

Внешний интерфейс программы создано, поэтому осталось написать программно код. Для этого дважды щелкнем по кнопке и произойдет переход к редактору кода, где автоматически сформируется процедура TForm1.Button1Click, где набираем текст подпрограммы:

procedure TForm1.Button1Click (Sender: TObject); begin

Label3.Caption: = ‘Результат:’ + FloatToStr (StrToFloat (Edit1.text)

* StrToFloat (Edit2.text)) end;

Пояснение: функции StrToFloat переводят текстовые значения объектов Edit1 и Edit2 в числа, перемножаются и с помощью функции FloatToStr снова пере- творються на строчное значение, придаваемое к надписи «Результат:» и заносится оператором присваивания свойству Caption объекта Label3 .

Осталось запустить программу.Выбираем в меню Выполнить выполнить или на клавиатуре F9.Если были допущены ошибки — появятся соответствующие подсказки в окне сообщений, иначе будет написано: «Проект» project1 «успешно собрано» и программа запу- ститься на выполнение.Можно вводить числа и проверять результат.

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

 

9.1.2 Диалоговые окна и объекты «Переключатель» и «Флаг»

Рассмотрим задачу: для последовательности с заданного количества цифр найти сумму или произведение по выбору с указанным количеством знаков после комы.

Создадим и сохраним новый проект. На форме разместим объекты и изменим их свойства:

object Label1: TLabel

Caption = ‘Количество элементов последовательности: «object Edit1: TEdit

Text = ‘7’

object RadioButton1: TradioButton (Перемикач1) Caption = ‘сумму »

Checked = True object Label2: TLabel

Caption = ‘Найти’

object RadioButton2: TradioButton (Перемикач2) Caption = ‘произведение’

object CheckBox1: TcheckBox (Флажок) Caption = ‘Округлить к »

Checked = True object Edit2: TEdit

Text = ‘0’

object Label3: TLabel

Caption = ‘знаков после запятой’ object Button1: TButton

Caption = ‘Выполнить’

Размещаем объекты по образцу, при необходимости изменяя их размеры и рас- ние. Обращаем внимание на объекты TradioButton и CheckBox — в них ными весть Checked указывает на состояние «включено / выключено» (True / False), то есть стоит галопа чка или точка или нет.

Рассмотрим также свойства Enabled — «активность» и Visible — «видимость» на примере объектов Edit2 и Label3: строка ввода Edit2 должен становиться не- активным (серым), а надпись Label3 должен стать невидимым при выключенном (Checked = False) флажок CheckBox1.

Для этого дважды щелкаем по флажку CheckBox1 и описываем процедуру до изменения состояния флажка:

procedure TForm1.CheckBox1Change (Sender: TObject); begin

Edit2.Enabled = not (Edit2.Enabled) Label3.Visible = not (Label3.Visible)

end;

В этой процедуре значения свойств Enabled и Visible будут изменяются няться на противоположные вместе с изменением состояния флажка.Проверьте работает про- цедура, запустив программу F9.

Осталось описать действия при нажатии кнопки Button1 — дважды щелкаем по ней и описываем процедуру.

procedure TForm1.Button1Click (Sender: TObject); var s, d: real; i, n: integer; rez: string;

begin

n = StrToInt (Edit2.text)

if RadioButton1.Checked = True then begin

s: = 0;

for i: = 1 to StrToInt (Edit1.Text) do

s = s + StrToFloat (InputBox ( «Ввод данных», «Введите элемент «+ IntToStr (i), ‘0’)); str (s: 0: n, rez)

MessageDlg ( ‘Ответ’, ‘Сумма элементов = «+ rez, MtInformation [mbOk], 0); end

else begin

d = 1;

for i: = 1 to StrToInt (Edit1.Text) do

d = d * StrToFloat (InputBox ( «Введение данных «,» Введите элемент ‘+ IntToStr (i),’ 1 ‘)); str (d: 0: n, rez)

MessageDlg ( ‘Ответ’, ‘Произведение элементов = «+ rez, MtInformation [mbOk], 0); end;

end;

Объяснение. В начале сохраняем в переменной n значение Edit2.text — ко- лькисть знаков после запятой.Далее в зависимости от состояния переключателя RadioButton1 считаем сумму или произведение.Цикл, выполняется столько раз, сколько описано в строке Edit1, будет запускать окно ввода функцией InputBox ( «Ввод данных», «Введите элемент ‘+ IntToStr (i),’ 0 ‘), где первый аргумент — заго- ловок окна, второй — текст в окне, третий — текст по умолчанию в строке ввода.

Процедура str (s: 0: n, rez) обрежет результат в указанной количества знаков и занесет его в строку rez, который будет выведено процедурой диалогового окна MessageDlg ( ‘Ответ’, ‘Произведение элементов =’ + rez, MtInformation [mbOk], 0), где третий аргумент — тип окна, четвертый — наличие и тип кнопок, пятый — кнопка по умолчанию.

 

 

9.1.3 матрицы и таблицы

Следующая задача: массив заданного размера заполнить случайными числами и посчитать их сумму и найти самый маленький и самый большой элемент массива.

Создадим и сохраним новый проект. На форме разместим объекты и изменим их свойства:

object Label1: TLabel Caption = ‘Строк »

ParentColor = False object Label2: TLabel

Caption = ‘Столбцов «object Edit1: TEdit

Text = ‘5’

 

object Edit2: TEdit Text = ‘4’

object Button1: TButton

Caption = ‘Заполнить случайными числами в’ object Edit3: TEdit

Text = ‘100’

object StringGrid1: TStringGrid ColCount = 5

RowCount = 6

object Button2: TButton

Caption = ‘Найти сумму, минимум. максимум «object Label3: TLabel

Caption = ‘Сумма =’ object Label4: TLabel

Caption = ‘Больше =’ object Label5: TLabel

Caption = ‘Меньше =’

объект StringGrid1 ищем на закладке Additional.В разделе var добавим глобальные переменные, необходимые для обработки массива:

N, kod_m, M, kod_n, i, j: integer; a: array [1..100,1..100] of integer;

Дважды щелкнем по кнопке Button1 и создадим процедуру заполнения массива:

procedure TForm1.Button1Click (Sender: TObject); begin

Val (Edit1.Text, N, kod_m) Val (Edit2.Text, M, kod_n) if (n> 100) or (m> 100) then

MessageDlg ( ‘Размеры матрицы не более 100 на 100!», MtInformation,

[MbOk], 0)

else

with StringGrid1 do begin

ColCount = M + 1;

RowCount = N + 1;

for i: = 1 to RowCount-1 do Cells [0, i]: = IntToStr (i)

for i: = 1 to ColCount-1 do Cells [i, 0] = IntToStr (i)

for i: = 1 to n do for j: = 1 to m do

begin

a [i, j] = random (StrToInt (Edit3.Text)) Cells [j, i]: = IntToStr (a [i, j]);

end;

end; end;

Объяснение. Значения полей Edit1, Edit1 занесем в переменные M и N — это раз- ры нашего массива.Если размеры превысят 100, будет выведено сообщение, иначе будут установлены соответствующие массива размеры таблицы. После чего два граждан- кли подпишут столбцы и строки — заполнят нулевой строку и столбец и следующие граждан- кли заполнят массив случайными числами, а таблицу — числами из массива.

Осталось описать процедуру к кнопке Button2 — дважды щелкаем по ней и описываем процедуру:

procedure TForm1.Button2Click (Sender: TObject); var min, max: integer; sum: int64;

begin

sum: = 0; min = a [1,1]; max = a [1,1]; for i: = 1 to n do

for j = 1 to m do begin

sum = sum + a [i, j];

if a [i, j]> max then max = a [i, j]; if a [i, j] <min then min = a [i, j];

end;

Label3.Caption: = ‘Сумма =’ + IntToStr (sum); Label4.Caption: = ‘Больше =’ + IntToStr (max) Label5.Caption: = ‘Меньше =’ + IntToStr (min)

end;

Объяснение. В массиве ищутся маленький и самый большой элемент, а также добавляются все элементы в переменную sum, после чего результаты выводятся в объекты La- bel1, Label2, Label3.

задачи

1. Создать программу для перевода веса в килограммах в унции и фунты.

2. Создать программу для вычисления синуса, косинуса и тангенса угла. На форме также предусмотреть переключатель, определяющий во многом задано угол: градуса или радианы.

3. Создать программу для вычисления корней квадратного уравнения с указанной точностью.

4. Создать программу для вычисления длины ломаной линии. Количество отрезков вводится на форме. Координаты вершин ломаной должны вводиться через диалоговые окна.

5. Создать программу для вычисления площади и периметра треугольника по координатам его вершин. Также предусмотреть определение типа треугольника, которое вми- раскаивается флажком.

6. Создать программу-калькулятор на четыре действия. В случае попытки делить на 0 должно выводиться слово «ERROR».

7. Создать программу для сортировки одномерного массива из 20 элементов в порядке возрастания или убывания по выбору через переключатель. Массив должен заполняться случайными числами при нажатии кнопки.

8. Создать программу для анализа одномерного массива: сколько парных, нечетным, положительных, отрицательных чисел он содержит.Массив из 20 элементов должен заполняться случайными числами от -50 к 50 при нажатии кнопки.

9. Создать программу для создания календарика в месяц и год, заданных в соответствующих строках.

[Всего голосов: 3    Средний: 5/5]