Главная страница
Навигация по странице:

  • Доходы фирмы Кострючи

  • Расходы фирмы Мальвина (млрд. р.) Налоги Оборудование Пенсии Зарплата

  • Задачи для самостоятельной работы

  • Планета Расстояние до Солнца Относит. объем Относит. масса

  • Задачи для самостоятельной работы 3

  • Factorial(N

  • Л. И. Долинер основы программирования в среде pascalabc. Net учебное пособие


    Скачать 1.88 Mb.
    НазваниеЛ. И. Долинер основы программирования в среде pascalabc. Net учебное пособие
    Дата26.08.2022
    Размер1.88 Mb.
    Формат файлаpdf
    Имя файла978-5-7996-1260-3_2014 (2).pdf
    ТипУчебное пособие
    #653536
    страница9 из 11
    1   2   3   4   5   6   7   8   9   10   11
    Доходы фирмы "Кострючи"
    700 560 450 500 570 0
    100 200 300 400 500 600 700 1993 1994 1995 1996 1997
    с
    ум
    м
    а
    (
    в
    м
    лр
    д.
    ру
    б
    .)
    Рис. 4. Пример столбиковой диаграммы (гистограммы)
    Составьте программу, которая по введенным данным строила бы такую гистограмму на экране. Сделайте 2 варианта программы: из двумерных столбиков (рис. 4) и трехмерных параллелепипедов (рис. 5).
    Уточнение
    Программа будет универсальной только в том случае, если она будет работать для произвольного (например, от 1 до 100) набора чисел и для любых значений этих чисел. Чтобы столбики были пропорциональны и помещались на экране, требуется пропорционально увеличивать размеры столбиков, если значения чисел малы, и уменьшать, если они слишком велики (этот процесс назовем масштабированием).
    Цвета каждого из столбиков и подписи под ними также следует вводить.
    Доходы фирмы Кострючи

    100
    Рис. 5. Пример трехмерной гистограммы
    13. Напишите программу, которая строит круговую диаграмму, интерпретирующую последовательность заданных чисел (рис. 6).
    Расходы фирмы Мальвина (млрд. р.)
    Налоги
    Оборудование
    Пенсии
    Зарплата
    Рис. 6. Пример круговой диаграммы
    Подсказка
    Предположим, заданы числа 3, 5 и 2. Сумма этих чисел: 3 + 5 + 2 = 10. Сле- довательно, число 3 составляет 30 % от суммы, 5 – 50 % и 2 – 20 %; 30 % окружности – это 360

    0,3 = 108º, 50 % – 180º и 20 % – 72º. В этом случае вам следует построить окружность из 3 разноцветных секторов, значение кото- рых соответствует 108º, 180º и 72º. Это и будет круговая диаграмма, соответ- ствующая заданной последовательности чисел.
    Решите задачу в общем случае.
    14. Составьте программу, которая хранит информацию о вкладчиках банка.
    Программа должна по запросу выдавать: а) общую сумму всех вкладов зарегистрированных вкладчиков;

    101 б) список вкладчиков, размеры их вкладов и сумму денег, которые они будут получать в виде процентов, поскольку за хранение денег в банке вкладчикам полагается процент. В зависимости от вида вклада этот процент колеблется, например, от 1 до 10 %; в) информацию о конкретном вкладчике.
    15. Напишите программу, которая вводит фамилию и возраст посетителей поликлиники, а по окончании ввода печатает отдельные списки больных до 18 лет, от 18 до 50 лет и старше 50 лет.
    Подсказка
    По-видимому, в этой задаче вам понадобится один массив для хранения воз- раста, а еще один – для хранения фамилий.

    Пригласите преподавателя и продемонстрируйте ему сделанные вами про-
    граммы. Будьте готовы ответить на вопросы преподавателя.

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

    102
    Глава 21*
    СОРТИРОВКА МАССИВОВ
    Задание 150
    В электронном пособии (
    Examles\Пособие\index.html
    ) изучите раздел
    «Сортировка массивов». Ответьте на вопросы, приведенные в конце раздела.
    Задание 151
    Имеется список спортсменов, участвующих в соревнованиях по прыжкам в длину, и их результаты. Составить программу, которая позволит вывести список участников на экран дисплея в порядке занятых ими мест.
    Задание 152
    Введите и отладьте программу сортировки числового массива по возрастанию методом «всплывающего пузырька». Для того чтобы увидеть результаты работы программы, включите в нее ввод данных и печать результатов.
    Задание 153
    Измените программу так, чтобы массив сортировался в порядке убывания.
    Задание 154
    Еще одна модификация: замените числовой массив строковым и отсортируйте его в алфавитном порядке.
    Задание 155*
    Напишите алгоритм слияния двух массивов, отсортированных в порядке возрастания, в один массив, также отсортированный в порядке возрастания.
    Самый простой способ решения этой задачи состоит в том, чтобы попросту
    «склеить» эти два массива, а затем отсортировать получившийся массив, например, методом пузырька. Подсчитайте количество сравнений, которые придется выполнить.
    Другой путь – сразу помещать элементы в новый массив в нужном порядке, пользуясь тем, что исходные массивы уже упорядочены. Реализуйте эту идею. Подсчитайте количество сравнений и сопоставьте с предыдущим результатом. Понятно, что этот путь предпочтительнее.

    103
    Задание 156*
    Составить программу обслуживания конькобежных соревнований.
    Программа должна:
    1) обеспечивать ввод фамилии спортсмена и его результат;
    2) выводить после каждого ввода информации о спортсмене полного списка спортсменов (фамилии и результат) в порядке занятых мест.
    Задачи для самостоятельной работы
    1. Задан массив оценок ученика по предмету. Составьте программу, которая позволяет ввести эти оценки в массив и отсортировать их так, чтобы в начале списка были пятерки, далее – четверки, затем – тройки и двойки.
    2. Задан массив, содержащий оценки фигуристки. Составить программу, которая удаляет из массива максимальный и минимальный элементы и выводит оставшиеся результаты подряд в порядке убывания.
    3. Дан массив, содержащий список должностей всех сотрудников фирмы. Разу- меется, в этом списке некоторые должности могут повторяться. Нужно соста- вить штатное расписание, т. е. сделать из имеющегося списка два: в первом – название всех должностей (каждая из должностей в списке может встречаться только один раз), во втором – количество занятых ставок каждой из этих должностей. Массив должностей должен быть отсортирован по алфавиту.
    4. В массиве содержится информация о росте студентов группы. Массив упоря- дочен по убыванию. В группу перевели новенького. Составьте программу, которая в имеющийся массив вставит рост новичка так, чтобы массив остался также упорядоченным.
    5. Разработать процедуру, обеспечивающую реализацию алгоритма сортиров-
    ки вставками. Дана последовательность чисел a
    1
    , a
    2
    , …, a
    n
    . Требуется пере- ставить числа в порядке возрастания. Делается это следующим образом.
    Пусть a
    1
    , a
    2
    , …, a
    i
    – упорядоченная последовательность, т. е. a
    1
    a
    2
    ≤ … ≤ a
    i
    Берется следующее число (a
    i
    + 1), и вставляется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс произ- водится до тех пор, пока все элементы от (i + 1) до n не будут перебраны.

    104 6. Разработать процедуру, обеспечивающую реализацию алгоритма сортиров-
    ки Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два сосед- них элемента a
    i
    и (a
    i
    + 1). Если a
    i
    a
    i
    + 1, то продвигаются на один элемент вперед. Если a
    i
    > a
    i
    + 1, то производится перестановка и сдвигаются на один элемент назад. Составить алгоритм этой сортировки.

    Пригласите преподавателя и продемонстрируйте ему сделанные вами про-
    граммы. Будьте готовы ответить на вопросы преподавателя.

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

    105
    Глава 22*
    МНОГОМЕРНЫЕ МАССИВЫ
    Задание 157
    В электронном пособии (
    Examles\Пособие\index.html
    ) изучите раздел
    «Многомерные массивы». Ответьте на вопросы, приведенные в конце раздела.
    Выполните тест по теме и продемонстрируйте оценку преподавателю.
    Задание 158
    Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по строкам.
    Задание 159
    Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам.
    Задание 160*
    В программу обслуживания шахматного турнира целесообразно включить процедуры ввода данных после каждой встречи и печати турнирной таблицы.
    Напишите эти процедуры, используя заготовки, рассмотренные в теории.
    Напишите и отладьте головную программу, вызывающую эти процедуры.
    Задание 161*
    Обеспечьте выдачу всей турнирной таблицы и выдачу списка участников турнира, упорядоченную по количеству набранных ими очков.
    Задание 162*
    Предусмотрите также возможность упорядочить таблицу так, чтобы фамилии участников стояли в алфавитном порядке.
    Задание 163
    Имеется таблица, включающая фамилии студентов и оценки за 5 экзаменов.
    Составить программу: а) вывода фамилий отличников; б) «
    « студентов, не имеющих оценки «неуд»; в) «
    «
    « имеющих только оценки «уд»;

    106 г) вывода фамилий студентов, обучающихся только на «хорошо» и «отлично»; д) «
    «
    « имеющих не более одной «уд»; е) вывода фамилий учащихся, имеющих двойки; ж) определения номера предмета, по которому учащиеся учатся хуже всех; и) то же, лучше всех.
    Задание 164
    Дана следующая таблица, содержащая данные о планетах Солнечной системы:
    Планета
    Расстояние
    до Солнца
    Относит.
    объем
    Относит.
    масса
    Меркурий
    57,9 0,06 0,05
    Венера
    108,2 0,92 0,81
    Земля
    149,6 1,00 1,00
    Марс
    227,9 0,15 0,11
    Юпитер
    978,3 1345,00 318,40
    Сатурн
    1429,3 767,00 95,20
    Напишите программу, которая определяет параметры: а) наиболее и наименее удаленные от Солнца планеты, а данные таблицы сортирует по возрастанию масс планет; б) средний объем планет Солнечной системы и находит среди них ту, объем которой наименее отличается от среднего. Сортирует данные таблицы по возрастанию расстояний до Солнца; в) самую тяжелую и самую удаленную от Солнца планеты. Сортирует данные таблицы по возрастанию объемов планет.
    Задачи для самостоятельной работы
    3
    1. Дана целочисленная таблица размером m×n, в которой имеется два одинако- вых элемента. Найти индексы этих элементов.
    3
    Использованы задачи из электронных сборников: Программирование / С. А. Абрамов [и др.].
    URL: http://math.ivanovo.ac.ru/science/textbooks/Schanicina2006/I_Pascal/abramov_zadachi.pdf ;
    Паскаль – задачи и решения. URL: http://programm.ws/page.php?id=494 (дата обращения
    29.05.2014).

    107 2. Написать программу, которая проверяет, является ли введенная с клавиатуры квадратная матрица магическим квадратом. Магическим квадратом называ- ется матрица, сумма элементов которой в каждой строке, в каждом столбце и по каждой диагонали одинакова (см. приведенный ниже рисунок).
    2 9 4 13 8 12 1 7 5 3 2 11 7 14 6 1 8 3 10 6 15 16 5 9 4 3. Латинским квадратом порядка n называется квадратная таблица размером
    n×n, каждая строка и каждый столбец которой содержит числа 1, 2, …, n. Со- ствавить программу, которая обеспечивает ввод целочисленной квадратной таблицы и проверку того, является ли она латинским квадратом.
    4. Написать программу игры «Угадай число». Правила игры следующие. Игра- ют двое. Один задумывает число, второй угадывает. На каждом шаге угады- вающий делает предположение, а задумавший число говорит, сколько цифр числа угаданы и сколько из этих цифр занимают правильные позиции в чис- ле. Например, если задумано число 725 и выдвинуто предположение, что за- думано число 523, то считаются угаданными две цифры (5 и 2) и одна из них
    (2) занимает верную позицию. Ниже представлен рекомендуемый вид экрана во время работы программы.
    Компьютер задумал трехзначное число. Вы должны его отгадать. После оче- редного числа вам будет сообщено, сколько цифр угадано и сколько из них находится на своих местах. После ввода числа нажимайте Enter. Для завер- шения игры нажмите Enter.
    Ваш вариант -> 123 Угадано: 0.На своих местах:0
    Ваш вариант -> 456 Угадано: 1.На своих местах:0
    Ваш вариант -> 654 Угадано: 2.На своих местах:2
    Ваш вариант -> 657 Угадано: 2.На своих местах:2

    108
    Ваш вариант -> 658 Угадано: 3.На своих местах:3
    *** ВЫ УГАДАЛИ ! ***
    Нажмите Enter для завершения.
    5. Написать программу-телеграф, которая принимает от пользователя сообще- ние и выводит его на экран в виде последовательности точек и тире. Вывод точек и тире можно сопроводить звуковым сигналом соответствующей дли- тельности. Азбука Морзе для букв русского алфавита приведена ниже.
    а
    .- б -... в .--- г --.
    д -.. е
    ж ...- 3 --..
    и
    .. и .--- к -.- л .-..
    м
    -- н -. о --- п .--.
    р .-. с ... т
    - у ..-
    ф ..-. x .... ц -.- . ч ---.
    ш --- щ --.- ъ -..- ы -.—
    ь -..- э ..-. ю ..-- я .-.-

    Пригласите преподавателя и продемонстрируйте ему сделанные вами про-
    граммы. Будьте готовы ответить на вопросы преподавателя.

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

    109
    Глава 23
    ПОДПРОГРАММЫ-ФУНКЦИИ
    Подпрограммы-функции предназначены преимущественно для вычисления какого-либо значения (числовое или текстовое). У них три основных отличия от процедур.
    Первое отличие – в записи заголовка. Заголовок функции имеет следующую структуру:
    function <имя>[(<список параметров>)]:<тип результата>;
    Функция может и не иметь параметров.
    Второе отличие заключается в том, что в теле функции хотя бы раз должно быть присвоено значение имени функции. Как правило, это значение и есть результат работы функции.
    Третье отличиезаключается в том, что результат функции должен быть использован либо в арифметическом, либо в логическом выражении.
    Функции так же, как и процедуры, описываются в блоке описания данных
    (как правило, после описания переменных). Общая структура функции:
    function <имя>[(<список параметров>)]:<тип результата>;
    <описание данных>
    Begin
    <тело функции>
    end;
    Рассмотрим пример вычисления факториала числа N. Известно, что N! =
    = N · (N – 1) · (N – 2) · (N – 3) ·...·2 · 1.
    Подпрограмма-функция для вычисления факториала может иметь следую- щий вид:
    Function
    Factorial(N:Integer) : Integer;
    var
    F,I : Integer;
    begin
    F:=N;

    110 for
    i:=N-1 downto 2 do F := F*i;
    Factorial:=F
    end
    ;
    Для вызова функции из основной программы или другой подпрограммы следует в выражении, где необходимо использовать значение функции, указать имя функции со списком фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами. Так вызов вышеописанной функции Factorial может иметь следующий вид:
    Part:=Factorial(20)/b;
    Вызывается функция Factorial с фактическим параметром 20 (параметр- значение)
    Part:=Factorial(M)+c/2;
    Вызывается функция Factorial с фактическим параметром М (параметр- переменная)
    Part:=Factorial(M+L);
    В качестве параметра передается выражение, значение которого должно иметь тот же тип, что и описанный в функции формальный параметр.
    Задание 165
    Запустите среду PascalABC.NET.
    Составьте программу вычисления величины S по формуле S = F(b) – F(a), где cos
    ( )
    ln(
    1)
    п
    ,
    ри
    0,
    если
    0.
    x
    F x
    x
    х
    х



     


    Вычисление функции F(x) оформите в виде подпрограммы-функции.
    Подберите тесты для проверки правильности работы программы. Если убедитесь, что ваша программа работает корректно, покажите ее преподавателю.
    Задание 166
    Вычисление значения функции y = x
    n
    может быть оформлено в виде рекурсивной функции:

    111
    Выполните следующие действия: а) загрузите файл
    lab23_1.pas и посмотрите, как это записано в виде рекурсивной подпрограммы-функции; б) используя эту функцию, напишите программу, которая для заданных значений N и M вычисляет и выводит на экран значение функции
    z = x
    n
    + y
    n
    ; в) попробуйте переделать подпрограмму-функцию таким образом, чтобы в ней не было рекурсии. Можно использовать простую итерацию:
    x
    n
    = x · x · x· . . . ·x (n – раз); г) запустите на выполнение программу с использованием своей новой процедуры. Оцените время работы программы и память.
    Задание 167
    Наверное, все вы умеете находить наибольшее кратное двух чисел.
    Попробуйте составить подпрограмму-функцию, которая будет находить наибольший общий делитель для двух положительных целых чисел.
    Задание 168
    Сравните свою подпрограмму-функцию с той, которая находится в файле
    lab23_2.pas
    . Составьте схему работы функции для чисел 9 и 12. Сколько раз будет вызываться функция? С какими аргументами? Попробуйте поработать с отладчиком и проверить свои рассуждения.
    Задание 169
    Составьте программу, которая позволяла бы определять наибольший общий делитель для трех заданных чисел.
    Задачи для самостоятельной работы
    1. Написать функцию, которая вычисляет объем цилиндра. Параметрами функ- ции должны быть радиус и высота цилиндра.
    1
    если
    0,
    если
    0 1,
    ,
    n
    n
    n
    x
    xx
    n




     


    112 2. Написать функцию, которая сравнивает два целых числа и возвращает ре- зультат сравнения в виде одного из знаков: >, < или =.
    3. Написать функцию, которая вычисляет значение ах. Числа а и х могут быть любыми дробными положительными числами.
    4. Написать функцию Dohod, которая вычисляет доход по вкладу. Исходными данными для функции являются: величина вклада, процентная ставка (годо- вых) и срок вклада (количество дней).
    5. Написать функцию Glasn, которая возвращает значение True, если символ, полученный функцией в качестве аргумента, является гласной буквой рус- ского алфавита.
    6. Написать функцию LTrim, которая удаляет начальные пробелы из строки, по- лученной в качестве аргумента.
    7. Написать функцию Sogi, которая возвращает True, если символ, полученный функцией в качестве аргумента, является согласной буквой русского алфавита.
    8. Написать функцию, обеспечивающую ввод с клавиатуры целого положитель- ного двухзначного числа. При нажатии пользователем какой-либо клавиши соответствующий ей символ должен появляться на экране только в том слу- чае, если этот символ является цифрой. Функция должна позволять пользова- телю редактировать введенное число при помощи клавиши. Если пользова- тель ввел хотя бы одну цифру, то при нажатии клавиши функция должна завершать работу и возвращать введенное пользователем число вызвавшей ее процедуре.

    Пригласите преподавателя и продемонстрируйте ему сделанные вами про-
    граммы. Будьте готовы ответить на вопросы преподавателя.

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

    113
    Глава 24
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта