Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Case Years of




Begin

....

End.

Begin

Else

Begin

End.

Else

Begin

Else

Begin

Else

Begin

End.

Begin

End.

Begin

Else

Begin

End.

Else

Begin

Else

If A*B-sqr(C)<=sqr(С) then writeln(‘Бабуся ошукана.’)

else writeln(‘Бабуся не ошукана.’);

If (A<>C) and (B<>C)

Then writeln(‘Город залишився іншої форми’)

If ((A=C)and(B/2=C))or((B=C)and(A/2=C))

then writeln(‘У бабусі квадратний город.’)

else writeln(‘У бабусі прямокутний город.’);

end;

End; Readkey;

ЗАДАЧА № 91

Умова: Трьом Товстунам подали на десерт кремові тістечка. Маса одного тістечка — Хкг, а маса Товстунів відповідно X1 кг,Х2 кг та Х3 кг. Перший Товстун з’їв N тістечок. Кожний наступний Товстун з’їдав у два рази більше від попереднього, але при цьому він не міг з’їсти більше половини своєї власної ваги. Скільки тістечок було з’їдено Товстунами за обідом?

Зверніть увагу на те, що другий та третій Товстуни за умовою можуть з’їсти тістечок у два рази більше, ніж попередній Товстун, але не можуть з’їсти більше половини своєї ваги. Тому фактично в задачі необхідно перевірити, чи не перевищує кількість тістечок, що може з’їсти кожний Товстун, дозволену масу, і у відповідності до цього підрахувати кількість тістечок, що були з’їдені.

Наприклад, якщо другий Товстун може з’їсти 2 N тістечок, то вага цієї їжі буде 2 N Хкг. Але за умовою він не може з’їсти більше половини своєї ваги, тобто більше ніж X1 /2 кг. Тому якщо вага тих тістечок, що Товстун може з’їсти, не перевищує поріг X1 /2 кг, то ми до загальної кількості тістечок додаємо всі можливі, тобто 2 N, якщо ж перевищує, то ми додаємо тільки ту кількість тістечок, що не дозволяє перевищити припустимий поріг, тобто X1 /2 /X (дозволена вага їжі поділена на вагу одного «тістечка). Якщо в цьому випадку число вийде нецілим, то це означає, що Товстун з’їв тістечко не повністю. Щоб такого не трапилось, ми робимо відкидання дробової частини після ділення за допомогою функції trunc.

Програма, що реалізує цей алгоритм, має наступний вигляд:

Program Example_91;

Uses crt;

Var X,X1,X2,X3:real;

N,Counter: integer; {N - кількість тістечок, що з’їв перший Товстун; Counter - загальна кількість з’їдених тістечок}

Clrscr;

Write(‘Введіть вагу тістечка: ‘);

Readln(X);

Write(‘Введіть вагу Товстунів (1-го, 2-го та 3-го): ‘);

Readln(X1, Х2, ХЗ);

Write(‘Введіть кількість тістечок, що з’їв перший Товстун ‘);

Readln(N);

If (X<=0)or(X1<=0)or(X2<=0)or(X3<=0)or(N<=0)

Then writeln(‘Помилкові вхідні дані’)

Counter:=N; {3’їв перший Товстун}

If N*2*X<=X2/2 Then Counter:=Counter+2*N

Else Counter:= Counter+ trunc(X2/2/X);

If N*4*X<=X3/2 Then Counter:=Counter+4*N

Else Counter:= Counter+ trunc(X3/2/X);

Writeln(‘Кількість з’їдених тістечок: ‘, Counters

End;

Readkey;

Домашнє завдання:

• Прочитати сторінки 59 - 65 запропонованого підручника;

• Задачі №87, 88,93,94.


ЗАНЯТТЯ 16. Використання вказівки розгалуження

Мета заняття: навчити складати алгоритми з використанням команди розгалуження та записувати їх мовою програмування.

Це заняття можна запропонувати в класах, де рівень підготовки з математики вищий за середній. Як правило, в таких класах кращерозв ‘-язуються задачі, що потребують логічного та образного мислення. Далі пропонується деякі з задач підвищеного рівня складності.

ЗАДАЧА № 120

Умова задачі: Дано натуральне число N (N>= 1000). Визначити суму першої і останньої цифр даного числа.

Для розв’язання цієї задачі ми скористаємося стандартними операціями цілочисельного ділення та остачі від ділення цілих чисел (операції div та mod). Нагадаємо, що результатом ділення числа націло на 10 буде ефект відкидання «молодшої» цифри числа (відповідно при діленні на числа 100, 1000, 10000 тощо будемо «відкидати» дві, три або чотири цифри числа). Результатом ж операції знаходження залишку від ділення на 10 буде остання цифра числа (відповідно при знаходженні залишку від ділення на 100, 1000, 10000 будемо отримувати дві останні, три останні, чотири останні цифри числа).

Наприклад:

234 div 10 = 23

9213 div 100 = 92

52 mod 10 = 2

2845 mod 1000 = 845.

Виходячи з усього сказаного, програма буде мати вигляд:

Program Example_120_2;

Uses crt;

Var N, First, Last: word;

{First - перша цифра числа; Last - остання цифра числа}

Clrscr;

Write(‘Введіть число: ‘);

Readln(N); Last:= N mod 10;

If (N>=0) and (N<10) then First:=0;

If (N>=10) and (N<100) then First:=N div 10;

If (N>=100) and (N<1000) then First:=N div 100;

If (N=1000) then First:=l;

Writeln(‘Сума першої та останньої цифр дорівнює’, First+Last);

Readkey;

ЗАДАЧА №128

Умова: Квадратний багаточлен заданий коефіцієнтами а, b, с,де а ≠ 0. Визначити, чи корені відповідного рівняння є парними числами.

Для розв’язання цієї задачі необхідно нагадати дітям алгоритм знаходження коренів квадратного рівняння:

1) обчислити дискримінант;

2) якщо ми отримали від’ємне число, то коренів для розв’язку квадратного рівняння з даними коефіцієнтами а, b, с не існує;

3) якщо дискримінант невід’ємний, то корені рівняння знаходяться.Парність коренів можна визначити, використовуючи операцію знаходження залишку від цілочисельного ділення на 2 (парне число при цьомуу залишку має 0, а непарне — 1). Зверніть увагу на те, що парність абонепарність можна визначити тільки для цілих чисел.

Program Example_128_l;

Uses crt;

Var a,b,c,D,Xl,X2:real;

{a,b,c - коефіцієнти квадратного рівняння; D - дискримінант; XI, X2 - корені квадратного рівняння}

Clrscr;

Write (‘Введіть коефіцієнти квадратного рівняння а,b,с: ‘);

Readln(a,b,c);

If a=0

Then writeIn(лПомилка вхідних даних’)

D:=sqr(b)-4*a*c;

If D<0

Then writeln(‘Рівняння не має розв»язків.’)

XI:=(-b-sqrt(D))/(2*a); X2:=(-b+sqrt(D))/(2*a);

Writeln(‘Корені рівняння:’);

Writeln(‘Xl=’,X1:8:2);

Writeln(‘X2=’,X2:8:2);

If (round (XI) OX1) or (round(X2) <>X2)

Then writeln(‘Корені рівняння не є цілими числами.’)

if (round(Xl) mod 2 =0) and (round(X2) mod 2 =0)

then writeln(‘Корені рівняння парні’)

else writeln(ЛКорені рівняння непарні’);

End;

End;

Readkey;

ЗАДАЧА №130

Умова задачі: Дано дійсні додатні числа а, b, с, х, у. Визначити, чи пройде цеглина з ребрами а, b, с у прямокутний отвір зі сторонами х та у. Проштовхувати цеглину дозволяється лише так, щоб кожне з її ребер було паралельним чи перпендикулярним кожній зі сторін отвору.

Для розв’язання цієї задачі пропонується впорядкувати розміри отвору та розміри цеглини за зростанням, тобто досягти того, щоб було а<=b<=c та х<=у. Тоді перевірка зведеться до порівняння розмірів отвору з найменшими розмірами цеглини (адже ми можемо цеглину розвернути будь-яким боком, щоб проштовхнути її у отвір).

Program Example_130;

Uses crt;

Var a,b,c,x,y,S:real;

(S - допоміжна змінна для обміну місцями значень двох змінних}

Clrscr;

Write(‘Введіть розміри цеглини: ‘);

Readln(a,b,c);

Write(‘Введіть розміри отвору: ‘);

Readln(х,у);

If (a<=0)or(b<=0)or(c<=0)or(x<=0)or(y<=0)

Then writeln(‘Помилка вхідних даних.’)

{Впорядкування розмірів цеглини)

If а>b

Then Begin S:=а; а:=Ь; b:=S; End;

If a>c

Then Begin S:=a; a:=c; c:=S; End;

If b>c

Then Begin S:=b; b:=c; c:=S; End;

{Впорядкування розмірів отвору)

If x>y

Then Begin S:=x; x:=y; y:=S; End;

If (a<=x) and (b<=y)

Then writeln(‘Цеглина пройде у отвір.’)

else writeln(‘Цеглина не пройде у отвір.’)

End;

Readkey;

Домашнє завдання:

• Прочитати сторінки 59—65 запропонованого підручника;

• Задачі № 120, 122, 123, 125, 126 (4,5), 128 (2), 129 (1).


ЗАНЯТТЯ 17. Вказівка вибору

Мета заняття: Дати поняття про форми вказівки вибору

Теоретичний матеріал

Цей оператор є узагальненням оператора if і дозволяє зробити вибір із довільного числа наявних варіантів. Він складається з виразу, що називається селектором, і списку параметрів, кожному з яких передує список констант вибору (список може складатися і з однієї константи). Як і в операторі if тут може бути присутнім слово else, що має той же зміст. Формат опису:

case < вираз-селектор > of

список констант вибору1 >: < оператор 1 >;

список констант вибору 2 >: < оператор 2 >;

список констант вибору n >: < оператор n >

else < оператор >

end;

Оператор case працює наступним чином. Спочатку обчислюється значення виразу-селектора, потім забезпечується реалізація того оператора, константа вибору якого дорівнює поточному значенню селектора. Якщо жодна з констант не дорівнює поточному значенню селектора, виконується оператор, що знаходиться за словом else. Якщо слово else відсутнє, активізується оператор, що знаходиться за словом end, тобто перший оператор за межею дії case.

Селектор повинен відноситися до одного з перелічувальних типів (цілого, булівського або літерного). Дійсні та рядкові типи використовувати в якості селектора заборонено. Список констант вибору складається з довільної кількості значень або діапазонів, відділених один від одного комами. Межі діапазону записуються двома константами через складений символ діапазону «..». Тип констант у будь-якому випадку повинен збігатися з типом селектора. Щоб краще зрозуміти використання оператора вибору, розглянемо кілька типових задач.

ЗАДАЧА №134

Умова задачі: Розробити діалогову програму, яка запитує вік користувача і визначає, до якої вікової категорії він належить:

1) від 1 до 10 років — дитина;

2) від 11 до 15 років - підліток;

3) відіб до 20 років - юнак (юнка);

4) від 21 до 30 років - молода людина;

5) після 31 року - доросла людина.

Особливих пояснень ця задача не потребує, адже її можна розв’язати і за допомогою команди розгалуження. Однак зробимо її за допомогою команди вибору, причому, щоб скористатися гілкою Else, будемо вважати, що людина може мати вік не більше 150 років (навіть за всіма відомими рекордами, людина не може жити більше 150 років). Якщо ж користувач введе число, що не входить у дозволений діапазон, будемо вважати, що він пожартував.

Program Example_134;

Uses crt;

Var Years:byte; {Years - вік користувача}

Clrscr; {Очищення екрану}

Write (‘Введіть Ваш вік: ‘).;

Readln(Years);

Write(‘Ви ‘);

0..10: Writeln(‘- дитина.’);

11.. 15: Writeln(‘- підліток.’);

16..20: Writeln(‘- юнак (юнка).’);

21..30: Writeln(‘- молода людина.’);

31..150: Writeln(•- доросла людина.’)

Else writeln(‘, пожартували? Людина стільки не живе!’);

End;

Readkey; {Затримка зображення на екрані}




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


Дата добавления: 2014-10-22; Просмотров: 412; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.