en ru ua de pl
 

Artikel zeigen

Wähle die Sprache der Artikel

Через задачі до програмування

 


 

Через задачі- до програмування- це означає через яскраві приклади до знайомства із незвичайними і повчальними прийомами програмування.

Виконуючи задачі, показано розробку окремих алгоритмів , наведені приклади завдань, виконуючи які , демонструються уміння розв’язувати граматичні задачі ,ілюструються великі графічні можливості комп’ютера .



Як знайти суму ?Скільки цифр у числі 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 :

PRINT

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.Форсайт Р. "Паскаль для всех".               

 

 

 

 

 

 

 

 

2009-10-13 11:42:42 avgustus avgustus

PostQuickly SocialMarker Mr. Wong Webnews Icio Oneview Linkarena Favoriten.de Seekxl Kledy.de Social Bookmark Portal BoniTrust 40 Plus - Blog & Bookmark Bookmarks.cc Shop-Bookmarks.de Favit Newskick Newsider Linksilo Readster Folkd Yigg Digg Del.icio.us Facebook.com Reddit Jumptags Simpy StumbleUpon Slashdot Netscape Furl Yahoo Spurl Google Blinklist Blogmarks Diigo Technorati Newsvine Blinkbits Ma.Gnolia Smarking Netvouz
     

Kommentare

  • avgustus avgustus #1 2009-10-13 11:44:20
    стаття досить таки старенька, отже цікава тільки для тих, хто колись давно починав з бейсіка)
  • -=UX=- -=UX=- #2 2009-10-15 18:31:50
    о ужос... Басік ацтой
  • avgustus avgustus #3 2009-10-15 18:34:32
    на бейсіку (на його компіляторі) рокрутився свого часу Бенні Гейтс) так що не треба так)
  • -=UX=- -=UX=- #4 2009-10-15 18:35:36
    1 - не Бенні а Білл...
    2 - Гейтс - підар
  • avgustus avgustus #5 2009-10-15 18:37:39
    тре ще тут цензуру ввести і бан із штрафом)
    не Білл, а саме Бенні, який з нього Біллі
  • -=UX=- -=UX=- #6 2009-10-15 18:42:34
    Цензури не треба... Її відсутність допомогає краще передади емоції людини, тому заборонивши її юзверям буде складніше розуміти один одного, передавати власні думкки... А на рахунок Бенні не зрозумів
  • avgustus avgustus #7 2009-10-15 18:47:29
    щодо Бенні, див. "Володар перстнів" у гобліні)
    щодо цензури...можливо, і не потрібна, головне, щоб люди не перегинали палку)
  • -=UX=- -=UX=- #8 2009-10-15 18:50:57
    ну так сайт робиться не для повних дибилив
  • avgustus avgustus #9 2009-10-15 18:58:20
    згідний)
Seite betreten Passwort vergessen?
Registrierung