Текст
                    

Никита Культин ТигЬо Разса! (С 'В задачах и примерах Тульский институт экономики и мнфооматмки БИБЛИОТЕКА Санкт-Петербург «БХВ-Петербург» 2006
УДК 681.3.06 Культин Н. Б. ТшЬо Ра$са1 в задачах и примерах. — СПб.: БХВ-Петербург, 2006. — 256 с.: ил. 18В\ 5-8206-0061-4 Книга представляет собой задачник по программированию на языке ТшЬо Рокса!. Приведены как типовые задачи, т. с. ввод-вывод, исполь- зование циклов, работа с массивами, поиск и сортировка, так и задачи, которые, как правило, остаются за рамками традиционных курсов про- граммирования: работа со строками и файлами, вывод на принтер, деловая графика, рекурсия. Для многих задач приведены решения — хо- рошо документированные тексты программ. Помимо задач и примеров книга содержит справочник по языку программирования ТигЬо Ра$са1 (описание наиболее часто используемых процедур и функций) и может служить в качестве задачника для учеников 8—II классов, изучающих программирование в школе. Для начинающих программистов УДК 681.3.06 Группа подготовки издания: Главный редактор Зав. редакцией Редактор Компьютерная верстка Корректор Дизайн обложки Зав. производством Екатерина Кондукова Наталья Таркова Татьяна Кручинина Ольги Сергиенко Наталия Першакова Ангелины Лужиной Николай Тверских Лицензия ИД № 02429 от 24.07.00. Подписано в печать 22.03.06. Формат бОхЭО’Ае. Печать офсетная. Усл. печ. л. 16. Доп. тираж 5000 экз. Заказ № 161 "БХВ-Петербург1,194354 Санкт-Петербург, ул Есенина, 5Б. Санитарно-эпидемиологическое заключение на продукцию 1Чж 77.99.02.953.Д.006421.11.04 от 11.11.20Э4 г. выдано Федеральной службой по надзору в сфере защиты грав потоебителей и благополучия человека Отпечатано с готовых диапозитивов в ГУП "Типография "Наука” 199034. Санкт-Петербург, 9 линия, 12 15^ 5-8206-0061-4 © Культин Н. Б., 2000 © Оформление, издательство "БХВ — Санкт-Петербург", 200С
Содержание Предисловие.................................................7 Как работать с книгой......................................8 Оформление решений.........................................8 Часть I. Задачи.............................................9 Объявление переменных......................................9 Инструкция присваивания................................. 10 Вывод.................................................... 13 Ввод......................................................15 Программы с линейной структурой...........................16 Выбор.....................................................24 //.....................................................24 Сазе...................................................30 Циклы......................................................3 I Гог................................................... 31 Кереа!.................................................41 МЪНе................................................. 43 Символы и строки..........................................44 Массивы.................................................. 47 Функции...................................................53 Процедуры.............................................. 55 Графика...................................................56 Файлы.................................................... 64 Рекурсия.........х...................................... 69 Часть II. Решения...............................73 Часть III. Справочник..................................209 Структура программы.............................. 209 Основные типы данных...................................209 Целые числа........................................ 210
Действительные числа.....................................210 Строки.................................................. 210 Массивы.....................................................211 Записи.......................................................211 Выбор.......................................................212 Инструкция 1Г............................................212 Инструкция САЗЕ..........................................212 Циклы.......................................................213 Инструкция ЕОВ...........................................213 Инструкция КЕРЕАТ........................................214 Инструкция \УН1ЬЕ,.......................................215 Безусловный переход.........................................215 Инструкция СоТо..........................................215 Объявление функции..........................................215 Объявление процедуры........................................216 Встроенные функции и процедуры..............................216 Зарезервированные слова и директивы.........218 Процедуры и функции.........................................219 Математические функции...................................219 Абз................................................219 АгсГап.............................................219 Соз................................................219 Ехр................................................220 Еп.................................................220 ................................................220 ................................................220 ................................................220 Вапскмп............................................ 221 Капйотке............................................. 221 Функции и процедуры преобразования.............221 1т.................................................221 Роит!..............................................222 31г................................................222 Титс............................................ 222 Уа1................................................222 Функции и процедуры для работы со строками и символами....223 СИг................................................223 Сопса!.............................................223 Сору...............................................223 Ое1е1е.............................................223 кеп&к..............................................224 Роз................................................224 Процедуры и функции графического режима..........224 Аге.............................................. 224 Ваг................................................225
Ваг30.............................................................225 С1гс1е............................................................225 Ое1ес1СгарИ.......................................................226 ЕШрзе.............................................................226 беГХ Се1У.........................................................226 (ЗгарИВезиВ.......................................................226 1пИСгарИ..........................................................227 Ипе...............................................................227 ЫпеТо.............................................................227 МоусТо............................................................228 МоуеКе!...........................................................228 ОшТех1............................................................228 Ои/Тех/ХУ........................................................ 228 Р1е$Нсе...........................................................229 РшР1хе1......................................................... 229 Рес1ап$1е.........................................................229 8ес1ог......................................................................................... 230 8е1Со!ог..........................................................230 5е!ЕИ/51у1е.................................................................................. 231 8е?Ь1пе81у1е......................................................232 &>1Тех&у1е........................................................233 Процедуры и функции для работы с файлами...................................234 Аррепск...........................................................234 ...........................................................234 С/озе.............................................................234 ЕОЕ...............................................................234 Егазге............................................................235 ЮВезиР............................................................235 Кезе!.............................................................235 Ве\мгИе...........................................................236 Прочие функции............................................................. 236 С1гЕо1............................................................236 С1г5сг............................................................236 Ое!ау.............................................................236 Ызрозе............................................................237 Ео!п..............................................................237 Со(оХУ............................................................237 ИаВ...............................................................237 .............................................................238 Рагат Соип!.......................................................238 Рагат&г...........................................................238 ВеайКеу...........................................................238 Тех?ВаскСгоипс1...................................................239 Тех?Со1ог.........................................................240
ЪЪегеХ..........................................240 УУкегеТ..........................................241 1Р1п<км............... .........................241 Приложение...............................................243 Вывод иллюстраций........................................243 Таблица кодировки символов...............................247 Представление информации в компьютере..,.................248 Десятичные, двоичные и шестнадцатеричные числа........248 Память компьютера.....................................250 Список дополнительной литературы.........................253 Предметный указатель................................... 254
Предисловие Чтобы научиться программировать, не достаточно прочитать книгу, посвященную языку программирования, надо писать программы, решать конкретные задачи. Но где их можно найти9 В учебниках, как правило, приводятся типовые, стандартные задачи, в основе которых лежит расчет по формулам. Такие за- дачи, несомненно, полезны, но они не всегда интересны. В данной книге начинающему программисту предлагаются зада- чи, которые, с одной стороны ему по плечу, с другой — полезны и занимательны. Книга состоит из трех частей и приложения. В первой части собраны задачи. Они сгруппированы по темам и относятся практически ко всем разделам программирования: от объявления переменных и программ с линейной структурой до работы с графикой и файлами. Во второй части приведены решения, представленные в виде хорошо документированных текстов программ, изучение кото- рых поможет начинающему программисту даже в том случае, если задача решена им самостоятельно. Третья часть представляет собой справочник по языку програм- мирования ТшЬо Разса!, содержащий описание большинства процедур и функций. Если вы имеете компьютер с процессором типа РепЬит (Се1егоп), то используйте “игЬо Разса! версии 7.1 Програм- мы, созданные при помощи ТигЬо Разса! 7.0 и использующие библиотеку съг, на компьютерах с процессором типа Репйит (Се1егоп) не работают, при их запуске возникает ошибка "де- ление на ноль". Еще раз хочется повторить, что научиться программирова гь можно только программируя, т. с. решая конкретные задачи.
Поэтому, чтобы получить максимальную пользу от книги, вы должны работать с ней активно. Решайте задачи. Изучайте при- веденные решения. Вводите их в свой компьютер- Не бойтесь экспериментировать — вносите изменения в программы. Чем большую работу вы проделаете самостоятельно, тем большему научитесь. Как работать с книгой Группы задач следуют в книге в том порядке, в котором тради- ционно изучаются соответствующие разделы в курсе програм- мирования. Поэтому перед тем как приступить к решению задач нужно изучить соответствующую тему — прочитать раздел учеб- ника. Если сразу решить задачу не получается, то можно по- * смотреть ее решение и затем еще раз попытаться решить задачу самостоятельно. Писать программу лучше сначала на бумаге, « а уже затем вводить программу в компьютер. Задача считается решенной, если программа работает так, как • сказано в условии задачи. Оформление решений Важно, чтобы решенная задача была правильно оформлена, что предполагает использование: • осмысленных имен переменных, констант, функций и про- । педур; ‘ П I • отступов при записи инструкций; 2 • комментариев. Правильно оформленную программу легче отлаживать, кроме того, она производит хорошее впечатление. 3 Приведенные в книге примеры можно рассматривать как образ- па цы оформления решений задач. 4. кр; 5. । ко.)
Часть I. Задачи Объявление переменных Приступая к решению задач этого раздела, следует помнить, что • каждая переменная программы должна быть объявлена; • объявления переменных помещают в раздел, который начи- нается словом Vа^; • инструкция объявления переменной выгляди'] так: ИмяПеременной:Тип; • в имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква); • основными числовыми типами языка ТигЬо Ра§са1 являются: ГгЛедег (целый), геа! (дробный); • после инструкции объявления переменной рекомендуется указывать назначение переменной. 1. Объявите переменные, необходимые для вычисления значе- ния функции у = X2. 2. Объявите переменные, необходимые для пересчета веса из фунтов в килограммы. 3. Объявите переменные, необходимые для вычисления объема параллелен и педа. 4. Объявите переменные, необходимые для вычисления площади круга. 5. Объявите переменные, необходимые для вычисления площади кольца.
6. Объявите переменные, необходимые для вычисления объема и площади поверхности цилиндра. 7. Объявите переменные, необходимые для вычисления стои- мости покупки, состоящей из нескольких тетрадей, карандашей и линейки. 8. Объявите переменные, необходимые для вычисления стоимо- сти покупки, состоящей из нескольких тетрадей и такого же ко- личества обложек. Инструкция присваивания Приступая к решению задач этого раздела, следует вспомнить, что: • инструкция присваивания используется для изменения зна- чений переменных, в том числе и для вычислений по формулам; • тип выражения, находящегося в правой части инструкции присваивания, должен соответствовать типу переменной, имя которой стоит слева от символа инструкции присваивания (при нарушении соответствия тина переменной и выражения компилятор выводит сообщение об ошибке Туре Ш188 таСсЪ — несоответствие типов). 9. Запишите инструкцию, которая присваивает переменной х значение “1,5. 10. Запишите инструкцию, которая присваивает переменной зижта нулевое значение. 11. Запишите инструкцию, которая увеличивает на единицу зна- чение переменной п. 12. Запишите инструкцию, которая уменьшает на два значение переменной соипСег. 13. Запишите инструкцию вычисления среднего арифметиче- ского переменных х1 и х2. 14. Запишите в виде инструкции присваивания формулу вычис- ления значения функции у = -2,7х3 + 0,23х2 ~ 1,4.
15. Запишите в виде инструкции присваивания формулу вычис- л 1 ления значения функции у = . 16. Запишите в виде инструкции присваивания формулу пере- счета веса из фунтов в килограммы (один фунт равен 409,5 г). 17. Запишите в виде инструкции присваивания формулу пере- счета расстояния из километров в версты (одна верста равна 1066,8 м). 18. Запишите в виде инструкции присваивания формулу вычис- ления плошали прямоугольника. 19. Запишите в виде инструкции присваивания формулу вычис- ления площади треугольника: 8 - а > к, где а — длина осно- вания треугольника, к — его высота. 20. Запишите в виде инструкции присваивания формулу вычис- ления площади трапеции: з - • к , где а и Ь — длины осно- ваний, к — высота трапеции. 21. Запишите в виде инструкции присваивания формулу вычис- ления плошали круга: 5 = л г2. 22. Запишите в виде инструкции присваивания формулы вычис- ления площади поверхности и объема цилиндра. 23. Запишите в виде инструкции присваивания формулу вычис- ления объема параллелепипеда.
24. Запишите в виде инструкции присваивания формулы вычис- ления объема и плошади поверхности шара. 3 з V = ~ Л • Г 4 $ = 4 • л • г2 25. Запишите в виде инструкции присваивания формулу вычис- ления объема цилиндра. 26. Запишите в виде инструкции присваивания формулу вычис- ления объема полого цилиндра. Г] — радиус цилиндра ?‘2 — радиус отверстия И — высота цилиндра 27. Запишите в виде инструкции присваивания формулу вычис- ления объема конуса. 28. Запишите в виде инструкции присваивания формулу вычис- ления объема цилиндра. 29. Запишите в виде инструкции присваивания формулу вычис- ления тока по известным значениям напряжения и сопротивле- ния электрической цепи.
с- с- с- с- с- с- е- 30. Запишите в виде инструкции присваивания формулу вычис- ления сопротивления электрической цепи по известным значе- ниям напряжения и силы тока. 31. Запишите в виде инструкции присваивания формулу вычис- ления сопротивления электрической цепи, состоящей из трех последовательно соединенных резисторов. 32. Запишите в виде инструкции присваивания формулу вычис- ления сопротивления электрической цепи, состоящей из двух параллельно соединенных резисторов: г = - - — . Л + 33. Запишите в виде инструкции присваивания формулу пере- счета сопротивления электрической цепи из омов в килоомы 34. Запишите в виде инструкции присваивания формулу вычис- ления стоимости покупки нескольких тетрадей, карандашей и линейки. 35. Запишите в виде инструкции присваивания формулу вычис- ления стоимости покупки некоторого количества (по весу) по- мидоров, огурцов и яблок. Вывод Приступая к решению задач этого раздела, следует вспомнить, что: • инструкции мгахе и иг1те1г предназначены для вывода на экран монитора сообщений и значений переменных; • одна инструкция (мг1те1п) может вывести на экран значения нескольких переменных и (или) несколько сооб- щений; • инструкция мгзлеХп без параметров переводит курсор в нача- ло следующей строки экрана. 36. Написать программу, которая выводит на экран имя и фа- милию,
37. Написать программу, которая выводит на экран сообщение ТигЬо Разса1 7.0. 38. Написать программу, которая выводит на экран четверо- стишие: Унылая пора! Очей очарованье! Приятна мне твоя прощальная краса — Люблю я пышное природы увяданье, В багрец и золото одетые леса. А. С. Пушкин 39. Написать инструкцию вывода значения переменной а (тип геа1) с тремя цифрами в дробной части. 40. Определите, что делают инструкции: < иг!±е(а); ‘ мгаХе(’а’); ] Е 41. Написать инструкцию, которая выводит значения дробных *] переменных а, ь и с в одной строке. Каждое число должно быть выведено с двумя знаками после десятичной точки: нг1Хе!п(а:6:2,' ' ГЪ:6:2,' ',с:б:2); 4 42. Написать инструкции вывода значений переменных а, о и с. д Значение каждой переменной должно быть выведено на отдель- п ной строке. к л 43. Написать инструкции вывода значений дробных переменных н х1 и х2. На экране перед значением переменной должен быть 0 выведен поясняющий текст, представляющий собой имя пере- менной, за которым следует знак ‘равно". Факультатив П 41 Стандартная библиотека сгс содержит процедуры, используя которые, можно задать цвет фона и цвет символов, выводимых * инструкциями мгдЛе И ыгдХеЬп. Приступая к решению задач этого раздела, следует вспомнить, что: *
• для того, чтобы программе были доступны процедуры и функции библиотеки Сгг, первой инструкцией программы должна быть инструкция изез сиг; • цвет символов устанавливает процедура техгвасксгоипб; • цвет фона устанавливает процедура техгСс1ог; • при использовании процедур техьвасксгоипа и техьсо1ог цвет можно задать с помощью именованной или целой константы; • процедура С1г5сг очищает экран; • в текст программы нужно включить директиву изез сгс, чтобы можно было использовать процедуры С1г5сг, техеваскогопм И Тех11Со1ог. 44. Написать программу, которая выводит на синем фоне серы- ми буквами четверостишие: Буря мглою небо кроет, Вихри снежные крутя. Тс как зверь она завоет, То заплачет, как датя. А. С. Пушкин 45. Написать программу, которая выводит на экран фразу: Каж- дый охотник желает знать, где сидят фазаны, позволяющую за - помнить порядок следования цветов радуги (первая буква слова кодирует цвет: каждый — красный, охотник — оранжевый, же- лает — желтый, знать — зеленый, где — голубой, сидят — си- ний, фазаны — фиолетовый). Каждое слово фразы должно быть выведено наиболее подходящим цветом. Ввод Приступая к решению задач этого раздела, следует вспомнить, что: • для ввода с клавиатуры во время работы программы исходных данных (значений переменных) предназначена инструкция геасИп; • используя одну инструкцию геасПп, можно ввести значения нескольких переменных;
• тип данных, вводимых во время работы программы, должен соответствовать типу переменной, указанной в инструкции геасПп; • в случае несоответствия типа введенных данных типу перемен- ной, значение которой вводится с клавиатуры, программа за- вершает работу и на экран выводится сообщение Еггог юь: ТгггаИа питегхе Тогтае (если программа запущена из среды разработки, т. е. из ТигЬо Ра$са1) или кип Ыте еггог 106 (если программа запущена из операционной системы). 46. Написать инструкцию, обеспечивающую во время работы программы ввод значения переменной гасНиз. 47. Написать инструкции, которые обеспечивают ввод значений переменных и и г. Предполагается, что во время работы про- граммы пользователь будет после набора каждого числа нажи- мать клавишу <Ешег>. 48. Написать инструкцию, которая обеспечивает ввод значений переменных и и г. Предполагается, что во время работы про- граммы пользователь будет набирать числа в одной строке. 49. Объявите необходимые переменные и напишите фрагмент программы вычисления объема цилиндра, обеспечивающий ввод исходных данных. 50. Объявите необходимые переменные и напишите инструкции ввода исходных данных для программы вычисления стоимости покупки нескольких тетрадей и карандашей. Предполагается, что во время работы программы пользователь будет вводить данные о каждой составляющей покупки в отдельной строке: сначала цену, затем количество. Программы с линейной структурой Приступая к решению задач этого раздела, следует вспомнить, что: • программы с линейной структурой являются простейшими и используются, как правило, для реализации обычных вычис- лений по формулам;
эах Часть А Задачи 17 :ен ии ;н- за- )6: ЛЫ 106 ТЫ ИЙ ю- си- ий 30- ‘НТ юд ИИ :ти ся, 1ТЬ ке: • в программах с линейной структурой инструкции выполня- ются последовательно, одна за другой; • алгоритм программы с линейной структурой может быть представлен следующим образом: 51. Написать программу вычисления площади параллелограмма. < Ниже представлен рекомендуемый вид экрана во время работы г программы (данные, введенные пользователем, выделены полу- жирным шрифтом). Вычисление площади параллелограмма. Введите исходные данные: Длина (см) —> 9 Ширина (см) —> 7.5 Площадь параллелограмма: 67.50 кв.см. 52. Написать программу вычисления объема параллелепипеда Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полу- жирным шрифтом). ть. I И кз- Вычисление объема параллелепипеда. Введите исходные данные: Длинна (см) —> 9 Ширина (см) —> 7.5 Высота (см) —> 5 Объем: 337.50 куб.см.
53. Написать программу вычисления площади поверхности па- раллелепипеда. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление площади поверхности параллелепипеда. Введите исходные данные: Длина (см) —> 9 Ширина (см) —> 7.5 Высота (см) —> 5 Площадь поверхности: 90.00 кв.см. 54. Написать программу вычисления объема куба. Ниже пред- ставлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление объема куба. Введите длину ребра (см) и нажмите <Епсег> -> 9.5 Объем куба: 857.38 куб.см. 55. Написать программу вычисления объема цилиндра. Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- ным шрифтом). Вычисление объема цилиндра Введите исходные данные: Радиус основания (см) —> 5 Высота цилиндра (см) —> 10 Объем цилиндра 1570.80 куб. см. Для завершения работы программы нажмите <ЕпГег>. 56. Написать программу вычисления стоимости покупки, со- 1 стоящей из нескольких тетрадей и карандашей. Ниже представ- | лен рекомендуемый вид экрана во время работы программы 1 (данные, введенные пользователем, выделены полужирным 1 шрифтом). ( 1 Вычисление стоимости покупки. Введите исходные данные: ;
Цена тетради (руб.) —> 2.75 Количество тетрадей —> 5 Цена карандаша (руб.) —> 0.85 Количество карандашей —> 2 Стоимость покупки: 15.45 руб. 57. Написать программу вычисления стоимости покупки, со- стоящей из нескольких тетрадей и такого же количества обло- жек к ним. Ниже представлен рекомендуемый вид экрана вс время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление стоимости покупки. Введите исходные данные: Цена тетради (руб.) —> 2.75 Цена обложки (руб.) —> 0.5 Количество когдплектов (шт.) —> 7 Стоимость покупки: 22.75 руб. 58. Написать программу вычисления стоимости некоторого ко- личества (по весу) яблок. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользо- вателем, выделены полужирным шрифтом). Вычисление стоимости покупки. Введите исходные данные: Цена одного килограмма яблок (руб.) —> 8.5 Вес яблок (кг) —> 2.3 Стоимость покупки: 19.55 руб. 59. Написать программу вычисления площади треугольника, ес- ли известна длина основания и высота. Ниже представлен реко- мендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление площади треугольника. Введите исходные данные: Основание (см) —> 8.5 Высота (см) —> 10 Площадь треугольника 42.50 кв.см.
60. Написать программу вычисления плошали треугольника, ес- ли известны длины двух его сторон и величина угла между эти- ми сторонами. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление площади треугольника. Введите (через пробел) длины двух сторон (см) треугольника -> 25 17 Введите величину угла между сторонами треугольника ~> 30 Площадь треугольника: 106.25 кв.см. 61. Написать программу вычисления сопротивления электриче- ской цепи, состоящей из двух параллельно соединенных сопро- тивлений. Ниже представлен рекомендуемый вид экрана во вре- мя работы программы (данные, введенные пользователем, выде- лены полужирным шрифтом). Вычисление сопротивления электрической цепи при параллельном соединении элементов. Введите исходные данные: Величина первого сопротивления (Ом) —> 15 Величина второго сопротивления (Ом)—> 20 Сопротивление цепи: 8.57 Оги. 62. Написать программу вычисления сопротивления электриче- ской цепи, состояшей из двух последовательно соединенных сопротивлений. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление сопротивления электрической цепи. Введите исходные данные: Величина первого сопротивления (Ом) —> 15 Величина второго сопротивления (Ом)—> 27.3 Сопротивление цепи (последовательное соединение): 4 2.3 С См. 63. Написать программу вычисления силы тока в электрической цепи. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделе- ны полужирным шрифтом).
Вычисление силы тока в электрической цепи. Введите исходные данные: Напряжение (вольт) —> 36 Сопротивление <0м) —> 1500 Сила тока: 0.024 Ампер. 64. Написать программу вычисления расстояния между населен- ными пунктами, изображенными на карте. Ниже представлен ре- комендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление расстояния между населенными пунктами. Введите исходные данные: Масштаб карты (количество километров в одном сантиметре) —> 120 Расстояние между точками, изображающими населенные пункты (см) -> 3.5 Расстояние между населенными пунктами 420 км. 65. Написать программу вычисления стоимости поездки на ав- томобиле на дачу (туда и обратно). Исходными данными явля- ются: расстояние до дачи (в километрах); количество бензина, которое потребляет автомобиль на 100 км пробега; цена одного литра бензина. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление стоимости поездки на дачу и обратно. Расстояние до дачи (км) —> 67 Расход бензина (литров на ПОС км пробега) -> 8.5 Пена литра бензина (руб.) —> 6.5 Поездка на дачу и обратно обойдется е 74.04 руб. 66. Написать программу вычисления объема цилиндра. Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- ным шрифтом). Вычисление объема цилиндра. Введите исходные данные:
Радиус основания (см) —> 5.5 Высота цилиндра (см) —> 7 Объем цилиндра: 665.23 куб. см. 67. Написать программу вычисления площади поверхности ци- линдра. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделе- ны полужирным шрифтом). Вычисление площади поверхности цилиндра. Введите исходные данные: Радиус основания (см) —> 5.5 Высота цилиндра (см) —> 7 Площадь поверхности цилиндра: 431.97 кв.см. 68. Написать программу вычисления объема параллелепипеда. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полу- жирным шрифтом). Вычисление объема параллелепипеда. Введите в одной строке длину, ширину и высоту параллелепипеда (в сантиметрах) . Числа разделяйте пробелами. После ввода последнего числа нажмите <ЕгЛег>. ->7.52.53 Объем параллелепипеда 56.25 куб. см. 69. Написать программу пересчета расстояния из верст с кило- метры (1 верста равняется 1066,8 м). Ниже представлен реко- мендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Пересчет расстояния из верст в километры. Введите расстояние в верстах и нажмите <ЕпЬег>. -> 100 100 верст(а/ы) — это 106.68 км. 70. Написать программу пересчета веса из фунтов в килограммы (1 российский фунт равен 409,5 г). Ниже представлен рекомен-
дуемый вид экрана во время работы программы (данные, вве- денные пользователем, выделены полужирным шрифтом). Пересчет’веса из фунтов в килограммы. Введите вес в фунтах и нажмите <Еп6ег> ци- 5 СМЯ 5 фунт(а/ов) — это 2.05 кг. еле- 71. Написать программу вычисления величины дохода по вкла- ду. Процентная ставка (в процентах годовых) и время хранения I (в днях) задаются во время работы программы. Ниже представ- | лен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление дохода по вкладу. Введите исходные данные: еда. Величина вклада (руб.) —> 2500 ОТЫ Срок вклада (дней) —> 30 рду- Процентная ставка (годовых) —> 20 Доход: 41.10 руб. Сумма по окончании срока вклада: 2541.10 руб. еда 72. Написать программу пересчета величины временного интер- вала, заданного в минутах, в величину, выраженную в часах и минутах. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделе- ны полужирным шрифтом). Введите величину временного интервала (в минутах) аЛО- и нажмите <Епбег> рко- —> 150 кые, 150 минут — это 2 ч. 30 мин. 73. Написать программу, которая преобразует введенное с кла- виатуры дробное число в денежный формат. Например, число 125 должно быть преобразовано к виду 12 руб. 50 коп. Преобразование числа в денежный формат. Введите дробное число —> 23.6 4 МЫ 1ен- 1 23•6 РУб- ~ это 23 руб. 60 коп.
74. Написать программу пересчета веса из фунтов в килограммы (1 фунт равняется 409,5 г). Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Пересчет веса из фунтов в килограммы. Введите вес в фунтах и нажмите <Епсег>. -> 3.5 3.5 фунт(а/ов) — это 1 кг 420 г. 75. Написать программу, которая вычисляет площадь треуголь- ника, если известны координаты его углов. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление площади треугольника. Введите координаты углов (числа разделяйте пробелом) : х1,у1 —> -2 5 х2,у2 ->17 хЗ,уЗ —> 5 —3 Площадь треугольника: 23.5€ кв.см. Выбор И Приступая к решению задач этого раздела, следует вспомнить, что: • инструкция к используется для выбора одного из двух на- правлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены); • выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия', • условие — это выражение логического типа, которое может принимать одно из двух значений: типе (истина — условие выполняется) или еапзе (ложь — условие не выполняется);
• при помощи логических операций Алб (логическое И’) и Ог (логическое "Или") из простых условий можно строить сложные. 76. Написать программу, которая вычисляет частное от деления двух чисел. Программа должна проверять правильность введен- ных пользователем данных и, если они неверные (делитель ра- вен нулю), выдавать сообщение об ошибке. Ниже представлен рекомендуемый вид экрана во время работы программы (дан- ные, введенные пользователем, выделены полужирным шрифтом). Вычисление частного. Введите в одной строке делимое и делитель, затем нажмите <ЕпЪег> -> 12 О Вы ошиблись. Делитель не должен быть равен нулю. 77. Написать программу вычисления площади кольца. Програм- ма должна проверять правильность исходных данных. Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- ным шрифтом). Вычисление площади кольца. Введите исходные данные: Радиус кольца (см) —> 3.5 Радиус отверстия (см) —> 7 Ошибка! Радиус отверстия не может быть больше радиуса кольца. 78. Написать программу вычисления сопротивления электриче- ской цепи, состоящей из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно. Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- ным шрифтом). Вычисление сопротивления электрической цепи. Введите исходные данные: Величина первого сопротивления (Ом) — > 15 Величина второго сопротивления (Ом)—> 27.3 Тип соединения (1 - последовательное, 2 - параллельное —> 2 Сопротивление цепи: 9.68 Ом.
79. Написать программу решения квадратного уравнения. Про- грамма должна проверять правильность исходных данных и в случае, когда коэффициент при второй степени неизвестного равен нулю, выводить соответствующее сообщение. Ниже пред- ставлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). * Решение квадратного уравнения * Введите в одной строке значения коэффициентов и нажмите <Еп1:ег> -> 12 27 -10 Корни уравнения: х1~ -25.551 х2= —28.449 80. Написать программу вычисления стоимости покупки с уче- том скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 руб. Ниже представлен рекомендуемый вил экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление стоимости покупки с учетом скидки. Введите сумму покупки и нажмите <Еп1:ег> -> 1200 Вам предоставляется скидка 10% Сумма покупки с учетом скидки: 1080.00 руб. 81. Написать программу вычисления стоимости покупки с уче- том скидки. Скидка в 3% предоставляется в том случае, если сумма покупки больше 500 руб., в 5% — если сумма больше 1000 руб. Ниже представлен рекомендуемый вид экрана во время ра- боты программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление стоимости покупки с учетом скидки. Введите сумму покупки и нажмите <ЕпЬег> -> 640 Вам предоставляется скидка 3% Сумма покупки с учетом скидки: 620.80 руб. 82. Написать программу проверки знания даты основания Санкт- Петербурга. В случае неверного ответа пользователя программа должна выводить правильный ответ. Ниже представлен реко-
мендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). В каком году был основан Санкт-Петербург? Введите число и нажмите <Епбег> -> 1705 Вы ошиблись, Санкт-Петербург был основан в 1703 году. 83. Написать программу проверки знания даты начала второй мировой войны. В случае неверного ответа пользователя про- грамма должна выводить правильный ответ. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). В каком году началась вторая мировая война? Введите число и нажмите <Епбег> -> 1939 Правильно. 84. Написать программу проверки знания истории архитектуры. 11рограмма должна вывести вопрос и три варианта ответа. Поль- зователь должен выбрать правильный ответ и ввести его номер. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полу- жирным шрифтом). Архитектор Исаакиевского собора: 1. Доменико Трезини 2. Огюст Монферран 3. Карл Росси Введите номер правильного ответа и нажмите <Епбег> -> 2 Вы ошиблись. Архитектор Исаакиевского собора — Огюст Монферран. 85. Написать программу проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа, а пользователь — выбрать правильный ответ и ввести его номер. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полу- жирным шрифтом).
Невский проспект получил свое название: 1. По имени реки, на берегах которой расположен Санкт-Петербург 2. По имени близко расположенного монастыря Александро-Невской лавры 3. В память о знаменитом полководце Александре Невском Введите номер правильного ответа и нажмите <Епбег> -> 2 Вы ошиблись. Правильный ответ: 2. 86. Написать программу, которая сравнивает два числа, введен- ных с клавиатуры. Программа должна указать, какое число больше, или, если числа равны, вывести соответствующее сооб- щение. Ниже представлен рекомендуемый вид экрана во время работы программы. Введите в одной строке два целых числа и нажмите <ЕпГег>. -> 34 67 34 меньше 67. 87. Написать программу, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, про- веряет его и выводит сообщение ' Правильно!" или "Вы ошиб- лись" и правильный результат. Ниже представлен рекомендуе- мый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Сколько будет 6x7? Введите ответ и нажмите <Епбег> -> 56 Вы ошиблись. 6x7=42. 88. Написать программу, которая выводит пример на вычитание (в пределах 100), запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно!* или "Вы ошиблись' и пра- вильный результат. Ниже представлен рекомендуемый вид экра- на во время работы программы (данные, введенные пользовате- лем, выделены полужирным шрифтом). Сколько будет 83-17? Введите ответ и нажмите <ЕпГег> 67 Вы ошиблись. 83-17=66.
89. Написать программу, которая проверяет, является ли четным введенное пользователем целое число. Ниже представлен реко- мендуемый вид экрана программы во время ее работы (данные, введенные пользователем, выделены полужирным шрифтом). Введите целое число и нажмите <Епеег> -> 23 Число 23 — нечетное. 90. Написать программу, которая проверяет, делится ли на три целое число, введенное с клавиатуры. Ниже представлен реко- мендуемый вид экрана программы во время ее работы (данные, введенные пользователем, выделены полужирным шрифтом). Введите целое число и нажмите <ЕпСег> -> 451 Число 451 нацело на три не делится. 91. Написать программу определения стоимости разговора по телефону с учетом скидки 20%, предоставляемой по субботам и воскресеньям. Ниже представлен рекомендуемый вид экрана программы во время ее работы (данные, введенные пользовате- лем, выделены полужирным шрифтом). Вычисление стоимости разговора по телефону. Введите исходные данные: Длительность разговора (целое количество минут) —> 3 День недели (1 — понедельник, ... 7 — воскресенье) —> 6 Предоставляется скидка 20%. Стоимость разговора: 5.52 руб. 92. Написать программу, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным и выдает рекоменда- цию о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в сантиметрах)—100. Реко- мендуемый вид экрана во время работы программы приведен ниже (данные, введенные пользователем, выделены полужир- ным шрифтом). Введите в одной строке через пробел рост (см) и вес (кг) затем нажмите <ЕггСег> -> 170 68 Вам надо поправиться на 2.00 кг.
Сазе Приступая к решению задач этого раздела, следует вспомнить, что: • инструкция Сазе используется для выбора одного из несколь- ких направлений дальнейшего хода программы (последо- вательности инструкций, которые должны быть выполнены); • выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства значения переменной-селектора константе, указанной перед группой инструкций; • в качестве переменной-селектора можно использовать пере- менную целого (ггтЬедег) или символьного (скаг) типа. 93. Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени го- да. В случае, если пользователь укажет недопустимое числе, программа должна вывести сообщение “Ошибка ввода данных”. Ниже представлен рекомендуемый вид экрана во время работы программы. Введите номер месяца (число от 1 до 12) и нажмите <Епсег> -> 11 Зима. 94. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: “Рабочий день", "Суббота1 или "Воскресенье". 95. Написать программу, вычисляющую стоимость междугород- него телефонного разговора (цена одной минуты определяется расстоянием до города, в котором находится абонент). Исход- ными данными для программы являются код города и продол- жительность разговора. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользо- вателем, и коды некоторых городов выделены полужирным шрифтом). Вычисление стоимости разговора по телефону. Введите исходные данные: Код города —> 812
шть, :оль- [ело- 1ы); I ВО 1ства юред пере- ателя и го- исло, НЫХ". 1боты отеля 5очий ’ород- 1яется [сход- юдол- й вид эльзо- фНЫМ Длительность (целое количество минут)—> 3 Город: Владивосток Цена минуты: 2.20 руб. Стоимость разговора: 6.60 руб. Город Код Цена минуты, руб. Владивосток 423 2,2 Москва 095 1,0 Мурманск 815 1/2 Самара 846 1/4 96. Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 999), обозначающего денежную еди- ницу, дописывает слово "рубль” в правильной форме. Например, 12 рублей, 21 рубль и т. д. 97. Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего денежную еди- ницу, дописывает слово "копейка" в правильной форме. Напри- мер, 5 копеек, 41 копейка и т. д. 98. Написать программу, которая вычисляет дату следующего дня. Ниже представлен рекомендуемый вид экрана во время ра- боты программы, (данные, введенные пользователем, выделены полужирным шрифтом). Введите цифрами сегодняшнюю дату (число месяц год) —> 31 12 1999. Последний день месяца! С наступающим новым годом! Завтра 1.1.2000. Циклы Рог Приступая к решению задач этого раздела, следует вспомнить, что*. • инструкция Гог используется для организации циклов с фик- сированным, определяемым во время разработки программы, числом повторений;
• количество повторений цикла определяется начальным и ко- нечным значениями переменной-счетчика; • переменная-счетчик должна быть целого типа (Тпседег). 99. Написать программу, которая 10 раз выводит на экран имя и фамилию. 100. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел. Ниже представлен рекомендуемый вид экрана во время работы программы. Таблица квадратов Число Квадрат 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 101. Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел. Ниже пред- ставлен рекомендуемый вид экрана во время работы программы. Таблица квадратов нечетных чисел Число Квадрат 1 3 5 7 9 1 9 25 49 81 102. Написать программу, которая вычисляет сумму первых п целых положительных целых чисел. Количество суммируемых
чисел должно вводиться во время работы программы. Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- ным шрифтом). Вычисление суммы положительных чисел. Введите количество суммируемых чисел —> 2С Сумма первых 20 положительных чисел равна. 210. 103. Написать программу, которая вычисляет сумму первых и целых положительных четных чисел. Количество суммируемых чисел должно вводиться во время работы программы. Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- ным шрифтом). Вычисление суммы четных положительных чисел. Введите количество суммируемых чисел и нажмите <ЕпДег> -> 12 Сумма первых 12 положительных четных чисел равна 156. 104. Написать программу, которая вычисляет сумму первых п членов ряда 1, 3, 5, 7, .... Количестве суммируемых членов ряда задается во время работы программы. Ниже представлен реко- мендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление частичной суммы ряда: 1,3,5,7, ... Введите количество суммируемых членов ряда —> 15 Сумма первых 15 членов ряда равна 330. 105. Написать программу, которая вычисляет сумму первых п чле- нов ряда + .... Количество суммируемых членов ряда задается во время работы программы. Н иже представлен ре- комендуемый вид экрана во время работы программы (данные, введенные пользовагелем, выделены полужирным шрифтом). Вычисление частичной суммы ряда: 1+1/2+1/Зт ... Введите кол-во суммируемых членов ряда —> 15 Сумма первых 15 членов ряда равна 3.3182. 2 Зак 161
106. Написать программу, которая выводит таблицу степеней ц двойки (от нулевой до десятой). Ниже представлен рекомендуе- н мый вид экрана во время работы программы. д> Таблица степеней двойки тс 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 30 1024 107. Написать программу, которая вычисляет факториал числа, введенного с клавиатуры. (Факториалом числа п называется произведение целых чисел от 1 до п. Например, факториал чис- ла 1 равен 1? а числа 8 — 40320.) Вычисление факториала. Введите число, факториал которого надо вычислить -> 7 Факториал 7 равен 5040. Вь ДГ —> - > —> Ср Дл 11 че< се; гр; пр Вьи Дре Вв€ Ввс ная 108, Написать программу, которая выводит таблицу значений -> функции у = -2,4х2 + 5х - 3 в диапазоне от -2 до 2 с шагом 0,5. 1 -> Ниже представлен рекомендуемый вид экрана во время работы программы. ~> Сре х I У для -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -22.60 -15.90 -10.40 -6.10 -3.00 -1.10 -0.40 -0.90 -2.60 111 вате выв тел г гра» Обрг ПОС!
109. Написать программу, которая вводит с клавиатуры 5 дроб- ных чисел и вычисляет их среднее арифметическое. Рекомен- дуемый вид экрана во время работы программы приведен ниже. Данные, введенные пользователем, выделены полужирным шриф- том. Вычисление среднего арифметического последовательности дробных чисел. После ввода каждого числа нажимайте <ЕпСег> -> 5.4 -> 7.8 -> 3.0 -> 1.5 -> 2.3 Среднее арифметическое введенной последовательности: 4.00 Для завершения работы программы нажмите <Еп-сег>. ПО. Написать программу, которая вычисляет среднее арифмети- ческое вводимой с клавиатуры последовательности дробных чи- сел. Количество чисел должно задаваться во время работы про- граммы. Рекомендуемый вид экрана во время работы программы приведен ниже. Вычисление среднего арифметического последовательности дробных чисел. Введите количество чисел последовательности —> 5 Вводите последовательность. После ввода каждого числа нажимайте <Епсег> ~> 5.4 -> 7.8 -> 3.0 -> 1.5 -> 2.3 Среднее арифметическое введенной последовательности: 4.00 Для завершения работы программы нажмите <Еп1:ег>. 111. Написать программу, которая вводит с клавиатуры последо- вательность из пяти дробных чисел и после ввода каждого числа выводит среднее арифметическое полученной части последова- тельности. Рекомендуемый вид экрана во время работы про- граммы приведен ниже. Обработка последовательности дробных чисел. После ввода каждого числа нажимайте <Епбег> -> 12.3
Введено чисел: 1 Сумма: 12.30 Сред.арифметическое: 12.30 -> 15 Введено чисел: 2 Сумма: 27.30 Сред.арифметическое: 13.65 -> 10 Введено чисел: 3 Сумма: 37.30 Сред.арифметическое: 12.43 -> 5.6 Введено чисел: 4 Сумма: 42.90 Сред.арифметическое: 10.73 -> 11.5 Введено чисел: 5 Сумма: 54.40 Сред.арифметическое: 10.88 Для завершения работы программы нажмите <Епсег>. 112. Написать программу, которая вычисляет среднее арифмети- ческое последовательности дробных чисел, вводимых с клавиа- туры. После того, как будет введено последнее число, программа должна вывести минимальное и максимальное число последова- тельности. Количество чисел должно задаваться во время работы программы. Рекомендуемый вид экрана приведен ниже. Данные, введенные пользователем, выделены полужирным шрифтом. Обработка последовательности дробных чисел. Введите количество чисел последовательности —> 5 Вводите последовательность. После ввода каждого числа нажимайте <Епсег> - > 5.4 - > 7.8 - > 3.0 - > 1.5 - > 2.3 Количество чисел: 5 Среднее арифметическое: 4.00 Минимальное число: Максимальное число: Для завершения работы программы нажмите <Епбег>. ИЗ. Написать программу, которая генерирует 10 случайных чи- сел в диапазоне от 1 до 10, выводит эти числа на экран и вычис- ляет их среднее арифметическое. Рекомендуемый вид экрана во время работы программы приведен ниже. *** Случайные числа *** 1342749 6 21 сред.арифм. 3.9
шерах 114. Написать программу, которая генерирует три последова- тельности из десяти случайных чисел в диапазоне от 1 до 10, выводит каждую последовательность на экран и вычисляет среднее арифметическое каждой последовательности. Рекомен- дуемый вид экрана во время работы программы приведен ниже. *** Случайные числа *** 6 10 4 2 581773 сред.арифм. 5.30 10 361 10 13 87 6 сред.арифм. 5.50 522542216 10 сред.арифм. 3.90 Для завершения работы нажмите <Епгег>. >мети- 1авиа- рамма едова- »аботы иные, д. 115. Написать программу, которая выводит на экран таблицу стоимости, например, яблок в диапазоне от 100 г до 1 кг с ша- гом 100. Ниже представлен рекомендуемый вид экрана програм- мы во время ее работы (данные, введенные пользователем, вы- делены полужирным шрифтом). Введите цену одного килограмма и нажмите <Епбег> (копейки от рублей отделяйте точкой) -> 16.50 Вес, г Стоимость, руб. 100 1.65 200 3.30 300 4.95 400 6.60 500 8.25 600 9.90 700 11.55 800 13.20 900 14.85 1000 16.50 ях чи- 5ЫЧИС- ана во 116. Написать программу, которая выводит таблицу значений функции у = |х|. Диапазон изменения аргумента — от -4 до 4, шаг приращения аргумента — 0,5. 117. Написать программу, которая выводит таблицу значений функции у = |х + 2| Диапазон изменения аргумента — от -4 до 4, шаг приращения аргумента — 0,5.
118. Написать программу, которая выводит таблицу значений 12' функции у = |х — 2|| + |х + 11. Диапазон изменения аргумента — ря; от -4 до 4, шаг приращения аргумента — 0,5. тг/^ этс 119. Написать программу, которая выводит на экран таблицу умножения, например, на 7. Рекомендуемый вид экрана во вре- 12; мя работы программы приведен ниже. ла 7x2= 14 7 х 3 = 21 7 х 4 = 28 7 х 5 = 35 7 х 6 = 42 7 х 7 = 49 7 х 8 = 56 7 х 9 = 63 124 ла 125 нш бел пре * * * 120. Написать программу, которая выводит двоичное представ- * ление введенного с клавиатуры десятичного целого числа в диа- * * пазоне от 0 до 255. Рекомендуемый вид экрана во время работы * программы приведен ниже (данные, введенные пользователем, * * выделены полужирным шрифтом). Преобразование десятичного числа в двоичное. Введите целое число от 0 до 255 и нажмите <Епбег> -> 164 Десятичному числу 64 соответствует двоичное 10100100 Для завершения работы программы нажмите <Епбег>. 121. Написать программу, которая выводит на экран квадрат Пифагора — таблицу умножения. Рекомендуемый вид экрана во время работы программы приведен ниже. 126 зов? экр; Прес Ввел -> 4 Деся Для 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 Фа] 2 2 4 6 8 10 1 2 14 16 18 20 3 3 6 9 12 15 18 21 24 27 30 127. 4 4 8 12 16 20 24 28 32 36 40 Поо 5 5 10 15 20 25 ЗС 35 40 45 50 6 6 12 18 24 30 36 42 48 54 60 Ю П г 7 7 14 21 28 35 42 49 56 63 70 Ь — 8 8 16 24 32 40 48 56 64 72 80 став; 9 9 18 27 36 45 54 63 72 81 90 Отве
122. Напишите программу, которая вычисляет частичную сумму ряда 1—1/34-1/5—1/7+1/9—... и сравнивает полученное значение с тг/4 (при суммировании достаточно большого количества членов этого ряда, величина частичной суммы приближается к л/4). 123. Напишите программу приближенного вычисления интегра- ла функции Г(х) = 5х2 — х + 2 методом прямоугольников. 124. Напишите программу приближенного вычисления интегра- ла методом трапеций. 125. Напишите программу, которая выводит на экран изображе- ние шахматной доски. Черные клетки отображать "звездочкой”, белые — пробелом. Рекомендуемый вид экрана во время работ ы программы приведен ниже. * -к * * * * * * * * > * к -к * к * * * * к к * * к •* * к к к * 126. Написать программу, которая преобразует введенное поль- зователем десятичное число в двоичное. Рекомендуемый вид экрана во время работы программы приведен ниже. Преобразование десятичного числа в двоичное. Введите целое число от С до 255 и нажмите <Епсег> -> 49 Десятичному числу 49 соответствует двоичное ОС110001 Для завершения работы программы нажмите <Епсег>. Факультатив 127. Написать программу проверки знания таблицы умножения. Программа должна вывести 10 примеров и выставить оценку: за 10 правильных ответов — "отлично", за 9 и 8 —"хорошо", за 7 и 6 — "удовлетворительно", за 6 и менее — "плохо". Ниже пред- ставлен рекомендуемый вид экрана во время работ ы программы. Ответы пользователя выделены полужирным шрифтом.
*** Проверка знания таблицы умножения *** После примера введите ответ и нажмите <Епбег> 5 х 3 = 15 7 х 7 = 49 1x4 = 4 4 х 3 « 12 9 х 4 = 36 8 х 8 = 64 7 х 8 = 52 Вы ошиблись! 7 х 8 - 56 I 4 х 7 = 28 3 х 5 = 15 2 х 5 = 10 Правильных ответов: 9 Оценка: Хорошо. 128. Написать программу проверки умения складывать и вычи- тать числа в пределах 100. Программа должна вывести 10 приме- ров, причем в каждом примере уменьшаемое должно быть больше или равно вычитаемому, т. е. не допускается предлагать испытуемому примеры с отрицательным результатом. Оценка вы- ставляется по следующему правилу: за 10 правильных ответов — ! 'отлично”, за 9 и 8 —"хорошо", за 7 и 6 — 'удовлетворительно'3, за 6 и менее — "плохо". Ниже предст авлен рекомендуемый вид экрана во время работы программы. Ответы пользователя выде- | лены полужирным шрифтом. ! Проверка умения складывать и вычитать числа. После примера введите ответ и нажмите <Епбег> 75-4-71 35 - 9 = 29 Вы ошиблись! 35 - 9 - 26 14 - 1 = 13 6-5 = 1 37 - 19 = 28 Вы ошиблись! 37 - 19 = 18 53 - 14 = 39 94 - 87 = 7 90 — 16 = 74 4-2=2 89 - 41 - 48
вычи- риме- быть лагать <а вы- тов — льно", ’Й вид выдс- Правильных ответов: 8 Оценка: Хорошо. 129. Написать программу, выводящую на экран "электронные часы", которые работают в течение, например, трех минут или до тех пор, пока пользователь не нажмет любую клавишу. Нереа1 Приступая к решению задач этого раздела, следует вспомнить, что: • число повторений инструкций цикла гереап определяется хо- дом выполнения программы; • инструкции цикла гереаь выполняются до тех пор, пока ус- ловие, стоящее после слова ипЫ1, ложно; • после слова ипМ1 надо записывать условие завершения цикла; • для завершения цикла гереаь в теле цикла обязательно долж- ны быть инструкции, выполнение которых влияет на условие завершения цикла; • цикл гереаъ — это цикл с постусловием, т. е. инструкции те- ла цикла будут выполнены хотя бы один раз; • цикл гереас, как правило, используется для организации приближенных вычислений, задач поиска и обработки дан- ных, вводимых с клавиатуры или из файла. 130. Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел, ко- торые вводятся с клавиатуры. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление среднего арифметического последовательности положительных чисел. Вводите после стрелки числа. Для завершения ввода введите ноль. -> 45 -> 23 -> 15 -> О
Введено чисел: 3 В: Сумма чисел: 83 ' —: Среднее арифметическое: 2*7.67. Н< 131. Написать программу, которая определяет максимальное а число из введенной с клавиатуры последовательности положи- тельных чисел (длина последовательности не ограничена). Ниже представлен рекомендуемый вид экрана во время работы про- граммы (данные, введенные пользователем, выделены полужир- К ным шрифтом). н< В| Определение максимального числа последовательности _ положительных чисел. ' Вводите после стрелки числа. Для завершения ввода введите ноль. - > 56 V - > 75 - > 43 П - > О 47 Максимальное число: 75. 1 е 132. Написать программу, которая проверяет, является ли целое I е число, введенное пользователем, простым. Рекомендуемый вид экрана во время работы программы приведен ниже. Данные, введенные пользователем, выделены полужирным шрифтом. * Введите целое число и нажмите <Еп1:ег> -> 45 45 — не простое число. 133. Написать программу приближенного вычисления интеграла методом трапеций. После каждого цикла программа должна выводить вычисленное значение, количество и величину интер- I валов. 134. Написать программу, которая задумывает” число в диапа- зоне от 1 до 10 и предлагает пользователю угадать число за 5 по- пыток. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделе- ны полужирным шрифтом). Игра "Угадай число". Компьютер "задумал" от I до 10 число от 1 до 10. I Угадайте его за 5 попыток. 13 по зн; сур жа гр; де:
Введите число и нажмите <ЕпЪег> -> 5 Нет. I -> 3 ачьное вьмграли! Поздравляю: >ложи- Ниже Факультатив >1 ПрО- гужир- 135. Написать программу-таймер, которая по истечении задан- ного промежутка времени выдает звуковой сигнал. Величина временного интервала вводится с клавиатуры во время работы программы. ноль. тпе Приступая к решению задач этого раздела, следует вспомнить, что: целое 1Й ВИД шные, и. еграла олжна интср- шапа- . 5 по- время яделе- • число повторений инструкций цикла ыЫ1е определяется хо- дом выполнения программы; • инструкции цикла мШе выполняются до тех пор, пока усло- вие, записанное после слова иЬПе, истинно; • после слова мЬ11е надо записывать условие выполнения ин- струкций цикла; • для завершения цикла юни е в теле цикла обязательно долж- ны присутствовать инструкции, влияющие на условие выпол- нения инструкций цикла; • цикл — это цикл с предусловием, т. е. инструкции тела цикла вообще могут быть не выполнены; • цикл мЫ1е, как правило, используется для организации при- ближенных вычислений, задач поиска и обработки данных, вводимых с клавиатуры или из файла. 136. Напишите программу, которая вычисляет л с заданной пользователем точностью. Для этого воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5—1/7+1/9—... при суммировании достаточно большого количества членов прибли- жается к л/4. Рекомендуемый вид экрана во время работы про граммы приведен ниже (данные, введенные пользователем, вы- делены полужирным шрифтом).
Задайте точность вычисления ПИ —> 0.001. Значение числа ПИ с точностью 0.001000 равно 3.143585. Си! Просуммировано 502 членов ряда. “> Си: 137, Написать программу, которая вычисляет наибольший об- I щий делитель двух целых чисел. 14 час Символы и строки 0 * на; Приступая к решению задач этого раздела, следует вспомнить, шг что: 14: • каждому символу соответствует число — код символа; стр • получить доступ к отдельному символу строки можно, указав пи! его номер в квадратных скобках после имени переменной фа1 (строки). ты 138 Написать программу, которая запрашивает имя пользовате- ля и здоровается с ним. Рекомендуемый вид экрана во время работы программы приведен ниже (данные, введенные пользо- вателем, выделены полужирным шрифтом). Как Вас зовут? Введите свое имя и нажмите <ЕпТег> —> Вася Здравствуйте, Вася! 139. Написать программу, которая выводит на экран сообщение в "телеграфном" стиле, т. е. буквы сообщения должны появлять- ся по одной, причем с некоторой задержкой. ле* Вве —° 1 Стр ИЗУ 143 из I 144 ден экр вве. 140. Написать программу, которая выдает код символа, введен- Вве; ного пользователем. Программа должна завершать работу после ‘ ввода, например, точки. Рекомендуемый вид экрана во время Вве: работы программы приведен ниже (данные, введенные пользе- I вателем, выделены полужирным шрифтом). 145. Введите символ и нажмите <Еп1ег>. Для завершения работы программы введите точку. -> 1 Символ: 1 Код: 49. Ден: 146. ден!
й об- -> 2 Символ: 2 Код: 50 —> ы Символ: ы Код:235 -> . лнить, 141. Написать программу, которая выводит на экран первую часть таблицы кодировки символов (символы, имеющие коды от О до 127). Таблица должна состоять из восьми колонок и шест- надцати строк. В первой колонке должны быть символы, имею- щие код от 0 до 15, во второй — от 16 до 31 и т. д. указав енной 142. Написать программу, которая в веденной с клавиатуры строке преобразует строчные буквы русского алфавита в про- писные (учтите, что функция ОрСазе с символами русского ал- фавита не работает). Рекомендуемый вид экрана во время рабо- ты программы приведен ниже (данные, введенные пользовате- лем, выделены полужирным шрифтом). овате- время эльзо- Введите строку текста и нажмите <ЕпЬег> —> изучив Паскаль , можно приступить к изучению С Строка, преобразованная к верхнему регистру: ИЗУЧИВ ПАСКАЛЬ, МОЖНО ПРИСТУПИТЬ К ИЗУЧЕНИЮ С. цение влять- зедсн- после время ЭЛЬЗО- 143. Написать программу, которая удаляет начальные пробелы из введенной с клавиатуры строки. 144. Написать программу, которая проверяет, является ли вве- денная с клавиатуры строка целым числом. Рекомендуемый вид экрана во время работы программы приведен ниже (данные, введенные пользователем, выделены полужирным шрифтом). Введите число и нажмите <Епбег> -> 23.5 Введенная строка не является целым числом. 145. Написать программу, которая проверяет, является ли вве- денная с клавиатуры строка двоичным числом. 146. Написать программу, которая проверяет, является ли вве- денная с клавиатуры строка шестнадцатеричным числом.
147. Написать программу, которая проверяет, является ли вве- денная с клавиатуры строка дробным числом. 148. Написать программу, которая преобразует введенное с кла- виатуры восьмиразрядное двоичное число в десятичное. Реко- мендуемый вид экрана во время работы программы представлен ниже (введенные пользователем данные выделены полужирным шрифтом). | Введите восьмиразрядное двоичное число и нажмите <Епбег> -> 11101010 Двоичному числу 11101010 соответствует десятичное 234 Для завершения работы программы нажмите <Епеег>. 149. Написать программу, которая преобразует введенное с кла- виатуры двухразрядное шестнадцатеричное число в десятичное. 150. Написать программу, которая преобразует введенное поль- зователем десятичное число в число в указанной системе счис- ления (от 2-х до 10-ти). Рекомендуемый вид экрана во время работы программы приведен ниже. Введите целое число —> 67 Введите основание системы счисления —> 2 100011 151. Написать программу, которая преобразует введенное поль- зователем десятичное число в шестнадцатеричное. 152. Написать программу, которая вычисляет значение выраже- 1 ния ^О^Оз.-.О^ь, где — целое одноразрядное число, О| — один из двух знаков простейших арифметических дейст- вий: сложения или вычитания. Ниже представлен рекомендуе- мый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Введите арифметическое выражение, например, 4+5-3-5+2 и нажмиет <Еп1ег> -> 9-5>4+2-6 Значение введенного выражения: 4 Для завершения программы нажмите <Епг.ег>. м Пр ЧТО I • ; ] 1 ( 153 мер вых на т Пос; а[1] а[21 а[3] а[4] а[5] В Мс 154. мен став (дан шри Поис Введ и на -> 2 Мини
вве- Массивы с кла- Реко- тавлен ирным Приступая к решению задач этого раздела, следует вспомнить, что: • массив — это структура данных, представляющая собой со- вокупность элементов одного типа; • массив должен быть объявлен в разделе объявления пере- менных; • при объявлении массива удобно использовать именованные константы; с кла- лся ь- счис- время • доступ к элементу массива осуществляется путем указания индекса (номера) элемента, в качестве которого можно ис- пользовать выражение целого типа, например, целую кон- станту или переменную типа зпгедег; • для ввода, вывода и обработки массивов удобно применять инструкции ЦИКЛОВ (Гог, мЪИе, гереа!:). 153. Написать программу, которая вводит с клавиатуры одно- мерный массив из 5 целых чисел и выводит количество ненуле- вых элементов. Перед вводом каждого элемента на экране долж- на появляться подсказка с его номером. После ввода каждого числа нажмите <Епсег> поль- драже- число, дейст- а[1] -> 12 а[2] -> О а[3] -> 3 а [4] -> -1 а[5] -> О В массиве 3 ненулевых элемента. енные 154. Написать программу, которая выводит минимальный эле- мент введенного с клавиатуры массива целых чисел. Ниже пред- ставлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Поиск минимального элемента массива. Введите в одной строке элементы массива (5 целых чисел) и нажмите <ЕпГег> -> 23 0 45 -5 12 Минимальный элемент массива: -5.
155. Написать программу, которая вычисляет среднее арифмети- 1 ческое ненулевых элементов введенного с клавиатуры .массива н- целых чисел. Ниже представлен рекомендуемый вид экрана вс время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). Т1 Введите элементы массива (10 целых чисел) в одной строке и нажмите <ЕпГег>. -> 23 0 45 -5 12 С -2 30 С 64 Сумма элементов массива: 184 Количество ненулевых элементов: 7 Среднее арифметическое ненулевых элементов: 23.86. 156. Написать программу, которая вычисляет среднюю (за неде- лю) температуру воздуха. Исходные данные должны вводиться во время работы программы. Рекомендуемый вид экрана во вре- мя работы программы приведен ниже (данные, введенные поль- зователем, выделены полужирным шрифтом). Введите температуру воздуха за неделю. Понедельник —> 12 Вторник —> 10 Среда -> 16 Четверг —> 18 Пятница —> 17 Суббота —> 16 Воскресенье —> 14 Средняя температура за неделю: 14.71 град. 11 сс м; П Н1 ВС ть ле ос Вв (5 Вв< (5 16 157. Написать программу, которая проверяет, находится ли в массиве введенное с клавиатуры число. Массив должен вводится во время работы программы. 158. Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую по- ел едовател ьность. 159. Написать программу, которая проверяет, образуют ли эле- менты введенного с клавиатуры массива неубывающую последо- вагел ьность. 160. Написать программу, которая вычисляет, сколько раз вве- денное с клавиатуры число встречается в массиве.
во 16Е Написать программу, которая проверяет, есть ли во введен- ном с клавиатуры массиве элементы с одинаковым значением. 162. Написать программу, которая методом прямого выбора сор- тирует по убыванию введенный с клавиатуры одномерный массив. 163. Написать программу, которая методом обмена ("пузырька”) сортирует по убыванию введенный с клавиатуры одномерный массив. неде- гься 164. Написать программу, которая объединяет два упорядочен- ных по возрастанию массива в один, также упорядоченный по возрастанию массив. Рекомендуемый вил экрана во время рабо- ты программы приведен ниже (данные, введенные пользовате- лем, выделены полужирным шрифтом). ) вре- поль- Объединение двух упорядоченных по возрастанию массивов. Введите в одной строке элементы первого массива, (5 целых чисел) —> 13579 Введите в одной строке элементы второго массива, (5 целых чисел) —> 2 4 6 8 10 Массив — результат 123456789 10 Для завершения работы нажмите <ЕпСег>. 165. Написать программу, которая, используя метод бинарного поиска, выполняет поиск в упорядоченном по возрастанию мас- сиве. ; ли в одится ли 166. Написать программу, которая определяет количество уче- ников в классе, чей рост превышает средний. Рекомендуемый вид экрана во время работы программы приведен ниже (вве- денные пользователем данные выделены полужирным шрифтом). по- и эле- вве- *** Анализ роста учеников *** Введите рост (см) и нажмите <ЕпГег>. Для завершения введите 0 и нажмите <ЕпЁег> -> 175 - > 170 - > 180 - > 168 - > 170 - > 0
Средний рост; 172.6 см 1 У 2-х человек рост превышает средний. п 167. Написать программу, которая вводит по строкам с клавиа- туры двумерный массив и вычисляет сумму его элементов по " столбцам. 158. Написать программу, которая вводит по строкам с клавиа- В туры двумерный массив и вычисляет сумму его элементов по р* строкам. а 168. Написать программу, которая вычисляет сумму диагональ- С1 ных элементов квадратной матрицы. 169. Написать программу, которая вводит с клавиатуры двумер- ный массив по строкам и вычисляет среднее арифметическое его элементов. 170. Написать программу, которая вычисляет определитель квадратной матрицы второго порядка. Рекомендуемый вид экра - на во время работы программы приведен ниже (введенные поль- зователем данные выделены полужирным шрифтом). Введите матрицу второго порядка. После ввода элементов строки нажимайте <ЕпГег> -> 5 -7 -> 1 3 Определитель матрицы 5.00 -7.00 1.00 3.00 Равен 22.00 171. Написать программу, которая проверяет, является ли вве- денная с клавиатуры квадратная матрица магическим квадратом. Магическим квадратом называется матрица, сумма элементов которой в каждой строке, в каждом столбце и по каждой диа- гонали одинакова (см. приведенный ниже рисунок). 2 9 4 7 5 3 6 1 8 13 8 12 1 2 11 7 14 3 10 6 15 16 5 9 4 КС Рс Д€ Ж1 Ит Вв' се] Ав< Ге] Ка; Киг КО| Но^ Рос СП? Фиь Яле Ито 1 2 . ч 4 5 6 7 Фг 8
172. Написать программу, которая вычисляет определитель квад- ратной матрицы третьего порядка. гавиа- ов по 1авиа- ов по эналь- зумер- юское штель ,экра- поль- Факультатив 173. Написать программу подведения итогов Олимпийских игр. В программу пользователь должен ввести количество медалей разного достоинства, завоеванное каждой командой-участи и пей а программа— подсчитать общее число медалей и соответст- вующее число очков, после чего упорядочить список в соответ- ствии с набранным количеством очков, которое определяется по следующему правилу: за золотую медаль команда получает 7 оч- ков, за серебряную — 6, за бронзовую — 5. Рекомендуемый вид экрана во время работы программы приве- ден ниже (данные, введенные пользователем, выделены полу- жирным шрифтом). и вве- эатом. де! ггов й дна- Итоги Олимпийских игр. Введите в одной строке серебряных и бронзовых Австрия —>359 Германия —> 12 9 8 Канада —>654 Китай ->062 Корея —>312 Норвегия —> 10 10 5 Россия —>963 США ->634 Финляндия —>246 Япония —>514 количество золотых, медалей. Итоги зимней Олимпиады в Нагано, 1998 г. Очков Страна Золото Серебро Бронза Всего 1 Германия 12 9 8 29 178 2 Норвегия 10 10 5 25 155 3 Россия 9 6 3 18 114 4 Австрия 3 5 9 17 96 5 Канада 6 5 4 15 92 6 США 6 3 4 13 80 7 Финляндия 2 4 6 12 68 8 Япония 5 1 4 10 61
9 Китай 0 6 2846 - 10 Корея 3 1 2 6 37 И/ , I»,. | 174. Написать программу игры "Угадай число*'. Правила игры следующие. Играют двое. Один задумывает число, второй — уга- дывает. На каждом шаге угадывающий делает предположение, а _ задумавший число — говорит, сколько цифр числа угаданы и сколько из этих цифр занимают правильные позиции в числе. Например, если задумано число 725 и выдвинуто предположе- ние, что задумано число 523, то считаются угаданными две циф- ры (5 и 2) и одна из них (2) занимает верную позицию. Ниже представлен рекомендуемый вил экрана во время работы программы. Данные, введенные пользователем, выделены полу- жирным шрифтом. • Компьютер задумал трехзначное число. Вы должны его отгадать. После очередного числа вам будет сообщено, сколько цифр угадано и сколько из них находится на своих местах. После ввода числа нажимайте <Еп1:ег>. Для завершения игры нажмите <Езс>. Ваш вариант -> 123 Угадано: 0. На своих местах: 0 Ваш вариант -> 456 Угадано: 1. На своих местах: 0 Ваш вариант -> 654 Угадано: 2. На своих местах: 2 Ваш вариант —> 657 Угадано: 2. На своих местах: 2 Ваш вариант —> 658 Угадано: 3. На своих местах: 3 *** ВЫ УГАДАЛИ ’ *** Нажмите <Еп1:ег> для завершения. 175. Напишите программу-телеграф, которая принимает от поль- зователя сообщение и выводит его на экран в виде последова- тельности точек и тире. Вывод точек и 1 ире можно сопроводить звуковым сигналом соответствующей длительности. Азбука Морзе для букв русского алфавита приведена ниже. 176. Пар 177. двух
игры - уга- иие, а шы и числе. >ложе- ; циф- ►аботы полу- ать. р 9 9 С т ~ • * ф « • • • • • • и • • ч а ш — — — щ 9 ъ • • ы 9 ь • • э в • 4 ю • ® я 9 « поль- едова- водить Морзе Функции Приступая к решению задач этого раздела, следует вспомнить, что: • для передачи данных в функцию надо использовать только параметры (глобальные переменные, т. е. переменные, объяв- ленные вне функции, применять не рекомендуется); • среди выполняемых инструкций функции обязательно долж- на быть инструкция присваивания значения функции; • тип каждого фактического параметра (константы или пере- менной) в инструкции вызова функции должен быть таким же, как тип соответствующего формального параметра, ука- занного при объявлении функции; • если в инструкции объявления функции перед именем фор- мального параметра не стоит слово Vа^, то при вызове функ- ции можно использовать в качестве формального параметра константу или переменную соответствующего типа. Если слово Vа^ указано, то формальным параметром может быть только переменная; • если параметры функции используются для возврата резуль- тата в программу, вызвавшую функцию, то в объявлении функции перед именем соответствующего параметра должно Присутствовать СЛОВО Vа^. 176, Написать функцию, которая вычисляет объем цилиндра. Параметрами функции должны быть радиус и высота цилиндра. 177. Написать функцию, которая возвращает максимальное из двух целых чисел, полученных в качестве аргумента.
178. Написать функцию, которая сравнивает два целых числа и возвращает результат сравнения в виде одного из знаков: >, < или =. 179. Написать функцию, которая вычисляет сопротивление це- пи, состоящей из двух резисторов. Параметрами функции явля- ются величины сопротивлений и тип соединения (последова- тельное или параллельное). Функция должна проверять кор- ректность параметров: если неверно указан тип соединения, то функция должна возвращать -1. 180. Написать функцию, которая вычисляет значение а°. Числа а и ь могут быть любыми дробными положительными числами. 181. Написать функцию Ргосепт, которая возвращает процент от числа, полученного в качестве аргумента. 182. Написать функцию ооЬоа, которая вычисляет доход по вкла- ду. Исходными данными для функции являются: величина вклада, процентная ставка (годовых) и срок вклада (количество дней). 183. Написать функцию С1азп, которая возвращает значение тгие, если символ, полученный функцией в качестве аргумента, является гласной буквой русского алфавита. 184. Написать функцию ьтг1т, которая удаляет начальные про- белы из строки, полученной в качеез ве аргумента. 185. Написать функцию 5од1, которая возвращает тгие, если символ, полученный функцией в качестве аргумента, является согласной буквой русского алфавита. 186. Написать функцию, которая возвращает преобразованную к верхнему регистру строку, полученную в качестве аргумента. Обратите внимание, если эту функцию назвать цреазе (т. е так, как называется функция языка ТигЬо Разса!, решающая подоб- ную задачу для символов латинского алфавита), то функция программиста подменит функцию ТигЬо Ра$са1. 187. Написать функцию вычисления факториала (факториалом целого числа п называется число, равное произведению пелых чисел от 1 до п). Фа 188 Пар УРЭ1 дач) кор! вые. дол> ные 189. целс зова* дол» СИМЕ телю <Вас При 1 ту и проц Пре Прис что: • дл. па; вн- • ТИ1 ме. ВО] зав • есл фО] мал исг ТИП мал
имерах Часть !. Задачи 55 лсла и г >, < Факультатив 188. Написать функцию для решения квадратного уравнения. Параметрами функции должны быть коэффициенты и корни ие це- явля- уравнения. Значение функции должно использоваться для пере- дачи в вызывающую ее программу информации с наличии едова- корней уравнения: 2 — два разных корня. 1 — корни одинако- е> кор- 1ИЯ, ТО вне, 0 — уравнение не имеет решения. Кроме того, функция должна проверять корректность исходных данных. Если исход- ные данные неверные, то функция должна возвращать -1. Числа 189. Написать функцию, обеспечивающую ввод с клавиатуры тами. целого положительного двухзначного числа. При нажатии поль- зователем какой-либо клавиши соответствующий ей символ (ент от должен появляться на экране только в том случае, если этот символ является цифрой. Функция должна позволять пользова- телю редактировать введенное число при помощи клавиши э вкла- вклада, <Васк8расе>. Если пользователь ввел хотя бы одну цифру, тс при нажатии клавиши <ЕпГсг> функция должна завершать рабо- (ей). ту и возвращать введенное пользователем число вызвавшей ее ачение процедуре. /мента, Процедуры те про- Приступая к решению задач этого раздела, следует вспомнить, что: 5, если вляется • для передачи информации в процедуру следует использовать параметры, а не глобальные переменные, т. е. объявленные вне процедуры; ванную умента. е. так, подоб- ункция • тип каждого фактического параметра (константы или пере- менной) в инструкции вызова процедуры должен соответст- вовать типу соответствующего формального параметра, ука- занного при объявлении функции; • если в инструкции объявления процедуры перед именем формального параметра нет слова Vа^, то в качестве фор- мального параметра в инструкции вызова процедуры можно риалом . целых 1 использовать константу или переменную соответствующего 1 типа. Если слово Vа^ присутствует в инструкции, то фор- мальным параметром можно назначить только переменную;
• если аргумент процедуры применяется для возврата результа- с та в программу, вызвавшую эту процедуру, то перед именем Е аргумента нужно поставить слово ^г. х кЬед! ж ______ . _ I о стояшую из звездочек. Длина строки (количество звездочек) яв-| ляется параметром функции. I Е 191. Написать процедуру, которая выводит строку, состоящую х из одинаковых символов. Длина строки и символ являются па-| ь раметрами процедуры. |е] с: п оверх! юсти парадлелеп и п еда. епа. Факультатив 194. 193. Написать процедуру нтате, которая выводит на экран рам- ку. В качестве параметров процедуре должны передаваться коор- динаты левого верхнего угла рамки и ее размер. Графика Приступая к решению задач этого раздела, следует вспомнить, что: • в графическом режиме экран представляет собой совокуп- ность точек, каждая из которых может быть окрашена в один р из 16 цветов; Олим. • координаты точек возрастают слева направо и сверху вниз] клетке левая верхняя точка имеет координаты (0,0), а правая ниж4 няя — (639,479); син1 • для того, чтобы программа могла выводить на экран графиче- ские примитивы (линии, окружности, прямоугольники), не- обходимо инициализировать графический режим. Шаблон графической программы выглядит следующим образом изез СгарИ; I Vа^ дгРШ Vе^: ГпГедег;
зульта- дменем >ку, со- гек) яв- гоящую тся на- гл о щадь дгМоДе: ГпЪедег; ЕггСойе: ТпТедег; гез: Хпкедег; Ьедхп дгОгз^ег : = «ЗеХесХ; ТгпХСгарН (дгОггуег, дгМобе, ’ с: \ср\Ъд1 ’) ; ЕггСсхЗе : = СгарИКезиХХ ; 1Г ЕггСоде = дгОк ЪЬеп Ьедхп { сюда следует поместить основные инструкции } епб; СХозеСгарк; г епй. 194. Написать программу, которая вычерчивает на экране домик. ан рам- :я коор- омнить, ювокуп- 1 в (ДИ Н |95> Написать программу, которая выводит на экран флаг Олимпийских игр. Изображение флага приведено ниже (одной ку вниз; ая ниж- клетке соответствует пять пикселов). 'рафиче- ки), не- бразом:
58 ТигЬо Разса/ в задачах и примерах Ч 196. Написать программу, которая вычерчивает на экране ко-( раблик. и- 2( м< Н1 ЗВ 20 ти 197. Написать программу, которая вычерчивает на экране ракету. I 202 нун 198. Написать программу, которая, используя точки, выводит на экран изображение кораблика. метод 203 тиу; 204. вен] базово! 205. жиг 206. РОЖ]
римерах ане ко- 199. Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета. 200. Написать программу, которая вычерчивает на экране ло- манную линию, состоящую из 200 звеньев, окрашенных в раз- ные цвета, выбираемые случайным образом, причем координаты звеньев тоже выбираются случайно. 201. Написать программу, которая выводит на экран контур пя- тиконечной звезды. ракету. 202. Написать программу, которая выводит на экран пятиконеч- ную звезду. 203. Написать программу, которая вычерчивает на экране шес- тиугольник. базово! 204. Написать программу, которая рисует па экране Государст- венный флаг России. 205. Написать программу, которая рисует на экране веселую ро- жицу желтого цвета. 206. Написать программу, которая рисует на экране грустную рожицу.
207. Написать программу, которая выводит на экран узор, изо-. 211. браженный ниже. ние ] 212. крас] 208. Написать программу, которая выводит на экран изобра^ женный ниже узор. Окружности должны быть разного цвета' (см. таблицу кодировки цветов). 210. Написать программу, которая выводит изображенный ним узор. 215. Н1 ваннук
эр, изо- 211. Написать программу, которая выводит на экран изображе- ние шахматной доски. 212. Написать программу, которая рисует на экране флажок красного цвета. изобра- о цвета 213. Написать программу, которая рисует на экране паровоз (используйте метод базовой точки). >1Й ниже 214. Написать программу, которая рисует на экране автомобиль. Инструкции, обеспечивающие вычерчивание колеса автомобиля, оформите как процедуру. 1Й ниже 215. Написать программу, которая выводит на экран оцифро- ванную координатную сетку.
5.0 : : : ; | ; 4.0 ......\...."Т.....:.....].... : ....\.....р 3.0 ....... -.........:.....]....Д......\ 2.0 ......I-----{.....'----!.....!-----\.....р- 1.0 ------4....1......1....\.......... 4......|- 0.0 : ____________________ 0.00 0.5 1.0 1.5 2.0 2 5 3.0 3.5 216. Написать программу, которая выводит на экран точечный график функции у = 0,5х? + 4х — 3. Диапазон изменения аргу- мента — от -15 до 5, шаг аргумента — 0,1. График вывести на фоне координатных осей, точка пересечения которых должна находиться в центре экрана. 217. Написать процедуру, которая рисует на экране кораблик. В качестве параметров процедура должна получать координаты базовой точки и цвет, которым следует рисовать. Используя эту процедуру, напишите программу, которая выводит на экран 218. Написать программу, которая рисует окружность, движу- щуюся по экрану. 219. Написать программу, которая выводит на экран гистограм- му успеваемости учеников класса, например, по итогам кон- трольной работы. Исходные данные следует ввести в алфавитно- цифровом режиме работы. Рекомендуемый вид экрана во время работы программы приведен ниже. На первом рисунке экран
показан во время ввода исходных данных, на. втором приведен вид диаграммы на экране. Обработка результатов контрольной работы. Введите исходные данные: пятерок —> 10 четверок —> 15 троек —> 7 двоек —> 1 Результаты контрольной работы пятерок четверок троек двоек 220. Написать программу, которая выводит круговую диаграмму, отражающую товарооборот (в процентах) книжного магазина. Исходные данные (объем продаж в рублях по категориям: книги, журналы, открытки и канцтовары) вводятся во время работы программы. Пример диаграммы приведен ниже. Журналы - 31.4%% Канцтоваы - 22.9% । I Прочее - 11.4%
221. Написать программу, которая выводит на экран изображе- ние работающего светофора. Рекомендуемый вид светофора и алгоритм его работы приведены ниже. Красный Красный и желтый Зеленый Мигающий зеленый Факультатив 222. Написать программу, которая выводит на экран изображе- ние идущих часов, имеющих секундную и минутную стрелки. 223. Написать программу, которая выводит на экран график функции у = 2 81п(х) ех/5. 224. Написать функцию, которая в графическом режиме вводит с клавиатуры дробное число. Набираемые пользователем симво- лы (знак "минус”, цифры и точка должны появляться на экране в зависимости от текущего положения точки вывода. Во время ожидания очередного символа на экране должен мигать курсор. Требуется, чтобы функция обеспечивала пользователю возмож- ность простейшего редактирования — удаление последнего вве- денного символа (при помощи клавиши <Васк8расе>). Файлы Приступая к решению задач этого раздела, следует вспомнить, что: • в программе, которая выводит результаты в файл или читает исходные данные из файла, должна быть объявлена файловая переменная типа ъехи;
• для доступа к конкретному файлу файловую переменную нужно связать с этим файлом (делается это при помощи ин- струкции аззТдп}; • для того, чтобы файл был доступен, его надо открыть (для чтения с помощью инструкции гезет, для записи — геюгтсе, для добавления — аррепб); • при работе с файлами возможны ошибки, например, из-за того, что программа пытается открыть файл, которого нет, поэтому после каждой инструкции, которая может привести к возникновению ошибки, желательно, используя функцию гокези1ъ, проверять код завершения операции с файлом: чтобы программа могла контролировать результат выполне- ния операции с файлом, в ее текст надо поместить директиву • запись в файл выполняют инструкции мгхте и шЛхеГп, чте- ние — геас1 и геаШп, причем в качестве первого параметра этих инструкций следует указывать файловую переменную; • по завершении работы с файлом его нужно обязательно закрыть инструкцией с1озе; • файл, созданный программой, в которой тип файловой пере- менной объявлен как сехе, можно просмотреть при помощи редактора текста. 225. Написать программу, которая на сменном диске компьюте- ра (А:) создает файл пптЬега.Ш и записывает в него 5 введенных пользователем целых чисел. Просмотрите при помощи редакто- ра текста, например, встроенного в 1ЧоПоп Соттапдег, создан- ный файл. Убедитесь, что каждое число находится в отдельной строке. 226, Напишите программу, которая дописывает в файл а:\питЬеге.Ш 5 введенных пользователем целых чисел. Убедитесь при помощи редактора текста, что в файле находятся 10 чисел. 227. Написать программу, которая выводит на экран содержи- мое файла а:\пишЬег8Лхг 228. Написать программу, которая вычисляет среднее арифмети- ческое чисел, находящихся в файле а:\питЬегеЛхС 3 Зак 161
229. Написать программу, которая позволяет просматривать тек- стовые файлы (выводит на экран содержимое файла), например, файлы исходных программ ТигЬо Ра$са1. Имя просматриваемого файла должно вводиться во время работы программы. Рекомен- дуемый вид экрана приведен ниже. Просмотр текстового файла. Введите полное имя файла и нажмите <ЕпТег> —> с:\Ър\раз\пшпЬ.раз 230, Написать программу, которая дописывает в файл рЬопе.ш, находящийся на диске А:, фамилию и номер телефона, напри- мер, вашего товарища. Если файла на диске нет, то программа должна создать его. В файле каждый элемент данных (имя. фа- милия, телефон) должен находиться в отдельной строке. Реко- мендуемый вид экрана во время работы программы приведен ниже. Добавление в телефонный справочник. Фамилия —> Сидоров Имя —> Вася Телефон —> 234-84-37 Информация добавлена. Для завершения работы нажмите <ЕпЪег>. 231. Написать программу, используя которую можно за один сеанс работы добавить информацию о нескольких людях в файл а:\р1юпе.1х1. 232. Написать программу, которая позволяет найти нужные све- дения в телефонном справочнике (а:\рЬопе.Ш). Программа должна запрашивать фамилию человека и выводить его телефон. Если в справочнике есть одинаковые фамилии, то программа должна вывести список всех людей, имеющих эти фамилии. Ре- комендуемый вид экрана во время работы программы приведен ниже. Поиск в телефонном справочнике. Введите фамилию и нажмите <Епсег>. Для завершения работы с программой сразу после приглашения нажмите <ЕпЬег> —> Петров В справочнике данных о Петров нет.
—> Иванов Иванов Вася 578-12-45 Иванов Сергей 244-34-02 233. Напишите программу, которая объединяет возможности программ Добавление в телефонный справочник И Поиск е теле- фонном справочнике. При запуске программы на экран должно выводиться меню: *** Телефонный справочник *** 1. Добавление 2. Поиск 3. Завершение работы Введите номер пункта меню и нажмите <Еп1:ег> Факультатив 234. Написать универсальную программу тестирования. Тест, последовательность вопросов и варианты ответов должны нахо- диться в текстовом файле. Имя этого файла программа должна получать из командной строки ее запуска. Количество вопросов теста не ограничено. Однако предлагается ввести следующее ограничение: текст вопроса и альтернативных ответов не должен занимать более одной строки экрана. Программа должна выставлять оценку по следующему правилу ОТЛИЧНО — за правильные ответы на все вопросы, ХОРОШО — если испытуемый правильно ответил не менее, чем на 80% во- просов, УДОВЛЕТВОРИТЕЛЬНО- если правильных ответов более 60%, и ПЛОХО — если правильных ответов меньше 60%. Ниже приведены рекомендуемая структура файла вопросов теста (М, — количество альтернативных ответов к 1-му вопросу, К] — номер правильного ответа), пример файла теста и вид экрана во время работы программы (номера ответов, введенные пользова- телем, выделены полужирным шрифтом).
^сД.акиёвско^р1рж$еШ - '-у;Ф^7ЧГи".л.:;^Л' ’’ : < ДЖеНико:, Трезини Огюст МРНферрам ' карл . Рбёси '. Й ?? 'V ' :"". • архитектор* Зимнего дворца. • -С.;•'.’/". ; • ; ; / ^ранчёгкр -БартстомёС; ’ ’ .; ОЛст: ^№>^Йрран;; . : -О Л а - -.а; : . ;• : рекир на которой-^нйт-ПётерЙурЙ •! • - \ - • ’: по. имё1ни| близколарры ё??памятБ..ъ д псжкр^йй^ё р ^ёксанлрё-Нё’врк V Сейчас Вам будет предложен тест. К каждому вопросу дается несколько вариантов ответа. Вы должны ввести номер правильного ответа и нажать <Еп1:ег>. Архитектор Исаакиевского собора: 1. Доменико Трезини 2. Огюст Монферран 3. Карл Росси -> 2 Архитектор Зимнего дворца: 1. Франческо Бартоломео 2. Карл Росси “> 2 Невский проспект получил свое название: 1. По имени реки, на которой стоит Санкт-Петербург.
2. По имени близко расположенной Александро-Невской лавры. 3. В память о знаменитом полководце — Александре Невском. —> 2 Ваша оценка ОТЛИЧНО! Для завершения работы программы нажмите <ЕпГег>. 235. Напишите программу, которая по желанию пользова геля выводит таблицу пересчета из дюймов в миллиметры на экран, принтер или в файл. Ниже представлен рекомендуемый вид эк- рана во время работы программы (данные, введенные пользова- телем, выделены полужирным. *** Таблица пересчета из дюймов в миллиметры *** Результат выводить: 1 — на экран; 2 — на принтер; 3 — в файл. Введите число от 1 до 3 и нажмите <ЕпЬег>. Ваш выбор —> 2 Дюймы Миллиметры 0.5 12.7 1.0 25.4 1.5 38.1 2.0 50.8 2.5 63.5 3.0 76.2 3.5 88.9 4.0 101.6 4.5 114.3 5.0 127.0 Рекурсия Приступая к решению задач этого раздела, следует вспомнить, что: • рекурсивной называется такая процедура или функция, кото- рая может вызывать сама себя;
• для завершения процесса рекурсии в алгорит ме рекурсивной функции (процедуры) обязательно должна быть веточка, обеспечивающая непосредственное завершение функции (про- цедуры). 236. Написать рекурсивную функцию вычисления факториала и программу, проверяющую ее работоспособность. 237. Написать программу, которая выводит на экран приведен- ный ниже узор. 238. Написать программу, которая вычисляет сопротивление электрической цепи, схема которой приведена ниже. Величины сопротивлений и порядок цепи (количество сопротивлений К2) должны вводиться во время работы программы 41 Р1 К1 239. Написать программу, которая вычерчивает на экране при- веденную выше схему электрической цепи. Порядок цепи дол- жен вводиться во время работы программы.
Факультатив 240. Написать программу, которая вычерчивает на экране кри- вую Гильберта, показанную ниже. Обратите внимание, что кри- вая второго порядка образуется путем соединения четырех кри- вых первого порядка, две из которых повернуты на 90°: одна по часовой стрелке, а другая — против. Аналогичным образом по- лучается кривая третьего порядка, но при этом в качестве "кирпичиков" используются кривые второго порядка. Порядок вычерчивания кривой должен вводиться во время работы про- граммы. 241. Написать программу, которая вычерчивает кривую Серпин- ского. Порядок кривой должен задаваться во время работы программы. Вид кривых Серпинского первого, второго и треть- его порядков приведен ниже.

Часть II. Решения Задача 1 х: геа1; { аргумент функции } у: геа!; { значение функции } Задача 2 ЬтЪ: геа1; { вес в фунтах } кд: геа!; { вес в килограммах } Задача 5 г1: геа1; { диаметр кольца } г2: геа!; { диаметр отверстия } з: геа1; { площадь кольца ) Задача 7 СепаТеЪг: геа!; Ко1ТеЁг: хгЛедег; СепаКаг: геа!; КоХКаг: пт^едег; СепаЫп: гёа!; 8иггапа: геа!; {цена тетради } { количество тетрадей } | цена карандаша ) { количество карандашей } { цена линейки } { стоимость покупки } Задача 11 п:=п+1; Задача 14 у:=-2.7 *х*х*х+0.23*х*х-1.4;
Задача 16 кд:=дип!:*О. 4095; Задача 34 зит:=сг*п1:+ск*пк+с1; {с!:,ск —цена тетрада, карандаша и линейки } { пЪ, пк —количество тетрадей и карандашей} Задача 38 Ьедхп мг1бе1п(* Унылая пора’ Очей очарованье!’); югдЛеГп(•Приятна мне твоя прощальная пора.1); мгИ:е1п('Люблю я пышное природы увяданье,'); мг-1Ле1п (' В багрец и золото одетые леса. ’); юг1Ъе!п; ыгИе1п (' А, С. Пушкин ’) ; геабХп; { чтобы стихотворение не исчезло с экрана } епд. Задача 42______________________________________________ иг1Ъе1п(а:6:2); мглХеХпСЬ: 6:2) ; ыггЬе1п(с: 6:2); Задача 43______________________________________ от1Ге1п(’х1=',х1:6:2, ’ х2=’,х2:6:2); Задача 44 изез СлЬ; Ьедхп ТехЁВаскОгоипд(В1ие); { цвет фона } ТехЪСоХог (ЫдИГ,Сгау); { цвет символов } С1г8сг; { очистить экран } ыг1не1п(’Буря мглою небо кроет1); юг11:е1п('Вихри снежные крутя. ’); ™г1Ёе1п('То как зверь она завоет,1); мгИ:е1п(’То заплачет, как дитя.’);
кгхЬеХп; ыгзХеТп (' А.С.Пушкин ’ ) ; геасНп; ( чтобы стихотворение не исчезло с экрана } епД. Задача 45 Пзез СгЪ; Ьедхп ТехЪВаскСгоипд (В1аск); С1г5сг; ТехГСоХог (Кес!}; кгз±е (’ Каждый •); Тех1Со1ог (ЫдЬЪКед); {оранжевый заменим светло-красным) кгзХе (’ охотник 1); ТехЪСоХог(Уе11ок); кгхЕе (• желает •); Тех^Со1ог (Сгееп); кг1Хе(*знать ’); *ГехЪСо1ог (ЫдИЪВ1ие); кгдХе (’ где ’) ; ТехГСоХог(В1ие); игдХе(* сидит ’); ТехЪСо1ог(Мадепга); - кгдХе(тфазан.•); геас!1п; { чтобы фраза не исчезала с экрана ) епд. Задача 47 геасНп (и); геасНп (г); . Задача 48 геа<Ип(и, г); Задача 49 { объявление переменных } гг Ь : геа1; {радиус и высота цилиндра} у: геа1; { объем цилиндра}
{ фрагмент программы } мггГе 1п ('Введите исходные данные:'); ише (' Радиус цилиндра —>'); геас11п ( г ); юг1Ге1п ('Высота цилиндра —>•); сеаШ.п(Ъ); ' # Г’ '."ТУ" Задача 51 " - II I I - -..... I . II IIII». I ( Вычисление площади параллелограмма } уаг 1,и; геа1; { длина и ширина параллелограмма} з: геа1; { площадь параллелограмма) Ьедхп мгтГеХп (’ Вычисление площади параллелограмма ’); мг±Ъе1п(’Введите исходные даные: '); «г1Хе ('Длина (см.) —> ') ; геад1п(1); мг1Се ('Ширина (см.) -*>'); геад!п(и); з:=1*ы; юг11:е1п (• Площадь параллелограмма: ', з: 6: 2, ' кв.см.'); геас11п; еп4. Задача 53___________________________________________ { Вычисление площади поверхности параллелепипеда } ллаг 1гмгИ : геа1; г длина, ширина и высота параллелепипеда] з: геа1; { площадь поверхности параллелепипеда} Ьедхп «г111 е1п('Вычисление площади поверхности параллелепипеда’); мг1Ге1п('Введите исходные даные:'); 1Ге('Длина (см) —> ’) ; геад1п(1); «гоХе ('Ширина (см) —>'); геад1п(ь0; *7Г1Ъе ('Высота (см) —>'); > геасНп (у/); з: = (1*и + 1*И + ъг*Ь)*2; 1
иг1Хе1п (' Площадь поверхности параллелепипеда : ’, з: 6: 2 1 кв. см.'); геасНп; Задача 55 { Вычисление объема цилиндра } уаг г,Ъ, V: геа1; { радиус -основания, высота и объем цилиндра ] Ьедхп юг 1Ге1п (1 Вычисление объема цилиндра ') ; юг±1е1п('Введите исходные данные:1); югдХе{'радиус основания (см) —> '); геасНп (г); югхЪе (' высота цилиндра (см) —> '); геасНп (Ь); V :«= 2*3.141 5926*г*г*Ь; игдХе1п('Объем цилиндра см.куб.'); югИ:е1п('Для завершения работы программы нажмите <ЕпГег>'); геайХп; епс1. Задача 56 { Вычисление стоимости покупки ) уаг каг,Ъе^г: геа1; { цена карандаша и тетради } пк^пЪ: хп^едег; { количество тетрадей и карандашей } 5шт: геа1; { стоимость покупки } Ьедхп ыг1Хе1п('Вычисление стоимости покупки.'); югхПеХп('Введите исходные данные:'); игх^еС’Цена тетради (руб.) -*•>’); геасНп (Ье1:г); югхне ('Количество тетрадей —>'); геасНп (пХ); югхГе (’Цена карандаша {руб.) ; геасНп (каг) ; игхЬе ('Количество карандашей —; геасНп (пк);
зшип: =ЪеПг*пЪ + каг*пк; • «гзХеХп.; итгаХеХпС 'Стоимость покупки: 1, зиптгп: 6:2, ’ руб.’); геадХп; епд. Задача 60 { Вычисление площади треугольника по двум сторонам и углу между ними } уаг а,Ь: геа1; { длины сторон } €: геа1; { величина угла, выраженная в градусах } з: геа1; { площадь треугольника } Ьедхп чг11:е1п('Вычисление площади треугольника.'); мгзЛе1п (' Введите в одной строке длины сторон треугольника ’); игПе геас!1п(а,Ь); мгхЁеХпС 'Введите величину угла между сторонами 'треугольника’); «г!Хе (’->’); геаШп(1г); { з=а*Ь/2 И (высота треугольника) может быть вычислена по формуле: Ь=Ь*з1п(Х). Однако, в ТигЬо Разса! аргумент функции Зги должен быть выражен в радианах (1 рад, = 180/3.1415925, где 3.1415926 — число "ПИ").} з:=а*Ь*з!п(Г*3.1415926/180)/2; ™г:зЛе1п; «г 1Ге1п{'Площадь треугольника:г,з:6:2,' кв.см.’); геасПп; епд Задача 61_________________________________ { Вычисление сопротивления электрической цепи, состоящей из двух параллельно соединенных элементов. } уаг г1,г2: геа1; { сопротивление элементов цепи } гг геа1; { суммарное сопротивление цепи }
Часть И. Решения ... . । ' ......................... — "" Ьедхп ыг1Ъе1п(’Вычисление сопротивления электрической цепи*); ыг±бе1п( 'при параллельном соединении элементов.1); мгоХе1п( 'Введите исходные данные: ’); мгаХе(•Величина первого сопротивления (Ом) —>’}; геасНп (г!); ыгхбе('Величина второго сопротивления (Ом) — геаб!п(г2); г:=г1*г2/(г!+г2); иг1бе1п; югаХеХп (' Сопротивление цепи: 1, г: 6:2, ’ Ом’); геасНп; епд. Задача 65 { Вычисление стоимости поездки на дачу и обратно } *уаг газб: геа1; { расстояние до дачи } газЬ: геа1; { расход бензина на 100 км пути ) сепа: геа1; { цена одного литра бензина ] зитпт: геа1; { стоимость поездки на дачу и обратно } Ьедхп ыгзХеХп('Вычисление стоимости поездки на дачу и обратно.’); кг1Ъе('Расстояние до дачи (км) —>'); геасНп (газб); игхбе(’Расход бензина (литров на 100 км) —>*); геасНп (газЬ); кгЗХе ('Цена литра бензина (руб -) —> ’); геад1п(сепа); зигот:-2*газб/100*газЪ*сепа; кгхбеХп; иг1бе1п(’Поездка на дачу и обратно обойдется в1г зигпт: 6:2,’ руб.1); геасНп; епа. Задача 67 { Вычисление площади поверхности цилиндра } Vа^ г: геа1; { радиус основания цилиндра )
Ь: геа1; { высота цилиндра } з: геа!; ( площадь поверхности цилиндра } юггЬе1п('Вычисление площади поверхности цилиндра’); мг1Хе1п (’ Введите исходные данные: ') ; мг1Де('радиус основания цилиндра (см) геасПп (г); мгдХе (’ высота цилиндра (см) —> ’) ; геасПп (к); { рт — именованная константа, ее значение равно числу МПИ" 5дг — функция ТигЬо Разса!, ее значение равно квадрату аргумента, т. е, 8дг(х) = х*х } з:~2*р!*здг (г) +2*р!*г*И; мгдХеЬп; иг 1Хе1п (’ Площадь поверхности цилиндра ’, з: 6 :.2, 1 кв.. см. ’); геасПп; епд. Задача 69___________________________________________ [ Пересчет расстояния из верст в километры } уаг V: геа!; { расстояние в верстах } к: геа!; { расстояние в километрах } Ьед1п юг! Ье 1п (’Пересчет расстояния из верст в километры1); югъ!е1п ('Введите расстояние в верстах и нажмите ^п^ег^); югхЬе геасПп (V); к:=у*1.0668; юг!Ье!п^:6:2, г верст(а/ы) - это ’,к:б:2,', км’); «гдЛе1п( Для завершения работы программы нажмите ’<Еп!ег>’); геасПп; епсЬ Задача 71 _________________________________________ ______________ { Вычисление дохода по вкладу } уаг зит: геа!; { сумма вклада }
згок:геа1; { срок вклада } 8^аVка:^еа1; ( процентная ставка } <1оЬо<1: геа1; { доход по вкладу } Ьед1п мгзЛеХпС * Вычисление дохода по вкладу.1); мг1Де!п('Введите исходные данные: ’) ; ыгПе ('Величина вклада (руб.) —>1); геаб!п(зит); ыгаХе ('Срок вклада (дней) —> '); геа<Ип(згок); мгаХе{’Процентная ставка —>’); ^еад1п(з^аVка); <1оЪод:= (5ит*5ЬаVка/100)/365*згок; { 365 — кол-во дней в году } зит: =зит+с1оЬод; мггДеХп; МГ1Де1п ( 1----------------------------------1 ) ; мг11:е1п (’Доход: ’,доЬсск 9:2,’ руб. 1) ; иг л±е1п(’Сумма по окончании срока вклада:*,зит: 9:2, ’руб.’); геасПп; Задача 72____________________________________________________ [ Преобразование величины, выраженной в минутах, в соответсвующее ей значение, выраженное в часах и минутах } чаг т±п: хггСедег; { интервал в минутах } Ь: хпЪедег; ( количество часов } ш: хпъедег; { количество минут } Ьед1п ыггЬе!п( 'Введите величину временного интервала (в минутах) ’); мгхГе(’->1X; геасПп (пап); Ь: = пап сНу 60; ш:= пйп тех! 60; игП:е] п; и/гхЪе] п(т±п, ’ мин. — это час. ’,т, ' мин.’); геасПп; еткЗ.
Задача 73 { Преобразование числа в денежный формат } таг п: геа1; { дробное число } г: гпЪедег; { целая часть числа (рубли) } к: ХпЪедег; { дробная часть числа (копейки) } Ьедхп иг±ХеХп('Преобразование числа в денежный формат.’); югдХе ('Введите дробное число —>’); геасНп (п); .*, г:= ВоиМ(п*100) с!ху 100.;, к:= Войне!(п*100) тех! 100; «г1Хе1п; «г!Хе1п(п:6:2, ’ руб. - это ’,г,’ руб.’,к,' коп.'); ‘ГеасНп; епй. Задача 76_________________________________ { Вычисление частного } таг а,Ь,с: геа1; { делимое, делитель и частное } игхГеХп('Вычисление частного*); мгХ1е!п (’ Введите в одной строке делимое и делитель, ’) ; ыг!хе!п('затем нажмите <ЕпЪег>’); мгхбе ('->'); геасНп (а, Ь) ; хГ Ь <> 0 ЪЪеп Ьедхп с:=а/Ь; иг!Хе1п('частное от деления ’,а:6:3,' на ’,Ь:6:3, 'равно ',0:6:3); епд. е1зе игИеХп (1 Ошибка! Делитель не должен быть ’, 'равен нулю’ 1); геасНп; епсК
Задача 77 { Вычисление площади кольца ] уаг гХ,г2 : геаХ; { радиус кольца и отверстия } 5 : геаХ; { площадь кольца ] Ьедхп иг1ЦеХп('Введите исходные данные: ’); ыгдхе(’радиус кольца (см) —> ’); геасПп (г!); «гШе(*радиус отверстия (см) —> ’); геасПп (г2); хС г! > г2 ЪЬеп Ьедхп з:=2*ЗЛ4*(г1-г2); мгаХеХп(1 Площадь кольца '/3:6:2,' кв.см’); епд е1ее -мгхРеХпС'Ошибка! Радиус отверстия не может быть 'больше радиуса кольца.'); мгШеХп (1 Для завершения работы программы нажмите <Еп1ег> ’); геасПп; епсЬ Задача 78_______________________________________________ { Вычисление сопротивления электрической цепи ] Vа^ г1,г2: геаХ; { величины сопротивлений цепи } г: геаХ; { суммарное сопротивление } С: ХпЪедег; { тип соединения элементов: 1 — последовательное; 2 — параллельное } Ьедхп ытШеХп (• Вычисление сопротивления электрической цепи ’); ыг1ХеХп('Введите исходные данные:'); уггдЛе ('Величина первого сопротивления (Ом) — геас!Хп(г1); юга.Це ('Величина второго сопротивления (Ом) —>'); геасПп (г 2) ; ™г1Ёе(’Тип соединения элементов (1-последовательное, ’2-параллельное) —>'); геасПп(X);
ЪЬеп г:~г1+г2 •Хае г:=г1*г2/(г1+г2); игдХеХп{’Сопротивление цепи: ’,г:5:2,’ Ом’); геас11п; епск Задача 79 { Решение квадратного уравнения } ргодгат здгооЪ; хгах а,Ъ,с:геаХ; { коэффициенты уравнения } х1,х2:геаХ; { корни уравнения } <1: геаХ; { дискриминант } Ьедхп иг11:еХп (* * Решение квадратного уравнения * ’); юг1Хе(•Введите в одной строке значения коэффициентов1); мг1Хе!п(’ и нажмите <ЕгХег>’); «г дхе геа<1Хп(а,Ь,с); { ввод коэффициентов } с1:=Ь*Ь-4*а*с; { вычисление дискриминанта ] хГ д >= О ЪЪеп Ьедхп х1 ^-Ь+здгЪ (<Х) / (2*а); х2 :“-Ъ-здгГ (д) / (2*а); югаХеХп (' Корни уравнения: ’); ыгхЪеХп (’ х1= ’, х] ; 9; 3) ; ыгдХеХд (' х2= ’, х2:9:3) ; епс! •Хае игдхеХп (• Корней нет ’); епс1. Задача 81 { Вычисление стоимости покупки с учетом скидки > уаг зитт: геаХ; { сумма покупки }
Ьедхп кгдЛе1п( * Вычисление стоимости покупки с учетом скидки.’] ; «г1ге!п (’ Введите стоимость покупки и нажмите <ЕгЛег>. ’); ыг гее (’->’}; геасНп (еипип); х€ зитт > 500 1Ъеп ( предоставляется скидка } Ьедхп хГ зитго > 1000 ЬЬеп Ьедхп ' кгИе1п(’Вам предоставляется скидка 5%’); ' еитт:=С. 95*зитга; епв е1зе Ьедхп иг1Ье1п(тВам предоставляется скидка 3%*); зит: .97 * зигот; епй; ъ/гИеХп (’ Сумма покупки с учетом скидки: ’ , зигот:6:2,* руб.'); •гк! е!зе иг!Г.е1п (• Скидка не предоставляется. ’); геад1п; епсЬ г «' ' I ' ’• Задача 82____________ { Проверка знания истории } чгаг уеаг: хпгедег; { ответ испытуемого } Ьедхп игНе1п(тВ каком году был основан Санкт-Петербург?’); ^г1Ъе!п( • Введите число и нажмите <Еп1:ег>’); кг 1Ъе геасНп (уеаг); хГ уеаг « 1703 Ыздп кгхЪе1п(’Правильно.•) е!&е
Ьедхп и/г 1Де (’ Вы ошиблись, ’); мг1Де1п(1Санкт-Петербург был основан в 1703 году.’) епд; геасПп; еп<1. Задача 84 { Проверка знания истории архитектуры } таг оГу: хпредег; { номер ответа, выбранного испытуемым } Ьедхп ыг1Ъе1п('Архитектор Исаакиевского собора:1); ыглХеХп(11. Доменико Трезини’]; мг1Ье1п('2. Огюст Монферран'); «глХеХп(’ 3. Карл Росси’); ыгхДеЗ п; ыгдЛеХп(’Введите номер правильного ответа и нажмите <ЕгЛег> •) ; геасПп (оГту) ; хГ ©IV = 2 ЬЬеп мг±Ъе1п(’Правильно.’) е!зе Ьедхп мгхбеТп(’Вы ошиблись.'); и7г1Ле1п('Архитектор Исаакиевского собора ’Огюст Монферран.1); епН; геасПп; Задача 86____________ { Сравнение двух целых чисел } таг а,Ь: хп^едег; { сравниваемые числа } Ьедхп мглХе('Введите в одной строке два целых мг11е1п(1числа и нажмите <ЕпЁег>’); мгхСе(’->’);
геас!1п(агЬ); хГ а - Ь ЪЬеп юг1Хе!п (' числа равны1) е!зе хГ а < Ъ ГЪеп ыгхбе1п(а, г меньше *,Ь) е1зе мгх1:е1п(аг ’ больше ’, Ь); геас11п; епск Задача 87 { Проверка умения умножать числа } Vа^ т1,т2гр: хпГедег; { сомножители и произведение } оС\г: хгтЬедег; { ответ испытуемого } Ьедхп Напбошхге; { инициализация генератора случайных чисел } т1:=Напс1от(9)+1; { значение функции Напбот(а) — числе ) { в диапазоне от 0 до а-1 ) т2:=Капдот(9)+1; р:==т!*т2; ыгхГеХп(’Сколько будет ’,т1, 'х1 ,т2, ’ ? •) ; мгхДе1п('Введите ответ и нажмите <Епбег>’); нгхХе(’-> ’); геаб1п(о1гу); хГ р - О1^ Уюп югхСеХп (’Правильно. 1) е!зе игзЛеХвСВы ошиблись. ’ ,т1,’х’,т2,’=1 ,р) ; геас11п; епс1. Задача 89__________________________________________________ ( Проверяет на четность введенное с клавиатуры число } уаг п: хпСедег; { введенное пользователем число } Ьедхп .иг1Ёе!п('Введите целое число и нажмите <ЕпЁег>’); мгзХе ('“>’); геас11п (п) ; чгхЪе (’ Число \п, 1 — ’);
х€ п пюв 2 = С СИеп и/гтЪеЛп (’ четное. ’) е1ее мгдХеХп(’нечетное. ’) ; геасНп; { чтобы результат не исчез с экрана } епД. Задача 91 { Вычисление стоимости телефонного разговора с учетом скидки, предоставляемой по субботам и воскресеньям } Vа^ Толпе: гпбедег; { длительность разговора ) Оау:гпоедег; { день недели } 8итта:геа1; { стоимость разговора } Ьедхп мг1ее1п(‘Вычисление стоимости разговора по телефону.1); мгхЁе1п(‘Введите исходные данные:’); ыгхбе{‘Длительность разговора•); «г1бе(‘ (целое кол-во минут) геасНп (ТЬпе); «г хбе(1День недели’); ^гхбе(’ (1-понедельник,..,7-воскресенье)-> ’); геасНп(Бау); Зишпа:- 2.3 * Толпе; { цена минуты 2.3 руб.} х€ (Вау = 6) ог (Вау ® 7) ЬЬеп Ьедхп мгхбеХп(‘Предоставляется скидка 20%’); Витта:=8итта * 0.8; еп<3; мгхбеХп (’ Стоимость разговора: ’, Зиглта: 8:2, ’ руб. ’) ; геасНп; епс!. Задача 92 { Контроль веса } лгаг м:геа1; { вес } Ъ:геа1; { рост }
орЁ:геа1; { оптимальный вес } 6:геа1; { отклонение от оптимального веса } Ьедхп югдЛеХп(’Введите в одной строке через пробел’); игП:е1п (.'рост (см) и вес (кг), затем нажмите <Еп^ег>’); мгхЪе геасПп (Т1,ю) ; орЪ:=Ь-100; х€ ю=ор! Ыхеп югх1:е1п (’Ваш вес оптимален! *) е1зе ХГ Ю<Ор1 И1еп Ьедхп сЬ=ор!-ю; юг1Се1п(’Вам надо поправиться на 6:5:2,’ кг.’); епб е1зе Ьедхп 6: -ю~ор1; кгхЁе!п(’Вам надо похудеть на1, 6:5:2,’ кг1); * епб; геасПп; епб. Задача 93________________________________________________ { Определение времени года по номеру месяца ) уаг ГПОП1И: апиедег; { номер месяца } юг1Ле1п (’ Введите номер месяца (число от 1 до 12) и на:кмите <ЕпДег> ’); югхЪе геа61п (топЪЬ) ; сазе топМ1 ей: 1,2,12: ыг1+:е1п(г3има’); 3.. 5: юг 111е1п (1 Весна ’); 6.. 8: иг 1Хе1п (’ Лето ’) ; 9.. 11: юг И:е1п (’ Осень ') ;
е1зе «г±ее1п('Число должно быть ст 1 до 12'); епд; геад1п; епд. Задача 95 { Определение стоимости междугороднего телефонного разговора } хгаг кос!: хпЪедег; { код города } сепа: геа1; { цена минуты } дШ: ХпДедег; { длительность разговора } зитт: геа1; { стоимость разговора } Ьедхп «г1Де1п(’Вычисление стоимости разговора по телефону.'); мгхкеХп('Введите исходные данные:’); «г1Ле( 'Код города —; геадГп(код); ыгзхе ( •Длительность разговора (целое кол-во минут) —>*); геад1п(д11к); ыг1Се('Город: сазе код 432: Ьедхп ыг1Се1п('Владивосток’); сепа:=2.2; епд; 095: Ьедхп мгхсеХп('Москва*); сепа:=1; епд; 815: Ьедхп мг±Се1п('Мурманск'); сепа:=1.2; епд; 846: Ьедхп ыглЛеХп (' Самара'); сепа:=1.4; епд; епд; зишт := сепа * дИД; мгхЪеХп('Пена минуты:’,сепа:6:2,' руб.');
угг 1 бе1п (’ Стоимость разговора: ’, зигат: 6:2,’ руб. ’) ; геайХп; елск Задача 96 Дописывает после числа слово "рубль” в правильной форме ) Vа^ п: хппедег; { число ) т: хпЪедег; { остаток от деления п на 100 (последние две цифры) } г: хпГедег; { остаток от деления п на 10 (последняя цифра) ) Ьедхп «Г11:е1п( 'Введите целое число (от 1 до 999)’, 1 и нажмите <Еп1:ег>’); «ггбе(’ -> ’); геад!п(п); кгИе (п, * ’) ; I окончание определяется двумя последними цифрами ) 1± п>100 ЪЪеп т := п тсхЯ 100; х€ (т >= 11) апсЯ (т <= 14) ЪИеп у?г1бе1п (’ рублей ’) е1ве Ьедхп г:=п тод 1С; саве г оГ 0, 5 .. 9: мгИ_е1п('рублей’}; 1: и/гзЛеЗ п {’ рубль ’); 2..4: ыгхбеХп (1рубля’); епсЯ; епсЯ; геас11п; Задача 98 { Вычисление даты следующего дня } уаг дау:хпъедег;
топЪЪ: гп^едег; уеаг:±п^едег; 1а5€:Ьоо1еап; { ТВОЕ, если текущий день последний день месяца } г: хггседег; { если год високосный, то остаток от ] { деления уеаг на 4 равен нулю } Ьедхп югзХе(’Введите цифрами сегодняшнюю дату1); «гоЛе (’ (число месяц год) — > ’); геад1п(дау,топ1:Ь, уеаг); 1азЪ:-ЕАЪ8Е; сазе топЪЬ оГ 1,3,5,7,8,10,12:х€ дау-31 ЪЬеп 1аз1::=ТКЦЕ; 4,6,9,11: хГ дау=30 ЪЪоп 1азЪ:=ТВПЕ; 2: хГ дау = 28 ЪЪеп Ьедхп г:=уеаг тод 4; г <> О ЪЬеп 1азЬ:=ТКОЕ; епд; епд; { сазе } хГ 1азЁ 1Ьеп Ьедхп «глХеГп (1 Последний день месяца! ’); дау:-1; хГ топЁЬ=12 Нхеп Ьедхп топМ1:=1; уеаг:-уеаг + 1; ыгзХеХп(’С наступающим Новым годом!’); епд е1зе топ~Ъ:=тогЛЪ + 1; епд е!зе дау:=дау + 1; нга±е1п(’Завтра ’,дау,’.*,топЪН,'.’,уеаг );
геаб1п; епд. Задача 100 { Выводит таблицу квадратов первых десяти целых положительных чисел } Vа^ х: шЦедег; { число } у: хпЁедег; { квадрат числа } 12 хпЪедег; { счетчик циклов } Ьедхп юг11:е1п (• Таблица квадратов ’); */Г11:е1п( ’----------------’) ; ыг 1Хе1п(•Число Квадрат’); ыггЬе1п( ’----------------1); 1:ог 1:=1 Ьо 10 <1о Ьедхп у:=х*х; мгИ:е1п(х:Згу: 10); х:=х+1; епЦ; мг±1е1п ( 1---------------• ) ; геасНп; епс1. 4 Задача 102____________________ { Вычисляет сумму первых п целых положительных чисел } Vа^ п: 1П1едег; { кол-во суммируемых чисел } зшт: ытЪедег; { сумма } 1: хгтЬедег; { счетчик циклов ] Ьедхп ыг±Ъе1п(’Вычисление суммы положительных чисел1); мгИ1е(’Введите количество суммируемых чисел —>']; геасНп (п); 5и1пт:=0; 1:=1 Ьо п с!о 5шип:=зиггап+1; (’Сумма первых \п, ’ целых положительных чисел
югхбеХп (’ равна ’, зигат); геасИп; еп<1. Задача 104 { Вычисляет частичную сумму ряда: 1,3,5,7 . .. } Vа^ е: гпбедег; { член ряда ] п: хпбедег; { кол-во суммируемых членов } зигпт: !пбедег; { сумма членов ряда } 1: гпбедег; { счетчик циклов } Ьедхп юггбеХп(’Вычисление частичной суммы ряда: 1,3,5,7, юг1бе1п('Введите количество суммируемых членов — геабХп(п); е:=1; [ первый член ряда } 5шпт:=0; Гог 1:=1 Ъо в <5о Ьедхп зшт:=зи1гап+е; { прибавить к сумме очередной член ряда } е:=е+2; { вычислить значение следующего члена ряда } епс1; юг!бе!п(’Сумма первых г,п, г членов ряда равна г,зитт); геасИп; еп<1. Задача 105 { Вычисление суммы ряда 1+1/2+1/3+ ... } Vа^ п: 1пбедег; { кол-во суммируемых членов ряда } 1:!пбедег; { номер элемента ряда } е1ет:геа1; { значение элемента ряда ] зигат: геах; { сумма элементов ряда } юг!бе1п('Вычисление частичной суммы ряда 1+1/2+1/3+...’); юг!бе1п('Введите кол-во суммируемых членов ряда'); юггбе
геасПп {п); зша: —О; Гог 1:=1 Ъо п до Ьедхп е1ет:=1/1; зъспт: =зшпт+е1ет; епд; иггзХе (’Сумма первых ’ ,п) ; уггИ:е1п (’ членов ряда равна 1, зшпт: 6:4); геадХп; епд. Задача 106 { Таблица степеней двойки } уаг п: 1п1:едег; { показатель степени ) х: хпГедег; { значение 2 в степени и } Ьедхп кгП:е1п(’Таблица степеней двойки’); х:=1; Гог п:=0 Ъо 10 до Ьедхп мг5Ле1п(п:2, х: 6); х:=х*2; епд; геад1п; епд. Задача 108 { Таблица функции } сопзЪ ЬВ~-2; { нижняя граница диапазона изменения аргумента } НВ~-2; { верхняя граница диапазона изменения аргумента } БХ=0,5; { приращение аргумента } уаг х,у: геа1; { аргумент и значение функции ] п: хпЪедег; { кол-во точек } х: хгЛедег; { счетчик циклов )
Ьедхп п:=Коипб((НВ - ЬВ)/0Х)+1; х:=ЬВ; мг±Ъе1п (*---------------------’); юггЬе1п(‘ х | у’); югхЪеХп (’---------------------') ; Гох 1: =1 Ъо п с!о Ьедхп у:=~2.4 *х*х+5*х-3; югаЛе]п(х:8:2,’ | ’,у:8:2); х:=х+ЭХ; еп<1; к/гзЛе1п( ’--------------------1); геасНп; еп<1. Задача 111 { Вычисляет среднее арифметическое последовательности дробных чисел, вводимой с клавиатуры } сопзЪ Ь=5; { длина последовательности } ч/аг а: геа1; { число } п: хпЪедег; ( кол-вс введенных чисел } зит: геа1; { сумма введенных чисел } згеск геа1; { среднее арифметическое введенных чисел } Ьедхп мг1бе1п(‘Обработка последовательности пробных чисел’); игзХе1п(‘После ввода каждого числа нажимайте <Еп^ег>‘); зит:=О; Гог п:-1 Ьо Ь йо Ьедхп ыглХе геасНп (а); зшп:=зит+а; згеЗ: =5тт/п; ыгдХеХп (‘Введено чисел: ’, п: 3, ’ Сумма: зит:6:2, ‘ Сред. арифметическое: ’, згеб: 6:2) ; еп<1;
мгдХеХп('Для завершения работы программы нажмите <Еп-Ьег>'); геа<31п; еле!. Задача 112 { Вычисляет среднее арифметическое и определяет минимальное и максимальное число последовательности дробных чисел, вводимых с клавиатуры } Vа^ а: геа1; { очередное число } п: гпЪедег; { количество чисел } зиш: геа1; { сумма введенных чисел } вгес!: геа1; { среднее арифметическое } ш1п: геа1; { минимальное число последовательности ] шах: геа1; { максимальное число последовательности ) х: хпбедег; { счетчик циклов } Ьедхп иг1Ле1п('Обработка последовательности дробных чисел.'}; юг 1±е ('Введите количество чисел последовательности —>'); геас11п (п); у/г±бе1п('Вводите последовательность.'); ™г1Ъе1п(1 После ввода каждого числа нажимайте <Еп1:ег>’}; «г1Ъе('->') ; геад1п(а); { вводим первое число последовательности I { предположим, что:) т!п:=а; { первое число является минимальным шах:=а; { первое число является максимальным } 5 пт: =а; { введем остальные числа } Гог х:=1 Ъо п-1 с!о Ьедхп мгхЁе геас11п(а) ; зит:=5ит+а; хГ а < тхп ЬЬеп т!п:=а: хГ а > тах ЬЪеп тах:=а; епс1; згес1:=5ит/п; 4 Зак. 161
У7Г1Ъе1п (’Количество чисел: ’ ,п); мг±Ъе1п (• Среднее арифметическое: ', згед: 6:2); ых1€е1п(1Минимальное число:’,гпхп:6:2); мгх1е!п(’Максимальное число:’,шах: 6:2) ; иггЬе1п(’Для завершения работы программы нажмите <ЕпГег>’); геасПп; епд. Задача 114 { Генерирует три последовательности случайных чисел и вычисляет среднее арифметическое каждой последовательности } сопзЪ №=3; { кол-во последовательностей } Ь=10; { длина последовательности ) ллаг г: ГпГедет; { случайное число } зит: хпЪедег; { сумма чисел последовательности } згед: геа!; { среднее арифметическое } хпХедег; { счетчики циклов } Ьедхп мг1Ъе!п (' Случайные числа ’) ; Напдотхге; I инициализация генератора случ. чисел } Гог ±:=1 Ьо Ы до Ьедхп { генерируем последовательность } зшп:==О; { не забыть обнулить ! } Гог □ ; ==1 Ъо Ь до г:=Капдот(10)+1; их1Де(г:3); зит:=зит+г; епд; згед:=^зиш/Ь; юг1Хе1п(’ Сред.арифм.: \згед:6:2); епд; ыг1Де1п(’Для завершения работы программы нажмите <ЕпЪег>'); геадХп; епд.
Задача 116 { Таблица сопзЬ ЬВ=-4; НВ=4; бХ=0.5; хгахг нижняя граница диапазона изменения аргумента } верхняя граница диапазона изменения аргумента } приращение аргумента } х,у: геа1; { аргумент и значение функции } п: Хпиедег; { кол-во точек } 1: 1п1:едег; { счетчик циклов } «г±Ёе1п(’Таблица значений функции у= | х | ’); п:=Коипд((НВ - ЪВ)/СХ)+1; Ьедхп у:=АЬз (х) ; «г!бе1п(х: 6:2, у: 6:2); х:=х+ПХ; геасНп; епд. Задача 119 { Выводит таблицу умножения на 7 } Vаx т: 1п1едег; { число, для которого надо вывести таблицу умножения (множимое) } п: гпЪедег; { множитель } р: гпбедег; { произведение } Ьедхп ш:=7; Гог п:-1 Го 10 до Ьедхп р:=т*п; югхбе1п (т, ’ хт, п, 1 =', р) ; епд; геасНп; { чтобы результат не исчезал с экрана } епд.
Задача 120 { Преобразование десятичного числа в двоичное } уаг бес: ллтседег; { десятичное число } V: гпседег; { вес формируемого разряда } 1: гпседег; { номер формируемого разряда ] Ьедхп юг1се1п("Преобразование десятичного числа в двоичное’); юг1ее!п("Введите целое число от С до 255 и нажмите "<ЕпЁег>"); югббе{’->’); геаб1п(бес); мглЛе(•Десятичному числу "/бес,’ соответствует двоичное ’); у:=128; { вес старшего разряда } 1:=1 Ъо 8 бо Ьедхп х€ бес >= V ЪЪеп Ьедхп югдХе (" 1") ; бес:=бес-у; епб е1зе мггДе(" 0"); у:=Воипб(у/2); { вес следующего разряда в два раза } { меньше веса текущего разряда } епб; геаб!п; епб, Задача 121 { Выводит на экран квадрат Пифагора - таблицу умножения. } уаг ±,]: хпЪедег; { номер строки и столбца таблицы } р: гп1:едег; { произведение 1 на з ] Ьедхп мг1бе("’:4); { левая верхняя клетка таблицы } Гог ]:=1 1о 10 до { первая строка - номера столбцов } иггбе0:4); мгхЁеХп; Гог х:»1 Го 10 бо
Ьедхп иг1бе(1:4); 1 номер строки } Гог з:=1 бо 10 до { строка таблицы ] мгаХе (1*з : 4) ; у/г±бе1п; епд; геасПп; { чтобы результат не исчезал с экрана } епд. Задача 122 { Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + ... } уаг х: геа1; { член ряда } п: Хпбедег; { количество суммируемых членов ] зигпт: геа1; { частичная сумма } 1: хпбедег; ( счетчик циклов } Ьедхп игаХе 1п ('Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + мгзХе ('Введите кол-во суммируемых членов ряда геасПп (п); зитт:=0; . Гог 1:= 1 Го п до Ьедхп х:=1/(2*1 - 1); хГ (1 шод 2) = 0 Пхеп х:=-1*х; зилта: -зилтл+х; епд; нг1бе1п (’Сумма ряда: ', зигпш: 8:6) ; игаХе1п('Значение рг/4 т,р1/4:8:6); { рх — именованная константа } геасПп; епд Задача 123 { Приближенное вычисление интеграла методом прямоугольников } Vа^ а,Ь: геа]; { границы отрезка } дх: геа1; { приращение аргумента (величина интервала) )
з: геа1; { приближенное значение интеграла} п: хпХедег; { количество интервалов } х: геа1; { аргумент } у: геа1; { значение функции в начале интервала } 1: хгЛедег; Ьедхп иг1Ёе1п(•Приближенное вычисление интеграла’); мг 1±е(’Нижняя граница отрезка -> ’); геасНп(а); чггЬе(‘Верхняя граница отрезка -> *); геасНп (Ь) ; югхЪе(’Приращение аргумента -> геасНп (бх); п:=Воипс1 ((Ь-а) /сЪс); х: =а; з :=С; Гог 1:=1 Го п <1о Ьедхп у:==5*х*х -х+2; { значение функции в начале интервала } з:=з ьу*с!х; х:=х+<3х; еп<1; мгдхеХп(1 Значение интеграла: ’, з: 9:3) ; мг1Хе1п(’Для завершения работы программы нажмите <ЕпГег>‘); геасНп; Задача 124 { Приближенное вычисление интеграла методом трапеций } уаг а,Ь: геа1; { границы отрезка } с!х: геа1; { приращение аргумента (величина интервала)} з: геа1; { приближенное значение интеграла} п: хпГедег; { количество интервалов } х: геа1; { аргумент } у1,у2: геа1; { значение функции в начале и в конце интервала } 1! 1п1:едег;
Ьедхп юг±бе1п (* 1 Приближенное вычисление интеграла ’}; юг !хе (* Нижняя граница отрезка -> ’); геасИп(а); иг±бе(’Верхняя граница отрезка -> '); геабХп (Ь); югхбе(’Приращение аргумента -> геабХп (с!х); п:=Коипб( (Ь-а) /бх) ; х:=а; з:=0; Гог 1:-1 бо п бо Ьедхп у!:=5*х*х-х+2; { значение ф-и в начале интервала ] х:=х+бх; у2:=5*х*х-х+2; { значение ф-и е конце интервала } з:=з+ (у1+у2) *бх/2; епб; юг!бе1п(’Значение интеграла: 1, з: 9:3); югхбеХп(1Для завершения работы, программы нажмите <Епбег>’); геабХп; епб. Задача 126 { Преобразование десятичного числа в двоичное } уаг бес: хпбедег; ( десятичное число } V: хпбедег; { вес формируемого разряда } х: хпбедег; { номер формируемого разряда ) Ьедхп юг!Ле!п(’Преобразование десятичного числа в двоичное1); юг!.бе1п('Введите целое число от 0 до 255 и нажмите 1<Епбег>1); чггСе(’->'); геасНп(дес); юг! 1:е ('Десятичному числу бес, ’ соответствует двоичное V:^=128; { вес старшего (восьмого) разряда ) Гог г:=1 бо 8 бо
Ьедхп хЛ: дес >— V ЬЬеп Ьедхп игхСе(’1’); дес:=дес-V; епд е!ве кг1бе (’О'); V:=Коипд(V/2); { вес следующего разряда в два раза меньше } епд; геадТп; епд Задача 127 { Программа проверяет знание таблицы умножения } ивез СгЪ; Vа^ питЬ1,питЬ2: 1п1:едег; { Первое и второе число ] гез:хгЛедег; { Результат умножения первого числа на второе ) о<лл: 1пДедег; { Ответ испытуемого } ко1:1п1:едег; { Количество правильных ответов ] 1:хпГедег; Ьедхп С1г8сг; { очистить экран } мгхбеХп (1 *** Проверка знания таблицы умножения ***’); югдЛеХп(’ После примера введите ответ и нажмите <ЕпПег>.1); мг!бе1п; ко1:=0; { правильных ответов ) Капдошхге; { инициализация генератора случайных чисел } ^ог х:—1 Ъо 10 до { 10 примеров } Ьедхп пипЬ ] : =Капдэт (9) +1; пипЬ2: =Капдот (9) +1; гез:=пшпЫ * пишЬ2; кг1Ле(' \питЪ1г’х\пиглЬ2, ’ 1 ); геад1п(о1:у); хГ оду=гев
ЪЪеп ко!:=ко!+1 е!зе Ьедхп мгИе1п(’ Вы ошиблись! • ,пшпЫ, * 1 * ’,пигоЬ2, ’ = ’, гез) ; епд; епд; «Г1бе1п(’ Правильных ответов:’,ко!); мг Не (’ Ваша оценка: ’); сазе ко! оГ 10: ипХе1 п (’ 5 ’); 9,8 : ыгке1п(’4’); 7,6: игНеХп(’З’); 0.. 5:мгНе1п(121); епд; игНе1п(* Для завершения работы с программой нажмите <ЕпЁег>’); геа<±1п; епд. Задача 128 { Проверка умения складывать и вычитать числа. } изез СН; иаг пш1Ь1,питЬ2:±п!:едег; { числа } ор:хп1:едег; { Действие над числами 0 - сложение, 1 - вычитание } зор: сНаг; { знак операции - "плюс" или "минус" } гезНпбедег; { Результат } с XV:хпбедег; { Ответ испытуемого } ко1:Хпбедег; { Количество правильных ответов } ЬиЗ:: хпбедег; { буфер для обмена пшпЫ и пишЬ2, в случае, если п1лпЬ1<питЬ2 } 1: хпХедег; { счетчик циклов } Ьедхп СХгЗсг; игхбеХп(’Проверка умения складывать и вычитать числа.’); игНеХп (’После примера введите ответ и нажмите <Епбег>.’);
ко1:=0; Капйошхге; Гог 1:=1 Ъо 10 йо Ьедхп [ сгенерируем пример } п*лпЫ:~Капс1от( 9)4-1; { первое число } пшпЬ2:=Вапаот(9)+1; { второе число ] ор:=Капйот;2); { действие над числами ) хГ ор=0 ЪИеп Ьедхп ( сложение} гез: =пшпЬ1+питЬ2; зор:=’+’; Ьедхп { Вычитание } зор:=*-*; хГ пшпЫ < питЬ2 Ъкеп Ьедхп { обменяем питЫ и питЬ2} ЬиГ:=питЬ2; питЬ2: =питЫ; питЫ:=ЬиГ; епй; гез: =питЫ -питЬ2 ; епй; тегаЛе (’ ’ ,пи1пЫ, зор, питЬ2,' = ’); { вывести пример } хеайХп (о^); { получить ответ испытуемого } х€ ©IV - гез Ы1еп ко!:=ко!+1 Ьедхп мг1Хе1п(’ Вы ошиблись 1 ,пип1Ыг зоргпигпЬ2, ’ = •, гез) ; епй; епй; юглХеХп(’ Правильных ответов:’,ко1); ыгЗЛе(• Ваша оценка:1); сазе ко1 оГ 10: чгхХеХп(’5’); 9,8: тег1Хе1п(’4•);
7,6: чгИ:е1п( г3’) ; О..5:ыг1€е1п(’2’); епд; мг1Ле1п (’ Для завершения работы с программой нажмите <Еп1:ег> *); геасНп; епд. Задача 129 { Простые электронные часы } изез СгР; { используем процедуры и функции библиотеки СП: ) ,уаг пип,вес: хпРедег; { минуты, секунда } Ьедхп С1г5сг; { очистить экран } Еог т!п: =1 Ъо 3 до Ьедхп ^ог зес:=1 Ъо 60 до Ьедхп Ве1ау(1000); { задержка 1000 шз ) 6о1:оХУ (1,1); { установить курсор в 1-ю колонку 1-й строки } юглЛе (т1п,':',зес,’ ’); IX КеуРгеззед { если нажата клавиша } ЪЪеп На1Р; { завершить программу } епд; Задача 130 { Вычисление среднего арифметического последовательности положительных чисел } таг а : гп^едег; { число, введенное с клавиатуры } п : хгЛедег; { количество чисел } з : гпредег; { сумма чисел ) т : геа1; { среднее арифметическое } Ьедхп з:=0;
п:=0; игзХеХп('Вычисление среднего арифметического последовательности положительных чисел.'); мг±ое1п('Вводите после стрелки числа. *, 'Для завершения ввода введите ноль.1); гереаЪ кг1бе(’> '}; геасПп(а); з:=з+а; п:=п+1; ипЪх! а <= 0; п:=п-1; мгхбеХп(’Введено чисел:', п); ыгзХе1п (' Сумма чисел: ’, з); т := з/п; мг1бе1п (1 Среднее арифметическое: ' ,т:6:2 ] ; мгтбеХп ('Для завершения работы программы нажмите <Епбег> ’) ; геасПп; епН. Задача 131 { Определение максимального числа последовательности положительных чисел } Vа^ а : хпбедег; { очередное число } ш : хпЪедег; { максимальное число } Ьедхп мг!1:е('Определение максимального числа'); ыггсеХп('последовательности положительных чисел . '); «г 1Хе1п('Вводите после стрелки числа. 'Для завершения ввода введите ноль.'); т:-0; гереаЪ игтбе(’>'); геад1п(а); х€ а > т ЪЪеп т := а; ипЪИ а <- 0; мг1 бе 1п ('Максимальное число: ',т);
мгзбе1п(’Для завершения работы программы нажмите <ЕпЪег>'); геад1п; епск Задача 132 { Проверка, является ли введенное с клавиатуры целое число, простым } ргодгат ргозб; уаг п: гпЪедег; (1: хпЪедег; г: хпЪедег; Ьедхп игх^е(’Введите целое число-> 1); геай1п(п); с!:=2; { сначала будем делить на два } гереан г:-п люд й; х€ г<>0 { п не разделилось нацело на с! } ЪЬеп с!:~с1 + 1; ипЫ1 г-0; { пока не нашли число, на которое делится п } х^ <5-=п Ш1еп мгхЪеХп ( п, 1 — простое число. ') е1ее кг1бе1п(п, ’ — не простое число.*); епв. Задача 134 { Игра "Угадай число" } сопзЪ КРОР=5; { количество попыток, предоставляемое игроку } уаг сотр: хпбедег; { число, "задуманное" компьютером } тдгок: ХпЪедег;' { вариант игрока } п: хггЕедег; { кол-во попыток, сделанное игроком } Ьедхп Напдотхге; { инициализация генератора случайных чисел } сотр:=Капйот(9)+1; { компьютер задумал число }
ыг1Хе!п( 'Игра "Угадай число". ’); ыг11:е1п (1 Компьютер "задумал" число от 1 до 10.’); мг!1:е1п ('Угадайте его за 1 ,КРОР, ' попыток. ’); мгг1:е1п('Введите число и нажмите <ЕпДег>.'); гереаЪ п: =п+1; ш 1Хе геабЗ п(хдгок); ипЫ1 (п = КРОР) ог (сотр = здгок); сотр = хдгок Ъкеп мг1Де1п (’ Вы выиграли 1 1) е1зе мг±ге1п(’Вы проиграли! Компьютер задумал число 1, сотр); геасНп; еп<1. Задача 135 { Таймер ) изев СгЪ; тах пйп, зес: гп^едег; { задержка: минут и секунд } Ьедхп мгдХе!п('Введите величину задержки в минутах и секундах, ’); ъггзХеХп('например 2 30 и нажмите <ЕпЛ:ег>.’); мггсе (1 ->1); геасНп (ш±п, зес); С1гЗсг; СоЛоХУ(2,2); мгхЁе (пип, ': ’, зес, ’ ’); гереаЪ хГ зес = 0 ЪИеп Ьедхп пап:==т1п-1; зес:=60; еп4; гереаЪ Эе1ау(1000); { задержка 1 сек } зес:=зес-1; ОоНоХУ(2Г2);
мгдЛе (т!п, ': ’, зесг ’ ’) ; х€ КеуРгеззеё ( если нажата клавиша } ЪНоп На11:; { завершить программу } ипЪх1 зес = 0; ипЪИ (пап = 0) апй (зес 0); { звуковой сигнал } ЗоипсЦЮОО); I включить звук - сигнал частотой 1000 герц) Бе1ау(500); Моз сипе!; { выключить звук} ела. Задача 136 { Вычисление числа "ПИ"} Vа^ р:геа1; { вычисляемое значение ПИ ] 1:геа!; { точность вычисления ] п:1пГедег; { номер члена ряда } е1ет:геа1; { значение члена ряда ] Ьед±п р:=0; п:=1; е!ет:-1; { начальное значение} мггГе (’Задайте точность вычисления ПИ-> ’); геасПп (!); кг±!е!п ('Вычисление ПИ с точностью' 9 !: 9:6) ; ккхХе еХет >- 1 ао Ьед±п е!еш:=1/(2*п-1); хГ (п МОО 2) = 0 Й1вп р:=р-е!ет еХзе р:=р+е!ет; п:=п+1; егк1; р:=р*4; ыгдХеТп{'Значение ПИ с точностью’,1:9:6,’ равно’гр:9:6); кгаХеХп('Просуммировано 1,п,’ членов ряда.’); геаб1п; епа
Задача 137 { Вычисление наибольшего общего делителя двух целых чисел } лгах п1,п2:хп1едег; { числа, НОД которых надо найти ] посНхпЪедег; 1 наибольший общий делитель } гххпЪедег; { остаток ст деления п1 на п2 } Ьедхп ыгх1:е1п('Вычисление наибольшего общего делителя’); ыгаЛеТп!'для двух целых чисел.1); игхЬе('Введите в одной строке два числа '); мг1бе1п(’и нажмите <Епбег>’); ыглЛе геад1п(п1, п2) ; «Ы1е (п1 йод п2) ОС до Ьедхп г:~п1 пюд п2; { остаток от деления} п1:=п2; п2:==г; епд; под:=п2; иг±1:е1п(’НОД чисел ’,п1,’ и ’,п2,’ это 'гпоф; геасПп; епд. Задача 138 ( Приветствие } уаг пате: вЬгхпд[40]; { имя пользователя } Ьедхп мгхбеХп(’Как Вас зовут?’); ыгхбеХпС’(введите свое имя и нажмите <Епбег>'); ыг!Ле геасПп (пате) ; мгхбе1п('Здравствуйте, ’,пате,г!’); геасПп; епд.
Задача 139 { Посимвольный вывод сообщения } изев Сг€; { для доступа к процедуре бе!ау } уаг тзд: эЪгхпд[80]; { сообщение } п: хпбедег; { номер выводимого символа ) Ьедхп тзд:=’Приветствую великого программиста! Гог п:=1 Ъо Ьепди1(тзд) бо Ьедхп мггЬе (тзд [п]); Пе1ау(100); { задержка 0.1 сек } епб; геасИп; еп<1. Задача 140 { Выводит код введенного символа } уаг зхт: сЬаг; { символ } собе: 1п1:едег; { код символа } Ьедхп мг11:е1п('Введите символ и нажмите <ЕпГег>.1); кг1Де1п(*Для завершения работы программы введите точку.’ ; гереаЬ и/гхбе геасНп (зЛт); собе:=Огб(зхт); ыгаЛеЛп(’Символ: ’,зЛт,1 Код: 1,собе); ипЪх! з±т - ’. ’ ; епб. Задача 141 { Вывод таблицы кодировки символов } уаг сЬ:сЬаг; { символ } бес:±г±едег; { десятичный код символа } 1,3:хпбедег;
Ьедхп дес:=О; Гог 1:=0 Ъо 15 до { шестнадцать строк } Ьедхп дес:=1; { чтобы получить таблицу кодировки} { для символов с кодами 128-255/ } { эту инструкцию надо } { заменить на дес:=1+128;} Гог з:=1 Ьо 8 до { восемь колонок } Ьедхп хГ(дес<7) ог (дес>=14) ЪЪеп кгхге(дес:4,'-’,' ’, с!1г(дес) :1,сЬг(179)) е1зе { символы СЕ, ЬГ, ТАВ не отображаются } мгтЛе (дес: 4, 1 - ’ ,сИг (179)) ; дес:=дес+16; епд; ^г11:е1п; { переход к новой строке экрана } епд; геад!п; епд. у Задача 142 ллаг ЗЬ: зЪххпд[80]; { строка текста } 1еп: хпбедег; { длина строки } 1: хпбедег; { номер обрабатываемого символа } Ьедхп ыг1Ъе1п('Введите строку текста и нажмите <ЕпСег>'); ыг1Ъе геад1п(зб); 1еп:=ЬепдсЬ(зг); Гог 1: =1 Ьо 1еп до сазе зб [ 1 ] оГ 'а'..’п': зб[1]:=сЬг(огд(зб[1])-32); ’р’..’я1: зб[1]:=сЬг(огд(зб[1])-80): епд; мг!бе1п{'Строка, преобразованная к верхнему регистру:’); мг!бе1п(зб);
геабХп; ©па. Задача 143 { Удаление начальных пробелов строки ) уаг зС:зЬгхпд[80]; { строка } Ьедхп югтСеХп(’Удаление начальных пробелов строки.’); мггДе('Введите строку:’); геасПп(зС); кЬхХе (роз(' 'г51:) = 1) апД (ХепдСЬ (зС)>0) <3о деХеСе (зС, 1,1) ; ыгНе('Строка без начальных пробелов:зС); геас11п; ©пйк Задача 144 { Проверка, является ли введенная с клавиатуры строка целым числом } таг зЪ: зЬгхпд[40]; { строка } п: СпСедег; { номер проверяемого символа } Ьедхп ыгЛСеХп. С Введите число и нажмите <ЕпСег>'); мг±Се(; геабХп(зЪ); п:=1; кЪхХе (п <- ЬепдДЬ(8Д)) апс! ((зС[п] >= '0') апс! (зС[п] <=’9’)) <3о п:-1И 1; игХЬе ('Введенная строка ’); хе п < ЬепдсЬ(з1:) ЬЪеп кгз Се (1 не '); ыгз Се1п('является целым числом. '); геадХп; епс1.
Задача 146 { проверяет, является ли введенная строка шестнадцатеричным числом } 81:: вЬг1пд[20]; { строка } 1: эпседег; { номер проверяемого символа } еггог: Ьоо1еал; { в строке есть неверный символ ] Ьедхп мг11:е1п('Введите шестнадцатеричное число и нажмите <Епсег>'); мгдХе(’->'); геасНп (зЮ; { преобразуем введенную строку к верхнему регистру } Гог х:=1 Ъо ЬепдЪЫзЪ) До зЪ [1] :=ирСазе (з1: [Ц ); 1:=1; еггог:=ЕАЬ8Е; уй1х1е (1 <= ЬепдЁМзЪ)) апД (поЪ еггог) До 1Г ((з1[1] ’0’) апД (з1:[1] <= ’9')) ог С(з12[х] >= 'А') апД (31:[1] <= ’Е')) 1Леп 1:=1+1 е1ве еггог :=Т№Е; игтГе('Строка ’); ±2 еггог 1Ъеп иг11:е ('не ’); иг±€е1п('является шестнадцатеричным числом. '); геасНп; епД. Задача 147 { проверяет, является ли введенная строка дробным числом без знака } уаг 31:: вЪгхпд’20]; { строка } 1: 1п1:едег; { номер проверяемого символа ] егг: Ьоо1еап; { ТВОЕ - строка не дробное число )
Ьедхп кгхбеХп('Введите дробное число и нажмите <Епбег>'); кгдХе(•->'); геасНп(зг) ; 1:=1; егг:=ТЯОЕ; { пусть строка - не дробное число } х€ <5Ё [х] >='1') апй (з1:[1] <='9*) ЪИеп { первый символ цифра } Ьедхп { за цифрой возможно следут еще цифры } иЬх1е (зМ1] >='1') ала (з! [1] <-'9') ала (1<Ьепд1.Н (зб)) ао { за цифрами следует точка, но она не последний символ } х€ ((зМх] = ала (1 < ЬепдДЪ (з1:) ] ) ЪЪел { точка ] Ьедхп х:=х+1; { за точкой должна быть хотя бы одна цифра } хГ ЦзШ] >=']’) ала (ЗИ[±] <=г9’)) ЪЬеп Ьедхп иЬх1е (<зД[х] >='1') ала (збЦ] <=’9') апд (1<Ъепд1±1(з1:))) ао х:-1+1; х€ 1= Г^епдЕМзЁ) ( последний символ — цифра} ЪЬеп егг:=ЕАЬ5Е; { предположение об ошибке ложно } ела; епД; ела; ъггхДе (’ Строка ’); х^ егг У1еп мгхге ('не ’); кг ах е1п ('является дробным числом. ’) ; геаа1п; ела. Задача 148 { Программа преобразует введенное с клавиатуры двоичное восьмиразрядное число в десятичное ] чаг Ып: 8Ьгхпд[8|; { изображение двоичного числа }
дес: хпДедег; { десятичное число } г: зЬгхпд[1]; { 1-й разряд двоичного числа } ч: ±пДедег; { вес 1-го разряда двоичного числа } 1: 1пбедег; { номер разряда двоичного числа ) Ьедхп ыгхДеХп(’Введите восьмиразрядное двоичное число’); игИе1п( ’и нажмите <ЕпДег>. ’); мгл. Де геад1п(Ып); хГ ЬепдДк(Ып) о 8 ДЬеп иг! Де 1п (’Число должно быть восьмиразрядным. ') е1зе Ьедхп дес:-О; V:=128; (вес старшего (8-го) разряда двоичного числа } Еог 1:=1 До 8 до Ьедхп г:=Ып[Ц; { вьщелить 1-й разряд > хГ г = 11’ ДИеп дес:=дес4^; ч:=Коипд^/2); { вычислить вес следующего разряда } епд; иг!Ге (’ Двоичному числу ’, Ып, 1) ; мг1Де1п(’ соответствует десятичное ’,дес); епд; ыгхбеТпрДля завершения работы программы нажмите <ЕпДег>. ’); геад1п; епд. Задача 149 уаг 51: зДг1пд[2]; { шестнадцатеричное число ) д: зпДедег; { десятичное число, соответствующее введенному шестнадцатеричному } V: 1пДедег; { вес разряда шестнадцатеричного числа } 1: хпбедег; Ьедхп мг1Де1п(’Введите двухразрядное шестнадцатеричное число 1, ’и нажмите <ЕпДег>.1);
кг!Ъе (’-*>’); геад1п(з11); { преобразуем введенную строку к верхнему регистру ] Гог 1:=1 Ъо ЬепдЪИ(зЪ} До зД[1]:=ОрСазе(зС[х]); 1:=ЬепдЪЪ (зЪ); { обрабатываем с младшего разряда } V:»!; (и его вес равен единице } кЫ1е (1>0) ала (((зЩЦ >= ’0’> апа .(зЩ] <- ’9’)) ог <(зЪ[1] >= ’А’} апд (31: [1] <= ’Г’))} ао Ьедхп { здесь символ - цифра или латинская буква от А до Е) 1Г (81(1] >= ’О1) апа (зг[х] <= ’9’) ГЬеп б:=а + V * ( Огб(31: Ш)-46 ) { Ога(’О’) « 48, ОгаГ1’) = 49, и т.д. ] е1ве ё:=а + V * (0га(з1:[1]) - 55); ( Ога('А’) = 65, Ога('В’) = 66, и Т..Д. ] { к предыдущему разряду ] V:=V*16; епа; х€ 1=0 { обработаны все разряды } ЪЪеп кгаХеТп(1 Шестнадцатеричному числу ’,з€, ’ соответствуе десятичное ’,б) е1зе кгНе1п(’Введенная строка не является •шеснадцатеричной цифрой.•); геаа1п; епа. Задача 150 { Программа преобразует десятичное число в число в указанной пользователем системе счисления (от 2-х до 10-ти) } изез СгЪ;
лгаг о:1.п^едег; { Основание системы счисления } пхтпЪедег; { Исходное число } г:1п!:едег; { Остаток от деления числа на основание сист. счисл. ) з:зЪгхпд[16]; { Представление числа в заданной сист. счисл. ) Ьи^: аЪгхпд [ 1 ; Ьедхп С1г5сг; у/гзЛе ('Введите целое число -> 1); геасПп (п); игтЪе(’Введите основание системы счисления -> геасПп (о) ; з:=**; { делим исходное число на основание системы счисления до тех пор, пока остаток от деления больше основания системы счисления. Остаток от деления на каждом шаге - очередная цифра. } гереаЪ г:=п тод о; ( очередная цифра } п:==п сЬлг о; { целая часть деления ] ЗсгСг/Ьи^}; { преобразование цифры в строку] з:=ЬиГ+з; шЛх1(п<о); 51г(п,Ьи±); з:=Ьи!+з; игПеЛп (з) ; геасПп; еп<3, Задача 151 { Программа преобразует десятичное число в шестнадцатеричное } игез СгЪ; уаг п:±п!едег; < Исходное число } г:1п!едег; { Остаток от деления числа на основание сист.. счисл. ]
з:зЪгхпд[16]; { Представление числа в заданной смет. счисл. } Ьи1: зЬгхпд [ 1 ] ; Ьед1п С1гЗсг; мг±1:е (’ Введите целое число -> *); геасНп(п) ; з ; { делим исходное число на основание системы счисления (16) до тех пор, пока остаток от деления больше основания системы счисления. Остаток от деления на каждом шаге - очередная цифра. } кгх^е (’ Десятичному числу ’, п); «г!ее(’ соотвествует шестнадцатеричное 1); хереаЪ г:=п пюд 16; { очередная цифра ) п:=п сЬлг 16; [ целая часть деления } х5 г<10 ЪИеп Ьи1:=сИг(г+48) { сЪг(48) = ’О’, сЪг(49;=’1’ и т.д. } е1зеЬи^:^сЬг(г+55); { сЪг(65) = ‘А’, сИг(66)='В' и т.д. } з:=Ьи^+з; ипЪ11(п<16); п о 0 ЪЪеп Ьедхп х€ п<10 Опап ЬиГ:=сЬг(п+48? е1ге Ьи^:=сЬг(Ш 55); 5:=Ьи±+з; епд; ыг1Хе1п(з); геасНп; епд. Задача 152 { Программа вычисляет значение арифметического выражения, введенного с клавиатуры } иеев Сг+;
Vа^ з: зЪгхпд(80]; { сторона } 1: хпЪедег; ( длина строки } 2: хп^едег; { значение выражения ) п: хпЪедег; { очередное число } 1: хп1:едег; { номер числа в строке } егг: 1п1едег; { код ошибки, при преобразовании символа в число } Ьедхп С1г8сг; игдЛе!п{'Введите арифметическое выражение,’); мгаХеХп('например, 4+5-3-5+2 и нажмите клавишу <Еп1ег>'); и/гаЛе геасНп (з); Vа1(з[1],2,егг); х:=3; гереаЬ Vа1(з[1],п, егг); { получить очередное однозначное число } хг з[1-1] = ’+г №еп 2!=2+П е1зе 2:=г-п; ипЬх! 1 > Ьепд€Ь(з); иг 5 Ъе1 п ('Значение введенного выражения: ',2); ыг$Ъе!п('Для завершения программы нажмите <ЕтЛег>.’); геасНп; Задача 153 { Подсчет кол-ва ненулевых эл-тов массива } согшЪ 5Т2Е-5; ( размер массива } уаг а: аггау[1..812Е] оГ хгЛедег; п: 1п<:едег; { кол-во ненулевых эл-тов } х: 1п<:едег; { индекс } Ьедхп мг1Ъе1п(1Ввод массива целых чисел.’);
игке(’После ввода каждого числа '); иг11е1п (’ нажимайте <ЕпДег> ’); п:-0; Гог 1:=1 Ъо 81 БЕ До Ьедхп игИе(’а[’,1,’] -> ’); геад1п(а[1]); хГ а[х] О 0 ‘ЬЬеп п:=п+1; епд; иг11е1п (’ В массиве 1, п, ’ ненулевых элемента. ’) ; геасПп; епд Задача 154 { Поиск минимального элемента массива } сопеЪ НВ=5; { размер массива } уаг а : аггау |1..НВ] оГ хп^едег; пип: хпЪедег; {минимальный элемент массива } 1 : 1п1едег; Ьедхп иг1Ъе1п(1Поиск минимального элемента массива.’); игИе1п('Введите в одной строке элементы массива (’,НВ, ' целых чисел)’); игхЪе1п(’и нажмите <ЕпЪег>.’); иг1Хе (’ -> 1) ; Гог 1:=1 Ъо НВ-1 до геад(а[1]); геад1п(а[НВ]); { чтобы правильно работала находящаяся в конце программы инструкция геасПп } ш1п:=а(1]; { Предположим, что первый эл-т минимальный } { сравним оставшиеся эл—ты массива с минимальным ) Гог х:=2 Ъо НВ до хГ а[1] < пип ЪЪеп пйп := а[1]; иг11е1п('Минимальный элемент массива: 1 ,т1п); геасПп; епд-
Задача 156 { Вычисление средней (за неделю) температуры воздуха } сопеЪ { названия дней недели - массив строковых констант } Лау: аггау[ 1. . 7 ] оГ вЪгхпд[111-(1 Понедельник’,*Вторник' , 1 Среда’,’Четверг *,’Пятница1, * Суббота* г ’Воскресенье*); уаг Ъетрег:аггау [1..7] геа1; { температура ] 5ит:геа1; { сумма температур за неделю } згебп: геа1; { средняя температура за неделю ) 1:1предел; Ьедхп ыгК:е1п(’Задайте температуру воздуха за неделю.’); Гог 1:=1 Ъо 7 Ло Ьедхп ^г1Ле(6ау [1] г геас11п (1етрег [ 1]) ; епб; { вычисление средней температуры за неделю ) 8ит:~0; Гог 1:=1 Ьо 'Ло зит:=зит ч 1:етрег [1]; згебп:=зит/7; «гз Ее1п (’Средняя температура за неделю:згебп:6:2); геасИп; епЛ. Задача 157 { Поиск в массиве методом перебора элементов } лгаз: таз з IV: аггау [1. . 10] оГ хгЛедег; { массив целых} оЬгахес:хп^едег; { образец для поиска } па!беп:Ъоо1еап; { признак совпадения с образцом } 1: 1п1:едег; Ьедхп { ввод 10 целых чисел ) иг1ие1п(*Поиск в массиве.‘; игхЬе(1Введите 10 целых в одной строке через пробел ’);
ыгХСеХп (’и нажмите <Епбег>'); игХЪе('->’); Гог 1: =1 1о 10 6о геасЦтаБ8^[±]); [ числа введены в массив ] иггХбе ('Введите образец для поиска (целое число) -> '); геасНп (оЬгагес) ; [ поиск простым перебором } паХс!еп:=ГАЬ8Е; { совпадении нет } Х:-1; { проверяем с первою элемента массива } гереаЪ ХГ та55длл[1] = оЬгагес ГИеп паХбеп:=ТКСЕ { совпадение с образцом ] е!зе Х:=Х+1; { переход к следующему элементу } ипЪИ (паХбеп) ог (1>10); { завершим, если совпадение } { с образцом или проверен } { последний элемент массива ) ХГ паХбеп ЪЬеп иг 1_€е1п ('Совпадение с элементом номер1, Х:3,’) е1зе игХХеХп(1 Совпадений с образцом нет.1); геасНп; Задача 158 [ Проверка, образуют ли элементы массива возрастающую последовательность } сопзЪ 812Е—5; Vа^ а:аггау[1..812Е] оГ Хпбедег; { массив } к: ХпДедег; { индекс } ок: Ьоо1еап; { ок = Тгие - последовательность неубывающая ) ЬедХп игХ1е!п('Проверка, образуют ли элементы массива’) ; мг11е1п(’возрастающую последовательность’); иг1Ъе(’Введите в одной строке ’,512Е,’ целых чисел мг!Хе!п ('и нажмите <Епбег>’); Гог к:=1 Ъо 512Е-1 йо геасНа[к]); геасНп (а [51ЕЕ]) ;
к:=1; ок:=ТВОЕ; хереаЪ ' а(к] < аГк+1] ЪЬеп к:=к+1 е18в ок:=ЕАЪ8Е; ипЪ11 (ок =ГАЬ8Е) ох (к = 812Е); мг!Хе ('Введенная последовательность поЪ ок ЪЪеп мгАХе(’не '); мг1€е!п('является возрастающей.1); геасПп; епв. Задача 160 { Проверка, сколько раз введенное с клавиатуры число встречается в массиве } сопвЪ НВ=5; Vаx а: аггау[1..НВ] оГ хпбедег; { массив } оЬг: хтЛедег; { образец } п: гпЪедег; { кол-во элементов массива, значение которых равно образцу] 1: апЪедег; { индекс } игэХе(’Введите массив - '); чгаЛеЛп (НВ,' целых чисел в одной строке . ’) ; югдЛе( ; ^ог 1:=1 Ъо НВ-1 во геасЦа [Л]) ; геасПп(а [НВ]); ыгтЛе('Введите образец для сравнения геасПп(оЬг); п^О; { обработка } Гох 1:==1 Ъо НВ во хГ а|1] - оЪг Нтеп п:-п *-1;
±Г п о О ЪЪеп кг1±е!п('Число ' ,оЬг, ’ встречается в массиве 1, п,’ раз.') е1зе ыг5Ле1п(’Ни один элемент массива не равен образцу') ; геасИп; епв. Задача 162 ( Сортировка массива по возрастанию методом прямого выбора } сопзЪ 512Е=5; { размер массива } чаг а:аггау[1,.812Е] оГ гшЪедег; 1:±п€едег; { номер элемента, от которого ведется поиск ) { минимального эл-та } гпш: хггЬедег; { номер минимального элемента в части ) { массива от г до верхней границы массива } Э:1п1:едег; { номер эл-та, сравниваемого с минимальным } Ьи^:хгЛедег; { буфер, используемый при обмене эл-тов массива } к:1г±едег; { индекс для ввода и вывода } Ьедхп иг1Ье1п( * Сортировка массива . 1) ; кгл±е(’Введите в одной строке 1,8Т2Е); кг1Л:е1п(1 целых чисел и нажмите <ЕпСег>'); кгдЛе (' -> ') ; Гог к:=1 Ъо 812Е-1 во геав(а[к]); геас!1п(а[812Е]) ; кг1Ге1п(’Сортировка’); Гог 1:=1 Ъо 812Е-1 во Ьедхп {- поиск минимального эл-та в части массива от а[з] до а[$12Е]) т1п:=1; Гог э:=1+1 Ъо 812Е во
хГ а [ Л <а [пип] ГЬеп пи_п: -д ; { поменяем местами а[ш1п] и а [11 } ЬиГ:-а[1]; а [1] :=а[т1п]; а[ш1п] :=ЬиГ; { цикл сортировки закончен } { отладочная печать } { выведем промежуточное состояние массива } Гог к:=1 Го 812Е до игЛГе(а[к],’ ’); ‘игхГеХп; епд; иг1Ъе1п; { выведем отсортированный массив } ш?1Ге1п('Массив отсортирован.’); Гог к:=1 Го 812Е до игке(а[к],’ '); геасПп; епд. Задача 163 { Сортировка массива целых по возрастанию методом "пузырька" } сопзЬ 812Е=5; лгаг а:аггау[1. .512Е] оГ 1п1едег; 1:1пседег; { счетчик циклов } кххпГедег; { текущий индекс элемента массива } ЬиГ:хпГедег; «гИе1п (т Сортировка массива методом "пузырька".’}; ыг1ге(’Введите в одной строке ’,512Е,’ целых чисел '); игИе1п (’ и нажмите <ЕпГег> ’); Гог к:=1 Го 812Е-1 до геад(а[к]); геад1п(а[812Е]); игИе1п (' Сортировка. 1) ; Гог 1:=1 Го 512Е-1 до Ьедхп Гог к:=1 Ъо 512Е-1 до
Ьедхп хЕ а|к]>а[к+]] ЬИеп { обменяем к-й и (к+1) -и элементы } ЬиЕ:=а[к]; а (к] :-а[к+1]; а(к+1]:=ЬиГ; епЛ; епЛ; { отладочная печать - состояние массива после очередного цикла сортировки } Гог к:=1 -ко 812Е во мгЛе(а[к], ’ ’}; ыгг!е1п; елЗ; мгхкеЗп; 1л?г1Се1п( 'Массив отсортирован. 1); Гог к:=1 Ъо 812Е йо ыг!±е (а [к], ’ '); геасНп; епЛ. Задача 164 { Объединение (слияние) двух упорядоченных массивов в один ] сопаЪ НВ = 5; { размер исходных массивов } таг в а,Ь: аггау[1..НВ] оГ хп^едег; { исходные массивы ) с: аггау 1..2*НВ, оГ хп^едег; { массив - результат } к, 1,т : 1пГ:едег; ( индексы массивов а,Ь и с ) Ьедхп ыг1Т:е1п('Объединение двух упорядоченных по возрастанию 1, 'массивов. г); кг1Се1п('Введите в одной строке элементы первого ’, 'массива,’); игдХе(1(1,НВ,’ целых чисел) -> '); Гог к:-1 Го НВ1 Ло геад(а[к]); геасНп (а [НВ]); иг1Ье1п ('Введите в одной строке элементы второго массива’}; югдХе(’(’,НВ,’ целых чисел) -> ’); 5 Зак. 161
€ог 1:=1 1» НВ-1 До геаД(Ь[1)); геаД1п(Ь[НВ]); к*1. гп*=1/ гереаЬ а [к] < Ь[1] Яхеп Ьедхп с[т] :==а[к] ; т:=1п+1г к:=к+1; епД е1ае хГ а[к] > Ь[1 ] Ыхеп Ьедхп с[ш] :=Ь[1]; ш: =тп+1; Ьедхп с[т] :=а[к]; с[ш+1]:=Ь[1]; к:=к+1; пи=*п+2; епД/ ипЫ1 (к > НВ) ог (1 > НВ); { один из двух исходных массивов полностью переписан в массив С ] ^гЪх1е к <= НВ До ( есть эл~ты А, не переписанные в С } Ьедхп , с[т] :»=а[к]; к:=к+1; т:=т+1; епД; 5 1?Их1е 1 <== НВ До { есть эл-ты В, не переписанные в С } Ьедхп с [т] ;
1:=1+1; ш:=чп+1; епс1; юг1Де1п(’Массив - результат’); 1:=1 Ъо 2*НВ йо мгхДе (с [1] г ’ ’); уп:1Де1п; кггДеХв (’ Для завершения работы нажмите <ЕпДег>. ') ; геасП п; у / епа. Задача 165 { Бинарный поиск в упорядоченном массиве } 1аЬе1 Ьуе; сопзЪ НВ=1С; уаг а: аггау [1.. 101 дпДедег; { массив целых ) оЬг:хпСедег; { образец для поиска } ок: Ьоо1еап; { ТВДЕ - массив упорядочен ] згеа^егЬ,п±г:1пседег; { номера среднего, верхнего и нижнего эл-тов массива} Доппс1;Ьоо1еап; { признак совпадения с образцом } п:±пДедег; { счетчик сравнений с образцом } . 1:хпДедег; Ьедхп { ввод массива } угг±Де1п(1 *** Бинарный поиск в упорядоченном массиве »**'); угг г Де ('Введите массив (в одной строке \НВ); нггДеХп (’ целых чисел) и нажмите <ЕггДег>’); ыгтДе €ог г:=1 Ъо НВ-1 6о геа<3(а[1]) ; геасПп(а. [НВ]); { проверим, является ли массив упорядоченным } 1:=1;
ок:=ТНЦЕ; { пусть массив упорядочен } кЫ1в (1 < НВ) апд ок до а[1] <= а[1+1] ЪЬеп х:»х+1 е!зе ок:-КАЪ8Е; х€ поЪ ок ЪЬеп Ьедхп югхДеХп('Введенный массив не является *, ’упорядоченным по возрастанию’); доЪо Ьуе; епд; мгдЛе(’Введите образец для поиска (целое число) -> ’); геадХп(оЬг); { бинарный поиск ) уегЪ:=1; п1з:=НВ; 1оипс1:=ЕАЬ8Е; п:=0; гереаЪ 5гед:= (пхх-уегИ) сИхг 2 + Vе^^1; { делим массив пополам } п:=п+1; хЕ а[згед]=оЬг ЬЬеп Еоипс1:=ТВОЕ еХзе { в какой части, в верхней или в нижней, может находиться искомый элемент? } хЕ оЬг<а[вгес1] ЕЬеп п12:-згес-1 е!ве уегИ:=8геа+1; ипЪх1 (уегЬ > пха) ог Еоипй; х^ Еоипё ЪЪеп мгхДе (’ Совпадение с элементом номер ’ । 5гей,’. Выполнено ’,п,’ сравнений.г) е!ее мгхДе1п (’ Образец в массиве не найден. ’); Ьуе: геасНп; епд.
Задача 166 { Анализ роста учеников ) сопзЪ Ы8В-30; { максимально возможное кол-во учеников в классе } лгаг гоз<:: геа1; { рост ученика } сХазз: аггау [1. .КЗВ] оГ хеа1; { рост учеников } п: хп^едег; { кол-во учеников, о которых введены сведения } згед: геаХ; { средний рост } ш: ХпДедег; { кол-во учеников, чей рост больше среднего } зиш: геаХ; { суммарный рост } 1: ХпЪедег; Ьедхп мг1Ёе1п('*** Анализ роста учеников х*** ’) ; ™г1Хе1п('Введите рост (см) и нажмите <Епбег>’); ыг1Ле1п('Для завершения введите 0 и нажмите <ЕпЪег>’); п:=0; хереаЪ ыгЗХе геайХг (гозЪ); Х^ ГОЗЪ <> О Я1еп Ьедхп п:=п+1; сХазз[п] :=гозЬ; зит: =з ат+гозЪ; епс1; ипЪх! (п > ЫЗВ) ог (гоз1: - 0); х€ п > 0 ЪЬеп Ьедхп згед:=зит/п; т:=0; { сравним рост каждого со средним ] €ог ±:=1 Ъо п Ло х€ с1азя[1] > згеб ЬЬеп т:=т+1;
мг1бе!п (’Средний рост: ’, згеб:6:1,’ см’); мг±б.е1п(’У ’,ш, ’-х учеников рост превышает ’средний. ’) ; епв еХзе мгхбеТп (’Нет данных для обработки.’); геасНп; епв. Задача 167 { Вычисление суммы элементов массива (по столбцам) } сопзЪ КОК-=3; { кол-во строк } СОЬ=5; { кол-во столбцов } уаг а: аггау[1. .КОИ, 1. .СОЬ] оГ Ьпбедег; { массив ] з: аггау1..С0Ь] оГ 1пбедег; { сумма элементов } 1,3: хпбедег; Ьедхп ш?1бе1п {’Введите массив. 1); мгЬбеХп(’После ввода элементов каждой строки,*, СОЬ, ’ целых чисел, нажимайте <Епбег>1); Гог 1:-1 Ъо КОИ йо { ВОК строк } Ьедхп чг1бе(’-> *); Гог 3:«1 Ъо СОЬ-1 до геаа(а[х, Л); геад1п(а[1,СОЬ]); епд; ^Е1бе1п(’Введенный массив *); Гог х:=1 Ъо КОК во Ьедхп Гог 3:=1 Ъо СОЬ-1 во мгхсе(а(1,3):4); и7г1бе1п(а[±,СОЬ] : 4); епв; [ обработка } Гог 3^1 Ьэ СОЬ во { для каждого столбца } Гог Ь:=1 Ъо КОК во { суммируем эл-ты одного столбца } з [31 :==з(31+а[1, 3];
ыг1Ёе1п (’-----------------------------'); Гог х:=1 Ьэ СОЬ До игзХеСзЦ) :4); мгИе1п; геасИп; епд. Задача 170 { вычисление определителя матрицы второго порядка ] уаг а: аггау[1..2/1..2) оГ геа1; деЪ: геаХ; { определитель (детерминант) } 1,}: гпЪедег; [ индексы массива } Ьедхп мг!1е1п(’Введите матрицу второго порядка.’); ш?аЛе1п( ’После ввода элементов строки нажимайте <ЕпЪег>’); Гог 1:=1 Го 2 до Ьедхп мггГе(; геад(а[1,1)); геасИп (а [1,2]) ; епд; деЪ:=а[1,1]*а[2,2] - а[1,2]*а[2,1] ; мг11е!п (’ Определитель матрицы 1); Гог 1:«1 Го 2 до Ьедхп Гог }:=1 Ъо 2 до мг11:е (аЦг Л :6:2) ; мг11е!п; епд; мг 1Ъе1п (’ равен ’, де<:: 6:2); геасИп; епд. Задача 171 { Проверяет, является ли матрица магическим квадратом } сопзЪ МАХ=5; { максимальный размер матрицы }
Vа^ а: аггау [1. .МАХ, 1. .МАХ] оГ 1пДедег; | матрица п: 1пДедег; ( размер проверяемой матрицы } ок:Ьоо1еап; { ТЕШЕ - матрица является маг. квадратом; 1,3: хпдедег; { индексы массива ) зиш: гпДедег; { сумма эл-тов главной диагонали матрицы ) Детр: хпДедег; { сумма элементов текущей строки, столбца или второй диагонали матрицы } Ьедхп тег 1 Де(’Введите размер матрицы (3..4) ', 'и нажмите <ЕпДег> геасПп (п) ; Иг1Де1п('Введите строки матрицы'); Иг! Де! п( 'После ввода строки ’,п, ' целых чисел,’, 'нажимайте <Епдег>'); Гог х:=1 До п во Ьедхп тег!Де Гог До п-1 во геав(а[1,Л); геасПп(а [1 ,п]); епв; ок:-ТЕШЕ; { пусть матрица - магический квадрат } зиш:=0; { вычислим сумму элементов главной диагонали } Гог 1:= 1 До п во зит:=зит+а[1,1]; { вычисляем суммы по строкам} х:=1; гереаД Детр:-0; { сумма эл-тов текущей строки } Гог 3 : -1 До п во Детр: =Детр+а [ 1, з ]; 1:=х+1; хГ гетр о зит ДЬеп ок:=ЕАЬЗЕ; ипДх! (поД ок) ог (х > п); хД ок ДЬеп { здесь сумма элементов каждой строки равна сумме эл-тов главной диагонали }
Ьедхп { вычисляем суммы по столбцам } 3:=1; гереаЪ Детр:=0; { сумма эл-тов текущего столбца } Гог 1:-1 Ъо п До 1етр:=1:етр+а[1, д]; 1:=3+1; Цетр о зит ЪНеп ок :=ГАЪ8Е; ипЪИ (поЪ ок) ог (} > п); хГ ок ЪЬеп { здесь сумма эл-тов каждой строки равна сумме эл-тов каждого столбца и равна сумме эл-тов главной диагонали) Ьедхп { вычислим сумму эл-тов второй . главной диагонали } Гетр:=0; 3:=п; ^ог 1_:=1 Ъо п йо Ьедхп Сетр: ==Гетр+а [!,}]; Л =3-1 епд; х± Гетр о зиш ЪЬеп ок:=ГАЪ8Е; епд; епд; игоХе(’Введенная матрица ’); □X поЪ ок ЪЬеп нгзХе (’ не ’); ыгЗХеТп('является магическим квадратом.’); геасНп; епй. Задача 173 { Подводит итоги Олимпийских игр } сопзЪ №=10; {количество стран-участниц } зГ гапа: аггау [ 1.. М ] о€ зЪгхпд ( 9 ] == (1 Австрия', ’ Германия1, ’Канада', ’Китай 1, * Корея’ ( ’Норвегия1,1 Россия 1, ’США*,’Финляндия’, 1Япония’);
уаг { таблица результатов } гезиХЪ: аггау (1. «И+1, 1..5] оГ хпДедег; ( Ы+1-я строка используется как буфер при сортировке таблицы } 1,]: Хпдедег; шах: хпдедег; ( номер строки таблицы, в которой количество очков максимально } ЬиГ: збг1пд[9]; { используется при сортировке } Ьедхп мг1Де1п (’ Итоги Олимпийских игр ’); мгтСеХп(1Введите в одной строке количество золотых, ’, ’серебряных и бронзовых медалей.’); { ввод исходных данных } Гог 1:=1 Ъо Ы с!о Ьедхп ыг1Се(зДгапа^1],’ геад(гези1д[1,1],гези!Д[1,2]); { кол-во золотых и серебряных ) геасПп(гезиГс [1,3]); { кол-вс бронзовых } епд; { вычислим общее кол-во медалей и очков ] Гог 1:=1 Ъо М с!о Ьедхп гезиТД[1,4]:-гези1Д[1,1]+гези1И[1,2]+гези1Д[1,3]; ге- зи1Ъ[1,5]:=гези1б[1,1]*7+гези1б[1, 2]*6чгези11[1,3]*5; епс!; { сортировка массива в соответствии с количеством очков ] { методом простого выбора } Гог 1;=1 Ъо Ы-1 до Ьедхп { в части таблицы начиная со строки 1 найти }-ю строку, в которой элемент гези1^[з,5] максимальный ) тах:-1; { пусть это строка с номером 1 } Гог з:=1+1 Ъо Ы с!о хГ гези1Ё^,5] > гези1Д[тах,5] ГЬеп тах:=э;
{ Обменяем 1—ю строку со строкой с номером шах. В качестве буфера используем последнюю, не используемую строку таблицы. } ЬиГ: =з!:гапа [ 1]; з!гапа(1]:=зЪгапа[тах]; 5^гапа [тах]: =ЬиИ; Гог з: =1 Ъо 5 до Ьедхп гезиИДИИ, Л ;*=гези!1Д1,з ]; епд/ Гог 3: =1 Ъо 5 бо Ьедхп гези111 [ 1, Л : «гези1Х [тах, з ]; епб; Гог Л=1 Ъо 5 до Ьед±п гези1Ъ[тах,з]:=гези1Ъ[№ 1, з]; епд; епд; { здесь таблица упорядочена } мг1Ъе1п; ыг1Ёе1п(’Итоги зимней Олимпиада в Нагано, 1998 г.’); ин?1Ъе1п(’Страна’: 12 , ’Золото’:8,'Серебро’: 8, ’Бронза’ : 8, •Всего’:8,’Очков’:8); Гог 1:=1 Ьо М до Ьед±п мгх^е(1:2,з1гапа[1]:10); Гог з :=1 Ъо 5 до ыгзЛе(гези11[1,Л:8); *7гИе1п; епд; геадТп; епд. Задача 174 { Игра "Угадай число" } г СОПЗЪ №=3; { уровень сложности - количество цифр в числе }
уаг хдгок: аггау[1..К]оГ скаг; { комбинация игрока ] сотр: аггау [1. .К]оГ ска г; { комбинация компьютера } а: аггау[1..К] оГ ЬооХеап; { а[1]= ТЕСЕ, если 1-я цифра компьютера совпала с одной из цифр игрока } цдаЛ: 1пкедег;{ угадано чисел } тезбо:зпСедег;{ из них на своих местах ) 1,3: 1пСедег; { индексы массива } Ьедхп мггбе1п( 'Компьютер задумал трехзначное число. ', ’ Вы должны его отгадать.1); юг1Хе1пПосле ввода очередного числа, вам будет 'сообщено, сколько цифр’); иг1бе1п('угадано и сколько из них находятся 1на своих местах.'); ыгдХеХп('После ввода числа нажимайте <Епкег>.’}; { компьютер "задумывает" свое число } гапЛотхге; Ест 1:=1 Ъо К Ло сотр[1 ] :==сИг (гапбот'10) 1-48) ; { 48 - код символа ’0' } мггбе ('Компьютер задумал: Гог 1:=1 Ьо М до игдХе (сотр [1]);' югдХеТп; хереаЪ мгхбе(’Ваш вариант-> ’); {получить вариант игрока } Гог 1:=1 Ъо К-1 Ло геад(1дгок[1]); геасНп (хдгок [Ы]); Гог 1:=*1 со К Ло а [1] :«ЕАЬЗЕ; { а[з] = ТИПЕ, если 1-я цифра числа компьютера совпала с одной из цифр числа игрока } { проверим, сколько цифр угадано ) цдаЛ:=0;
Гог ±:=1 Ъо 11 во { проверим каждую цифру игрока ) Гог з:=1 Ъо К во Ьедхп хГ (хдгок[1] - сотрЕз]) апв поЪ а[}] ЪЬеп Ьедхп идав:=идасН 1; а[Л:~ТКОЕ; { запретим сравнивать эту цифру компьютера с оставшимися, еще не проверенными цифрами игрока } епв; епв; { проверим, сколько на своих местах } гневно :=0; Гог и=1 Ъо М во хГ 1дгок[1] = сощр[1] ЪЬеп тезСс: =тлевто+1; мгаЛе1п(1Угадано: ’,идав, '. На своих местах:1 ,те51:с) ; ипГх! (идав = К) апв (тез€о = И); «г!Ье1п(1***ВЫ УГАДАЛИ ЧИСЛО’***’); мгхбе(’Нажмите <Епбег> для завершения.1); геаЛп; Задача 175 [ Телеграф - передача сообщении при помощи азбуки Морзе. ] { Замечание: возможно надо увеличить величины задержек. } изев Сгб; оопвЪ тогве: аггау(128..159] оГ аЪгхпд(4] =( {А, Б, В, Г} (Д,Е,Ж,3} {И,Й,К,Л} {М,Н,О,Т1} {Р,С,Т,У} {Ф,Х,Ц,Ч} {1Н,1Ц,Ъ,Ы} {Ь,Э,Ю,Я}
{ параметры передачи } ТОЫЕ=ЮО; { частота сигнала (гц) } Ы=50; ( длительность (мс) "точки" } 12=100; { длительность (мс) "тире") ЬЗ=50; { пауза (мс) между точками и тире одной буквы ) 14=100; [ пауза (мс) между буквами } 1.5=150; { пауза (мс) между словами } чаг тез: зЪгхпд; { сообщение } зхт: зЪгхпд[4]; { символ в кодировке Морзе - последовательность точек и тире } гпак: зЪгхпд[1]; { "передаваемый" знак - тире или точка } 1,3: тпбедег; { номер символа и знака } Ьедхп С1г8сг; ыгдХеХп(’*** Телеграф ***'); игзХе1п(’Введите сообщение, которое надо передать1); мгИе1п (’(используйте только большие русские буквы)1); мг±1е(; геасПп (тез); €ог п:=1 Ъо Ьепд1Ъ (тез) До' Ьедхп х^ (тез[1] >= 'А') апд (тез[1] <=’Я’) ЪЬеп { определим код очередной буквы (ф-я Огд) сообщения и получим из таблицы кодировки соответствующий элемент массива - последовательность точек и тире } з1т: =тогзе [ огс! (тез I х ]) ]; э:=1; хереаЪ 5.Е (зйпШ = •-•) ог (8ып[Л = ЬЪеп У7г11е (З1т(з ]); зоипб (1000) ; сазе 51т [}] оГ ’.*: Ве1ау(50); ’-г: Ве1ау(100); епд; КоЗоипд; Ве1ау(50); епд;
д:=5+1; ипЪх! ((з1т[}] = 1 1) ог (^>4)); Ое1ау(100); { пауза между буквами ) епс! е1зе тез[1] = ' ’ ЪЬеп 1 пробел между словами } Ьедхп мгхДе (' *) ; { пробел между словами сообщения } Бе1ау(150); епс!; епс!; «г1Хе1п; мг!Де1п(’Сообщение передано!1); мг±Де1п (’ Для завершения работы с программой нажмите ’, ’<Еп1:ег>’); геасНп; епс!. Задача 177 { Функция шах возвращает максимальное из двух чисел ) ГипсЪхсп тах(а,Ь: хпЪедег) : хпбедег; Ьедхп х± а > Ь ЪЪеп тах: =а е1зе шах:=Ь; епсА; Задача 178 { Возвращает результат сравнения чисел в виде символа отношения } АзлпсЪхоп Сотпраге (э ,Ь: геа1) : скаг; Ьедхп хГ а > Ь ЪЪеп Сотраге:-’>’ е!зе 12 а < Ь ЪЬеп Сотраге:~'<1 е1зе Сотраге епд;
\гах: х1,х2: геа1; ( сравниваемые числа } гез: сИаг; { результат сравнения } Ьедхп ыгаХеХп('Введите два числа и нажмите <ЕпЪег>'); мгзХе (’->’); геасПп (х1,х2); гез:=Сошраге(х1,х2); { вызов функции программиста ] мг1Ге1п(х1:6:2,гез,х2:6:2); геасПп; епв. Задача 179 { Вычисляет сопротивление электрической цепи ) €ппсЪхоп 8орг(г1,г2: геаХ; 1пГ1едег) : геа1; { г1, г2 - величины сопротивлений Г: - тип соединения: 1 - последовательное; 2 - параллельное. Если тип соединения указан неверно, то возвращает -1 } Ьедхп х€ Т:=1 ЬЬеп 8орг:= г1+г2; хЕ 1=2 ЪЬеп 5орг:= г1*г2/(г]+г2) е!зе 8орг:=-1; { неверно указан тип соединения} еп<1; Задача 180 { Вычисление степени числа с использованием свойств логарифмов } ГцпсЪхоп 1п51:ер(а/Ъ:геа1) :геа1; Ьедхп { А в сепени В равно С Логарифмируем обе части равенства и получаем: В*1п(А) == 1п(С) Нас интересует значение С, поэтому вычисляем Е в степени В*1п(А). Значение этого выражения равно С,что и требовалось вычислить. }
X 1пЗГер:=ехр(Ь*1п(а)) ; епд; Vа^ а: геа1; { число } Ь: геа1; { степень } с: геа1; ( число в степени } Ьедхп ъггРГеХп (1 Введите число и показатель степени1}; геасИп (а,Ь); с:=1п5бер(агЬ); югдЛеХп(а:6:3, ’ в степени Г,Ь:6:3Г' = ’,с:6:3); геасИп; епд. Задача 182 { вычисляет доход по вкладу } ^ипсЫоп ЕоИод(зит: геаХ; ( сумма вклада } 5€аVка: геа1; { процентная ставка (годовых) } згок: ллтХедег { срок вклада (дней) } ): геа1; ЕоИод:==зит* (зХаука/Х00/365) *згок; { 365 кол-во дней в году ) епд; Задача 183 { Проверяет, является ли символ гласной буквой } ЕипсЫоп С1азп(51т:сГ1аг) : ЬооХеап; сопеЬ { гласные буквы ) ЫзбОХСХазп: зЬгхпд =1 АаЕеИиОоУуЫыЭэЮюЯя ’ ; Vа^ р: ЬуЪе; { позиция проверяемого символа в списке гласных } Ьедхп р: -Роз (зхт, ЫзбО^С1азп); { !!?! } р о 0 { символ найден в списке }
Мюп 61азп:=Тгие е1зе С1азп:=Га1зе; епд; Задача 184 { Удаляет из строки начальные пробелы } ^ипсЪхоп ЬТг1т(зГ: зЪгхпд) : вЪгхпд; Ьедхп нЫ1е (роз(’ ',51) = 1) апд (1епд1Ъ(з^) > 0) до де!е1е(51,1,1); ЬТг1т:=з1; епд; { проверка работы функции ЬТг1га} Vа^ з:з1гхпд[80]; { строка } иг 1бе 1п(’Удаление из строки начальных пробелов.’); иг! бе('Введите строку ->г); геасПп (з) ; игНе(’Строка без начальных пробелов:ЬТг1т(з)) ; геасПп; епд. Задача 186 { Преобразование строчных букв в прописные } { Замещает стандартную процедуру ИрСазе} Гипсбхоп ЦрСазе(зб:збгхпд): збгхпд; уаг длхпбедег; Ьедхп €ог 1:=0 бо ЬепдбИ(зб) до { символы нумеруются с нуля ! } сазе 51(1] об { латинские буквы} ’а’..’х’:ПрСазе[1]:=сЬг(огд(зё[1])-32); { русские буквы} ’а’..’п’:СрСазе[1]:=сИг(огд(зГ[з])-32); ’р’.. ’я’ :СрСазе[1] :==сЪг (огд{з! [1] )-80);
Часть II. Решения е!ае { остальные символы не преобразуем } УрСазе[1] :»зЪ[1]; { пример использования фикции ЦрСазе } лгаг 31:: з!п?хпд; Ьедхп ыг1ДеХп(т Введите текст и нажмите <ЕпДег>’); ыг11:е( ; геадЗ.п (зд) ; игхДеХп (ИрСазе (зД)); геасНп; Задача 188 { Решение квадратного уравнения } ГхшсЪхоп КтаЗгИг(а,Ь,с: геа!; уаг х!,х2: геа!) : ХпДедег; { а,Ь, с - коэффициенты уравнения ) { х!,х2 - корми уравнения } { значение функции - количество корней или -1, если неверные исходные данные 1 ляаг д: геа!; { дискриминант } Ьедхп х^ а = С ЪЪвп ^адгОг := -1 еХае Ьедхп с!:-Ь*Ь-4*а*с; 12 с! < О ДЪеп Кйас1г0г:=0 { уравнение не имеет решения } еХае Ьедхп а > о ДЬеп КХгас1гиг:=2 { два разных корня } еХве Куадг0г:=*1; { корни одинаковые } х!:= (-Ь+5дг1: (б)) / (2 *а); х2:= (-Ь-ЗдгГ (д)) / (2 *а) ; епй; епс!; еп4;
{ основная программа } уаг а,Ь,с: геа1; { коэффициенты уравнения } х1,х2: геа1; { корни уравнения } Ьедхп юг1Ёе1п('Решение квадратного уравнения1); юг1Ье1п('Введите в одной строке коэффициенты и нажмите 1, <Еп1гег> ’); югИзе геад1п(а,Ь,с); оаее №а<ЗгОг (а,Ь,с,х1,х2) о€ “1: юг 1 Ъе 1п (’ Ошибка исходных данных.'); 0: юглЛеХп(1 Уравнение не имеет решения.'); 1: юг5Хе!п(’х-',х1:6:2,' Корни одинаковые.']; 2: юг11:е1п ('х1=' ,х1: 6:2, • х2~',х2:6:2); епй, геасИп; епс1. Задача 189 ивее СгС; иаг а:1п1:едег; { число, введенное пользователем } { Функция СеЪТп!: предназначена для ввода целого положительного числа, состоящего из одной или двух цифр. Во время ввода для редактирования может использоваться <Васкзрасе>. При нажатии <Еп1:ег> функция возвращает введенное число. } ^ипсЪхоп Се1:1п^: хпДедег; сопаЪ К_ВАСК-8; { код клавиши <Васкзрасе> } К_ЕЫТЕН=13; { код клавиши <ЕпЁег> } уаг сИ:сИаг; { символ ) <Зес:Ьу1е; { код символа ) ЬиГ:аггау[1..2] о€ сИаг; { введенные цифры } п:1пРедег; { кол-во введенных цифр ] х,у:±пРедег; { положение курсора ) Ьедхп Ьи±[1]: = ' ЬиЛ2]
п:==0; гереаЪ сИ: =Кеас1кеу; <3ес:=огс1 (сЬ); 12 (сЬ>=’0|) апЛ (сЪ<=,9’) апв (п<2) ЬЬеп Ьедхп •кгаХеГсЬ); п:=п+1; ЬиГ[п] :-=сЪ; епй е1ае 12 (6ес=К_БАСК) ап<1 (п>0) Нхеп Ьедхп п:=п-1; х:=ИЬегеХ; у:=ИИегеУ; СоЦоХУ (х-1, у) ; мгд/Се(’ ’); СоГоХУ(х-1,у); епв; ипЫ1 (п>0) алД (йес=К_ЕЫТЕК); / { преобразуем введенную строку в число } 12 п-2 1Ьеп 6еГ;1пЬ: = (огс1(Ь-д2[1] )-48)*10+ога(Ьи^[2])-4б е1ее СеМп!:: =огб (ЬиГ [ 1 ]) -48; епс1; Ьедхп С1г5сг; кг1Ле1п(• *** Демонстрация работы функции СебТпС. ***’); иггдХеХп; игаЛе1п (• Функция СеМпб предназначена для ввода целого 1, 'положительного числа,’); ш?1€е1п('состоящего из одной или двух цифр.’); иг111е1п(’Во время ввода для редактирования может 1 г •использоваться <Васкзрасе>.’); мг!^е1п ('При нажатии <Еп(;ег> функция возвращает ’, •введенное число.’); юг1бе1п; «гаЛеТп('Введите число и нажмите <ЕгЛ:ег>'); «гЗхе
а:-СеМп1:; игзЛеХп; ыгдХе(*Вы ввели число 1,а); геасНп; еп4 Задача 190 { Выводит строку из звездочек } ргосейиге ЗЪагГапе (1еп: хп-Ьедег); Vа^ 1: 1п1:едег; Ьедхп ±от х:=1 Ъо 1еп До у/г1Ъе ('*’); епД; Задача 193 _ —.. { Вычерчивает рамку ) ргоседиге Ггаше (1:1пЪедег; 1::1п1:едег; м:1пгедег; Ь:1пЪедег); { 1,1: - координаты верхнего левого угла, и - ширина рамки, Ь. - высота рамки } Vа^ х,у:1пСедег; { координаты выводимого символу } 1:1п1:едег; с1,с2,сЗ,с4,с5,с6:сЪаг;{ символы,из которых рисуется рамка } 4 с1:=сИг(218); { символ верхнего левого угла ] { функция сЬг возвращает символ, номер которого ] { указан при вызове функции } с2:=сЬг(196); { символ горизонтальной линейки } сЗ:=с!1г (191); { символ правого верхнего угла } с4 :=с!1г (1^9); { символ вертикальной линейки ] с5:-сЬг(192); { символ левого нижнего угла } с6:=сЪг(217); { символ правого нижнего угла ] СоТоХУ (1Л) ; мгхге(с1);
Гог х:=1 Ъо и-2 до { символы верхнем границы рамки } нгке (с2); ыгдЛе (сЗ); у: =11+1; х:=1+н-1; Гог 1:=1 Ъо Ъ-2 до {символы левой и правой границ } Ьедхп СоТоХУ{1, у) ; «гз Де (с4); СоТоХУ(х,у); мгз Де(с4); у:=у+1; епд; СоТоХУ(1,у); юг! Де(с5); ^ог х:=1 До и—2 до { символы нижней границы } юг1Де(с2); югхДе (сб); епд; Задача 195 { Рисует Олимпийский флаг } шез СгарЬ; ^гаг дгОггуег: хпДедег; { драйвер } дгМоде:хпДедег; { графический режим ] дгРаДЬ: вДгхлд; { место расположения драйвера } ЕггСоде:ДпДедег; { результат инициализации граф, режима ] Ьедхп дгОгхуег := УСА; { режим УСА} дгМоде:=УСАН1; { разрешение 640x480) дгРа^Ь: = ’е:\1:р\Ьд1’; { драйвер, файл ЕСАУСА. ВС1, находится в каталоге е:\1:р\Ьд1 } 1пШ6гарЬ (дгОгт^ег, дгМоде, дгРаМз) ; ЕггСоде :•= СгарИРезиШ; х^ ЕггСоде <> дгОк Ыхеп Ьедхп игаЛе1п( ’ Ошибка инициализации графического режима . ’);
«г1Ёе1п(’Для завершения работы программы нажмите 1 <Еп1:ег>т); геасНп; На1Л(1); епс1; { полотнище флага } 5е1:Е11181:у1е(8о11бЕ111/ЫдЫ:Сгау); [ сплошная заливка серым цветом } Ваг(80,80,200,135); { кольца } 8е1:Со1ог (Сгееп); { зеленое } СхгсХе(100,100,15); Зе^Со1ог(В1аск); { черное } С±гс1е(140,100,15); 8еЪСо1ог (Кеб.); { красное } С1гс1е(180,100,15); 5е11Со1ог (Уе11ои); { желтое } С1гс1е(120,115,15); 8еОСо1ог(В1ие); { синее } С1гс1е(16С, 115,15); геасНп; С1озеСгарИ; епб. Задача 198 ( Рисует кораблик с использованием метода базовой точки } паев ОгарЬ; сопзЪ { шаг сетки } бх=5; { по X} бу=5; { по У} Vа^ дгОгЗ иег: 1п1:едег; { драйвер } дгМобе: гпЁедег; { графический режим } дгРа1:Ъ:вЪгхпд; { место расположения драйвера ] ЕггСобе:гпгедег; { результат инициализации граф, режима
х, уЫпСедег; { координаты базовой точки кораблика } Ьедхп дгОЫ^ег : = УСА; { режим УСА} дгМо<1е: =УСАН а; { разрешение 640x480} дгРаЪИ:=’е:\1р\Ьд1•; { драйвер , файл ЕСАУСА.ВС1, находится в каталоге с!:\1:р\Ьд1 } 1пдХСгарЪ (дтОгзллег, дгМоае , дгРа^Ь) ; ЕггСоде := СгарЬКези] 1; хГ ЕггСос1е <> дгОк ЪЬеп Еа1"1(1); х:~10; у:-200; { корпус } МоиеТо (х, у,); ЫпеТо (х, у-2*с!у); ЫпеТо (х+10*дх, у-2*с!у); ЫпеТо (х+11*дх, у-3*с!у); ЫпеТо (х+17 *с!х, у-3*ду); ЫпеТо(х+14*с1х,у) ; ЫпеТо (х, у) ; [ надстройка } МоуеТо(х+3*дх, у-2*с!у) ; ЫпеТо (х+4*дх/у-3*(1у); ЫпеТо(х+4*дх,у-4*ду); ЫпеТо (х+13 *с!х, у-4 *<1у); ЫпеТо (х+13 *с!х, у-3*<1у); Ыпе (х+Б^скх, у- 3 Ч1у,х+9*с1х, у-3*с!у) ; { капитанский мостик } КесЪапд1е (х+8*ах, у-4*с!у,х411*с!х, у-5*с!у) { труба } КесСапдТе (х+7*с!х, у~4Му, х+8 *<1х, у-7*<1у); { иллюминаторы } С1гс1е (х+12 *дх, у-2*с1у, Тгипс (<1х/2)); С1гс1е(х+14 *с1хгу--2*с1у/Тгипс (дх/2)); [ мачта } Ыпе (х+10*с1Хг у-5*6у, х+Ю*дх, у“10*йу) ; ( оснастка } Г>*клгеТо (х+17 *с1х, у-3*йу); ЫпеТо (х+10*дхг у-ЮМу); ЫпеТо (хг у-2*бу);
геасИп ; СТозеСгарй; епд. Задача 199 { Выводит узор из 100 произвольно размещенных окружностей произвольного радиуса и цвета } Изез СгарЬ; лгаг дгБггуег: хпЪедег; дгМоде: 1п1едег; дгРаМх:эЪгхпд; ЕггСоде: 1п1:едег; хгугг: 1п1:едег; { координаты центра и радиус окружности } х: 1п1:едег; Ьедхп дгБг IV© г: =ТСА; дгМоде: -\ОХН1; дгРа-ЬЬ: = ’ е: \€р\Ьд! • ; ТгпЛСгарИ (дгОгг^ег, дгМоде, дгРа-СИ); > ЕггСоде:=С1арЪКези1Ъ; хГ ЕггСоде <> дгОК ЪИеп Ьедхп у/г1Ле1п ('Ошибка инициализации графического режима. ’); ыг.1Ле1п (’Для завершения работы нажмите <ЕгЛег> ’) ; геадХп; НаИ: (1); епд; Рапдотхге; Гог 1:=1 Ъо 100 до Ьедхп х:=Капдот(640); у:=Рапдот(480); г:=Вапдот(240); 8е1со1ог(Напдот(16)); С1гс1е (х,у, г); епд; геад1п; епд.
Задача 200 { Выводит узор из 200 случайно размещенных линий разного цвета } Свез СгарЪ; члаг дгПгдлгег: хпСедег; дгМобе:хпЪедег; дгРа!1И: эЪгхпд; ЕггСойе: 1п1:едег; х,у: ХпЪедег; { координаты конца линии ) 1; хгЛедег; Ьедхп дгОг гуег: =\7СА; дгМоде:==ТСАН1; дгРа^И: =' е: \Ър\Ьд1 ’; 1п5ХСгарЬ (дгРгдлгеГгдгМосТе, дгРаЕИ) ; ЕггСобе: =Сгар11Кези1г; хГ ЕггСойе о дгОК ЬИеп Ьедхп игЗЛеХп ('Ошибка инициализации графического режима.’); нгаЛеХп (’Для завершения работы нажмите <Еп1:ег>']; геасНп; НаХЪ (1); еп<1; Капскжаге; ^ог х:=1 Ъо 200 с1о Ьедхп х: -КапсТотп (640); у:=Капаош(480); 5еЕсо1ог(Рапдот(16)); ЫпеТо (х,у) ; еп<1; геасНп; епа. Задача 201 { Рисует контур пятиконечной звезда } изез (ЗгарИ;
1аЬе1 Ьуе; таг г: хп^едег; { радиус звезды } хО,уО: хпЬедег; { координаты центра звезда } х,у:^ 1п1:едег; { координаты конца луча } а: ЛпЬедег; { угол между осью ОХ и прямой, соединяющей центр звезды и конец луча } 1: хпЬедег; дгОга^ег: 1пЬедег; дгМойе: ТпЬедег; ЕггСоде: ТпЬедег; гез: гпХедег; Ьедхп дгОггуег := деЪесЬ; 1п±Ь6гарЬ (дгйгхуег, дгМойе, ’ е: \Ьр\Ьд1'); ЕггСоде : — СгарИРези! 1:; х€ ЕггСос1е о дгОк ЪНеп Ьедхп юг1Ье1п('Ошибка инициализации графического режима.1); доЬо Ьуе; епф х0:=100; у0:-100; г:=20; а:—18; { строим от правого гор. луча } х:=хО ЬЕоипс1(г*соз (а*2*р1/360) ) ; у:—уО--Коипс1 (г*5±п (а*2*р!/360)); ЬкгуеТо (х, у); ^ог х:=1 Ъо 5 Ло Ьедхп а:=а+36; х:=хО+Коипс!(г/2*со5(а*2*р1/360)); у:=^уС-Роипа(г/2*51п (а*2*р!/360) ) ; ЫпеТо (х, у); а:=а+36; х€ а > 360 Ы1еп а:—18; х:=х0+Коипс1(г*со5 (а*2*р!/360) ) ;
у:=уО-Коипд(г*з1п(а*2 кр±/360)); ЫпеТо (х,у); епд’ геасИп; Ьуе: епд Задача 202 { Рисует пятиконечную звезду } ч изез бгарИ; 1аЬе1 Ьуе; СОП8^ к=0.01745; { коэф, пересчета величины угла из градусов в радианы к=2*р/360, где р - число "ПИ” } г: хпьедег; { радиус звезды } х0,у0: хп^едег; { координаты центра звезды } р: аггау [ 1,. 10] оГ Ро±п!1Туре; ( координаты концов лучей и впадин звезды ) а: хпЬедег; { угол между осью ОХ и прямойг соединяющей центр звезда и конец луча или впадину } 1: гпДедег; дгСгаллег: ХпЬедег; дгМоде: ХпЬедег; ЕггСоде: Хп1:едег; гез: хпЪедег; Ьедхп дгБгллгег := деЬесЪ; ХпхЬСгарЬ (дгОгггег, дгМоде, ’ е: \Ьр\Ьд1 ’); ЕггСоде :== СгарЬКезиХЬ; ЕггСоде о дгОк ЪЬеп Ьедхп ыг11:е1п(’Ошибка инициализации графического режима,1); доЪо Ьуе; епд;
хО:=1ОО; уО:=1ОО; г:=20; а:=18; { строим от правого гор. луча } Гог х:=1 Ъо 10 до Ьедхп хЕ (1 люд 2) <> 0 ЪЬеп Ьедхп { луч } рЩ .х:=хС+Коипд(г*соз (а*к)); р[1].у;=уС-Коипд(г*зхп(а*к)); епд е!зе Ьедхп { впадина ] р[х].х:=х0нКоипд(г/2*со5(а *к)); р[1]-у:=у0“Коипд(г/2*51п(а*к)); епд; а:=а+36; хГ а > 360 ЬЬеп а:=18; епд; 5еЬЫ118Ьу1е (ЗоИдЕШ, Вед) ; ЕП1Ро1у(10,р); геад1п; Ьуе: епд Задача 204_______________________________________ { Рисует российский флаг ) изез СгарЪ; тлаг X/у: тпЬедег; { координаты левого верхнего угла флага ) 1, Ь: тпьедег; { длинами высота флага } V: хпЬедег; { ширина полосы флага } дгОг ^ег: 1пЬедег; дгМоде: ТпЬедег; ЕггСоде: 1п1едег; гез: хпЬедег; Ьедхп дгОгх^ег := деЬесЬ;
ГпИзСгарк (дгБггуег, дгМос1е, 1 е: \Ср\Ьд1 ’); ЕггСоЗе СгаркКезиИ; хЕ ЕггСоде ~ дгОк Ыхеп х:=100; у:=100; 1:=50; Ь:=25; у/: =Коип<1 (к/З); { рисуем флаг } 8екГ1118ку1е (5о11(1Е111гИЫсе); Ваг(х,у,х+1/у+м); 2екЕ1118ку1е (8о1д сПГШ, В1ие); Ваг (х,у1-м,х+1,у+2*ы); 8е1:Г1115ку1е (5о11с1Е111,Кес1) ; Ваг (х, у+2*и, х+1, у+3*у/) ; Ои'ЬТехкХУ (х, у+Ъ+5, 1 Россия1); епд; геасПп; СХозеСгарк; епд. Задача 205_________________________ { Рисует веселую рожицу желтого цвета } изез СгарЬ; уаг дг0г2Лгег:1пкедег; ( драйвер ) дгМоде: Хпкедег; { графический режим } дгРаЫкзЪххпд; { место расположения драйвера ] ЕггСоде: з п^едег; { результат инициализации граф, режима Ьедхп дгВггуег := УСА; ( режим УСА} дгМоде:=УСАН1; { разрешение 640x480} дгРаХк: = ге: \кр\Ьд±’; { драйвер, файл ЕСАУСА.ВСХ, находится в каталоге е:\Ър\Ьд! } РпхкСгарЬ (дгОг^ег, дгМоде, дтРакИ) ; ЕггСобе := СгарИКезиХЪ;
±6 ЕггСоде <> дгОк ЪЬеп Ьедхп иг 1Хе1п(’Ошибка инициализации графического режима.’) ; иг±пе!п(’Для завершения работы программы ' нажмите <Еп1:ег> ’); геад1п; На 111(1) ; епд; Зе-СГИ 13оу1е (8о11дГ111,Уе11ои); 8е1:со1ог (Уе11ои); { чтобы на круге не было линии } ₽1е811се(10С,10С,0,360,20); 8е1:Со1ог (В1аск) ; Агс(100,102,180,360,10); { рот } { глаза } С1гс1е(93,93,2); С±гс1е(107, 93,2); геасИп; СХозеСгарЪ; епд. Задача 208 { Выводит узор из концентрических окружностей разного цвета } Бзез ОгарЪ; таг дгРга^ег: ЛпГедег; дгМоде:з предел; дг₽аМ1: зЪгхпд; ЕггСоде:тпГедег; х,у,г: хггЬедег; { координаты центра и радиус окружности } дг: 1п^едег; { приращение радиуса окружности } 1: 1пЪедег; { счетчик циклов ) Ьедхп дгОгзл/ег: =Х7СА; дгМоде: ; дгРаДЬ: = ’ е: \1;р\Ьд± ’; 1п1Ъ0гарИ (дтОгтVег,дгМоде,дгРаЪЬ); ЕггСоде: =СгарЫ^ези11:; хГ ЕггСоде <> дгОК ЪЬеп
Ьедхп шг11е1п (• Ошибка инициализации графического режима.'); мгдХе1п ('Для завершения работы нажмите <ЕпСег>'); геасИ п; На1И (1); епд; х:=100; у:=100; г:=5; с!г:=5; Гог 1:=1 Ьо 15 до Ьедхп Зе^Сс1ог(1); С1гс1е(х,у,г); г:=г+дг; епд; геад1п; епд. Задача 209 { Вычерчивает узор из окружностей } Свез ОгарИ; таг дгОгхчег:хпГедег; дгМоде:хгЛедег; дг₽а!:Ь: вЪгхпд; ЕггСоде:хп^едег; хгу: хп^едег; { координаты центра окружности } г: 1п1:едех; { радиус окружности } 1: хпДедег; { расстояние между центрами окружностей 1, ]: хп-Гедег; { счетчики циклов } Ьедхп дг Ог дллег; =\7СА; дгМоде:=УСАН1; дгРаМ1:=’ е: \1:р\Ьд1'; 1п1ЪСгарИ (д1-Ог1чег,дгМоде,дгРаЕЪ) ; ЕггСобе: =6гарйРе5и111; хГ ЕггСобе о дгОК ЪЬеп Ьедхп ыг1Де1п ('Ошибка инициализации графического режима.'); ыг5±е1п ('Для завершения работы нажмите <ЕпЪег>!); 6 Зак 161
геасИп; На1с (1); епд; у: =100; г:=20; 1:=30; Гог 1:=1 Ьо 4 во Ьедхп х:=100; Гог з:=1 Ъо 5 во Ьедхп С5 гс!е(х,у, г); х:=х+1; епв; у:=у+1; епв; геасИп; епв. Задача 210 { Вычерчивает узор из квадратов } Сзез СгарЬ; ллаг дгРгхуег:хпЪедег; дгМоде:хпЪедег; дгРаМа: вЬгхпд; ЕггСоде:хпЪедег; х, у: 1п1:едег; { коорд, левого верхнего угла квадрата } б: шЁедег; { длина стороны квадрата } п: хпЪедег; { кол-во квадратов в ряду ) 1: хпЪедег; { расстояние между квадратами } 1,з: Хп^едег; { счетчики циклов } Ьедхп дгЕ>г1чег: =УСА; дгМоде:=УСАН1; дгРа^И:=* е: \1:р\Ьд± ’; ТпхъвгарИ (дгОг^ег,дгМоде, дгРа^Ь); ЕггСоде: =СгарЪВези1Ъ ;
±Г ЕггСоде <> дгОК ЪЪеп Ьедхп иглХе1п (* Ошибка инициализации графического режима.1); «гдХеЪп (’Для завершения работы нажмите <Еп1ег>г); геасПп; На1± (1); епд; у:=100; д:=30,; 12=10; Гог х:в1 Го 5 до Ьедхп хГ ((± тод 2) = 1) Ыгеп Ьедхп { нечетный ряд } п:=5; { пять квадратов в ряду ] х:=100; епд е!ее Ьедхп { четный ряд ) п:=4 ; х:=100+Воипд(д/2+1/2); Гох з;=1 Ьо п до Ьед1п РесЪапд1е(х,у,х+д,у+д); х:=х+д+1; епд; у:=у+Воипд(д/2+1/2); епд; геасПп; епд. Задача 211 { рисует на экране шахматную доску } паев СгарИ; таг х0,у0: хпЪедег; { координаты левого верхнего угла доски } х,у: хп1едег; { координаты левого верхнего угла клетки ) к; хпседег; { размер клетки } 1,3: хпПедег; { номер строки и колонки ]
дг Вггтег: ] пЪедег; дгМоде: ТпХ едег; ЕггСоде: Хпъедег; гез: хпЪедег; Ьедхп дгйгд^ег := де^есИ; ХпзХОгарк(дгРгз тег, дгМоде,’е:\гр\Ьд±’); ЕггСоде := СгарЪКезиХЬ; х€ ЕггСоде = дгОк Ыпеп Ьедхп х0:=100; у0:=100; и:=25; х:=хО; у:=уО; Гог 1:=1 1о 8 до { восемь строк } Ьедхп Гог з: =1 Ъо 8 до { восемь клеток в строке } Ьед1п { если сумма номера строки и номера колонки, на пересечении которых находится клетка, четная, то клетка - коричневая, иначе - желтая } хГ ((х+з ) мод 2) = О ЪЬеп 5еХЕ ШБЪуХе (8оИс1Г111,Вгомп) е1зе Зе11Г1118!:у1е (ЗоИдГлИ, Уе11о^) ; Ваг(х,у,х+м,у+м); х:=х+м; епс]; х:=хО; у:=у+м; епд; геасНп; епд; СХозебгарИ; епд. Задача 212 { Рисует флажок } Пвез СгарИ; Vа^ дгОггтег:ХпХедег;
I дгМоде:хпЪёдег; дгРаНЬ: зЪгшд; ЕггСоде: хпНедег; ад; аггау[1..6| оЕ РохпНТуре; { коотринаты точек флажка } Ьедхп дгОг^ег: =Л7СА; дгМоде: ^\70АН1; дг Ра ЁН: - ’ е: \Нр\Ьд! •; 1пз ЁСгарН (дфггтег, дгМоде, дгРаПИ); ЕггСоде: ^СгарНКези] С ЦЕ ЕггСоде <> дгОК ЬЬеп Ьед1п ^г1Ёе!п (’Ошибка инициализации графического режима-’); юг1Ёе!п ('Для завершения работы нажмите <Еп€ег>’); геад1п; •На1Н (1); епд; { задать координаты контура - флажка ) I Г1ад[1].х:=100;11ад[1],у:=100; I Пад[2] .х:=160;^1ад[2] .у:=100; Г1ад[3].х:=140;Г1ад[3],у:=120; I Г1ад(4].х:=160;€1ад[4].у:=140; I ^1ад[5].х:~100;Г1ад[5]«у:=140; I Е1ад[6] .х:-100;Пад[6] .у:=100; I ЗеЁГШ5Ёу1е (ЗоИдЕШ, Кед); I Г111Ро1у(6/Е1ад); I Ыпе (100,140,100,170); I геадХп; < I епд. I Задача 213______________________________________________________ I { Выводит на экран паровоз } ’ изев СгарЬ; | ’чгаг дгЭглл/ег: ХпЪедег; дгМоде: ТпНедег; ЕггСоде: ХпЪедег; гез: хпНедег;
хО,уО: хпПедег; ( координаты базовой точки паровоза } бх,бу: хпПедег; ( шаг координатной сетки } Нг: аггау[1.. 15] РохпНТуре; { координаты точек контура паровоза У Ьедхп дгОглллег := беНесН; ТпхНСгарЪ(дгБг!ллег, дгМобе,1е:\Нр\Ьд11); ЕггСобе := СгарЪВези1Н; хГ ЕггСобе = дгОк НЪеп Ьедхп х0:=100; у0:=100; бх:=5; бу: =5; { корпус } Нг[1] .х:=х0+0*бх; Нг [ 1 ] .у:=уОч7 Му; Ьг[2] .х:=хО+ОМх; Нг[2] .у:~у0ч6Му; Нг [3] .х:=хО+1Мх; Пг[3] . у:~уО+6Му; 1г [4 ] .х:=хО+1Мх; Нг | 4] «у:=уО+ЗМу; Нг [5] .х:=х0+2*бх; Нг | 5] .у:=уО+ЗМу; Нг[6] .х:~х0+2*бх; Нг 16] .у:=уО+ОМу; Нг[7] .х:-хО+ЗМх; Нг[7] .у:=у0+0*бу; Нг'8 ] .х:-хО+ЗМх; Нг [8] .у:=у0+3Му; Пг[9] .х:=хО+7Мх; Нг[9] .у:=уО+ЗМу; Нг[10] .х:^х0+7*бх; Нг[10] .у:=у0+1Му; Ъг [11] .х:~хС НЗМх; Ъг[11] . у:=у0+1Му; 1:г [ 12] .х:=х0 ь13*с1х; 1:г[12] .у:=уО+2Му; Сг[ 13] .х:^хО+12Мх; ^г[13] .у:=уО+2Му; Иг[ 14] .х:=хОЫ2*бх; Иг[14] .у:=уО+7Му; Нг [15] .х^хО+ОМх; Нг [15] .у:=уО+7Му; БгаыРоХу(15,Нг); { окно } 1 КесПапдХе (хО+8Мх,уО+2Му, хО И 0*дх, у0+4Му); { колеса } 8еПГ±112Пу1е (8оИбЕИ1, Веб); 8енСо1ог(Неб); РхеБИсе (хО ьЗМх, уС 1-7Му, 0, 360,1Мх) ; Р1.е811се (хО 1-бМх, уО ь7Му, 0, 360,1*бх) ; Р1е8Исе(х0 1-9Мх, уО ь7Му, 0,360,1Мх) ; { окантовка колес } 8еНСо1ог (ЭДЫпе);
С±гс1е (хО+ЗМх, уО+7 *ду, 1*дх) ; СхгсХе (х0+6*дх, уО+7 Му, 1Мх) ; СхгсХе(х0+9*дх,уО+7 Му,1*дх); геаЛп; епд; СХозеСгарЪ.; епд. Задача 215 { Координатные оси и оцифрованная сетка } ргодгат дг!д; изез СгарЬ; Vа^ хО,уО:хпДедег; дх, ду:хпДедег; Ь, м: злтСедег; х, у:хп1:едег; 1х, 1у:геа1; д1х, д1у:геа1; зб:8Ъгхпд; { координаты начала координатных осей } 1 -шаг координатной сетки (в пикселах) ) { высота и ширина области вывода координатной сетки } { метки (оцифровка) линий сетки по X У ) { шаг меток (оцифровки) линий сетки по X и У ) { изображение метки линии сетки } дгОгз^ег: 1г±едег; дгМоде: ТпОедег; ЕггСоде: ХпЪедег; Ьедхп дгОгллгег := \7СА; дгМоде:=УСАН1; ТпзХСгарЬ(дгбггиег, дгМоде,1е: \Лр\Ьд±1); ЕггСоде :== 6гарЪЯези1 Ь; хЕ ЕггСоде о дгОк ЬЬеп На1Ъ(1); х0:-50; у0:=450; { оси начинаются в точке (40,450) } дх:=40; ду:=40; { шаг координатной сетки 40 пикселей д!х:=0.5; { шаг меток оси X, метками будут: 0.5, 1.0, 1. 5 и т. д. }
с41у:=1; { шаг меток оси У, метками будут: 1, 2, 3 и т.д. } И:=300; ю:=400; 1х:=0; { начало координат помечается метками 0 } 1у:=0; Ыпе (х0,у0,х0,у0-И) ; { ось X ) Ыпе(хЭ,у0,х0+и,у0); { ось У } { засечки, сетка и оцифровка по оси X ] х:=х0; * гереаЪ { засечка } ЗеЪЫпе8^у1е (8оЗ 1йЬп, 0, ИогщМсГЬИ) ; Ыпе (х, уО-3, х, уО+3); { оцифровка } 5(:г (1х:0:1,зЪ) ; ОисТехЪХТ(х-8,уО+5, еЪ); 1х:=1х+61х; { линия сетки ] ЗеЪЫпе81:у1е(ОоГ1:едЬп, 0, КогпШс11Ъ); Ыпе (х, уО-З, х, уО-И); • х:=х+с!х; ипЫ1 (х>х0+м); • { засечки, сетка и оцифровка по оси У } у:=уО; гереаЛ: { засечка } 5е1:ЫпеЗЪу1е (ЗоЫбЬп^ 0, КохтМасЬ) ; Ыпе (хО-3, у,хО+3, у); { оцифровка } ЗЪг (1у:0:1,зЪ) ; ОШгТехОСТ (х0-40, у, зГ) ; 1у:=1у+(11у; { линия"сетки } ЗесЫпеЗ-ЬуХе (Оо^ЪесГЬп, 0, МопгЖс1ДЬ); Ыпе (хО+3, у, х0+ы, у);
Зе^ЫпеЗЁуХе (ЗоНдЬп, 0, ЫотМхдСЬ) ; у:=у-ду; ипЬх! (у<уО~Ь); КеадХп; СХозеСгарИ; Задача 216 Сзез СгарЬ; иах х,дх: геаХ; { аргумент и его приращение } х1,х2: геаХ; { диапазон изменения аргумента } у: геа1; { значение функции } тх,ту: хп^едег; { масштаб по X и У - кол-вс точек экрана, соответствующее единице по осям координат ) хС, уО; ХпЬедет; { начало осей координат } рхгру: ХпХедет; { координаты точек на экране ) дгБгдлгег:хп^едег; дгМоде:ХпЬедег; дгРаЪЬ:аЪгхпд; ЕггСоде: ХпЬедег; 1: ХпЬедег; Ьедхп дгОгзлгег: дгМоде:=7САН1; дгРаДЬ:=•е:\Ьр\ЬдХ1; 1п±ЪСгарЬ (дгОгхуег,дгМоде ЛдгРаЪЬ); ЕггСоде: =СгарЫ<езц II:; х€ ЕггСоде о дгОК ЪЬеп Ьедхп юг±Ъе] п (* Ошибка инициализации графического режима. ’) ; ыг1-Ье1п ('Для завершения работы нажмите <Еп1:ег>’); геад1п; На1г (1); епд;
х0:=320; у0:=240; тх:^20; ту:=20; { оси координат } Ы пе (10, уО, 630, уО); Ыпе (хО, 10,хО, 470); { график } х1:=-15; х2:=5; вх:=0.1; х:=х1; (х<х2) во Ьедхп у:== 0.5*х*х+х*4-3; рх: =хО+Коип<3 (х*шх); ру:-у0-Ксипд(у *ту}; РъгЬРххе! (рх,ру,Ш11Ъе) ; х:=х+с!х; епв; геасНп; епв Задача 217__________________________________________________ { Движущееся сложное изображение ) паев СгарИ, СгТ:; Vа^ дгРгггег:хпЪедег; { драйвер } дгМоёе:1г±едег; { графический режим } дгРаЪЬ: вЪгхпд; { место расположения драйвера ) ЕггСоНе:1пСедег; { результат инициализации граф, режима } х,у:хп€едег; { координаты кораблика } со1ог:могв; { цвет кораблика } Ьксо1ог: иогс1; { цвет фона экрана } { Кораблик } Ргосевиге Т1Ъап1к(х,у:хп1:едег; { координаты базовой точки } со1ог:мог<1); { цвет корабля } сопвЪ с1х=5; ду=5;
Vа^ О1бСо1ог: иогб; Ьедхп 01бСо1ог:=СеЪСо1ог; { сохранить текущий цвет ) 5е*:Со1ог (со!сг) ; { установить новый цвет } { корпус } ЬклтеТо(х,у); ЫпеТо (х, у-2*бу) ; ЫпеТо (х+10*бх, у-2*бу); ЫпеТо (х+]_1*дх,у-ЗМу); ЫпеТо (х+17*бх, у-ЗМу); ЫпеТо (х+14*дх, у); ЫпеТо (х, у); { надстройка } МоуеТо (х+3*дх, у^2*оу); ЫпеТо (х+4*дх,у-3 *йу) ; ЫпеТо (х+4*дх, у-4 Му) ; ЫпеТо (х+13Мх, у-4Му); ЫпеТо (х413*бхг у-ЗМу) ; Ыпе (х4-5*бх, у-ЗМу,х+9*ёх, у-ЗМу) ; { капитанский мостик } л > НесЪапд1е (х+8*с1х, у-4Му, х+НМх, у-5*йу); { труба } КесЛапд1е (х+7*с1х, у—4*бу, х+8*6х, у-7*бу); { иллюминаторы } С1гс1е(х4 12*<±х,у“2Му, Тгипс (6х/2)); Схгс]е(х+14*бх,у-2*бу,Тгипс(Зх/2)); { мачта } Ыпе (х+10*6х, у-5*бугх+10*6хгу-10*ду); { оснастка } МоVеТо (х+17 *бх, у-3*бу); ЫпеТо (х+10*бх, у-10Му); ЫпеТо (х, у~2Му) ; ЗеЪСоУог(01с1Со1ог); { восстановить текущий цвет } епб; * Ьедхп дгОг^ег := УСА; { режим УСА} дгМобе:=УСАН1; { разрешение 640x480} дгРаМ): ~• е: \Ьр\Ьдх ’; { драйвер, файл ЕСАУСА.ВС1Г находится в каталоге с1:\Ср\Ьд1 ]
ХпХббгарЬ (дгОгллгег, дгМобе^дгРабИ); ЕггСос1е := СгаркКезиИ; х€ ЕггСоЗе о дгОк ЬЪеп На1с(1); х:=10; у:=200; соХог :=ЫдЬЪСгау; Зе^ВкСоХог(ВХие); ЬксоХог:^0еЁВкСо1ог; гереаЪ ТП:ап1к(х, у, соХог}; { нарисовать корабль } БеХауЦОО); ТЗЛапХк(х,у, ЬксоХог); { стереть корабль } Рн11РХхе1 (х,у,со!ог); { след от корабля ] х:=х+2; пггЫХ (х>500); ОибТехбХУ(10,10,1 Рейс завершен•’); геасПп; СХозебгарИ; еп<3. Задача 219________________________ { Обрабатывает результаты контрольной работы и отражает их в виде диаграммы } ивев СгЪ, СгарИ; { возвращает изображение дробного числа} ^ипсЪХоп Неа1То81:г(г: геаХ; п,т: гпдедег) : вЪгхпд; Vа^ зб: вЪгхпд; 8€г (г: п:т, з!) ; КеаГГоЗХг:=зб; епс1; сопзЪ { подсказка при вводе исходных данных и подпись рядом с прямоугольником легенды } тез: аггау[2..5 о€ дЪгхпд[10] = (’двоек’,’троек',’четверок',’пятерокг);
Vа^ п: аггау[2..5] о€ хп^едег; { количество пятерок, четверок, троек и двоек ] в: 1п11едег; { всего оценок } р: аггау[2.-5] геа1; { процент каждой оценки ] Ь: аггау{2..5] о€ хпбедег; { высоты столбиков диаграмм ] т: 1п±едег; { номер максимального эл-та массива п } х: хпседег; { индекс массива } х,у: хпбедег; { координаты левого нижнего угла столбика диаграммы } дгБг^ег: хпкедег; { драйвер ) дгМойе:хпРедег; { графический режим } дгРаДИ:вЪгхпд; { место расположения драйвера } ЕггСобе:хп^едег; { результат инициализации граф, режима } Ьедхп { ввод исходных данных } ТехГВаскдгоипс! (В1ие) ; ТехбСоХог(ЪхдИоСгау); С1г8сг; мгхРеХп('Обработка результатов контрольной работы1); мг1Де1п('Введите исходные данные:1); €ог х:=5 докпЬо 2 с!о Ьедхп мгйе (тез[х] , ’ -> '); геасНп (п[1]); епЗ; Гог 1 :-2 Ъо 5 с!о з:=з+п[1]; { всего оценок } { вычислим процент каждой оценки } Гог х:=2 Ъо 5 йо р[1](п[х)/з)*100; ( вычислим высоту каждого столбика диаграммы, ] { но сначала определим, каких оценок больше } го:-5; { пусть больше всего пятерок } €ог 1:=4 докпЪо 2 с!о х€ п[1]>п[го] ЪЬеп т:=1;
{ Пусть количеству оценок, которых больше, соответствует столбик высотой 200 пикселей. Вычислим высоты остальных столбиков. ] Гог 1:-5 доадпЬо 2 до Ь[1] :=Ноипд( (200/п[т]) *пЦ] ); { обработка выполнена, строим диаграмму } дгБгзлгег := ТСА; { режим 7СА} дгМоде:=ТСАН.1; { разрешение 640x480> дгРа!1И: =1 е: \бр\Ьдо ’; 1 драйвер, файл ЕСАТСА.ВСИ, находится в каталоге е:\Ър\Ьдз } 1п1Ь6гарИ (дгйглллег, дгМоде,дгРаЁк); ЕггСоде СгарЬКезиХП; хГ ЕггСоде .<> дгОк ЪЬеп Ьедхп ™г±Ъе1п(1Ошибка инициализации графического режима.1); мглЛеХп (1 Для завершения работы программы 'нажмите <ЕпЪег>'); геасПп; НаЗЛ (1) ; епд; { строим диаграмму } ОиЪбехЁХ'У (40,50, ' Результаты контрольной работы'); Кес^апдГе(40,80,170,310); х:=50; у:=300; { левый нижний угол первого столбика } { столбики диаграммы } Гог х:»5 доадпЪо 2 д© Ьедхп ЗебГ1118^у1е (ЗоИдЕШ, 1) ; Ваг(х,у,х+10,у-ЬЦ]); { столбик ) { ОиГГехРХУ (х, у-Ь [1] -10, Кеа1То8Г:г (р [х‘], 5, 2) + * %1); } х:=х+20; епд; { численные значения } х:=50; Гог х:=5 доипЪо 2 до Ьедхп 8еГЕ±1181:у1е (ЗоИдЕШ, 1); (Ваг (х, у, х-ИО, у-Ъ [Ц ) ; { столбик } ОиСТех^ХУ(х,у-Ь[1]-10,КеаГГоЗгг(р(г],5,1)+'%’); х:=х+20; епд;
{ легенда } х:=200;у:=100; 1:=5 вочпЬо 2 во Ьедхп 5еЪЕИ18су1е (ЗоИсДОШ, 1); Ваг(х,у,х+20,у+10); { столбик } ОиГТехСХУ(х+25,у,тез[1]); у:=у+20; епд; геав1п; С1озеСгарЬ; епв. Задача 220 { Выводит круговую диаграмму } изез СгарЬ; сопзЪ Ы-4; { количество категорий } пате: аггау[1..И] оЕ вЬххпд [10]= (’ Книги’, 'Журналы’, ’Канцтовары1, •Прочее ’) ; \гаг ко1: аггау [1..Ы] оГ геа1; { количество для категории во1: аггау[1..И] оЕ геа1; { доля категории в общем количестве } зит: геа1; { общее кол-во по всем категориям } а1,а2: хпЪедег; { угол начала и конца сектора ) х,у: 1п€едег; { координаты вывода легенды } зЪ: зЬгхпд; { изображение числа } 1: хпЬедег; дг^гзлгег: хпЬедег; { драйвер } дгМоде:1пЬедег; { графический режим } дгРаГЬ: вЪгхпд; { место расположения драйвера } ЕггСоде:хпЬедег; { результат инициализации граф, режима } Ьедхп дгБгэллег := УСА; { режим УСА} дгМоде:-УСАН1; { разрешение 640x480} дгРаГЬ:='е:ХбрХЬдг'; { драйвер, файл ЕСАУСА.ВС!, находится в каталоге е:\Ър\Ьд! )
1п1ЪЗгарЬ(дгОггиег, дгМоде,дгРакИ); ЕггСоде := СгаркКееиХС; хГ ЕггСоде о дгОк кЪеп Ьедхп юг1ке1п('Опибка инициализации графического режима.1); юг1ке!п(1 Для завершения работы программы ’, 1нажмите <ЕпЪег>г); геад!п; На!Ъ(1); епд; { ввод исходных данных } юг1Ъе1п(’Введите количество по каждой категории'); зит:=0; Гог 1;=1 Хо И <3о Ьедхп югдХе (пате [ 1], * -> *); геад!п(ко! [1]); зит: =зит+ко1 [ 1 ]; епд; { вычислим долю каждой категории в общей сумме } Гог х:=1 1о X до до!(1]:=ко![1]/зит*100; { строим диаграмму } а!:=0; { от оси ОХ } х:=350; у:=100; { левый верхний угол области легенды } Гог 1:=1 ко Ы до Ьедхп { сектор } а2:=а1+Роцпд(3.6*0о1 [1]); { 1% - 3.6 градуса } хГ а2 > 360 кИеп а2:=360; 5екГ111 зку] е (ЗоИдЕШ, 1); Р1е8Нсе(200,200,а!,а2,100) ; а1:=а2; { следующий сектор - от конца текущего } { легенда } Ваг(х,у,х+30,у+10); Кескапд1е(х,у,х+30,у+10); 5кг(до1Ц] :6:1,зк) ; ОиДТехкХУ(х+50,у,пате[1]+1 -1+зк+13’); у:==у4 20; епд;
геасИп; С1озеСгарк; епд Задача 221 { Светофор ) изез СгарИ, СгД; таг дгОголгег: ТпДедег; дгМоде: ТпДедег; ЕггСоде: ТпДедег; гез: хпДедег; 1,3: 1пЁедег; { счетчики циклов } { Рисует круг заданного цвета} { х,у,г - координаты центра и радиус круга } { Гс,Ьс - цвет круга и окантовки } Ргоседиге Кгид(х,у,г: хпДедег; Гс,Ьс: 1пДедег); Ьедхп 5еДГИ151:у1е (5о1з дП11, Гс); 5еЪСо1ог(^с); Р1е8Исе (х, у, 0,360, г) ; 8еДСо1ог(Ьс); Сз гс1е (х, у, г} ; епд; ( Основная программа } Ьедхп дгОгхуег := деДесД; 1п1Д6гарЬ(дгРггуег, дгМоде,’ е:\Ср\Ьд1’); ЕггСоде := СгаркКезиИ; ЕггСоде = дгОк Нхеп Ьедхп Ои±ТехЪХУ(10,10, 'Соблюдайте правила уличного движения!1) ; КесДапд1е(88,88,112,152}; { Горит красный свет } Кгид(100,100,10,Кед,КЫДе); Кгид{100,120,10,Ъ1дЪДСгау,ИЫт:е); Кгид (100,140,10, Ь1дЬДСгау,Ж11е);
Гог 1:=1 1о 3 йо I Ьедхп { Здесь горит красный } 0е1ау(3000); { задержка 3 сек } Кгид(100,120,10,Уе11о™,Ш11Хе); { Включить I желтый ] I БеТау(1000); I Кгид(100,100,10, ЫдЫСгау, КЫ11е) ; { Выключить | красный } Кгид(100,120,10,ЬгдЬЮгау^ПдХе); { Выключить I желтый ] & Кгид (100,140,10, Сгееп, МЫ1:е); { Включить зеленый } , Ве]ау(2000); I { Мигающий зеленый сигнал } Гог ]:~1 1о 3 до { мигает 5 раз } Ьедхп 0е1ау(500); I Кгид(100,140,10,Сгееп,ИЫСе) ; { Включить I зеленый } 0е1ау(500); | Кгид (100,140,10, ЫдЫСгау,ТСЫХе); { Выключить I зеленый } В епд; Кгид (100,120,10, УеИоиг,ДОЫ^е); { Включить желтый } I 1)е1ау (1500); I Кгид (100,120,10, ЫдЫСгау,МНЛе}; ( Выключить I желтый } Кгид (100,100,10, Р.ес1, ИЫОе) ; { Включить В красный } епд; епд; I } С1озеСгарИ; I епд. Задача 222 | { Часы с минутной и секундной стрелками } изез СгарИ, СгО; { Выводит вектор заданной длины из текущей точки } { Используется для вывода изображения стрелки ]
ргоседиге ’УесЪог(а: дпЪедег; { угол между вектором и осью ОХ } 1: з гЛедег); { длина вектора } сопзЪ СКАБ=С.0174532; { коэф, пересчета величины угла из градусов в радианы } уаг х0,у0: хпгедег; { координаты начала вектора } х1,у1: хпДедег; { координаты конца вектора } Ьедхп хО:-СебХ; уО:=СеДУ; х1 :=Коипд (х0+1*соз (а*СВАО)) ; у1:-Яоипд(у0-1*8±п(а *СКАй)); ЫпеТо(х1,у1); епд; { главная процедура } згаг дгОгдлгег: Тпбедег; дгМоде: .Гпбедег; ЕггСоде: ХпЪедег; гез: хпДедег; х0,у0: хпЪедег; { б: хпДедег; { з: хпДедег; { т: хпбедег; { аз: 1пДедег; { ат: хвДедег; I збз: зЪгхпд; < координаты центра часов } диаметр циферблата ) время, кол-во секунд } время, кол-во минут } угол наклона секундной стрелки ] угол наклона минутной стрелки } кол-во секунд } збт: зЪгхпд; { кол-во минут } Ьедхп дгВгхуег := беЪесД; 1п1 иЗгарк (дгОгг^ег, дгМоде, ' е: \Хр\Ьд1г) ; ЕггСоде := СгарЬКезиИ:; хГ ЕггСоде = дгОк ЪЪеп Ьедхп х0:=-80; у0:=80; д:~50; з:=0; т:=0;
{ начальное положение стрелок: угол между стрелкой и осью ОХ равен 90 град. } аз :=90; ат: =90; СхгсХе (хО, уО, <1+5); БеЪГШБЪуХе (БоИсЗГШ, 0); БЪг (т, зйп); хвреаЪ { вывести секундную стрелку } МочеТо (хО, уС) ; Бе^СоХог(УеХХом); 7есГ:ог (аз, а); { вывести минутную стрелку } 1ФэтгеТо(хО,уО); Зе изо 1о г (Сгееп); УесЕог(ат,й~10); { вывести "цифровые” часы } Ваг(10,10,50,20); БЪг (з, з1:з); ОиЪТехЪХу (10,10, зип+ ’: ' +зЪз); ОеХау(ЮО); { задержка } { стереть стрелки } * 5е€Со1ог(0); { секундную ) МочеТо (хО, уО); УесСог(аз,д); { минутную } МочеТо(х0,у0) ; 7ес1:ог (ат,<3~10); з:=з+1; 1Г з = 60 ЪЪеп Ьед±п т:=т+1; БЕг (т, зШп); з:=0;
5оипд(1000); Е>е1ау (10); МоЗоипд; ат:=ат-6; ( шаг движения минутной стрелки 6 градусов } И аг. < 0 ЪЪеп ат: =354; епд; аз:-аз-б; хГ аз < 0 ЪНеп аз:=354; ипЪх! КеуРгеззед; епд; С1озеСгарИ; епд. Задача 223 { Построение графика функции ) ргодгаш дгоГ^ипс; ивеа СгарЬ; Vа^ х1гх2:геа1; { у1,у2:геа1; { х:геа1; { у:геа1; { дх:геа1; { 1,Ь:1пГ:едег; { ы,И:1пЪедег; { тхгШу;геа1; { хО,уО:1п€едег; { зИ:зЪгхпд; { границы изменения аргумента функции ] границы изменения значения функции } аргумент функции } значение функции в точке х) приращение аргумента ) левый нижний угол области вывода графика } ширина и высота области вывода графика } масштаб по осям X и У } точка - начало координат } изображение числа } дгСгалгег: 1п1:едег; дгМоде: 1п€едег; ЕггСоде: ТпЪедег; { Функция, график которой надо построить } ЕипсМоп I (х: геа!) : геа!;
Ьедхп 1:=2*81п(х) *ехр(х/5); епд; « ЕцпсМоп 12 (х: геа1} : геа1; Ьедхп 12:=Ьп(х); епд; Ьедхп дгБгзл/ег : = УСА; дгМоде :=У<ЗАН1; ТпхГСгарЬ (дгВгллгег, дгМоде, ’ е: \Ьр\Ьд1 ’); ЕггСоде := СгарЪКееиХт:; хГ ЕггСоде о дгОк Ъкеп На1€(1); 1:=40; Ьз^ОО; И:=200; V:=200; х1:=0; х2:=25; дх:=0.01; { найдем максимальное и минимальное значения функции на отрезке [х1,х2] } у1:=1(х1); { минимум } у2:=Г(х1); { максимум } х:=х1; гереаЪ у:=1(х); ±2 у<у1 ЪЬеп у1:=у; хГ у>у2 -Йгеп у2:=у; х:=х+дх; ипЫ1 (х>=х2); шу:=Ь/аЬз(у2-у1); шх:-и/аЬ5(х2-х1); { оси 1 х0:=1; уО: =Ъ-АЬз (Коипд {у1 *шу}) ;
Ыпе(1,Ь, 1,Ь-И); Ыпе(хО,уО,хО+м,уО); 5Ы (у2:5:1,5Ь); ОиСТех+ХУ (1+5,Ь-Ъ, зЪ); ЗЪг (у1:5: ЪзЕ); ОиЬТех+ХУ (1+5,Ь, зЬ); { построение графика } х:~х1; гереаЪ у:—Г(х) ; Рц&Рххе! (хО+Коипб (х*гох), уО-Коипй (у*ту), 15); х:=х+<3х; ипЫ1 (х>-х2); Кеаб1п; С1озеСгарЪ; V епб. Задача 224 изез СгарЬ, СгЪ; { в графическом режиме вводит с клавиатуры дробное число } ЕипсЪхоп СеЕНеаЗ: геа1; уаг сЪ: сЬаг; { символ нажатой клавиши } Ьи€: зЪг±пд|801; { введенная строка ) пишЬ: геа1; { введенное число } собе: хпЬедег; { код ошибки преобразования строки в число } Ьедхп 601:=' гереаЪ { ждем нажатия клавиши, курсор мигает } гереаЪ х€ поЪ КеуРгеззеб ЬИеп Ьедхп 8е+со1ог (ИЬке); Ыпе (Сеех/СеЬУ, Се+Х, СеЪУ+8) ; 0е1ау(250);
5е1:со1ог (В1аск); Ыпе (Се!Х, Ое!У, 6е!Х, Се!У+8) ; епд; х! по! КеуРгеззед !кеп 0е1ау(250); ипЫ1 КеуРгеззед; { здесь нажата клавиша } сЪ:=НеадКеу; 8е!Со1ог (ЮМ!е); сазе сИ о! ’ От.. ’ 9 ': Ьедхп ОиС!ех! (сЪ) ; Ьи^: -Ьи!+сИ; епд; *. ’: х! Роз (’ • ’ г Ви!) = 0 !Ъеп Ьедхп Ои!Хех! (сЬ); Ьи!:=Ьи!+сЬ; епд; г-’: х! ЬепдсМЬи!) = С !Ьеп Ьедхп Ои!!ех! (сП); Ьи!:=сЬ; епд; СЪг(8): х! Ьепд!Ь(Ьи!) <> С ЪЬеп 1 нажата <Васк8расе> } Ьедхп 5е!Г1115!у1е(8о11дЕ111,В1аск] ; Ваг(СеСХ,СеГУ,Се!Х-8,СеЪУ+8); МотеТо(СеСХ”8,Се!У); Ве1еЁе(Ви!,ЬепдЪИ(Ьи!),1); епд; епд; ипШ сЬ=С11Г (13); 7а1 (Ьи!,пишЬ, соде); 0е!Ееа1 :=пишЬ; епд; уаг дг0г^ег:1п!едег; { драйвер ) дгМоде:хпЪедег; { графический режим } дгРа!Ъ.:еЪгхпд; { место расположения драйвера У ЕггСодегхпЪедег; { результат инициализации граф, режима } п: геа1; ( дробное число } Ьедхп дгОгхгег := 'УСА; { режим УСА) дгМоде:=УСАН1; { разрешение 640x480} дгРа№: = ’е: \Ър\Ьд±’; { драйвер, файл ЕСАТСА.ВС1, находится в каталоге е:\!р\Ьд! )
ТпзХСгарЪ (дгОгзллег, дгМоде, дгРа-ЬЪ) ; ЕггСоде := СгарЪКези1Ъ; хГ ЕггСоде о дгОк 1Ъеп Ьед1п юг1Се1п('Ошибка инициализации графического режима.'); юг1Се!п('Для завершения работы программы нажмите <Еп1:ег> ’) ; геасПп; На! Ь(1); епд; оиНехЪ('Введите целое число -> * 1); п:=<Зе12Веа1; геасПп; С1озеСгарИ; епд. Задача 225 { Создает на диске А: файл и записывает в него 5 целых чисел, введенных пользователем ] чгаг Г: -ЬехЪ; { текстовый файл } п: хпЪедег; { число } 1: тпСедег; { счетчик чисел ] Ьедхп югзХеХп (* Создание файла1) ; югхЪеХп ('Введите пять целых чисел.'); югзХеХп ('После ввода каждого числа нажимайте <ЕпЬег>’); Азз хдп (Г, ' а: ХпигпЬегз. Ъх1: ’) ; КеюгХ^е (Г) ; { открыть в режиме перезаписи } Гог х;=1 Ъо 5 до Ьедхп ыггсе ('->'); геасПп (п) ; юг1€еХп(Е,п); епд; сХозе(Г); { закрыть файл } юг 1Хе 1п ('Введенные числа записаны в файл ' а: ХпитЬегз. Од: ’); геадХп; епд.
Задача 226 { Дописывает в файл а;\питЬегз.Гхб пять введенных пользователем целых чисел } Vа^ Г: бехб; { текстовый файл } и: хпбедег; { число } 1: 1пбедег; { счетчик чисел } Ьедхп кгхбе1п (’ Добавление в файл а: ХпитЬегз. бхб ’); кг1бе1п("Введите пять целых чисел.1); кг!бе1п("После ввода каждого числа нажимайте <Епбег>’]; Азз±дп(€, ’а: \пип±>егз.бхб') ; АррепсЦб) ; { открыть файл в режиме добавления } Сог 1:=1 1© 5 До Ьедхп кг±бе(1->1); геасИп (п) ; ыг1бе1п(Г,п); епд; С1озе(Г); { закрыть файл } кг1бе1п (’ Введенные числа добавлены в файл 1, ’а:\питЬегз.бхб'); геасИп; епд Задача 227 { Выводит на экран содержимое файла а: \пшпЬегз, 6x1: ] Vаx 6: бехб; { текстовый файл } п: гпбедег; { число } Ьедхп кгз бе! п (’ Содержимое файла а: ХпишЬегз. бхб"); кгИ:е1п (1-------------------------------•); Аззхдп(€,1 а:\питЬегз.бхб’); Кезеб(б); { открыть файл для чтения } &?Ы1е поЪ ЕОЕ(б) до 1 пока не достигнут конец файла ) Ьедхп геад]п(Г,п); { прочитать число из файла } кгхбе1п(п); { вывести прочитанное число на экран } епд;
С1озе(^); нг1Хе1п(• геасНп; епЦ. { закрыть файл } Задача 228 { Вычисляет среднее арифметическое чисел, находящихся в файле а: ХпшпЬегз. 11x1: ] Vа^ Г: ДехЪ; { текстовый файл } п: хпДедег; { число, прочитанное из файла } ко1: тпЬедег; { кол-во прочитанных чисел 1 зиго: 1п1:едег; { сумма прочитанных чисел } за: геа!; { среднее арифметическое } Ьедхп мгхЬеХп(’Вычисление среднего арифметического чисел,1); ыг1Ле1п {* находящихся в файле а: ХпшпЬегз . ЪхЬ1) ; мгхЬеХп(’Чтение из файла. Подождите.’); 5ып:-С; ко1:=С; Аззхдп(^, га: ХпшпЬегз.Ьх^1) ; ВезеМ^); { открыть файл для чтения } КЫ1е поЪ ЕОЕ(^) Цо { пока не достигнут конец файла } Ьедхп геасНп (Г, п); { прочитать число из файла } 5Ц1г:=зцш+п; ко1:~ко1+1; епЦ; С1озе(:Е); { закрыть файл } 5а:=зит/ко1; ^гх11е1п (’Прочитано чисел: ’, ко!); мг 2Ле1п (’ Сумма чисел: ’, зшп) ; ыг1Ъе1п(’Среднее арифметическое: 'гза:9:2); геаШп; епс!. Задача 229 { Выводит на экран содержимое файла, имя которого указано пользователем } изез СгЬ;
таг €: ^ех!:; { текстовый файл ] Хпаше: з1п:хпд[80]; { имя файла } зД: дЪгхад; 1 строка, прочитанная из файла } пз'Ь: хпХедег; { кол-во выведенных на экран строк } кеу: сИаг; { клавиша, нажатая пользователем ] Ьедхп С1г8сг; { очистить экран } «г 1Хе1п(’Просмотр текстового файла *); ыггХеХп(’Введите полное имя файла и нажмите <Епрег>’); ыгзЛе (’ -> ’) ; геасПп (^паше); АззХдп(X,Хпате); КезеХ(Х); { открыть файл для чтения } СХгЗсг; пзЛ:=0; &П111е пой ЕОГ(Х) с!о { пока не достигнут конец файла } Ьедхп геасПп зб); { прочитать число из файла ] ^г1Ле!п(зЪ); пзЪ: =пзХ+1; хГ пз-С = 23 ЪИеп { выведены очередные 23 строки } Ьедхп ч ыга Хе1п; ыгЗЛеСДля продолжения вывода 'нажмите любую клавишу... 1); кеу:=Кеадкеу; СоХоХУ (1,Ш1егеУ) ; { курсор в начало текущей строки ) Се1Ыпе; { удалить сообщение "Для продолжения ______________") пзЪ:==О; епд; епд; С1озе(^); { закрыть файл } ыг1ье1п; ыгх^еГДля завершения просмотра нажмите любую ’клавишу.•.’); кеу: =Кеас1кеу ; епд.
Задача 230 { Дописывает в файл а:ХрЬопе.Гхб фамилию, имя и номер телефона. Если файла на диске нет, то создает его. } 1аЬе1 Ьуе; Vа^ Г: ДекЬ; { текстовый файл } Гат: вЪгхпд[15]; { фамилия } паше: вЪгхпд[15]; { имя } Ге1: зЪгхпд (9 ]; { номер телефона } Ьедхп иг±1:е1п( * Добавление в телефонный справочник*); Аззхдп (’ а: ХрЬопе. ГхГ •) ; {$!-} Аррепй(Г); { сначала откроем в режиме добавления } хГ 10Кези1Ь <> С ГЬеп { вероятно файла рЬопе.ГхГ нет на диске А:} ( создадим его } Ьедхп Кекгзбе(Г); { открыть в режиме перезаписи } х€ ЮНезиЗЛ <> 0 ЪЬеп Ьедхп ыг±-Ге1п( ’Ошибка обращения к диску А: 1) ; доЬо Ьуе; епд; епд; { получим данные от пользователя } кг1бе(* Фамилия ; геасИп (Гат); ыггЕе (*Имя ->•); геасИп (пате) ; кгхГе('Телефон ->’); геад1п(Ге1); { и запишем их в файл } кгхДеХп(Г,Гат); кг1Ге1п(Г,пате); кГ1Ге1п(Г,бе1); с!озе(Г); кгхбеГп(’Информация добавлена.’);
Ьуе: мглХеХп (’ Для завершения работы * 1, 1 нажмите <ЕпЕег>. *); геасИп; епд. Задача 232 { Поиск в телефонном справочнике ) 1аЬе1 Ьуе; уаг I: ЕехЕ; { текстовый файл ] оЬг: вЕгхпд[15]; { фамилия для поиска } п: хпДедег; { кол-во записей, удовлетворяющих запросу } Гат: зЬгхпд[15]; { фамилия } паше: 8Егхпд[15]; { имя } Ее!: зЕгхпдг9]; { номер телефона } Ьедхп мг1Ее1п ('Поиск в телефонном справочнике’); Азз1дп(1, ’ а:ХрЬопе.ГхЕ1); {$!-} гезеЕ(Г) ; { откроем файл для чтения } х€ ЮКези1Е о 0 ЕЪеп { вероятно файла рНопе.ЕхГ на диске А: нет } Ьедхп у;г1Ее1п(’Файл а:ХрЬопе.схЕ не доступен’); доЕо Ьуе; епд; гереаЕ мгхЕе('Фамилия ; геад!п(оЬг); х^ ЪепдЕЬ(оЬг) <> 0 ЕЬеп { пользователь ввел строку } Ьедхп гезеЕ(Г); { просматриваем файл от начала ) п:=0; кЪ±1е поЕ ЕОЕ (Г) до { просматриваем весь файл Ьедхп { читаем из файла } геасИп (Г, Гат) ;
геасНп(Г,паше) ; геасНп (Г, Ье1); хГ Гат - оЬг Ыхеп { найдена нужная фамилия } Ьедхп кг1Се1п (Гат,’ ’,пате,* ',Ге1); п:=п+1; епсЬ епс1; 1Г п = 0 ЪЬеп мгдХеТп ('Сведений о ’ , оЬг,’ нет.’); епс1; ипЪ±1 ЬепдГЬ(оЬг) = 0; Ьуе: ьггзХеТп (’Для завершения работы нажмите <ЕпЬег>.г); геасНп; еп<1« Задача 234 { Универсальная программа тестирования ) изеа Сгб; 1аЬе1 Ьуе; Vа^ Гпате: з€гхпд[40]; { имя файла теста } Г: ГехГ; { файл теста } УзедоУорг: хпЬедег; { количество вопросов теста } Рга\Ю1лг: хпГедег; { количество правильных ответов } { для текущего вопроса } пОЬу: ГпЬедег; { количество альтернативных ответов } р^аV: тпГедег; { номер правильного ответа] ОЬу; хпГедег; { номер ответа, выбранного пользователем } зГ: зЬгхпд; ( строка, читаемая из файла теста } р: ГпГедег; { процент правильных ответов ) 1: ГпЬедег; { счетчик циклов }
Ьедхп хГ РагатСоипГ = 0 ЬЬеп Ьедхп ыгзЛе1п(’Не задан файл вопросов теста!’); мгхЬеТп(1Командная строка: 1:е5Г ИмяФайлаТеста1); доЪэ Ьуе; епЦ; Гпате: -РагатЗЪг (1) ; { имя файла из командной строки } Аз зхдп(Е,Гпате); {$!-} { это директива компилятору, а не коментарий! ) НезеГ(Е); { открыть файл для чтения }- {$!+} хГ ЮКезиХГ о 0 ГЪеп Ьедхп мг1Ье1п(’Не найден файл теста Гпагае); доЬэ Ьуе; епЦ; итхЪеТп ('Сейчас Вам будет предложен тест.’); мгхГеХп(’К каждому вопросу дается несколько вариантов ’, ’ответа.’); югхГеХп('Вы должны ввести номер правильного ответа’, ’и нажать клавишу <ЕпЪег>’); югхГеХп; мгхЬе1п(’Удачи! Для начала тестирования нажмите <ЕпЬег>г); ТехЬВаск6гоипс1(В1ие); С1г5сг; ^/зедоУорг :=0; Р^аV:=С); ккх1е поЪ ЕОЕ(Е) Цо Ьедхп {С1г8сг;) УзедоУорг: -Узедо\^орг+1; геасПп (1:, зЬ); { читаем из файла вопрос } ТехЪСоХог (ИЫЪе); юг11е1п (51:); { выводим вопрос на экран ) геасПп (Е,пО^V,Р^аV); ( читаем кол-во альтернативных ответов и номер правильного ответа } ТехЪСо1ог (ЫдМ:Сгау) ; Гог 1:^1 Го пОГу Цо { читаем и выводим альтернативные ответы }
Ьедхп геасИп (Г, ©Т1) ; кг!Ье1п(1,1. ’,5Г); епд; кг!Ъе1п; 1 мг!Ъе(’Ваш выбор ->1); геасИп (СКлг}; х€ 01^ = Ргшг ЬЬеп РгауОЬ^: =Ега^^+1; ыг1Ме1п; епд; { обработка результата тестирования } { вычислим процент правильных ответов } р:=Еоипд( (Рга'уОЬу/УзедоУорг) *100); ъл:11е (’ Ваша оценка 1); сазе р оГ 100: мг1Ъе! п (' ОТЛИЧНО !'); 80,. 99:ю?1Ёе1п( ’ХОРОШО. ’) ; 60. . 79: «Г1ге1п (’ УДОВЛЕТВОРИТЕЛЬНО. г) ; е1зе югдХе1п(•ПЛОХО1’); епд; Ьуе: ыгдЬеС’Ддя завершения работы программы нажмите <ЕпЬег>’); геасИп; епд. Задача 235 < Выводит таблицу пересчета из дюймов в миллиметры на экран, принтер или в файл } Vа^ Е:ЬехЬ; { файл вывода } Епатпе: зЪххпд; ( имя файла вывода } дез!:гпЬедег; { 1 - на экран, 2 - на принтер, 3 - в файл } б: геа1; { величина в дюймах ) т: геа1; { величина в миллиметрах! Ьедхп кгИе1п(’*** Таблица пересчета из дюймов ’ в миллиметры ***’); 7 Зак 161
кг! 0е1п (• Результат выводить:1); иг1Ъе1п(’1 - на экран;’); нгх0е1п(*2 - на принтер;1); ыгЮе1п(*3 * в файл.’); иг1Ъе1п('Введите число от 1 до 3 и нажмите <ЕпЪег> ’); нгз±е(’Ваш выбор -> ’); геасНп (дез!:); сазе дезо оГ 1: ^пате:=''; { на экран ) 2: Ьедхп { на принтер } Гпаше: - * ргп1; иг1Ое('Включите принтер и нажмите <ЕпОег>'); геасНп; епд; 3: Ьедхп { в файл ) кг 1Ое(’Задайте имя файла для вывода -> геад!п(^пате); епд; епд; авзхдп^пате); гекгЮе(€); кгЮе1п(Г/' -------------------'); кгхге1п(Г,' Дюймы Миллиметры1); КГ1!е1П(Е, ’------------------1 ); д:=0.5; кЫ1е д < 10 до Ьедхп т:=25.4*д; { 1 дюйм - 25,4 мм } ыг10е1п(Г,д:6:1); д:=д+0.5; епд; кгЮе1п(Г, ' ------------------’); ! с1оее; х€ девО 3 ЪЪеп кг 10е1п ('Таблица записана в файл Ч^паше); игЮе1п (тДля завершения работы программы’, ’нажмите <Еп0ег>1); геад!п; епд.
1'1 ’— ’ ’ Задача 236 ( Рекурсивная функция "Факториал"*} ГипсЪхоп ^ас€ог1а1(к:1пИедег) :!пЪедег; Ьедхп 1€ к = 1 ЪЪеп Гас1ог1а1:=1 е!зе ГасЪог1а1:= к*^асЪог!а1(к-3); еп<1; \гаг п: ХпЪедег; { число, факториал которого надо вычислить} Г: хпСедег; { факториал числа п } Ьедхп югИе1п(’Вычисление факториала.•); * ыг1Се1п(’Введите число, факториал которого надо ’вычислить’); игзХе геасПп (п); :=^асХог1а1(п); югхЪеХп(’Факториал числа ’,п/ равен геасПп; еп<1. Задача 237 { Выводит на экран узор } Цзез СгарИ,Сг1:; { Рисует элемент узора } ргосейиге Е1ет(х,у,г,р: гпХедег); { х,у,г - координаты и радиус центра основного элемента узора р - порядок узора 1 Ьедхп 1Г р>=0 1Леп Ьедхп С1гс1е (х,у, г); Бе1ау(100); Е1ет(х+г, у,Коипс!(г/2) ,р-1); Е1ет(х,у-г,Ноипй(г/2),р-1); Е1ет(х-г,улЕоипс1(г/2) ,р-1);
Е1егп(х,у+г,Коипд(г/2), р-1); епд; епд; тлаг дгПг1лгег:1п€едег; { драйвер } дгМоде:хгледег; { графический режим У дгРаДГкзЪгхпд; { путь к файлу драйвера } ЕггСоде :1пТ:едег; { код ошибки графического режима ) дгБггуег: дгМоде: =ТСАН1; дгРаДИ:=’е:\Ър\Ьд1*; ТпзХСгарЬ (дгОга^ег,дгМоде, дгРаИк) ЕггСоде: МЗгарЬКезиЗЛ; ЕггСоде о дгОК ЪИеп Ьедхп и/г1€е1п ('Сшибка инициализации графического режима. ’) ; мг1Ре1п (’Для завершения работы нажмите <ЕпЬег>’); геад1п; На1Ъ (1); епд; { основная программа } Е1ет(320,240,60,3); { рисуем узор 3-го порядка } ОибТех11 (’Дпя завершения работы программы •нажмите <ЕпЪег>’); геад!п; епд. Задача 238_________________________________________________ { Используя механизм рекурсии, вычисляет сопротивление п-звенной электрической цепи } таг г1,г2,гЗ: геа1; { величины сопротивлении, из которых состоит цепь } п: 1пЪедег; { количество звеньев (порядок) цепи } гс: геа1; { сопротивление цепи }
{ величина сопротивления цепи п-гс порядка } ^ипсЪхоп Сер(п: хпДедег): геа1; Ьедхп хГ п=1 ЪЪеп Сер:=Р.1+Н2+ВЗ е!зе Ьедхп гс:=Сер(п-1); Сер:=К2*гс/(В2+гс); еп<1; епд; { основная процедура } Ьедхп «г1Де1п{'Вычисление сопротивления электрической цепи.'); ыгИ1е1п(’Введите величины сопротивлений (Ом):’); югзХе (’ г1 ; геасНп (г1) ; мгхЪе(’г2 ~>’); геасНп (г2) ; югзХе (' гЗ -*>’); геасНп (гЗ); ыг111е{ 'Порядок цепи ; геасНп (п) ; югдХеХп (’ Сопротивление цепи:', Сер (п): 6:2, ' Ом’); ( величины соротивлений передаются в процедуру Сер через глобальные переменные г1, г2 и гЗ ) геасНп; епд.. Задача 239 { Вычерчивает схему сложной электрической цепи. } { При вычерчивании схемы цепи используется рекурсия.} Пзез СгарЪ; сопзД { шаг сетки } <1х=7; с1у=7;
Vа^ дгЕгзлгег: хпгедег; дгМобе: 1п1:едег; дхРабЬ:збгхпд; ЕггСобе:хпбедег; х,у: хпбедег; к: хпбедег; { порядок цепи } { выводит схему цепи к-го порядка } Ргосебиге Сер (к: хп^едег; х,у: хпбедег); Ьедхп 5еГСс1ог(Сгееп); Ыпе (х, у, х+2*бх, у); Несбапд1е (х+2*бх, у-ёу, х+6*с!х, у+бу); Ыпе (х+6*с!х, у, х+8*бх, у) ; ОиЪЪехбХУ (х+3*бх, у-3 *бу, ’К1'); ЗеЪСо]ог(Уе11ом); Ыпе (х+8*бх, у,х+8*бх, у+2*бу) ; КескапдТе (х+7*бх, у+2*с!у,хч 9*бх,у+6*бу) ; Ыпе (х-1-8*с1х, у+6*бу, х+8*с!х, у+8*с!у) ; ОиЪ1:ех1:ХТ(х+10*с1хлу4-2*с1у, ’К2'); 5оёСо1ог (ЫдЫСгау) ; Ыпе (х, у+8*с!у,х+2*ах, у+8*с!у) ; КесГ:апд1е(х4-2*дх/у+7*с1у| х+6*ёх, у+9*с!у); Ыпе (х+б*<1х, у+8*ду, х+8 *<1х, у+8*сЭу); ОиЪЛехкХУ (х+3*с!х, у+5*<3у, ’КЗ ’) ; И к>1 Ъкеп Сер(к-1,х+8*дх,у); епб; Ьедхп дгЕгIV©г:=УСА; дгМобе:=У6АН1; дхРаЪЬ: =" е: \-1р\Ьд1 ’ ; 1п11Сгарк (дгЕг^ег,дгМобе,дгРаЬЬ); ЕггСобе:=СгарЪКе5и1Ь; ЕггСобе <> дгОК оЪеп Ьедхп мгНеТп (• Ошибка инициализации графического режима . ’); ъгг1Ле1п (’Для завершения работы нажмите <ЕдЁег>’);
геасНп; На1Ъ (1); епс1; Ои1:ТехЬХУ(10,10,'Введите порядок цепи и нажмите <ЕШ:ег> ’); геасНп (к); сер(к,10,50); геасНп; С1овеСгарк; епд. Задача 240 ( Демонстрация понятия "рекурсия". Программа строит кривую Гильберта. } изез СгарЬ, СгЪ; Vа^ и: хпЪедег; { Длина штриха кривой Гильберта } { Заменяет стандартную процедуру для вычерчивания по точкам горизонтальных и вертикальных линий. } ргосескиге ЫпеТо (х2, у2: хпМедег); сопзЪ ОТ = 3; { задержка между выводом точек линии } Vа^ х1,у1: хпЬедег; { координаты начала прямой, х2,у2 - координаты конца } х,у : хпЪедег; { координаты текущей точки } бх: хп^едег; { приращение аргумента } бу: хпЪедег; { приращение у при рисовании вертикальной линии ] со!ог: 1п1:едег; { цвет линии) а,Ь: геа1; { коэф-ты уравнения прямой } п: хпЪедег; { кол-во точек } 1: хп^едег; Ьедхп х1:=СеЁХ; у1:=<ЗеЪУ;
хГ х1 о х2 Шеп Ьед±п { не вертикальная линия } а:«(у2-у1)/(х2-х1); Ь:=у1-а*х1; п:=аЬ5(х2-х1 )+1; хГ х2 > х1 ЪЬеп 6х:=1 е1ве Дх:=-1; х:=х1; со1ог:=СеЪСо1ог; Гог х:=1 Ъо п с!о Ьед1п у:=Ноипд(а*х+Ь); Ри^Рххе!(х,у,со1ог); йе1ау(ОТ); х:=х+(±х; епд.; епд е1ае Ьедхп { вертикальная линия } п:=аЬз(у2-у1); хГ у2 > у1 ЪЬеп с!у:=1 е1ее с!у:--1; х:=х1; у:=у1; со!ог:~Се1Со1ог; Гог х: =1 Ъо п <Хо Ьедхп РиЪРххе! (х, у, со!ог); бе1ау(ОТ); у:=у+бу; еп<5; еп4; Ри^Рххе!(х2,у2,со!ог); МсгуоТо (х2,у2) ; еп<Я; { Кривая состоит из четырех элементов: а,Ь,с и й. Каждый элемент строит соответствующая процедура. ] ргосейиге а(х:хпЪедег); ехЪегпа!;
ргоседиге Ь (1: хпЪедег); ргоседиге с (1: 1п1:едег); ргоседиге сЩ: 1п1едег) ; ехГегпа!; ех1егпа1; ехЪегпа!; { Элементы кривой. } ргоседихе а(1: хпЪедег) ; Ьед1п 1Г 1 > 0 М1еп Ьедхп ЫпеТо (Се1Х-и,СеЧУ) ; а (1-1); ЫпеТо (ОеЪХ,СеЪУ+и] ; а (1-1); ЫпеТо (6е1 :Х+и, 6е€У); Ь(1-1); епд; епд- г ргоседихе Ь{1: хпЪедег) ; Ьед±п х^ 1 > О ЪЬеп Ьед±п с (1-1); ЫпеТо (Се1Х, СеЪУ-и); Ь(1-1); ЫпеТо (0еСХ+и,6е1У); Ь (1-1); ЫпеТо (0еЪХ7 ОеГУ+и) ; аЦ-1); епд; епд; ргоседиге с{1: 1п1едег); Ьедхп хГ 1 > 0 ЪЬеп Ьедхп Ь(1-1); ЫпеТо (ОеЪХ+и, СеНУ) ; с (1-1); ЫпеТо (СеОС, Се1У-и); с (1-1); ЫпеТо (Се1Х-и, ОеЪУ) ; д(1~1); епд; епд; V ргосэ€1иге д (1; 1п1едег) ; Ьедхп
Ьедхп а (1-1); ЫпеТо (Се€Х,Се1У+и) ; Д(1-1) ; ЫпеТо (СеСХ-и,СеДУ) ; а (1-1); ЫпеТо (СеСХ, СеЪУ-ц); с(1-1); епд; опд; { главная процедура } уаг дгБг^ег: 1п1:едег; дгМоде: ТпЪедег; ЕггСоде: ГгХедег; гез: хпЪедег; р : 1п1:едег; .{ Порядок кривой Гильберта } зЪ: еЪгхпд; Ьедхп дгОЫуег := беЪес!; ТпИгСгарЪ(дгОЫуег, дгМоде,’е:\^р\Ьд!’); ЕггСоде := СгарШезиЫ; хГ ЕггСоде = дгОк Итап Ьедхп р:-5; $1:г (р: 2, зЪ) ; ОиСХехЪХУ(0,0,’Кривая Гильберта1+зЬ+1—го порядка.’); МоуеТо(450,50); и:-10; а(р); ОиЪ1:ех1:ХУ(0,16, ’ Для завершения работы программы ’нажмите <ЕпГег>,’); геаЛп; епд; С1озеСгарЬ; епд. Задача 241.______________________ { Программа строит кривую Серпинского. см. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. - М.: Мир, 1989. - 360 с.: ил. }
изез ОгарЬ, СгЪ; уаг и: хпЪедег; { Длина штриха } { ЫпеТо - вычерчивает по точкам линию из текущей точки в заданную. Заменяет стандартную процедуру ЫпеТо для того, чтобы можно было видеть процесс вычерчивания. Возможно надо увеличить величину задержки между выводом точек. ] ргосебиге ЫпеТо (х2,у2: гпЬедег) ; { х2,у2 - координаты конца линии} сопзЪ СТ - 3; { задержка между выводом точек линии } уаг х1,у1: гпбедег; { координаты начала прямой } х,у : хпбедег; { координаты текущей точки } бх: хпбедег; { приращение аргумента } бу: хпбедег; { приращение у при рисовании вертикальной линии } со1ог: хпбедег; { цвет линии} а,Ь: геа1; { коэф-ты уравнения прямой } п: хпбедег; { кол-во точек } 1: 1п1едег; Ьедхп х1:=6еЪХ; у1:=СеЪУ; хГ х1 О х2 ЪНеп Ьедхп { не вертикальная линия } а:=(у2-у1)/(х2-х1); Ь:=у1-а*х1; п:==аЬз <х2-х]) +1; хГ х2 > х1 Мхеп бх:=1 е1зе бх:=-1; х:=х1; со!ог: =СебСо1ог; €ог Ьо п бо
Ьедхп у: =Воипс1 (а*х+Ь); РиСРххе! (х, у, со1ог) ; де1ау(0Т); х:==х+дх; епд; епд е1ее Ьедхп { вертикальная линия } п:=аЬз(у2-у1); хГ у2 > у1 Ыхоп ду:=1 еХве ду:=-1; х:=х1; у:=у1; со] ог: =СеССо1ог; ^ог х:=1 Со п до Ьедхп РиСРххе!(х,у,со1ог); де!ау(Е)Т) ; у:=у+ду; епд; епд; РиЪРххе!(х2,у2,со!ог); МогеТо (х2,у2); епд; ргоседихе \7есСог(а: тп^едег; { а - угол между вектором и осью ОХ ] 1: хп^едег); { длина вектора } { Угол задается целым числом от 0 до 7. О соответствует нулю градусов, 1 - 45, 2 - 90 и т. д. } таг х0,у0; хпСедег; { координаты начала вектора } х1,у1: хпСедег; { координаты конца вектора ] Ьедхп хО:=6еСХ; уО:=Се€У; • х1:=Ноипд(х0+1*сов(а*Р1/4)); у1:=Коипд(уО-1*51п(а*Рх/4)}; ЫпеТо (х1,у1); епд;
{ Кривая состоит из четырех элементов: а,Ь,с и й. Каждый элемент строит соответствующая процедура. ] ргосеЗиге а(1:±пЪедег); ех-ЬетаД ; ргооесЗиге Ь (1: хпЪедег); ех1:ета1 ; ргосесЗиге с (1: ЛпГедег); ехЪегпа!; ргос&Яиге 3(1: хпИедег); ех€е та!; { Элементы кривой. ] ргосеЗиге а (1: зпЪ едег); Ьедхп хГ 1 > С ЪИеп Ьедхп а(1-1) ;7есЪог (7, и); Ь(1-1);7есЬог(0,2*и); 3(1-1);7ес^ог(1,и); а(1-1); епЗ; епЗ; ргосеЗиге Ь(1: хпЪедег); Ьед1п 1Г 1 > 0 1±хеп Ьедхп Ъ (1-1) ;Уес1юг (5, и); с (1-1) ;Уес1:ог (6,2*и) ; а(1-1);УесЛог(7,и); Ь(1-1); епЗ; епЗ; ргосеЗиге с(1: хпЪедег); Ьедхп хГ 1 > 0 ^Неп Ьедхп с (1-1) ;\7ес1ог(Зги); 3(1-1) ;\7ес1ог (4,2 ки) ; Ь(1-1) ;\7ес€ог (5, и) ; с(1-1); епЗ; епЗ;
ргоседиге д(1: 1п1едег); Ьедхп хГ 1 > О 1Ъеп Ьедхп <1(1-1) ;Уес1ог (1,и); а(1-1) ;\7ес1ог (2,2*и); с (1-1) ; 7ес1ог (3, и) ; д(1-1); епд; епд; { главная процедура } лгах дгБгхтег: 1п1едег; дгМоде: Тп1едег; ЕггСоде: 1п1едег; гез: 1п1едег; р : хШедег; { Порядок кривой Гильберта ] 51: вЪгхпд; х: з Меде г; Ьедхп «гх!е1п ('Демонстрация понятия "рекурсия”.'); ыгИе1п( 'Программа строит кривую берлинского. ’); «гх!е1п('Введите порядок кривой (1-4) ’и нажмите <Еп1ег>’); мгНе геад1п(р) ; дгБг^ег : = де1ес1; ХпИСгарЪ (дгПг^ег, дгМоде, 1 е: \ 1р\Ьд1 ’); ЕггСоде := бгарИКеаиМ ; хГ ЕггСоде = дгОк 1Ъеп Ьедхп .81г(р:2,51); Ои11ех1ХУ(0,0,'Кривая берлинского’+з1+'-го порядка.’); &кгуеТо (1С,30); и: =5; а(р); 7ес1ог(7,и); Ь(р); Уес1ог(5,и);
Часть Ы.Р&убния 207 €1озе<ЗгарЬ; -X? геасНт! с(₽); Уёс1:ог(Зги) й(р); Уес1;о^(1^и} ОиМех1ЖУ(.Ог1б, ' . < 2- ?. &г?а- / .» -кЛТ” . I*.

Часть III. Справочник «• > К Структура программы Программа на языке Разса’ состоит из разделов: • раздел объявления меток; • раздел объявления констант; • раздел объявления типов; • раздел объявления переменных; • раздел объявления процедур и функций; • раздел инструкций программы. Структура программы в общем виде выглядит следующим об разом: 1аЬе1 { объявления меток } сопзЪ { объявления констант } Ьуре { объявления типов } Vа^ { объявления переменных } { объявления процедур и функций программиста } Ьедхп. { инструкции основной программы} епд. Основные типы данных К основным типам данных языка Разса! относятся: • целые числа (жгесек и др.); • действительные числа (ведь и др.);
• символы (спав); • строки (5ТК1НС); • логический (вооьеап). Целые числа и числа с плавающей точкой могут быть представ- лены в различных форматах. Целые числа Формат Диапазон значений 8НОНТЮТ — 128—127 ЮТЕСЕВ -32 768-32 767 ДОПОЮТ -2 147 483 648-2 147 483 647 ВУТЕ 0-255 МОНО 0-65 535 - Действительные числа Формат Диапазон значений Количество значащих цифр ВЕДЬ 2.9Е-39—1.7е38 11-12 81П6ДЕ 1.5Е-45—3.4е38 7-8 ООДВДЕ 5.0Е-324—1.7е308 15-16 ЕХТЕНОЕЭ 3.4Е-4932—1.1е4932 19-20 Строки Строки могут быть объявлены двумя способами. Вариант 1: Имя: зЪгхпд; Объявлена переменная-строка длиной 255 символов.
Вариант 2: Имя: аЪгхпд [Длина Строки ]; Объявлена переменная-строка указанной длины. । Массивы Объявление одномерного массива: । ИмяМассива:аггау [НижнийИндекс.. ВерхнийИндекс] оТ ТипЭлементов; Объявление двумерного массива: ИмяМассива: аггау [НижнийИндекс! .. ВерхнийИндекс!, НижнийИндекс2.. ВерхнийИндекс2 ] о€ ТипЭлементов; Записи Записи можно объявить двумя способами. Вариант 1: ПеременнаяЗапись: гесогд Поле!: Тип1; Поле2:Тип2; • • • Поле!: Тип!; еп<3; Вариант 2 (сначала объявляется тип записи, затем — перемен- ная-запись): Ъуре ИмяТипаЗаписи: гесогв Поле 1: Тип1; Поле2: Тип2; Поле!: Тип!; еп<3; уаг ПеременнаяЗапись: ИмяТипаЗаписи;
Выбор Инструкция 1Р Вариант Г. хГ Условие ЪЬеп Ьедхп { Эти инструкции выполняются, } { если Условие истинно } епб е1ее Ьедхп { Эти инструкции выполняются, } { если Условие ложно } епб; Вариант 2: х€ Условие ЪЪеп Ьедхп { Эти инструкции выполняются, } { если Условие истинно ) епб; < Примечание ) Если методу Ьедхп и епд находится только одна инструкция, то слова Ьедхп и епб можно не писать. Инструкция САЗЕ Вариант 1: саве Выражение оГ Список_констант1: Ьедхп { Инструкции 1 } епб; Список_констант2: Ьедхп
{ Инструкции 2 ] епд; Сиисок^констан^: Ьедхп { Инструкции 3 } епд; епд; Вариант 2: сазе Выражение сГ Список_констант1: Ьедхп { Инструкции 1 } епд; Список_констант2' Ьедхп { Инструкции 2 } епд; А « Список'констант^ Ьедхп { Инструкции 5 } епд е1зе Ьедхп { Инструкции } епд; епд; Инструкции между Ьедхп и епд выполняются в том случае, если значение выражения после слова сазе совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, следующие после е1зе, расположенные между Ьедхп И епд.. Циклы Инструкция РОН Вариант 1 (с увеличением счетчика): Гог Счетчик := НачальноеЗначение Ъо КонечноеЗначение до Ьедхп
{ Инструкции } епд; Инструкции между Ьедхп И епд ВЫПОЛНЯЮТСЯ [(конечноеЗначение — Начальное Значение) + 1] раз. Если НачальноеЗначение больше, чем КонечноеЗначение, ТО ИНСТ- РУКЦИИ между Ьедхп и епб не ВЫПОЛНЯЮТСЯ. ( Примечание Если между Ьедхп и епд находится только одна инструкция, то слова Ьедхп и епд можно не писать Вариант 2 (с уменьшением счетчика): Гог Счетчик := НачальноеЗначение дортпЬо КонечноеЗначение дс { Инструкции } епд; Инструкции между Ьедхп И епд ВЫПОЛНЯЮТСЯ [(НачальноеЗначение — КонечноеЗначение) + 1 ] раз. Если НачальноеЗначение меньше, чем КонечноеЗначение. ТО ИНСТ- РУКЦИИ между Ьедхп И епд не ВЫПОЛНЯЮТСЯ. Инструкция РЕРЕ АТ гереаЪ { Инструкции } епд ипЫ1 Условие; Выполняются инструкции, находящиеся между Ьедхг и епд (ин- струкции цикла), после этого проверяется значение выраже- ния Условие, Если оно равно Га1зе (т. е. условие не выполняет- ся), то инструкции никла выполняются еще раз. И так продол- жается до тех пор, пока Условие не станет истинным. Таким образом, после слова ипыт записывается условие завершения цикла.
Примечание Если между Ьедхп и епа находится только одна инструкция, то слова Ьедхп и епб можно не писать. Инструкция УУНШ= «Ь11е Условие йо Ьедхп { Инструкции } епа; Проверяется значение выражения условие, если оно равно тгие (условие выполняется), то выполняются инструкции, находя- щиеся между Ьедхп и епа (инструкции цикла) Затем снова про- веряется значение выражения Условие, и так продолжается до тех пор, пока значение выражения Условие не станет равным ЕаЛзе. Таким образом, после слова ™ъ11е записывается условие выполнения инструкций цикла. ( Примечание ) Если между Ьедхп и епа находится только одна инструкция, то слова Ьедхп и епа можно не писать. Безусловный переход Инструкция СоТо СоТо Метка; Осуществляется переход к инструкции, перед которой указана метка, объявленная в разделе 1аЬе1. Объявление функции ЕЧтсЫоп Параметр! •. Тип!; Vа^ Параметр2: Тип2; Vа^ Параметра ТипЛ : Тип;
сопзЬ { Описание констант } Vа^ { Описание переменных } Ьедхп { Инструкции функции } ИмяФункции: =Значение; епд; Объявление процедуры Ргоседиге ИмяПроцедуры&аг Параметр! : Тип!; Vа^ Параметр?: Тип2; » • Л Vа^ Параметру: Тип У) ; сопзЪ { Описание констант } уаг { Описание переменных } Ьедхп { Инструкции процедуры } епд; Встроенные функции и процедуры При описании функций и процедур приняты следующие обо- значения: • имена функций и процедур выделены полужирным шрифтом; • параметры выделены курсивом (В качестве параметра могут использоваться константы, переменные или выражения соот- ветствующих типов. Если параметром обязательно должна быть переменная основной программы, то перед ним постав- лено слово Vа^. После параметра указывается его тип.); • после списка параметров функций через двоеточие указан тип результата, возвращаемого функцией.
Математические Комментарий АЬз(Выражение) Здг (Выражение) 8дг1 (Выражение: геа!) : геа! 8±п(Выражение: геа!) :геа! Соз(Выражение:геа1):геа! АгсЪап (Выражение: геа!) : геа! Ехр (Выражение: геа!) : геа! 1л (Выражение: геа 1) : геа I 1п1 (Выражение: геа!) : геа! Тгипс (Выражение: геа!) : 1опд1п1 Коипд. (Выражение: геа!) : Хопдтп! 81г (Выражение; Vа^ Строка: 51гхпд) Уа! (Строка: 51г1пд; ^гаг Переменная, Vа^ КодОшибки: хп! еде г) Абсолютное значение аргумента (целый или вещественный тип) Квадрат аргумента (целый или веществен ный тип) Квадратный корень из аргумента Синус аргумента, выра- женного в радианах Косинус аргумента, выраженного в радианах Арктангенс аргумента, выраженного в радианах Экспонента аргумента Натуральный логарифм аргумента Целая часть аргумента Целая часть аргумента Округление значения аргумента до ближайшего целого Преобразование число- вого выражения в строку Преобразование строки, изображающей целое или вещественное число, в число Для работы со строками и символами Комментарий Сопса! (Строка 1:51г1пд; . . .; Строкам: 51г!пд):81г1пд Объединение не- скольких строк в одну
(окончание) Для работы со строками и символами Комментарий Сору (Строка: зТгхпд; НомерСимвола: хпТедег; Длина :ГпТедег):зТгхпд Выделение подстроки Ре1еЪе^аг Строка: вгЪтпд; НомерСимвола: д.пТеде г ; Сколько:хпЪедег) Удаление части строки ЬепдЪЬ(Строка :зТг!пд) :1пЪедег Длина строки Ров (Строка: зТгтпд; Подстрока: 8Тг1пд) : ЬуЪе Позиция подстроки в строке СИг (КодСимвола: ЬуЪе) : СИаг Символ с указанным кодом Зарезервированные слова и директивы Зарезервированные слова языка ТигЬо Ра$са1: апд Ше аггау Гог азт Гипс^Гоп Ьед1п доСо сазе 1Г сопзГ 1тр1егпепСаГ1оп. сопзТгисТог 1п дезГгисТог ХпЬегтЪед сИ’ы ГпИпе до тпГепГасе долгого 1аЬе1 е!зе под епс! пИ Директивы языка ТшЬо Ра^саЕ аЬзо!с1е ехЁегпа! Гогмагд аззешЫег Гаг тпГеггир!: поГ ГЪеп оЬ^есГ оГ Туре ог ип1Ъ рас кед ипСП ргоседиге изез ргодгат Vа^ гесогд иЫ1е гереаТ зеЪ хог ъ зЫ зИг зГгъпд пеаг риЫхс рг^аТе гтгГиа!
Процедуры и функции В описании функций и процедур приняты следующие обозна- чения: • имена функций и процедур выделены полужирным шрифтом; • параметры выделены курсивом (В качестве параметра можно использовать константы, переменные или выражения соот- ветствующих типов. Если параметром обязательно должна быть переменная основной программы, то перед ним постав- лено слово Vа^, а после параметра — его тип); • необязательные параметры заключены в квадратные скобки; • после списка параметров функций (через двоеточие) указан тип результата, возвращаемого функцией. Математические функции АЬз Синтаксис: Гипс-Ыоп АЬб (X) ; Действие: Возвращает абсолютное значение аргумента, в качестве которого можно использовать выражение целого или вещественного типа. Агс1ап Синтаксис: ГипсЪхоп АгсТап(Х: геа1): геа1; Действие: Возвращает арктангенс аргумента — угла, величина которого выражена в радианах. Соз Синтаксис: ^ипсЪхоп Соз(Х: геа!): геа1;
Действие: Возвращает косинус аргумента —- угла, величина которого выра- жена в радианах. Ехр Синтаксис: ^ипсЪхоп Ехр(Х: геа!): геаХ; Действие: Возвращает значение, равное экспоненте аргумента. 1л Синтаксис: ГипсЪХоп Ьп(Х: геаХ): геа!; Действие: Возвращает значение, равное натуральному логарифму аргумента. 5/л Синтаксис: ф ♦ Гш1сЬ.оп 8Хп(Х: геа1) : геаХ; Действие: Возвращает синус аргумента — угла, величина которого выраже- на в радианах. Здг Синтаксис: ГипсЫоп 8дг (X); Действие: Возвращает квадрат аргумента, в качестве которого можно ис- пользовать выражение целого или вещественного типа. 5д/Т Синтаксис: ГипсЪхоп 8дгГ;(Х: геаХ): геаХ;
ра- Действие: Возвращает значение, равное квадра гному корню из аргумента. та. же- ис- Напс1от Синтаксис: ГипсЬюп Вапйот [ (Диапазон: ъюгс!) ]; Действие: Если параметр Диапазон не указан, то возвращает случайное чис- ло X, которое удовлетворяет условию 0 <= X < 1. Если параметр диапазон указан, то функция возвращает случайное число типа тога, удовлетворяющее условию 0 <= X < диапазон. Примечание ) Перед первым обращением к функции Капает необходимо с по- мощью вызова процедуры капает! ге инициализировать програм- мный генератор случайных чисел Рапдот/ге Синтаксис: ргоседиге КапсТотхге; Действие: Инициализирует программный генератор случайных чисел. Функции и процедуры преобразования 1п1 Синтаксис: ГипсЪхоп 1п11 (X: геа1) : геа1; Действие: Возвращает целую часть аргумента как значение вещественного типа. Дробная часть аргумента при преобразовании не учитыва- ется, т. е. функция не производит округление.
Ноипс! Синтаксис: ГипсЪхоп КоипсЦХ: геа1): 1опд1пс; Действие: Возвращает округленное к ближайшему целому значение аргу- мента. 51г Синтаксис: ргосеЗиге ЗТг(Х [:ВсегоСимволов [ :ДробнаяЧасть ]]; Vа^ Строка: аггхпд); Действие: Выполняет преобразование числового выражения в его строко- вое представление. ВсегоСимволов и ДробнаяЧасть — необязатель- ные выражения целого типа, которые задают общее количество символов и количество символов дробной части в изображении числа. Тгипс Синтаксис: ГипсЫоп Тгипс(X: геа!) : ГопдхпТ; Действие: Возвращает целую часть аргумента как значение целого типа. Дробная часть аргумента при преобразовании не учитывается т. е. функция не производит округление. Уа! Синтаксис: ргосеЗиге \7а1(Строка: зЬгхпд; Vа^ Переменная; Vа^ Ошибка : хпеедег); Действие: Выполняет преобразование строки, изображающей целое или вещественное число, в число. Полученное значение присваивав
ется переменной, указанной при вызове процедуры. Если пре- образование не может быть выполнено, то в переменную Ошибка записывается номер символа строки, который явился причиной неудачи преобразования. Если преобразование выполнено ус- пешно, то значение Ошибка равно нулкт Функции и процедуры для работы со строками и символами СЬг Синтаксис: ГипсЪхоп СИ г (КолСимвола: ЬуПе) : сИаг; Действие: Возвращает символ с указанным кодом. Сопса{ Синтаксис:' ГипсЪхоп СопсаМя7 [, з2, . . ., зМ] : зЬгхпд): есгхпд; Действие: Возвращает строку, являющуюся объединением строк, указан- ных при вызове функции. Сору Синтаксис: Типс±1оп Сору(5: я-Ьгхпд; п:Хпеедег; 1: ХпГедег) : еЪгхпд; Действие: Возвращает подстроку — часть строки з. Подстрока начинается с символа с номером п и состоит из 1 символов. Се1е(е Синтаксис: ргоседиге СеХеНе^аг з: згП1пд; НомерСимвола: хпТедег; Сколько: гпЪедег);
Действие: Удаляет из строки з ее часть, которая начинается с символа с номером в и состоит из 1 символов. Ьепд1Ь Синтаксис: ГипсЫоп Ьепд^И (Строка: зЪгхпд) : Тпседег; Действие: Возвращает значение, равное количеству символов строки-ар- гумента. Роз Синтаксис: ЕипсЫоп Роз (Строка: эЬгзтд; Подстрока: зЪгхпд) : Ьу1:е; Действие: Возвращает позицию (номер символа) подстроки в строке. Процедуры и функции графического режима Аге Синтаксис: ргосеЗиге Аге(х,у: хпЪедег; УголНачала, УголКонца: Тп^едег; Радиус: хпЬедег); Действие: Вычерчивает дугу с центром в точке с координатами (к, у). Па- раметры УголНачала и УголКонца задают угловые координаты на- чальной и конечной точек линии дуги, которая вычерчивается против часовой стрелки от начальной точки к конечной. Угло- вые координаты задаются в градусах. Значение угловой коорди- наты возрастает против часовой стрелки. Параметр Радиус задает радиус дуги. Дуга вычерчивается цветом, заданным процедурой зесСоТог.
Ваг Синтаксис: ргосескдге Ваг (х1, у 1, х2г у2: ГпЬедег) ; Действие: Вычерчивает закрашенный прямоугольник. Параметры х1 и у1 задают положение левого верхнего угла прямоугольника, х2 и у2 — правого нижнего. Используемый стиль и цвет заливки за- дается Процедурой 5еГЕИ15Су1е. ВагЗВ Синтаксис: ргоседиге Ваг30 (х1,у1, х2, у2: тпТедег; Глубина: ыогб; Граница: ЬооТеаг); Действие: Вычерчивает параллелепипед. Параметры х1 и у1 задают поло- жение левого верхнего, а х2 и у2 -- правого нижнего угла ближ- ней грани параллелепипеда. Параметр глубина задает расстояние между передней и задней гранями. Параметр граница определя- ет, нужно ли вычерчивать верхнюю границу задней грани парал- лелепипеда. Цвет и стиль закраски ближней грани параллелепипеда можно задать при помощи процедуры 8есЕШ5гу1е3 цвет линий грани- цы — процедурой 5еьсо1ог. С!гс1е Синтаксис: ргоседиге С±гс1е(хгу: ГпЪедег; г: ыогф; Действие: Вычерчивает окружность радиуса г с центром в точке с коорди- натами (х,у). Цвет окружности можно задать при помощи процедуры Зеесо1ог. 8 Зак. 161
Ое1ес1(ягарЬ Синтаксис: Эе^есХСгарЬ (лтаг Драйвер, Режим: гп^едег) ; Действие: Проверяет графический адаптер и определяет, какой графиче- ский драйвер и режим используются. ЕШрзе Синтаксис: ргосес!иге Е111рз е (х, у: 1п Ьедег; УголНа чала, УголКонца: ысгс!; РадиусХ, Радиус?: шогсД ; Действие: Вычерчивает эллипс или дугу эллипса с центром в точке с коор- динатами (х,у). Параметры УголНачала и УголКонца задают угло- вые координаты начальной и конечной точек линии эллипса, которая вычерчивается против часовой стрелки от начальной точки к конечной. Угловые координаты задаются в градусах, их значения возрастают против часовой стрелки. Параметры Радиусх и Радиус? определяют горизонтальный и вертикальный радиусы эллипса. Линия эллипса или дуги вычерчивается е со- ответствии с установками процедуры 8егсо1ог. СеГХ, Се1У Синтаксис: ГипсМоп Се1:Х: хпГедег; ГипсЪхоп 6е1:У: ЛпГедег; Действие: Возвращают координаты х и у указателя вывода. (ягарЬПезиН Синтаксис: ГипсЫоп СгарЬКезиП:: гпЛедег;
Действие: Возвращает результат (код ошибки) последней выполненной графической операции. Если операция выполнена успешно, функция возвращает ноль. Код ошибки выполнения графиче- ской операции устанавливают процедуры ваг, вагзо, тпШЗгарЪ, РхеЗИсе, ЗеегШРаееет, 5е11Е1115еу1е, Зе^ЫпеЗХуХе, ЗееТех’ХЗСуХе и Др. /пИСгарЬ Синтаксис: 1п1еСгарЬСтат 0г1уег: гпЬедег; таг Мо<3е: хгЛедег; РаЬГ,: зЪгхпд) Действие: Инициализирует графический режим. Параметр ог1иег опреде- ляет драйвер видеосистемы, параметр Ноае — режим работы ви- деосистемы, параметр Раед — каталог, где находится драйвер. ипе Синтаксис: ргосеЗиге Ь1пе(х1,у1гх2,у2: ГгЛедег); Действие: Вычерчивает линию между двумя точками экрана, координаты которых указаны при вызове процедуры. Линия вычерчивается стилем, установленным процедурой зетЫпеЗГуХе. Цвет линии можно задать при помощи процедуры ЗеъсоХог. ЫпеТо Синтаксис: ргосеЗиге Ыпе(х7,у2: 1пСедег) ; Действие: Вычерчивает линию от текущего положения указателя вывода до точки, координаты которой указаны при вызове процеду- ры. Линия вычерчивается стилем, установленным процедурой 5ееЫпе5Ъу1е. Цвет линии можно задать при помощи процедуры ЗеЁСоХог.
МоуеТо Синтаксис: ргосеДиге МсллеТо(х,у: 1птедег); Действие: Перемещает указатель вывода в точку с координатами х и у. МоуеВе! Синтаксис: ргоседиге Мс^еВе! (ск:, с/у: ЛпТедег) ; Действие: Перемешает указатель вывода на с/х и йу пикселов. Если значе- ние параметра с1х (ау) положительное, то указатель перемещает- ся вниз (влево), если отрицательное, то — вверх (вправо). Ои1Тех1 Синтаксис: ргоседиге ОиеТехЪ (Текст: зЪгхпд); Действие: Выводит строку символов Текст от текущею положения указате- ля вывода и перемешает указатель вывода в точку, расположен- ную за последним выведенным символом. Цвет выводимых символов можно задать при помощи процеду- ры 5еТСо1ог, а Шрифт — 5еТТехТЗТу1е. Ои1Тех1ХУ Синтаксис: ргосо<1иге ОиЬТехЬХУ (х, у: гпТедег; Текст: зЪг±пд); Действие: Устанавливает указатель вывода в точку с координатами (х,у) и выводит строку символов текст, при этом указатель вывода своего положения не меняет, остается в точке с координатами (х, у).
Цвет выводимых символов можно задать при помощи процеду- ры ЗегСоТог, а Шрифт — процедурой ЗеьТехЁЗеуЬе. Р/еЗПсе Синтаксис: ргоседиге РхеЗИсе {х, у: ЛпЁедег; УголНачала, УголКонца, Радиус: йоге!) ; Действие: Вычерчивает сектор радиуса Радиус с центром в точке с коорди- натами (х,у). Параметры УголНачала И УголКонца задают угловые координаты начальной и конечной точек линии окружности (в градусах), которая вычерчивается против часовой стрелки от на- чальной к конечной точке. Значение угловой координаты воз- растает против часовой стрелки. Нулевому углу соответствует горизонтальный отрезок, проведенный из точки (х,у) в сторону возрастания координаты х. Если УголНачала равен 0°, а УголКонца равен 360°, то процедура РхеЗИсе вычерчивает круг. Сектор закрашивается в соответствии со стилем, заданным про- цедурой ЗетгИ 151у1е, линия и границы вычерчиваются цветом, установленным процедурой ЗеесоТог. Ри1Р1хе! Синтаксис: ргооес!иге РиеРл хе I (х,у: 1 п^едег; Цвет: гб); Действие: Окрашивает пиксел, точку с координатами (х,у) г цветом цвет. В качестве параметра цвет обычно используют именованную константу (см. Зеъсо1ог). Вес1апд1е Синтаксис: ргоседиге РесЪапд1е(х!,у1,х2,у2: Ьп^едег); Действие: Вычерчивает прямоугольник. Параметры х1 и у! залают положе- ние левого верхнего угла прямоугольника, х2 и у2 — правого нижнего угла прямоугольника.
Вид контура прямоугольника можно задать при помощи проце- дуры 5еъЫпе5€у1е, а цвет — при помощи процедуры БеКоЛог. 8ес1ог Синтаксис: ргоседиге 5есЪог(х,у: хггСедег; Угол!, Угол?, РадиусХ, РадиусУ: ^огсО ; Действие: Вычерчивает эллиптический (радиусх * Радиусу) или круговой (радиусх = Радиусу) сектор. Параметры х и у задают положение центра сектора, Угод! и Угол2 - углы прямых, ограничивающих сектор, а Радиусх и Радиусу — радиусы эллипса по осям X и V, из которого "вырезается' отображаемый сектор. Нулевому углу соответствует горизонтальный отрезок, проведенный из точки (х,у) в сторону возрастания координаты х. Если Угол1 равен 0°, а Угол 2 равен 360°, то процедура 8ес1юг вычерчивает полный круг (эллипс). Цвет и стиль заливки можно задать при помощи процедуры 8е!:Е1115Ёу1е, цвет границы сектора —процедурой 8еъсо1ог. 8е1Со1ог Синтаксис: ргозеЗиге 2е^Со1ог (Цвет: йоге!) ; Действие: Задает цвет для вывода текста (процедуры Оистехсхт и ОичТехс), вычерчивания линий и фигур (процедуры Ыпе, С±гс1е, р.ескеапд1е и др.). В качестве параметра цвет обычно используют именованные константы. Цвет Константа Значение константы Черный В1аск 0 Синий В1ие 1 Зеленый Сгееп 2 Бирюзовый Суап 3
(окончание) Цвет Константа Значение константы Красный Веб л Сиреневый Мадейра 5 Коричневый Вгомп 6 Белый ЫдЫ:Сгау 7 Серый ОагкСгау 8 Голубой ЫдЫВ1ие 9 Светло-зеленый ЫдЫСгееп 10 Светло-бирюзовый ЫдЫ:Суап 11 Светло-красный (алый) ЫдМКеб 12 Светло-сиреневый ЫдММадепЪа 13 Желтый Уе11сж 14 Белый, яркий МЫЪе 15 8е1РН181у!е Синтаксис: ргосевиге 8 е!1 Е111311у 1 е ( Стиль г Цвет: мс гб); Действие: Устанавливает стиль и цвет заливки (закрашивания), исполь- зуемый процедурами вывода областей (ваг, вагзо, зес^ог и др.). В качестве параметра стиль обычно используют одну из име- нованных констант, список которых приведен ниже. Параметр цвет также задается именованной константой (см. зеесо1ог). Константа Стиль заполнения области Етр^уЕ111 ЗоПбЕШ ЫпеГШ Без заливки (сплошная заливка цветом фона) Сплошная заливка текущим цветом Горизонтальная штриховка
ч (окончание) Константа Стиль заполнения области ЫВХазЬЕШ Штриховка под углом 45° влево тонкими линиями ВХазЪЕШ Штриховка под углом 45° влево Вк21азЬЕП1 Штриховка под углом 45° вправо тонкими линиями ЬЪВк31аз1тЕ111 Штриховка под углом 45° вправо НаТскЕШ Штриховка клеткой ХкакскЕШ Штриховка под углом 45° редкой косой клеткой I пке г 1 еа Vе Е111 Штриховка под углом 45° частой косой клеткой ИхаеОоГЕШ Заполнение редкими точками СХозеЬоЬЕШ Заполнение частыми точками ОзегЕХХХ Тип заполнения определяется программистом 8еШпе81у1е Синтаксис: ргосеаиге 5еЪЫпе5Ту1е (ТипЛинии: ыогф Образец: ыогб; Толщина: ко г б) ; Действие: Устанавливает стиль вычерчиваемых контуров и линий (см. про- цедуры Ыпе, С1гс1е И Др.). Параметр типЛинии, в качестве которого обычно используется одна из именованных констант, определяет вид линии. Константа Тип линии ЗоИсЗЬп Сплошная, непрерывная ОоЬЪес1Ьп Пунктирная, с постоянной длиной штрихов СепХегЬп Штрих-пунктирная линия ВазИедЬп Пунктирная, длина штрихов чуть больше, чем у линии типа СюкЪесЕЬп ЫзегВтЬЬп Определенный программистом тип линии
Параметр толщина определяет толщину линии. Линия может быть обычной толщины (константа иогтМ1с±Ь) или утолщенная (константа титсмпсщи). Параметр образец используется в том случае, если процедура зегЫпезгуГе устанавливает тип линии, определяемый програм- мистом. Значением параметра образец должна быть четырехраз рядная шестнадцатеричная константа, кодирующая отрезок ли- нии длиной в 16 пикселов. 8е1Тех81у1е Синтаксис: ргоседиге 8е!Тех5Ъу1е (П1рифт, Ориентация, Размер: ыогб); Действие: Устанавливает шрифт, размер и ориентацию текста, выводимого процедурами Оиътехсху и Оистехс. В качестве параметра шрифт можно использовать одну из перечисленных ниже конст ант. Константа Значение Шрифт Ге Гаи! ! Гоп! 0 Стандартный Каждый выводимый символ формируется в квадрате размером 8 на 8 пикселей Тг!р1ехЕопГ 1 Тпр!ех шрифт ЗтаИЕопГ 2 Мелкий 8апз8ег1ГЕопГ 3 8апз8егИ шрифт СоЪЫсГопГ 4 Г отический ( Примечание В шрифтах, отличных от стандартного (Ое1аи11Роп1), букв русского алфавита нет. Параметр ориентация задает ориентацию выводимого процедура- ми Оистехс и оистехсху текста. Текст может быть ориентирован обычным образом (значение параметра ориентация в этом случае равно именованной константе ыоппа!) или вертикально, т. е.
снизу вверх (в этом случае значение параметра ориентация равно Х/егМсаТ). Процедуры и функции для работы с файлами АррегмЗ Синтаксис: ргосеЗиге АррепЗ (уаг К: Тех!:) ; Действие: Открывает существующий файл, связанный с файловой пере- менной г в режиме добавления в конец файла. При попытке от- крыть несуществующий файл появляется ошибка времени вы- полнения программы. Азз/дп Синтаксис: ргосеЗиге Аззхдг (таг Г; ИмяФайла: еЪгхпд ; Действие: Связывает файловую переменную г с конкретным файлом. С1озе Синтаксис: ргосеЛзге С1озе(«аг К) ; Действие: Закрывает файл, связанный с файловой переменной г. ЕОР Синтаксис: ГипсЫоп ЕОГ(«аг Г) : Ьоо1еап; Действие: Проверяет, не достигнут ли конец файла (епд оГ Ше) при чтении из файла, связанного с файловой переменной г. Если указатель
чтения достиг конца файла, то функция еог возвращает значе- ние твое, в противном случае — гаьзе. Егазге Синтаксис: ргоседиге Егазе ^аг Г); Действие: Уничтожает файл, имя которого связано с файловой переменной г. ЮРезиН Синтаксис: ЕипсЪХоп ТОКезиЗХ: зпГедег; Действие: Возвращает код результата последней выполненной операции файлового ввода-вывода (в том числе открытия и закрытия фай- ла). Если операция ввода-вывода выполнена успешно, функция возвращает ноль. Примечание ) Чтобы программа могла использовать функцию ЮКезиЗх, надо перед инструкциями, в результате которых может возникнуть ошибка ввода-вывода, поместить директиву {$!-}. а после этих инструкций — директиву {$и }. Резе! Синтаксис: ргоседиге Кезе!: ^аг Е [:Ше; ВесЗхге: ъюг<1] ] ; Действие: Открывает существующий файл. Тип файла может быть любым. Если элементы файла не относятся к одному из стандартных типов, то параметр песЗтге задает длину записи (в байтах). При попытке открыть несуществующий файл возникает ошибка вре- мени выполнения.
НешгИе Синтаксис: ргоседиге Ке^г1Ье (^аг Е [: Ех1е; КесЗГге: могсЗ ]); Действие: Создает и открывает файл, имя которого связано с файловой переменной г. Если файл с таким именем уже существует то процедура Кеыгзхе его уничтожает и создает новый. Прочие функции С1гЕо1 Синтаксис: ргоседиге С1гЕо1; Действие: Очищает текущую строку (строка, в которой находиться кур- сор) от позиции, в которой находится курсор, до конца стро- ки, закрашивая ее текущим цветом, заданным процедурой ТехГВаскбгоипсЬ С1г8сг Синтаксис: ргосеЦиге С1г8сг; Действие: Очищает текущее (заданное процедурой кгшйоы) окно экрана, закрашивая его цветом, заданным процедурой ТехьваскСгоопа. Ое1ау Синтаксис: ргоседиге БеГау (Задержка; ыогс!}; Действие: Обеспечивает задержку выполнения программы в миллисе- кундах.
О/зрозе Синтаксис: ргосеЗиге Бтзрозе ^аг р); Действие: Освобождает память, занимаемую динамической переменной, на которую указывает р. Ео1п Синтаксис: ГипсЪхоп Ео1п (таг Г: Ъех!:) ] : ЬооТеап; Действие: Если при обращении к функции Ес1п параметр не указан, то функция проверяет, не является ли очередной символ, читаемый из буфера клавиатуры, символом ’ новая строка”. Если является, то функция возвращает значение твое, в противном случае — гаъзе. Если параметр указан, то функция аналогичным обра- зом проверяет очередной символ текстового файла, связанного с файловой переменной, указанной при вызове функции. СоЮХУ Синтаксис: ргосеЗиге ЗоТоХУ(х, у: Ьу1:е) ; Действие: Перемещает курсор в точку экрана, имеющую координаты (х,у). НаП Синтаксис: ргосеЗиге На11: [ (КодЗа вершения: могЗ) ]; Действие: Завершает выполнение программы и передает управление опе- рационной системе.
Нет Синтаксис: ргоседихе р) ; Действие: Выделяет память для динамической переменной и присваивает указателю р адрес выделенной области. РагатСоиШ Синтаксис: ГипсЬхоп РагатСоипС: могсТ; Действие: Возвращает количество параметров командной строки. Рагат81г Синтаксис: ЕипсЪхоп РагашЗЁг (№. мег6) : зЪгхпд; Действие: Возвращает параметр командной строки, номер которого указан при обращении к функции. Значением Рагатзтг(С) является путь к файлу выполняемой программы и его имя (например, с:\Гр\ехе& 1рц\турго§. ехе). Реа&Кеу Синтаксис: ЕипсЫоп РеаЖе у : сЬаг; Действие: Возвращает символ, соответствующий нажатой клавише. Ис- пользуя функцию Огб, можно получить код нажатой клавиши. Если нажата служебная клавиша (например, клавиша перемеще- ния курсора), то функция кеаЖеу возвращает символ с кодом 0. В этом случае для идентификации служебной клавиши следует еше раз вызвать функцию ЕеаЖеу, которая теперь вернет код служебной клавиши.
Ниже приведены коды некоторых часто используемых клавиш Клавиша Код <Евс> 27 <Васкзрасе> <Еп1ег> 8 13 <8расе> сКурсор вверх> сКурсор вниэ> сКурсор влево сКурсор вправо 32 0;72 0;80 0;75 0;77 Тех1ВаскСгоипд Синтаксис: ргосеЗиге Тех^ВаскСгоипй(1[вет; Ьу^е); Действие: Задает цвет фона сообщений, выводимых инструкциями иглде и игхееХп. В качестве параметра Цвет может использоваться одна из перечисленных ниже именованных констант. Константа Цвет Номер цвета В1аск Черный 0 В1ие Синий 1 Сгееп Зеленый 2 Суап Бирюзовый 3 Кеб Красный 4 МадепЪа Сиреневый 5 Вгоът Коричневый 6 ЫдЪЁбгау Белый 7
Тех1Со1ог Синтаксис: ргоседиге ТехХ:Со1ог (Цвет: Ьуге) ; Действие: Устанавливает цвет символов сообщений, выводимых инструк- циями мг1де и иг1ье1п. В качест ве параметра цвет может исполь- зоваться одна из перечисленных ниже именованных констант. Константа Цвет Номер цвета В1аск Черный 0 В1ие Синий 1 Сгееп Зеленый 2 Суап Бирюзовый 3 Кед Красный 4 МадепЪа Сиреневый 5 Вгоутп Коричневый 6 ЫдНШгау Белый 7 БагкЗгау Серый 8 Ыдк1:В1ие Голубой 9 ЬхдМСгееп Светло-зеленый 10 ЫдЪЪСуап Светло-бирюзовый 11 ЫдН^Кед Светло-красный (алый) 12 ЫдкеМадепйа Светло-сиреневый 13 Уе11о>/ Желтый 14 ЮМ^е Белый, яркий 15 ШЬегеХ Синтаксис: ГипсЪхоп ЮИегеХ: Ьу^е;
Действие: ‘ Возвращает координату х курсора в текущем окне, заданном процедурой изпйсн. УУЬегеУ Синтаксис: СипсЫоп НЪегеУ: ЬуЪе; Действие: , г ... Возвращает координату у курсора в текущем окне, заданном процедурой И1пс1ом. И/7л</омг Синтаксис: рсосесЕихе Шпс1о>* (х1, у!, х2, у2: ЬуТ:е) ; • ’ * '. >. Действие: Определяет окно — область экрана. Параметры х1,у1 з^щают ко- ординаты левого верхнего угла окна, а параметры х2,у2 — пра- вого нижнего угла.

Приложение Вывод иллюстраций В языке ТигЪо Разса! нет стандартной процедуры, которая обес- печивала бы вывод на экран картинки, находящейся в файле. Программист сам может разработать такую процедуру. Однако эта задача является довольно сложной. Поэтому ниже приведен текст разработанной автором функции огаи, которая выводит на экран 16-цветную картинку, созданную в среде \\/тс1оу\ напри- мер, при помощи графического редактора Ратк { (с) Культин Н. Б.г 2000 } { Выводит 16-цветную картинку, содержимое Ьшр-файла } ГипсЪюп Пгаи(х0,у0: тпседег; Тпаже: збгхпд; Сгапзрагепс: Ьоо1еап ):1пЬедег; { х0,у0 — координаты левого верхнего угла области вывода; Тпате — имя файла картинки; ЪгапзрагепИ = Тгие — не выводить точки, цвет которых совпадает с цветом левой нижней точки картинки. Значения функции: успех — высота картинки в пикселах; -1 — не найден файл; -2 — картинка не является 16-цветной. } 1аЬе1 Ьуе;
сопзЪ ( таблица преобразования кодировки цвета из Ю1пскжз в ЕЮЗ } со!ог: аггау[0..15] оГ Ьу1:е « (0,4,2,6,1,5,3,7,8,12,10, 14,9,13,11,15); { Прочитав из Ьтр-файла эту запись, можно получить информацию с находящейся в это!и файле картинке: размере и кол-ве цветов. } Ьтр±п1о - гесогс! П1,Ь2: сЬаг; { файл должен начинаться буквами ВМ } 31 ге: 1опд1пб; { размер файла, байт } Незе^еб ц 1опд1пЦ; { резерв, не используется } ОХГзеХ: 1ог_д1п1; { смещение данных относительно начала файла } Ь: 1опд1п1; ( не используется ] ХопдитЬ; { ширина картинки ] НехдЫ: Хопдхп-е; { высота картинки } Р1апз: могб; { кол-во планов, должно содержать 1 } Ьрр: могс); { кол-во битов на пиксел (1, 4, 8 или 24 ) еп<1; уаг Г: П1е Ьгпр1п1о; { ятя получения информации с картинке } Ьшр€: Ше оГ ЬуХе; { для чтения картинки } гез: хпДедег; { код ошибки открытия файла } хпХо: ЬтртпГо; х,у:1п!едег; { координаты пиксела } Ь: ЬуЪе; { байт, прочитанный из файла ) ЬН: ЬуЪе; { сдвинутые на четыре разряда четыре старшие бита прочитанного байта } Ы: Ъу^е; { четыре младшие бита прочитанного байта } пЬ: хпЪедег; { кол-во байт (кратное четырем) соответствующее строке ) пр: 1п1:едег; { кол-во выведенных пикселов строки ] ЪрсоХог: Ьу1е; { "прозрачный" цвет. Закрашенные этим цветом точки картинки на экран не выводятся } 1,3 : Хпбедех;
Ьедхп аззхдп (С, Спате); {$1-4 гезеЬ(С); ($!+} гез: =10Кези1Ь; хС гез о 0 ЬЪеп Ьедхп Бгак;--1; { не найден файл картинки } доЪо Ьуе; епЛ; геасЦС, СпСо); { читаем информацию о картинке } с1озе(С); { и закрываем файл } хС СпСо.Ьрр о 4 ЪЬеп Ьедхп ЮгаУ7:==-2; { картинка не 16-цветная } доЪо Ьуе; епЛ; *ч •- х:*=хО; у:=уО+1пСо.ЬехдЬЬ; пЬ:= (хпСо.мхЛЬЬ сЬлг 8)*4; хС (1пСо.ю1сШ1 пюЦ 8) о 0 ЬЪеп пЬ:=пЬ+4; аззСдп (ЬтрС, Спате); гезеС (ЬтрС); зеек(ЬтпрС, СпСо.оССзеС); хС ЫапзрагепС €Ьеп Ьедхп геасЦЬтрС,Ь) ; Срсо1ох:=Ь вЪг 4; зеек(ЬтрС,хпСо.оССзеЬ); еп<1 е1ее ЪрсоСог := 17; { в качестве прозрачного зададим несуществующий цвет } 1:=1 Ъо СпСо.ЪехдЫ: Ло Ьедхп пр:^0; {кол-во выведенных пикселов }
Лог з:=1 Ьо пЬ бо { вывод строки } Ьедхп { 1Л пое ЕОГ(ЬпрТ) ЪЬеп } • геаа(ЬтрГ,Ь); ±Л пр < 1пЛо.м1сШ1 ЪЬеп Ьед±п Ы1:=Ьйа4; ' : хЛ ЬЬ О ЬрсоХог ЪЬеп риЪрххе!(х,у,со1ог[ЬЪ]); 1пс(х); ' > ; > 1пс(пр); л • еп4; хЛ пр < хпГо •уабЪЬ ЪЬеп Ьедхп Ы:== Ъ апд 15; •. ? 1Л Ы <> ^рсо1ог Ишп рипрххе! (х,у,со!ог[Ы]); 1пс(х); хпс (пр); епб; епб; х:=хО; бес (у); «пб; . л, ... л < .. с1озе (ЬпфЛ) ; Огак хпЛо.ИехдЬЪ; Ьуе: епб;
Таблица кодировки символов Символы, имеющие коды от 0 до 127: 0- 16- ► 32- 48- 0 64- © 80- Р 96- ‘ 112- р 1- © 17- ч 33- ! 49- 1 65- А 81- а 97- а из- я 2“ ® 18- X 34- " 50- 2 66- В 82- К 98- Ь 114- г 3- V 19- 1! 35- # 51- 3 67- С 83- 5 99- с 115- 5 4- 4 20- Т 36- $ 52- 4 68- 0 84- Т 100- с! 116- 1 5- ♦ 21- § 37- % 53- 5 69- Е 85- и 101- е 13 7- и 6- ♦ 22- - 38- & 54- 6 70- Р 86- V 102- Т 118- V 7- 23- X 39- 1 55- 7 71- С 87- V/ 103- о 119- V/ 8- 24- Т 40- ( 56- 8 72- Н 88- X 104- А 120- х 9- о 25- X 41- 3 57- 9 73- I 89- V 105- 1 121- у 10- 26- - 42- * 58- : 74- 3 90- 2 106- 1 122- 2 11- <5 27- - 43- + 59- ; 75- К 91- [ 107- к 123- { 12- 2 28- и 44- , 60- < 76- и 92- \ 108- 3 124- 13- 29- - 45- - 61- = 77- М 93- ] 109- ш 125- ] 14- Л 30- А 46- . 62- > 78- М 94- Л 110- п 126- - 15- о 31- у 47- / 63- ? 79- 0 95- _| из - о 127- 0 Символы, имеющие коды от 128 до 255: 128- А 144- Р 160- а 176- Ш 192- 1 208- * 224- р 240- Ё 129- Б 145- С 161- 6 177- Ш 193- 209- у 225- с 241- ё 130- В 146- Т 162- в 178- В 194- - 210- п 226- т 242- € 131- г 147- У 163- г 179- | 195- Г 211- 1' 227- у 243- е 132- Д 148- Ф 164- д 180- - 196- - 212- 228- ф 244 - I 133- Е 149- X 165- е 181- 1 197- 4- 213- г 229- х 245- 1 134- Ж 150- Ц 166- ж 182- Х| 198- = 214- л- 230- ц 246- У- 135- 3 151- Ч 167- з 183- т 199- 215- 4 231- ч 247- у 136- И 152- Ш 168- и 184- ч 200- & 216- - 232- ш 248- * 137- Й 153- Щ 169- й 185- { 201- !г 217- 3 233- щ 249- * 138- К 154- Ъ 170- к 186- И 202- Л 218- г 234- ъ 2 50- 139- Л 155- Ы 171- л 187- 51 203- 1г 219- | 235- ы 251- ^1 140- М 156- Ь 172- м 188- =« 204- (!= 220- и 236- ь 2 52- № 141- И 157- Э 173- н 189- 205- 221- Г 237- э 253- С 142- 0 158- Ю 174- о 190- 206- * 222- | 238- ю 2 54- 143- П 159- Я 175- п 191- п 207- 22 3- 239- я 255- Символы с кодами 7, 8, 10 и 13 являются служебными и на эк- ране не отображаются. Каждому служебному символу соответст- вует определенное действие. Код символа 07 Действие Короткий звуковой сигнал 08 Перемещение курсора влево на одну позицию 10 Перемещение курсора на следующую строку без изменения его положения в колонке 13 Перемещение курсора в начало текущей строки
Представление информации в компьютере Десятичные, двоичные и шестнадцатеричные числа В повседневной жизни человек имеет дело с десятичными чис- лами. В десятичной системе счисления для представления чисел используются цифры от 0 до 9. Значение числа определяется как сумма произведений цифр числа на их весовые коэффициенты, которые зависят от места цифр в числе. Весовой коэффициент самой правой цифры равен единице, цифры перед ней — деся- ти, затем ста и т. д. Например, число 2703 можно представить как 2x1000 + 7x100+0x10 + 3x1. Если места расположения цифр (разряды) в числе пронумеро- вать справа налево и самой правой позиции присвоить номер ноль, то можно заметить, что вес 1-го разряда равен 1 -ой степени десятки (рис. 1). Номер разряда Вес разряда Рис. 1. Вес разрядов десятичного числа Для внутреннего представления чисел в компьютере использует- ся двоичная система счисления. Двоичные числа записываются при помощи двух цифр — нуля и единицы. Как и десятичная, двоичная система — позиционная. Весовой коэффициент разря- да 1-го равен двум в ной степени (рис. 2). Двоичные числа наиболее точно отражают состояние памяти, регистров процессора и внешних устройств. Вместе с тем, рабо-
тать с двоичными числами не совсем удобно, т. к. приходится записывать слишком много цифр. Поэтому была разработана шестнадцатеричная система счисления, позволяющая компактно записывать двоичные числа и обеспечивающая простой способ перевода двоичного числа в шестнадцатеричное и обратно. ^7 6 5 4 3 2 1 0 1-------------Номер разряда Рис. 2. Вес разрядов двоичного числа Примечание ) Следует отметить, что десятичные числа можно также рассматри вать как компактное представление двоичных чисел, однако про- цесс перевода двоичного числа в десятичное и обратно нельзя назвать простым. В основе шестнадцатеричной системы счисления лежит тот факт, что, используя четыре двоичные цифры, можно записать шестнадцать чисел (максимальное значение четырехразрядного двоичного числа равно пятнадцати). Схема получения шестна- дцатеричного числа из двоичного представлена на рис. 3. Цифры двоичного числа делятся на группы по четыре, каждой группе ставится в соответствие сначала десятичное число, яв- ляющееся эквивалентом четырехзначного двоичного, затем по- лученное десятичное число записывается шестнадцатеричной цифрой. Ниже приведены десятичные числа (от нуля до 15) и соответствующие им шестнадцатеричные цифры.
1011 0101 Двоичное ч чело, оаз/еленное на группы г о четыре бита 11 5 Десятичные цифры в 5 Шестнадцатеричные цифры Во Шестнадцатеричное число Рис. 3. Схема получения шестнадць-еоичного числа из двоичного Десятичное число Шестнадцате- ричная цифра Десятичное число Шестнадцате- ричная цифра 0 0 8 8 1 1 9 г 2 2 10 А 3 3 11 в 4 4 12 с 5 5 13 0 6 6 14 Е 7 7 15 Е 8 8 В тексте программы перед первой цифрой шестнадцатеричного числа ставится значок $, например: $2а, $ег, $01. Память компьютера В памяти компьютера числа хранятся в виде битов. Каждый бит может принимать значение одной двоичной цифры Следова- тельно, значением бита может быть ноль или единица. Восемь
битов объединены в байт. Максимальное число, которое можно записать при помощи восьми двоичных цифр, — это 111 11111, что соответствует десятичному числу 255, минимальное — ноль. Поэтому, значением байта может быть число от нуля до 255. Переменные хранятся в памяти. Так как переменные различных типов могут принимать различные значения, то для их хранения нужен разный объем памяти. Память под переменные выделяет- ся в байтах (целое число). Например, значением переменной типа сИаг может быть любой из 256 символов. Поэтому для хра- нения переменной такого типа достаточно одного байта. Значе- нием переменной типа тптедег может быть число от —32 768 до 32 767 (65 535 значений). Для хранения переменной этого типа требуется два байта. Очевидно, что чем больше диапазон значе- ний типа, тем больше байтов нужно для хранения переменной этого типа. Тип переменной Занимаемая память, байт Диапазон значений СНАК 1 Любой символ 8ТК]ИС 256 Строка до 256 символов 8ТК1ЫС[Ц] 1 хп Строка дс п символов ВУТЕ 1 0-255 ИОКС 2 0-65 535 ГМТЕСЕК 2 -32 768-32 767 ЬОЫСЮТ 4 -2 1 47 483 648-2 147 483 647 КЕАЬ 6 2.9Е-39—1,7е38 81ЫСЬЕ 4 1.5Е-45-3 ае38 СООВЕЕ 8 5.0Е-324—1,7е308 ЕХТЕПСЕС 8 3.4Е-4932-1.1 е4932 В программе для одного и того же значения можно использовать переменные разного типа (при этом они будут занимать разный объем памяти). Например, если в программе используется пере-
менная оау (число месяца), то для нее можно задать типы ьусе, ±пседег или 1опд±пс В первом случае будет заня г один байт па- мяти, во втором — два, в третьем — четыре. Очнако реально будет использоваться только один байт, а остальные — просто заняты. Поэтому следует подбирать наиболее подходящий тип для каждой переменной. Особое внимание нужно обращать на описание строковых переменных и массивов. Выделяя память для строковых переменных, помните, что если не указана предельная длина строки, то переменной выделяет- ся 256 байтов. При объявлении переменной, предназначен- ной, например, для хранения имени человека, следует писать пате:зСг1па[30], а не пате:зСга.пд. Каждому массиву программы выделяется память, объем которой определяется как типом элементов массива, так и их количест- вом. Например, для хранения двумерного массива вещественных чисел (например, 20x20) нужно более трех килобайт памяти (20x20x8 = 3200). Хотя объем памяти компьютера кажется неограниченным, но если ее нерационально использовать, то в один прекрасный момент па пяти может не хватить.
Список ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ 1. Вирт Н. Алгоритмы и структуры данных' Пер. с англ — М.: Мир, 1989. — 360 с.: ил. 2. Зелковиц М Шоу А., Гэннон Дж Принципы разработки программного обеспечения Пер. с англ — М.: Мир, 1982. — 386 с.: ил. 3. Культин Н. Б Программирование в ТшЬо Разса! 7.0 и Ве1рЫ / Второе издание, переработанное и дополненное. — СПб.: БХВ — Санкт-Петербург, 1999. — 416 с.: ил. 4. Культин Н. Б. Программирование на ОЬ]Ссг Разса! в Бс!рЫ 5. СПб. БХВ — Санкт-Петербург, 1999 — 464 с.: ил. 5. Практическое руководство по программированию: Пер. с англ. Б. Мик, П Хит, Н. Рашби и др., под ред. Ь. Мик. П. Хит, Н. Рашби. — М.: Радио и связь, 1986. — 168 с.: ил. 6. Фокс Дж Программное обеспечение и его разработка: Пер. с англ. — М Мир, 1985. — 368 с.: ил. 7. Энциклопедический словарь юного математика. Сост. А. П Са- вин. — М.: Педагогика, 1989.—352 с.: ил. 8. Язык компьютера: Пер. с англ. / Пол ред. и с предисл. В. М- Курочкина — М.. Мир, 1989. — 240 с.: ил
Предметный указатель А И Алгоритм Евкли 1а 44 Игра "Азбука морзе" 52 Б "Угадай число" 42, 52 Интеграл 39 Байт 251 Бит 250 К Код сим зола 44. 45 в Ввод из файла 67 Вывод в файл 65, 69 ил люс грации 243 на принтер 69 м Магический квздр я 50 Массив поиск минимального (максимального] элемента 47 Г поиск элемента 48, 49 слияние 49 График 61, 62, 6т < ортировка 49 Мультипликация 62, 64 д Деловая гра$ ика 62. 63 Диаграмм 1 62 н Наибольший общий делителе 44
п Поиск в массиве 48 в последовательности 42 в уп эрлдоченном массиве 49 Преобразование в с грочные 45 двоичное в десятичное 46 десятичное в двоичное 38, 39 десятичное в другое 46 десятичное в шестнадцатеричное 46 шее гнадиатеричное в деечт ичное 46 Программа т естирования 39, 67 Простое число 42 Процедуры и функции Лк 219 Аррепд 234 Аге 224 АгсГап 2] 9 Аззщп 234 Ва, 225 ВагЗГ) 225 Од 223 Сис1е 225 С1оье 234 С1гЕо1 236 С1г8сг 236 Солса! 223 Сору 223 Соз 219 Ое1ау 236 Пе1е!е 223 ЫегесЮгарй 226 Бкроье 237 ЕШрзе 226 ЕОР 23/| Ео1п 237 Егазге 235 Ехр 220 СеГХ 226 СоЮXV 237 С1 арЬКе$ик 226 Нак 237 1пкОгар11 227 1пг 221 ЮКеыШ 235 Еегщй 224 Ыпе 227 Ыпе Го 227 Ьп 220 Моу< Ке1 228 МоуеТс 228 1Челу 238 ОшТех! 228 ОшТех1Х'У 228 РагатСоип! 238 РагаюЗц 238 Р1е811се 229 Роз 224 Ри:Р1хе1 229 Капйот 221 КапЛогтге 221 КеаоКеу 238 Кес1ап§1е 229 Кезе( 235 Кемке 236 Коппе! 222 Зесюг 230 8е1Со1ог 230 8еГН118гу1е 231 8е1 Ыпе8!у1е 232 8е1 Гех81у1е 233 8т 220 8цг 220 8чп 220 8г 222 ТехгВаскС) оипб 239 Тех(Со101 240 Тгипс 222 Уа! 222 ЗУпегеХ 240 Ун.егеУ 241 ЗМпеклу 241
Система счисления двоичная 248 .' десятичная 248 шестнадцатеричная 249 - Ч -ч МабсЫа^^; ч??' методом "пузырька"? 49 г методом обмена 49 ' К :. . \:о;< т' , шж Таймер 43 Ф : л Файл добавление 65 -Н ПрО&МЯДр^б^ >;^<4:Э€ЙЙ Й создание 65 ас • ., < :- .ЗеКГиГрО'-. Число "№43 Чтение «Йз фаШ 65 Щестнздиатер^яяые числа*45. 250 Л ' К'г.к??;3%Ч'Ь и "'.

Н. Культин ТигЬо Ра$са1 в задачах и примерах В книге собрано множество полезных и занимательных задач для начинающих программистов. Решив задачу самостоятельно, есть возможность сравнить результат с приведенным в книге. Помимо примеров задач и решений содержатся справочные сведения по языку программирования ТигЬо Равса1. • Использование инструкций ТигЬо Равса! • Работа с символами и строками • Сортировка и поиск в массиве • Работа с графикой • Вывод информации в файл и на принтер • Использование рекурсии Книга-почтой ВНУ Адрес: 199337, Санкт-Гетербур! а/я 194 Тел. (8!2) 541 8551 Факс (812) 541-8461 Е-таН: Тгабе^Ьбу.врЬ.аи, 1п1егпе1: мму'.ЬРу.ги