- •Загальні рекомендації
- •. Огляд засобів розробки програм
- •1 Загальні поняття
- •2 Системи програмування
- •3 Технології програмування
- •3.1 Алгоритмічне (модульне) програмування
- •3.2 Структурне програмування
- •3.3 Подієво-орієнтоване програмування
- •3.4 Об'єктно-орієнтоване програмування
- •3.5 Візуальне програмування
- •Запитання для контролю та самоконтролю
- •. Основні поняття алгоритмізації
- •1. Поняття алгоритму. Властивості алгоритму
- •2. Способи подання (опису) алгоритму
- •3. Правила оформлення блок-схем алгоритмів
- •4. Базові алгоритмічні конструкції
- •Запитання для контролю та самоконтролю
- •. Етапи розв’язування прикладних задач
- •1. Постановка задачі
- •2. Побудова моделі
- •3. Розробка алгоритму
- •4. Вибір структур даних
- •5. Розробка програми
- •6. Тестування програми
- •7. Аналіз результатів роботи програми
- •8. Корисні технологічні правила програмування
- •Запитання для контролю та самоконтролю
- •V. Практикум з програмування. Turbo pascal
- •Робота з інтегрованим середовищем розробника
- •Запитання для контролю та самоконтролю
- •Тема №1 структура програми. Лінійна програма. Введення/виведення. Типи даних Теоретичні відомості
- •Var перелік імен змінних та їх типів;
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема №2 програми розгалуженої структури Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема №3 цикли з параметром Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема №4 цикли з невідомим числом повторень Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема №5 використання масивів Теоретичні відомості
- •Var Ім'я : array[поч_індекс . . Кін_індекс] of Тип_даних;
- •Var Ім'я:array[поч_індекс1..Кін_індекс1,
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема №6 символьний тип даних, рядки Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема № 7 використання допоміжних програм Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема № 8 використання множин Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема № 9 обробка записів Теоретичні відомості
- •Var Ім’я_запису : Ім’я_типу;
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Тема № 10 організація обробки файлів Теоретичні відомості
- •Приклад
- •Варіанти завдань
- •Запитання для контролю та самоконтролю
- •Рекомендована література
Приклад
Сформувати дві кінцеві множини, заповнивши їх довільними латинськими літерами від A до Z. Обміняти місцями обидві множини, не вводячи додаткової змінної множинного типу.
Відомі значення елементів двох кінцевих символьних множин.
Ми не маємо додаткової інформації про множини, у завданні не оговорюється чи повинні множини мати пусте перетинання. Для розробки алгоритму розв’язання задачі (враховуючи обмеження на введення додаткової змінної множинного типу) корисними будуть круги Ейлера, за їх допомогою простіше визначити формули перетворень над множинами.
Розглянемо два варіанти можливих вхідних даних:
Перший варіант - множини не перетинаються.
Ми автоматично попадаємо в умови відомої задачі з теорії алгоритмізації та програмування, коли необхідно обміняти місцями значення двох змінних величин, не користуючись третьою. Якщо маємо множини a та b, треба скористатися трьома такими формулами перетворень:
a := a+b
b := a-b
a := a-b
Другий варіант - множини перетинаються.
Коли множини перетинаються, формули перетворення мають такий вигляд:
a :=a+b-a*b
b :=((a+b)-a)+(a-b)
a :=((a+b)-a)+(a-b)
Зрозуміло, що другий варіант є більш складним, але й більш загальним, він включає в себе перший (більш обмежений). Тому при розв’язанні будемо використовувати формули, наведені у другому варіанті.
Алгоритм:
Типи даних обираємо такі: litera - символьний; a, b - множини символів.
Текст програми:
program p8;
var a,b: set of char;
litera:char;
begin
a:=[‘F’,’I’,’R’,’S’,’T’]);
b:=[‘S’,’E’,’C’,’O’,’N’,’D’];
a:=a+b-a*b;
b:=((a+b)-a)+(a-b);
a:=((a+b)-a)+(a-b);
write(‘set a = ’);
for litera:=’A’ to ‘Z’ do
if litera in a then write(litera);
writeln;
write(‘set b = ’);
for litera:=’A’ to ‘Z’ do
if litera in b then write(litera);
readln
end.
Тестовий приклад:
До перетворення множина a складається з елементів-літер F, I, R, S, T; множина b складається з елементів-літер S, E, C, O, N, D.
Після перетворення маємо a = {S, E, C, O, N, D}, b = {F, I, R, S, T}.
Робочий розрахунок:
Програма вивела такі результати роботи
set a = SECOND
set b = FIRST
Варіанти завдань
Для інтервалу (1,255) побудувати множину чисел, кратних 3, використовуючи відому властивість: якщо сума цифр числа кратна 3, тоді все число ділиться на 3.
Вхідними даними для програми є текст - слова з рядкових російських літер, розділені комою. Побудувати множину, що містить усі гласні літери, які входять до кожного слова.
Для проміжку [1,255] побудувати множину чисел, кратних 11, використовуючи таку властивість: якщо суми цифр, що знаходяться на парних і на непарних місцях числа однакові, тоді все число ділиться на 11.
Побудувати множину, що складається з усіх цілих чисел діапазону 1..255, що можуть бути подані у виді суми квадратів натуральних чисел n і m.
Для інтервалу від 1 до 255 побудувати множину чисел, кратних 5, використовуючи властивість подільності на 5: якщо в числі остання цифра 0 або 5, тоді все число ділиться на 5.
Скласти множину всіх пар простих чисел інтервалу від 1 до 255. Пара простих чисел - це два простих числа, різниця між якими дорівнює 2 (наприклад, 3 і 5).
Для інтервалу від 1 до 255 побудувати множину чисел, кратних 9, використовуючи властивість подільності на 9: якщо в числі сума цифр ділиться на 9, тоді все число ділиться на 9.
Арифметична прогресія задана натуральними числами a1 і d. Побудувати множину, що складається з усіх елементів цієї прогресії, що входять у діапазон [0, 255].
Для інтервалу від 1 до 255 побудувати множину чисел, кратних 4, використовуючи властивість подільності на 4: якщо число, утворене двома останніми цифрами ділиться на 4, тоді все число ділиться на 4.
Побудувати множину, що містить усі цифри, які не входять у десятковий запис натурального числа n.
Побудувати множину, що складається з спільних дільників двох чисел А та В (А, B=1,…,255).
Вхідними даними для програми є текст - слова з рядкових латинських літер. Побудувати множину, що складається з літер, які входять у текст не менше двох разів.
Заповнити множину цифрами чисел Каталана < 256. Числа Каталана визначаються формулами , .
Побудувати множину, що складається з простих дільників деякого натурального числа А.
Побудувати множину, що складається з досконалих чисел в інтервалі від 1 до 255. Досконалим називається таке число, що дорівнює сумі усіх своїх дільників, за винятком самого числа, наприклад, 28=1+2+4+7+14.
Три множини заповнені n випадковими натуральними числами з діапазону 1..200. Знайти мінімальне із середніх арифметичних елементів цих множин.
Побудувати множину двозначних чисел, сума цифр яких дорівнює числу N.
Вхідними даними для програми є рядок символів. Сформувати множину, що складається з елементів цього рядка - цифр і знаків арифметичних операцій і підрахувати кількість елементів отриманої множини.
Побудувати множину, що складається з дружніх чисел в інтервалі від 1 до 255. Дружніми числами називається така пара натуральних чисел M і N, для яких сума всіх дільників числа M (крім самого числа M) дорівнює числу N, а сума всіх дільників числа N (крім самого числа N) дорівнює числу M.
Побудувати множину, що включає спільні кратні двох чисел А та В із діапазону 1,…,255.
Множина складається з n випадкових натуральних чисел із діапазону 1..255. Знайти найближчий до середнього арифметичного елемент множини.
Дві множини заповнені випадковою кількістю випадкових натуральних чисел < 100. Обчислити середнє геометричне максимальних елементів цих множин.
Вхідною інформацією для програми є n випадкових чисел з діапазону 1000..10000. Заповнити множину числами, що визначають кількість одиниць у двійковому представленні випадкових чисел.
Заповнити множину числами Мерсенна < 256. Число Мерсенна - це просте число, що може бути отримане за формулою 2n-1, де n теж просте число.
Скласти програму, що отримує множину всіх спільних шістнадцяткових цифр трьох натуральних чисел А, В, С.