Через задачі- до програмування- це означає через яскраві приклади до знайомства із незвичайними і повчальними прийомами програмування.
Виконуючи задачі, показано розробку окремих алгоритмів , наведені приклади завдань, виконуючи які , демонструються уміння розв’язувати граматичні задачі ,ілюструються великі графічні можливості комп’ютера .
Як знайти суму ?Скільки цифр у числі 100! ? Для факторіалів невеликих чисел відповідь отримати неважко ,але, через обмеженість розрядної сітки ,не можна вивести на екран точного результату факторіалу числа .
Нехай всі цифри, отриманих факторіалів чисел , позначимо А[i].Процес множення числа k на (k-1)! зводиться до множення одного багаторозрядного числа на друге, тобто до множення і додавання цифр. Виділяючи цифри одиниць, десятків, сотень і т. д., присвоюємо значення змінним А[1],A[2],A[3]…
Текст програми “Факторіал”:
1 REM ОБЧИСЛЕННЯ ФАКТОРІАЛА ЧИСЛА N
2 DIM A(100)
3 INPUT N
4 FOR I=2 TO 100
5 A(I)=0 : NEXT I
6 A(1)=1 : L=1
7 FOR K=1 TO N
8 R2=0 : R1=0 : I=1
9 IF R2=0 THEN IF I>L THEN GOTO 16
10 R=A(I)*K+R2
11 R2=INT(R/(10^6))
12 R1=R-R2*(10^6)
13 A(I)=R1
14 I=I+1
15 GOTO 90
16 L=I-1
17 NEXT K
18 REM ВИВЕДЕННЯ ФАКТОРІАЛА ЧИСЛА
19 FOR J=1 TO I-1
20 PRINT A(I-J);
21 NEXT J
22 END
Як розв’язати рівняння х!=р? Розв’язуючи показникові, лінійні чи квадратні рівняння використовують обернені функції. Якщо розглядати обчислення факторіала як функцію, то оберненої немає. При розв’язуванні рівняння х!=р,в основу алгоритму-розв’язку покладемо основний алгоритм, доповнений деякими операторами.
Програма обчислення п!:
1 ‘ЗНАХОДЖЕННЯ N!
2 INPUT N
3 P=1
4 FOR I=1 TO N
5 P=P*I : NEXT I
6 PRINT P
7 END
Використовуючи дану програму, складемо програму для розв’язку рівняння x!=p :
1 ‘РОЗВ’ЯЗУВАННЯ РІВНЯННЯ X!=P
2 INPUT „ВВЕСТИ Р” ; P
3 X=1
4 N=1
5 N=N*X
6 IF N=P THEN GOTO 10
7 IF N>P THEN GOTO 11
8 X=X+1
9 GOTO 5
10 PRINT „X=”; X : GOTO 12
11 PRINT „X З НЕДОСТАЧОЮ=” ; X-1
12 END
Відомо, що формули загального члена послідовності простих чисел не знайдено. Спроби знайти такі формули були не раз.Дві формули відкрив в 18 ст. Леонард Ейлер. Перша з них має вигляд n2+n+17 для 0?n ?15. Друга має вигляд n2+n+41 для 0?n?39. Такими методами можна знайти прості числа. Але це не систематична генерація простих чисел підряд і без пропуску. Оскільки немає у розпорчдженні математиків і рекурентної формули, то потрібно створити алгоритм, в основі якого лежить тільки означення простого числа. Принцип створення решета Ератосфена - це відсівання складених чисел. Виясняючи, чи являється число n простим , ділимо його на попередні прості числа. І якщо воно не ділиться ні на які попередні прості числа, то воно само є простим. У такій роботі є лишні кроки. Перевірку слід закінчити після того, як перевірена подільність на просте число, що не перевищує цілу частину від . Враховуємо, що прості числа вибираються одне за одним, тому слід формувати масив простих чисел. Відповідь на питання про кількість простих чисел, маємо у теорії простих чисел. Наближена рівність ?(х)=х/lnx, яку відкрив Гаус,є точнішою із збільшенням числа х.
Текст програми:
1 REM ГЕНЕРАТОР ПРОСТИХ ЧИСЕЛ
2 INPUT N : P1=INT(N/LOG(N)) :PRINT P1 :
3 DIM P(P+1) : P(1)=1 : P(2)=2 : P(3)=3
4 FOR I=3 TO P1
5 P(I+1)=P(I)
6 P(I+1)=P(I+1)+2
7 FOR J=3 TO I
8 S=P(I+1)-INT(P(I+1)/P(I))*P(I)
9 IF S=0 THEN GOTO 6
10 NEXT J
11 NEXT I
12 REM ВИВІД РЕЗУЛЬТАТА
13 FOR I=1 TO P1
14 PRINT P(I);
15 NEXT I
16 END
Задача про магічні квадрати.
Магічним квадратом назвемо квадрат з n2 кліток, в кожній з яких записано одно з чисел від 1 до n включно і при цьому сума по будь-якій горизонталі, вертикалі чи по двох діагоналях дорівнює одному і тому ж числу. Число n називається порядком квадрата.
Квадрат складений з 144 послідовних простих чисел. Стала цього квадрата 4514. Просте число 2 не використовується. У квадраті сумуються 12 непарних чисел. Вияснити, чи квадрат магічний, чи немає серед чисел, що його утворюють складених.
Текст програми:
1 REM ПЕРЕВІРКА МАГІЧНОГО КВАДРАТА
2 DIM A(12,12) , B(144)
3 FOR I=1 TO 12
4 FOR J=1 TO 12
5 PRINT I ; J
6 INPUT A(I,J)
7 B=A(I,J) : GOSUB 39
8 IF A=0 GOTO 11
9 PRINT A(I,J) „-ЧИСЛО НЕ ПРОСТЕ”
10 GOTO 6
11 NEXT J,I
12 J=0
13 FOR I=1 TO 144
14 J=J+1
15 B=J : GOSUB 39
16 IF A<>0 GOTO 14
17 B(I)=J
18 NEXT I
19 FOR K=1 TO 144
20 A=0
21 FOR I=1 TO 12
22 FOR J=1 TO 12
23 IF B(K)=A(I,J) THEN A=1
24 NEXT I,J
25 IF A=0 THEN PRINT „НЕМАЄ К-ЧИСЛА”
26 NEXT K
27 A=0
28 K=A(1,1)+A(1,2)+A(1,3)+A(1,4)+A(1,5)+A(1,6)+
+A(1,7)+A(1,8)+A(1,9)+A(1,10)+A(1,11)+A(1,12)
29 FOR I=2 TO 12
30 K1=0
31 FOR J=1 TO 12
32 K1=K1+A(I,J)
33 NEXT J
34 IF K1<>K THEN A=1
35 NEXT I : K1=0 : K2=0
36 FOR I=1 TO 12 : K1=K1+A(I,J) : K2=K2+A(I,13-1)
37 NEXT I
38 IF K<>K1 OR K<>K2 THEN A=1
39 IF A=1 THEN PRINT „КВАДРАТ НЕ МАГІЧНИЙ”
40 IF A=0 PRINT „КВАДРАТ МАГІЧНИЙ”
41 STOP
42 A=0
43 FOR D=2 TO INT(SQR(B))
44 IF B/D=INT(B/D) THEN A=1
45 NEXT D
46 RETURN
47 END
Написати програму обчислення біноміальних коефіцієнтів нескладно. Складніше виконати задачу на побудову арифметичного трикутника Паскаля. У трикутнику Паскаля кожне число являється сумою північно-західного і північно-східного сусідів. Головне у цій програмі - добре розміщення трикутника на екрані. На екран можна вивести тільки трикутник з обмеженим числом рядків.
Текст програми для побудови трикутника Паскаля може бути таким:
1 ‘ТРИКУТНИК ПАСКАЛЯ
2 СLS : WIDTH 80
3 INPUT „ВВЕДІТЬ КІЛЬКІСТЬ РЯДКІВ N<11”;N
4 IF N>10 THEN PRINT „ПОВТОРІТЬ ВВІД” : GOTO 3
5 DIM A(N,N)
6 PRINT
7 R=40
8 A(1,1)=1 : PRINT TAB( R ) ; A(1,1)
9 FOR I=2 TO N
10 R=R-2
11 PRINT TAB( R ) ;
12 FOR K=1 TO I
13 A(I,K)=A(I-1,K-1)+A(I-1,K)
14 IF A(I,K)<9 THEN PRINT A(I,K) ; „” ; : GOTO 16
15 PRINT A(I,K) ;
16 NEXT K
17 PRINT
18 NEXT I
19 END
Арифметика в будь-якій системі числення з натуральною основою q в основі містить таблицю додавання цифр. Складемо програму, згідно якої б можна отримати таблицю додавання цифр для системи числення з будь-якою основою q-натуральне, q<10.
Текст програми:
1 REM ТАБЛИЦЯ СУМУВАННЯ В Q
2 INPUT Q
3 FOR I=0 TO Q-1
4 FOR J=1 TO Q-1
5 S=I+J
6 IF S<Q THEN 40
7 S=S+10-Q
8 PRINT S ;
9 NEXT J
10 PRINT
11 NEXT I
12 END
Якщо основа системи q>10, то в цьому випадку таблиця повинна включати не лише цифри. Наприклад, в системі з основою 16 використовуються цифри А16=1010 ;B16=1110 ;C16=1210 ;D16=1310; E16=1410 i F16=1510.
Текст програми:
1 REM СУМАТОР В СИСТЕМІ З ОСНОВОЮ Q=12
2 INPUT „КІЛЬКІСТЬ РОЗРЯДІВ В НАЙБІЛЬШОМУ ДОДАНКУ”; N
3 DIM S1(N+1) , S2(N+1) , S3(N+2)
4 FOR I=1 TO N
5 PRINT „ВВЕДІТЬ ЦИФРУ” ; I ; „-ГО РОЗРЯДУ S1” ;
6 INPUT K$
7 S1(I)=ASC(K$)-48
8 IF S1(I)=17 THEN S1(I)=10
9 IF S1(I)=18 THEN S1(I)=11
10 NEXT I
11 FOR I=1 TO N
12 PRINT ”ВВЕДІТЬ ЦИФРУ” ; I ;”-ОГО РОЗРЯДУ S2”
13 INPUT K$
14 S2(I)=ASC(K$)-48
15 IF S2(I)=17 THEN S2(I)=10
16 IF S2(I)=18 THEN S2(I)=11
17 NEXT I
18 CLS : LOCATE 3 ,10 : PRINT „СУМА =”;
19 FOR I=1 TO N+1
20 S3(I)=S3(I)+S1(I)+S2(I)
21 IF S3(I)<12 THEN 25
22 S3(I)=S3(I)-12 : S3(I+1)=S3(I+1)+1 : GOTO 25
23 NEXT I
24 END
25 Z=(S3(I)+48)
26 IF Z=58 THEN Z=65
27 IF Z=59 THEN Z=66
28 REM ВИВІД РЕЗУЛЬТАТУ
29 LOCATE 3, (20+N-I) : PRINT CHR$(Z) ;
30 GOTO 23
Список використаної літератури:
1.Руденко В.Д. , Макарчук О.М. , Патланжоглу М.О.
"Курс інформатики: Основи алгоритмізації та програмування (ч.2)".
2.Верлань А.Ф. , Апатова Н.В. , Донской В.І. "Языки персональних компьютеров".
3.Височанський В.С. , Кардаш А.І. "Елементи інформатики".
4.Бленд Г. "Основи програмування на мові Ваsіc в стандарті MSX".
5.Кнут Д. "Искуство програмирования ".
6.Лапчик М.П. "Вычисления. Алгоритмизация. Програмирование".
7.Ленгдон Н. , Кук Д. , Льюіс Д. "У світі математики і калькуляторів".
8.Уілсон І.Р. , Еддіман А.М. "Практическое введение в Паскаль".
9.Прайс Д. "Програмирование на языке Паскаль : практическое руководство".
10.Форсайт Р. "Паскаль для всех".
Kommentare