Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:basic_dialogue_programming_language:003 [2022-09-17 12:09] GreyWolf |
msx:basic_dialogue_programming_language:003 [2023-02-19 16:07] (текущий) GreyWolf |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | … и если ничто уже не помогает — посмотри инструкцию для пользователя. | + | ... и если ничто уже не помогает — |
+ | \\ посмотри инструкцию для пользователя. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
—//Из завещания неизвестного программиста// | —//Из завещания неизвестного программиста// | ||
Строка 23: | Строка 24: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | …квалификация программистов является убывающей функцией от | + | ...квалификация программистов является убывающей функцией от |
- | плотности предложений ''GOTO'' в создаваемых ими программах. | + | \\ плотности предложений ''GOTO'' в создаваемых ими программах. |
<WRAP rightalign> | <WRAP rightalign> | ||
—//Э.Дейкстра// | —//Э.Дейкстра// | ||
Строка 97: | Строка 98: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
ЕСЛИ нельзя, но очень хочется, ТО можно! | ЕСЛИ нельзя, но очень хочется, ТО можно! | ||
<WRAP rightalign> | <WRAP rightalign> | ||
Строка 446: | Строка 447: | ||
NEW | NEW | ||
Ok | Ok | ||
- | 10 INPUT"Если Вы мужчина, то нажмите клавишу 'SHIFT'+'1',а если Вы женщина, то нажмите клавишу 'клюшка'";X% | + | 10 INPUT"Если Вы мужчина, то нажмите клавишу 'SHIFT'+'1', |
+ | а если Вы женщина, то нажмите клавишу 'клюшка'";X% | ||
20 INPUT "Укажите Ваш рост в метрах";L | 20 INPUT "Укажите Ваш рост в метрах";L | ||
30 INPUT"Укажите обхват запястья сильнейшей руки в см";Y | 30 INPUT"Укажите обхват запястья сильнейшей руки в см";Y | ||
35 PRINT"Ваш идеальный вес :" | 35 PRINT"Ваш идеальный вес :" | ||
- | 40 IF X%=1 THEN IF Y>18 THEN PRINTUSING"###.###";(L/.0254*4-128)*.4536*1.1;ELSE PRINTUSING "###.###"; (L/.0254*4-128)*.4536;ELSE IF Y>16.5 THEN PRINTUSING "###.###";L/.0254*3.5-108)*.4536*1.1;ELSE PRINTUSING "###.###";(L/.0254*3.5-108)*.4536; | + | 40 IF X%=1 THEN IF Y>18 THEN PRINTUSING"###.###";(L/.0254*4-128)*.4536*1.1; |
+ | ELSE PRINTUSING "###.###"; (L/.0254*4-128)*.4536; | ||
+ | ELSE IF Y>16.5 THEN PRINTUSING "###.###";L/.0254*3.5-108)*.4536*1.1; | ||
+ | ELSE PRINTUSING "###.###";(L/.0254*3.5-108)*.4536; | ||
50 PRINT " кг":END | 50 PRINT " кг":END | ||
run | run | ||
- | Если Вы мужчина, то нажмите клавишу 'SHIFT'+'1', а если Вы женщина, то нажмите клавишу 'клюшка'? 1 | + | Если Вы мужчина, то нажмите клавишу 'SHIFT'+'1', |
+ | а если Вы женщина, то нажмите клавишу 'клюшка'? 1 | ||
Укажите Ваш рост в метрах? 1.745 | Укажите Ваш рост в метрах? 1.745 | ||
Укажите обхват запястья сильнейшей руки в см? 18.5 | Укажите обхват запястья сильнейшей руки в см? 18.5 | ||
Строка 481: | Строка 487: | ||
100 INPUT"Задайте a,b,c";A,B,C | 100 INPUT"Задайте a,b,c";A,B,C | ||
110 DISC=B*B-4*A*C:W=1/2/A:Z=-B/2/A | 110 DISC=B*B-4*A*C:W=1/2/A:Z=-B/2/A | ||
- | 120 IF ABS(DISC)<1.E-14 THEN PRINT"Двойной корень,x=";Z:GOTO 100'Условие ABS(DISC)<1.E-14 взято вместо условия DISC=0 с целью компенсации ошибок округления. | + | 120 IF ABS(DISC)<1.E-14 THEN PRINT"Двойной корень,x=";Z:GOTO 100 |
+ | 'Условие ABS(DISC)<1.E-14 взято вместо условия | ||
+ | DISC=0 с целью компенсации ошибок округления. | ||
130 IF DISC<0 THEN 160 | 130 IF DISC<0 THEN 160 | ||
140 PRINT "Корни";Z+SQR(DISC)*W; | 140 PRINT "Корни";Z+SQR(DISC)*W; | ||
Строка 501: | Строка 509: | ||
Заметим, что указанная программа "не работает" в том случае, когда а=0. Поэтому добавим к программе строку: | Заметим, что указанная программа "не работает" в том случае, когда а=0. Поэтому добавим к программе строку: | ||
<code> | <code> | ||
- | 105 IF A=0 THEN IF B=0 THEN IF C=0 THEN PRINT"x-любое":GOTO 100 ELSE PRINT"решений нет":GOTO 100 ELSE PRINT"корень равен";-C/B:GOTO 100 | + | 105 IF A=0 THEN IF B=0 THEN IF C=0 THEN PRINT"x-любое": |
+ | GOTO 100 ELSE PRINT"решений нет": | ||
+ | GOTO 100 ELSE PRINT"корень равен";-C/B: | ||
+ | GOTO 100 | ||
</code> | </code> | ||
Это приведёт к следующему результату: | Это приведёт к следующему результату: | ||
Строка 516: | Строка 527: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | Целые числа сотворил господь бог, всё остальное — дело рук человеческих. | + | Целые числа сотворил господь бог, |
+ | \\всё остальное — дело рук человеческих. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
—//Л.Кронекер// | —//Л.Кронекер// | ||
Строка 785: | Строка 797: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Три месяца каждую вторую среду он ходил смотреть фильм | Три месяца каждую вторую среду он ходил смотреть фильм | ||
- | "Девушка моей мечты", но на связь с ним никто не вышел. | + | \\ "Девушка моей мечты", но на связь с ним никто не вышел. |
<WRAP rightalign> | <WRAP rightalign> | ||
—//В.Кожевников// | —//В.Кожевников// | ||
Строка 1120: | Строка 1132: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | 5% текста программы занимают 90% времени её выполнения.<WRAP rightalign> | + | 5% текста программы занимают 90% |
+ | \\ времени её выполнения.<WRAP rightalign> | ||
—//Аксиома программирования// | —//Аксиома программирования// | ||
</WRAP></WRAP> | </WRAP></WRAP> | ||
Строка 1150: | Строка 1163: | ||
20 DIM A(N) 'Массив А описан! | 20 DIM A(N) 'Массив А описан! | ||
30 FOR I=0 TO N:INPUT A(I):NEXT I | 30 FOR I=0 TO N:INPUT A(I):NEXT I | ||
- | 40'Данный фрагмент позволяет осуществить ввод элементов одномерного массива А (в массиве N+1 элемент!) | + | 40'Данный фрагмент позволяет осуществить ввод элементов |
+ | одномерного массива А (в массиве N+1 элемент!) | ||
</code> | </code> | ||
Приведём ещё один способ решения указанной проблемы: | Приведём ещё один способ решения указанной проблемы: | ||
Строка 1366: | Строка 1380: | ||
Ok | Ok | ||
</code> | </code> | ||
- | Сравните полученные результаты с таблицей, приведённой ранее в [[01#I.7.2. Операции отношения. Логические операции|разделе I.7.2]].</WRAP> | + | Сравните полученные результаты с таблицей, приведённой ранее в [[001#I.7.2. Операции отношения. Логические операции|разделе I.7.2]].</WRAP> |
* 5) {{anchor:e034-25}} {{.examples:034-25.bas|}} \\ [[+tab|wmsxbpge>034-25.bas]] <code> | * 5) {{anchor:e034-25}} {{.examples:034-25.bas|}} \\ [[+tab|wmsxbpge>034-25.bas]] <code> | ||
NEW | NEW | ||
Строка 1410: | Строка 1424: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Метод решения хорош, если с самого начала мы можем предвидеть — и далее | Метод решения хорош, если с самого начала мы можем предвидеть — и далее | ||
- | подтвердить это, — что, следуя этому методу, мы достигнем цели. | + | \\ подтвердить это, — что, следуя этому методу, мы достигнем цели. |
<WRAP rightalign> | <WRAP rightalign> | ||
—//Г.Лейбниц// | —//Г.Лейбниц// | ||
Строка 1420: | Строка 1434: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Истина всегда оказывается проще, чем можно было предположить.<WRAP rightalign> | Истина всегда оказывается проще, чем можно было предположить.<WRAP rightalign> | ||
—//Р.Фейнман// | —//Р.Фейнман// | ||
Строка 1432: | Строка 1446: | ||
20 FOR I=1 TO 0 STEP 1 'Оригинальный заголовок цикла, не правда ли? | 20 FOR I=1 TO 0 STEP 1 'Оригинальный заголовок цикла, не правда ли? | ||
30 тело цикла | 30 тело цикла | ||
- | 40 I = условие 'Потрясающе! Если условие ложно, то I=0, и цикл заканчивается; если условие истинно,то I=-1, и мы продолжим выполнение тела цикла. | + | 40 I = условие 'Потрясающе! Если условие ложно, то I=0, и цикл заканчивается; |
+ | если условие истинно,то I=-1, и мы продолжим выполнение тела цикла. | ||
50 NEXT I | 50 NEXT I | ||
60 … 'Продолжение программы. | 60 … 'Продолжение программы. | ||
Строка 1483: | Строка 1498: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Прежде чем решать задачу, подумай, что делать с её решением. | Прежде чем решать задачу, подумай, что делать с её решением. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
Строка 1492: | Строка 1507: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | В науке часто недостаточно решить какую–нибудь задачу или группу задач. После этого нужно присмотреться к этим задачам и заново осмыслить, какие же вы задачи решили. Нередко, решая одну задачу,мы автоматически находим ответ и на другой вопрос, о котором раньше вовсе не думали. | + | В науке часто недостаточно решить какую–нибудь задачу или |
+ | \\группу задач. После этого нужно присмотреться к этим | ||
+ | \\ задачам и заново осмыслить, какие же вы задачи решили. | ||
+ | \\ Нередко, решая одну задачу,мы автоматически находим ответ и | ||
+ | \\ на другой вопрос, о котором раньше вовсе не думали. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
—//Н.Винер// | —//Н.Винер// | ||
Строка 1503: | Строка 1522: | ||
NEW | NEW | ||
Ok | Ok | ||
- | 5 DEFINT I:INPUT A1,AN,D'А1-первый член арифметической прогрессии;АN-последний ее член;D-знаменатель (D>0!) | + | 5 DEFINT I:INPUT A1,AN,D'А1-первый член арифметической прогрессии; |
+ | АN-последний ее член;D-знаменатель (D>0!) | ||
7 IF D<0 OR A1>AN THEN ?"Прогрессия должна быть возрастающей! Повторите ввод!":GOTO 5 | 7 IF D<0 OR A1>AN THEN ?"Прогрессия должна быть возрастающей! Повторите ввод!":GOTO 5 | ||
10 S=0:N=A1 | 10 S=0:N=A1 | ||
Строка 1635: | Строка 1655: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | …Поверил\\ | + | ...Поверил |
- | Я алгеброй гармонию. | + | \\ Я алгеброй гармонию. |
<WRAP rightalign> | <WRAP rightalign> | ||
—//А.Пушкин. Моцарт и Сальери// | —//А.Пушкин. Моцарт и Сальери// | ||
Строка 1645: | Строка 1665: | ||
Обратимся теперь к лирике. Вот стихотворение Л.Мартынова (речь в нем идёт о девушке): | Обратимся теперь к лирике. Вот стихотворение Л.Мартынова (речь в нем идёт о девушке): | ||
<WRAP group 99%> | <WRAP group 99%> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
- | Кто геометрическое среднее между атомом и Солнцем? \\ | + | Кто геометрическое среднее между атомом и Солнцем? |
- | Ты, первое и последнее воплощение красоты. \\ | + | \\ Ты, первое и последнее воплощение красоты. |
- | Не имеющая представления о строении вещества, \\ | + | \\ Не имеющая представления о строении вещества, |
- | слушающая в изумлении эти непонятные слова. \\ | + | \\ слушающая в изумлении эти непонятные слова. |
- | Неспособная принять их к сведению,будучи ужасно молодой. \\ | + | \\ Неспособная принять их к сведению,будучи ужасно молодой. |
- | Вот ведь, какова ты, нечто среднее между атомом и звездой. | + | \\ Вот ведь, какова ты, нечто среднее между атомом и звездой. |
</WRAP> | </WRAP> | ||
<WRAP half column></WRAP> | <WRAP half column></WRAP> | ||
Строка 1680: | Строка 1700: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Бросая в воду камешки, смотри на круги, ими образуемые: | Бросая в воду камешки, смотри на круги, ими образуемые: | ||
- | иначе твоё занятие будет простой забавой. | + | \\ иначе твоё занятие будет простой забавой. |
<WRAP rightalign> | <WRAP rightalign> | ||
—//Козьма Прутков// | —//Козьма Прутков// | ||
Строка 1690: | Строка 1710: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Если я и открыл некоторые новые истины в науках, то я могу утверждать, что все они либо являются прямыми следствиями пяти или шести главных задач, которые мне удалось решить, либо зависят от них; я рассматриваю их как такое же число сражений, в которых военное счастье было на моей стороне. | Если я и открыл некоторые новые истины в науках, то я могу утверждать, что все они либо являются прямыми следствиями пяти или шести главных задач, которые мне удалось решить, либо зависят от них; я рассматриваю их как такое же число сражений, в которых военное счастье было на моей стороне. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
Строка 1746: | Строка 1766: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Каждая решённая мною задача становилась образцом, который служил впоследствии для решения других задач. | Каждая решённая мною задача становилась образцом, который служил впоследствии для решения других задач. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
Строка 1755: | Строка 1775: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
…создаётся впечатление, что можно построить целый курс программирования, выбирая примеры только из задач сортировки. | …создаётся впечатление, что можно построить целый курс программирования, выбирая примеры только из задач сортировки. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
Строка 1812: | Строка 1832: | ||
Ok | Ok | ||
10 'Сортировка с применением индекса. | 10 'Сортировка с применением индекса. | ||
- | 11 'Вместо переупорядочения самих значений в процессе сортировки можно образовать вспомогательный массив индексов, в котором отмечаются правильные места значений в массиве. | + | 11 'Вместо переупорядочения самих значений в процессе сортировки |
- | 12 'Во время сортировки значения остаются на исходных местах, а изменяется лишь массив индексов. По окончании сортировки массив индексов используется для копирования сортируемых значений в новый массив или служит справочником для работы с исходным массивом. | + | можно образовать вспомогательный массив индексов, в котором |
+ | отмечаются правильные места значений в массиве. | ||
+ | 12 'Во время сортировки значения остаются на исходных местах, | ||
+ | а изменяется лишь массив индексов. По окончании сортировки | ||
+ | массив индексов используется для копирования сортируемых значений | ||
+ | в новый массив или служит справочником для работы с исходным массивом. | ||
20 INPUT N:DIM A(N),I(N) | 20 INPUT N:DIM A(N),I(N) | ||
30 FOR M=1 TO N:INPUT A(M):NEXT M | 30 FOR M=1 TO N:INPUT A(M):NEXT M | ||
Строка 1861: | Строка 1886: | ||
10 DEFINTN,I,J:INPUT"Введите N";N:DIM X(N):C=RND(-TIME) | 10 DEFINTN,I,J:INPUT"Введите N";N:DIM X(N):C=RND(-TIME) | ||
20 FOR I=1 TO N:X(I)=INT(3*RND(1)) | 20 FOR I=1 TO N:X(I)=INT(3*RND(1)) | ||
- | 30 PRINT X(I);:NEXT I:PRINT'Сформирован массив псевдослучайных чисел для облегчения процесса тестирования программы! | + | 30 PRINT X(I);:NEXT I:PRINT'Сформирован массив псевдослучайных чисел для |
+ | облегчения процесса тестирования программы! | ||
50 FOR J=1 TO N-1:FOR I=1 TO N-1 | 50 FOR J=1 TO N-1:FOR I=1 TO N-1 | ||
60 IF X(I)=0 THEN SWAP X(I),X(I+1) | 60 IF X(I)=0 THEN SWAP X(I),X(I+1) | ||
Строка 1948: | Строка 1974: | ||
<WRAP group 99%> | <WRAP group 99%> | ||
<WRAP half column> \\ </WRAP> | <WRAP half column> \\ </WRAP> | ||
- | <WRAP half column><WRAP justify> | + | <WRAP half column><WRAP right> |
Верочка же, получив письмо (она его ждала раньше, ещё в марте), не сразу, а как–то помедлив, словно боясь чего–то, встала и, взяв со стола старинный костяной нож с инкрустацией (один перламутровый цветок давно выпал, чернело лишь гнездо на месте, куда он был вставлен), и вскрыла конверт неловкой рукой. | Верочка же, получив письмо (она его ждала раньше, ещё в марте), не сразу, а как–то помедлив, словно боясь чего–то, встала и, взяв со стола старинный костяной нож с инкрустацией (один перламутровый цветок давно выпал, чернело лишь гнездо на месте, куда он был вставлен), и вскрыла конверт неловкой рукой. | ||
<WRAP rightalign> | <WRAP rightalign> | ||
Строка 1959: | Строка 1985: | ||
<code> | <code> | ||
1 'Пример "абсолютно нечитабельной" программы! | 1 'Пример "абсолютно нечитабельной" программы! | ||
- | 5 DEFINTN,I:INPUTN:Y$="Нет":FORI=700TO799:IFI\100<>(IMOD100)\10THENIFI\100<>IMOD100MOD10THENIF(IMOD100)\10<>IMOD100MOD10THENIFIMODN=0THENY$="Есть!":CLS:PRINTY$,I:ENDELSEIFI=798THENCLS:PRINTY$:ENDELSENEXTELSENEXTELSENEXTELSENEXT | + | 5 DEFINTN,I:INPUTN:Y$="Нет":FORI=700TO799:IFI\100<>(IMOD100)\ |
+ | 10THENIFI\100<>IMOD100MOD10THENIF(IMOD100) | ||
+ | \10<>IMOD100MOD10THENIFIMODN=0THENY$="Есть!":CLS: | ||
+ | PRINTY$,I:ENDELSEIFI=798THENCLS:PRINTY$: | ||
+ | ENDELSENEXTELSENEXTELSENEXTELSENEXT | ||
run | run | ||
? 5 | ? 5 | ||
Строка 2007: | Строка 2037: | ||
10 DEFINT N,I,J,K,M:INPUT N:K=1:DIM A(N):X=RND(-TIME) | 10 DEFINT N,I,J,K,M:INPUT N:K=1:DIM A(N):X=RND(-TIME) | ||
20 FOR I=1 TO N:A(I)=INT(12*RND(1)):PRINT A(I);:NEXT | 20 FOR I=1 TO N:A(I)=INT(12*RND(1)):PRINT A(I);:NEXT | ||
- | 30 'Выделение неубывающей подпоследовательности, сравнение ее длины с длиной предыдущей выделенной подпоследовательности; наибольшая длина запоминается в переменную M (строки 40-70). | + | 30 'Выделение неубывающей подпоследовательности, сравнение ее |
+ | длины с длиной предыдущей выделенной подпоследовательности; | ||
+ | наибольшая длина запоминается в переменную M (строки 40-70). | ||
40 FOR I=1 TO N-1 | 40 FOR I=1 TO N-1 | ||
- | 50 IF A(I)<=A(I+1) THEN K=K+1:IF K>M THEN M=K:J=I+1:NEXT I ELSE NEXT I ELSE K=1:NEXT I | + | 50 IF A(I)<=A(I+1) THEN K=K+1:IF K>M THEN M=K:J=I+1: |
+ | NEXT I ELSE NEXT I ELSE K=1:NEXT I | ||
60 ?:?"Наибольшая длина:";M:PRINT"Подпоследовательность:"; | 60 ?:?"Наибольшая длина:";M:PRINT"Подпоследовательность:"; | ||
70 FOR I=J-M+1 TO J:PRINT A(I);:NEXT | 70 FOR I=J-M+1 TO J:PRINT A(I);:NEXT | ||
Строка 2082: | Строка 2115: | ||
20 DEFINT H,I-K,M:INPUT"Число точек";H:D=RND(-TIME):M=2*H | 20 DEFINT H,I-K,M:INPUT"Число точек";H:D=RND(-TIME):M=2*H | ||
30 DIM A(M),B(M),C(M):IF H<3 THEN RUN 20 | 30 DIM A(M),B(M),C(M):IF H<3 THEN RUN 20 | ||
- | 40 FOR I=1 TO M:A(I)=INT(190*RND(1)):B(I)=A(I):C(I)=A(I):NEXT:S=0:P=900 'Генерируем три одинаковых массива координат точек плоскости случайным образом. | + | 40 FOR I=1 TO M:A(I)=INT(190*RND(1)):B(I)=A(I):C(I)=A(I):NEXT:S=0:P=900 |
+ | 'Генерируем три одинаковых массива координат точек плоскости случайным образом. | ||
50 FOR I=2 TO M STEP 2 | 50 FOR I=2 TO M STEP 2 | ||
60 FOR J=2 TO M STEP 2 | 60 FOR J=2 TO M STEP 2 | ||
70 FOR K=2 TO M STEP 2 | 70 FOR K=2 TO M STEP 2 | ||
- | 80 U=SQR((A(I)-B(J))^2+(A(I-1)-B(J-1))^2):Q=SQR((A(I)-C(K))^2+(A(I-1)-C(K-1))^2):W=SQR((B(J)-C(K))^2+(B(J-1)-C(K-1))^2):G=U+Q+W 'Нашли периметр треугольника. | + | 80 U=SQR((A(I)-B(J))^2+(A(I-1)-B(J-1))^2):Q=SQR((A(I)-C(K))^2+(A(I-1)-C(K-1))^2): |
+ | W=SQR((B(J)-C(K))^2+(B(J-1)-C(K-1))^2):G=U+Q+W 'Нашли периметр треугольника. | ||
90 V=SQR((G/2)*(G/2-U)*(G/2-Q)*(G/2-W)) 'Нашли его площадь. | 90 V=SQR((G/2)*(G/2-U)*(G/2-Q)*(G/2-W)) 'Нашли его площадь. | ||
- | 100 IF V<1.E-10 THEN 130'Этим оператором гарантируем, что взяты три различные точки, не лежащие на одной прямой. | + | 100 IF V<1.E-10 THEN 130'Этим оператором гарантируем, что взяты три |
- | 110 IF G<P THEN P=G:A1=A(I):A2=A(I-1):B1=B(J):B2=B(J-1):C1=C(K):C2=C(K-1)'Ищем треугольник с наименьшим периметром и запоминаем координаты его вершин. | + | различные точки, не лежащие на одной прямой. |
- | 120 IF V>S THEN S=V:A3=A(I):A4=A(I-1):B3=B(J):B4=B(J-1):C3=C(K):C4=C(K-1)'Ищем треугольник наибольшей площади и запоминаем координаты его вершин | + | 110 IF G<P THEN P=G:A1=A(I):A2=A(I-1):B1=B(J):B2=B(J-1):C1=C(K):C2=C(K-1) |
+ | 'Ищем треугольник с наименьшим периметром и запоминаем координаты его вершин. | ||
+ | 120 IF V>S THEN S=V:A3=A(I):A4=A(I-1):B3=B(J):B4=B(J-1):C3=C(K):C4=C(K-1) | ||
+ | 'Ищем треугольник наибольшей площади и запоминаем координаты его вершин | ||
130 NEXT K,J,I | 130 NEXT K,J,I | ||
- | 140 PRINT"Вершины треугольника наиб.площади:(";A3;",";A4;"),(";B3;",";B4;"),(";C3;",";C4;");" | + | 140 PRINT"Вершины треугольника наиб.площади: |
+ | (";A3;",";A4;"),(";B3;",";B4;"),(";C3;",";C4;");" | ||
150 PRINT"Площадь треугольника:";S | 150 PRINT"Площадь треугольника:";S | ||
- | 160 PRINT"Вершины треугольника наим.периметра:(";A1;",";A2;"),(";B1;",";B2;"),(";C1;",";C2;");" | + | 160 PRINT"Вершины треугольника наим.периметра: |
+ | (";A1;",";A2;"),(";B1;",";B2;"),(";C1;",";C2;");" | ||
170 PRINT"Периметр треугольника:";P | 170 PRINT"Периметр треугольника:";P | ||
180 FOR I=1 TO 5000:NEXT 'Задержка по времени (≈13 секунд)! | 180 FOR I=1 TO 5000:NEXT 'Задержка по времени (≈13 секунд)! | ||
Строка 2125: | Строка 2165: | ||
20 DIM X(N),Y(N),Z(N):U=RND(-TIME) | 20 DIM X(N),Y(N),Z(N):U=RND(-TIME) | ||
25 PRINT " X Y Z " | 25 PRINT " X Y Z " | ||
- | 30 FOR I=1 TO N:X(I)=INT(11*RND(1)-5):Y(I)=INT(11*RND(1)-5):Z(I)=INT(11*RND(1)-5):PRINTX(I)Y(I)Z(I):NEXT | + | 30 FOR I=1 TO N:X(I)=INT(11*RND(1)-5):Y(I)=INT(11*RND(1)-5): |
+ | Z(I)=INT(11*RND(1)-5):PRINTX(I)Y(I)Z(I):NEXT | ||
35 'Подсчет количества точек,лежащих в шаре (строки 40-60). | 35 'Подсчет количества точек,лежащих в шаре (строки 40-60). | ||
40 FOR I=1 TO N | 40 FOR I=1 TO N | ||
Строка 2138: | Строка 2179: | ||
110 IF X(I)+Y(I)+Z(I)=<3 AND (X(I))^2+(Y(I))^2+(Z(I))^2<=25 THEN B=B+1NEXT ELSE NEXT | 110 IF X(I)+Y(I)+Z(I)=<3 AND (X(I))^2+(Y(I))^2+(Z(I))^2<=25 THEN B=B+1NEXT ELSE NEXT | ||
120 PRINT "Количество точек,принадлежащих пересечению шара и полупространства:";B | 120 PRINT "Количество точек,принадлежащих пересечению шара и полупространства:";B | ||
- | 125 'Подсчет количества точек,принадлежащих объединению шара и полупространства (строки 130-140) | + | 125 'Подсчет количества точек,принадлежащих объединению шара и |
+ | полупространства (строки 130-140) | ||
130 P=C-B+K | 130 P=C-B+K | ||
140 PRINT "Количество точек,принадлежащих объединению шара и полупространства:";P | 140 PRINT "Количество точек,принадлежащих объединению шара и полупространства:";P | ||
Строка 2169: | Строка 2211: | ||
40 K=N*M:DIM B(K) | 40 K=N*M:DIM B(K) | ||
50 FORI=1TO N:FOR J=1 TO M:Y=M*(I-1)+J:B(Y)=A(I,J):NEXTJ,I | 50 FORI=1TO N:FOR J=1 TO M:Y=M*(I-1)+J:B(Y)=A(I,J):NEXTJ,I | ||
- | 60 'Этот блок (строки 70-110) позволяет найти минимальное число элементов, встречающихся в массиве более одного раза. | + | 60 'Этот блок (строки 70-110) позволяет найти минимальное число элементов, |
+ | встречающихся в массиве более одного раза. | ||
70 FOR Y=1 TO K-1:FOR L=Y+1 TO K | 70 FOR Y=1 TO K-1:FOR L=Y+1 TO K | ||
80 IF B(Y)<B(L) THEN 90 ELSE SWAP B(Y),B(L) | 80 IF B(Y)<B(L) THEN 90 ELSE SWAP B(Y),B(L) | ||
90 NEXT:NEXT | 90 NEXT:NEXT | ||
100 FOR I=1 TO K-1 | 100 FOR I=1 TO K-1 | ||
- | 110 IF B(I)=B(I+1) THEN PRINT"Минимальное число:";B(I) ELSE NEXTI:PRINT"Такого элемента нет!" | + | 110 IF B(I)=B(I+1) THEN PRINT"Минимальное число:";B(I) ELSE NEXTI: |
+ | PRINT"Такого элемента нет!" | ||
run | run | ||
? 3,4 | ? 3,4 | ||
Строка 2195: | Строка 2239: | ||
NEW | NEW | ||
Ok | Ok | ||
- | 5 'Идентификация массива A(N,M) псевдослучайными целыми числами и вывод его на экран дисплея для контроля (строки 10-20). | + | 5 'Идентификация массива A(N,M) псевдослучайными целыми числами и |
+ | вывод его на экран дисплея для контроля (строки 10-20). | ||
10 DEFINT N,M,I,J,Y,K,L:INPUT N,M:DIM A(N,M):X=RND(-TIME) | 10 DEFINT N,M,I,J,Y,K,L:INPUT N,M:DIM A(N,M):X=RND(-TIME) | ||
- | 20 FOR I=1 TO N:FOR J=1 TO M:A(I,J)=INT(10*RND(1)):?A(I,J);:NEXT J:?:NEXTI:IF N+M=2 THEN ?"Один-одинешенек!":END | + | 20 FOR I=1 TO N:FOR J=1 TO M:A(I,J)=INT(10*RND(1)):?A(I,J);: |
+ | NEXT J:?:NEXTI:IF N+M=2 THEN ?"Один-одинешенек!":END | ||
30 'Идентификация дополнительного массива B (строки 40-50). | 30 'Идентификация дополнительного массива B (строки 40-50). | ||
40 K=N*M:DIM B(K) | 40 K=N*M:DIM B(K) | ||
Строка 2205: | Строка 2251: | ||
80 IF B(Y)<B(L) THEN 90 ELSE SWAP B(Y),B(L) | 80 IF B(Y)<B(L) THEN 90 ELSE SWAP B(Y),B(L) | ||
90 NEXT:NEXT | 90 NEXT:NEXT | ||
- | 93 'Подсчет количества различных элементов в массиве B и вывод результата на экран дисплея (строки 95-120). | + | 93 'Подсчет количества различных элементов в массиве B и |
+ | вывод результата на экран дисплея (строки 95-120). | ||
95 U=1 | 95 U=1 | ||
100 FOR I=1 TO K-1 | 100 FOR I=1 TO K-1 | ||
Строка 2236: | Строка 2283: | ||
20 FOR I=1 TO M:FOR J=1 TO N | 20 FOR I=1 TO M:FOR J=1 TO N | ||
30 A(I,J)=INT(11*RND(1)-5):PRINT A(I,J);:NEXTJ:?:NEXT I | 30 A(I,J)=INT(11*RND(1)-5):PRINT A(I,J);:NEXTJ:?:NEXT I | ||
- | 45 IF M=1 AND N=1 THEN IF A(1,1)<0 THEN ?"Искомый элемент:";A(1,1):END ELSE ?"Такого элемента нет!":END'Случай M=N=1 | + | 45 IF M=1 AND N=1 THEN IF A(1,1)<0 THEN ?"Искомый элемент:"; |
- | 47 'Нахождение отрицательного элемента массива A, у которого сумма индексов минимальна (строки 50-70). | + | A(1,1):END ELSE ?"Такого элемента нет!":END'Случай M=N=1 |
+ | 47 'Нахождение отрицательного элемента массива A, у которого | ||
+ | сумма индексов минимальна (строки 50-70). | ||
50 FOR I=1 TO M:FOR J=1 TO N | 50 FOR I=1 TO M:FOR J=1 TO N | ||
- | 60 IF A(I,J)<0 THEN IF I+J<K THEN K=I+J:C=A(I,J):NEXTJ:NEXTI ELSE NEXT J:NEXT I ELSE NEXT J:NEXT I | + | 60 IF A(I,J)<0 THEN IF I+J<K THEN K=I+J:C=A(I,J):NEXTJ:NEXTI |
+ | ELSE NEXT J:NEXT I ELSE NEXT J:NEXT I | ||
70 PRINT"Искомый отрицат.элемент:";C | 70 PRINT"Искомый отрицат.элемент:";C | ||
run | run | ||
Строка 2263: | Строка 2313: | ||
Ok | Ok | ||
10 INPUT"FORMAT";A$ | 10 INPUT"FORMAT";A$ | ||
- | 15 'FORMAT-строковое выражение, состоящее из символов "#" и десятичной точки (например, ##.###); используется в операторе ''PRINTUSING'' (строка 210) для вывода элементов массива с требуемой точностью. | + | 15 'FORMAT-строковое выражение, состоящее из символов "#" и |
+ | десятичной точки (например, ##.###); используется в | ||
+ | операторе ''PRINTUSING'' (строка 210) для вывода элементов массива с требуемой точностью. | ||
16 'Точность определяется количеством символов "#", стоящих правее десятичной точки. | 16 'Точность определяется количеством символов "#", стоящих правее десятичной точки. | ||
20 DEFINT N,I,J:INPUT"Число строк (столбцов)";N | 20 DEFINT N,I,J:INPUT"Число строк (столбцов)";N | ||
30 DIM A(N,N),B(N,N):K=RND(-TIME) | 30 DIM A(N,N),B(N,N):K=RND(-TIME) | ||
- | 35 'Формирование матрицы A, элементами которой являются случайные числа (для облегчения тестирования программы!). | + | 35 'Формирование матрицы A, элементами которой являются |
+ | случайные числа (для облегчения тестирования программы!). | ||
40 FOR I=1 TO N:FOR J=1 TO N | 40 FOR I=1 TO N:FOR J=1 TO N | ||
50 A(I,J)=INT(10*RND(1)):PRINT A(I,J); | 50 A(I,J)=INT(10*RND(1)):PRINT A(I,J); | ||
60 NEXT J:PRINT:NEXT I:PRINT"Результат сглаживания" | 60 NEXT J:PRINT:NEXT I:PRINT"Результат сглаживания" | ||
70 IF N=2 THEN 160 ELSE IF N=1 THEN ?"Спорный вопрос!":END | 70 IF N=2 THEN 160 ELSE IF N=1 THEN ?"Спорный вопрос!":END | ||
- | 75 'Программные строки 80-190 позволяют сгладить матрицу A(N,N).Результат сглаживания - матрица B(N,N). | + | 75 'Программные строки 80-190 позволяют сгладить матрицу A(N,N). |
+ | Результат сглаживания - матрица B(N,N). | ||
80 FOR I=2 TO N-1:FOR J=2 TO N-1 | 80 FOR I=2 TO N-1:FOR J=2 TO N-1 | ||
90 B(I,J)=(A(I-1,J)+A(I,J-1)+A(I,J+1)+A(I+1,J))/4:NEXT J,I | 90 B(I,J)=(A(I-1,J)+A(I,J-1)+A(I,J+1)+A(I+1,J))/4:NEXT J,I | ||
Строка 2307: | Строка 2361: | ||
20 DIM A(M,M):X=RND(-TIME) | 20 DIM A(M,M):X=RND(-TIME) | ||
30 FOR I=1 TO M:FOR J=1 TO M:A(I,J)=INT(10*RND(1)):PRINT A(I,J);:NEXTJ:PRINT:NEXT I | 30 FOR I=1 TO M:FOR J=1 TO M:A(I,J)=INT(10*RND(1)):PRINT A(I,J);:NEXTJ:PRINT:NEXT I | ||
- | 35 'Нахождение максимальной среди сумм элементов диагоналей, расположенных выше главной (строки 40-50). | + | 35 'Нахождение максимальной среди сумм элементов диагоналей, |
+ | расположенных выше главной (строки 40-50). | ||
40 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M | 40 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M | ||
- | 50 IF J=I+K THEN B=B+A(I,J):NEXT J:NEXT I ELSE NEXTJ:NEXTI:IF B>C THEN C=B:B=0:NEXT K ELSE B=0:NEXT K | + | 50 IF J=I+K THEN B=B+A(I,J):NEXT J:NEXT I ELSE NEXTJ:NEXTI: |
- | 55 'Нахождение максимальной среди сумм элементов диагоналей, расположенных ниже главной (строки 60-70). | + | IF B>C THEN C=B:B=0:NEXT K ELSE B=0:NEXT K |
+ | 55 'Нахождение максимальной среди сумм элементов диагоналей, | ||
+ | расположенных ниже главной (строки 60-70). | ||
60 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M | 60 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M | ||
- | 70 IF J=I-K THEN B=B+A(I,J):NEXT J:NEXTI ELSE NEXTJ:NEXTI:IF B>D THEN D=B:B=0:NEXT K ELSE B=0:NEXT K | + | 70 IF J=I-K THEN B=B+A(I,J):NEXT J:NEXTI ELSE NEXTJ:NEXTI: |
- | 80 IF C>D THEN PRINT C ELSE PRINT D 'Сравнение этих максимумов и вывод большего на экран дисплея. | + | IF B>D THEN D=B:B=0:NEXT K ELSE B=0:NEXT K |
+ | 80 IF C>D THEN PRINT C ELSE PRINT D | ||
+ | 'Сравнение этих максимумов и вывод большего на экран дисплея. | ||
run | run | ||
? 4 | ? 4 | ||
Строка 2348: | Строка 2407: | ||
Ok | Ok | ||
10 DEFINT M,N,I,J,K,A:INPUT"Введите M и N";M,N | 10 DEFINT M,N,I,J,K,A:INPUT"Введите M и N";M,N | ||
- | Кто геометрическое среднее между атомом и Солнцем? \\ | ||
20 INPUT"Числовой отрезок[X,Y]";X,Y | 20 INPUT"Числовой отрезок[X,Y]";X,Y | ||
30 Z=RND(-TIME):DIM B(M,N),A(M,N) | 30 Z=RND(-TIME):DIM B(M,N),A(M,N) | ||
Строка 2379: | Строка 2437: | ||
NEW | NEW | ||
Ok | Ok | ||
- | 10 DEFINT M,N,I,J,A,K:INPUT"Введите M и N";M,N:X=RND(-TIME):DIM A(M,N):IF M<1 OR N<1 THEN RUN 10 | + | 10 DEFINT M,N,I,J,A,K:INPUT"Введите M и N";M,N:X=RND(-TIME):DIM A(M,N): |
+ | IF M<1 OR N<1 THEN RUN 10 | ||
30 FOR I=1 TO M:FOR J=1 TO N | 30 FOR I=1 TO M:FOR J=1 TO N | ||
- | 40 A(I,J)=INT(30*RND(1)+1):IF A(I,J)=2 THEN PRINTUSING"\ \";STR$(A(I,J))+"*";:NEXT:PRINT:NEXT | + | 40 A(I,J)=INT(30*RND(1)+1):IF A(I,J)=2 THEN PRINTUSING"\ \";STR$(A(I,J))+"*";: |
+ | NEXT:PRINT:NEXT | ||
50 K=0:FOR K=2 TO A(I,J)-1 | 50 K=0:FOR K=2 TO A(I,J)-1 | ||
- | 60 IF A(I,J)/K<>FIX(A(I,J)/K) THEN NEXT K:PRINTUSING"\ \";STR$(A(I,J))+"*";:NEXT J:PRINT:NEXT I ELSE Y=Y+1:PRINT USING"\ \";STR$(A(I,J))+" ";:NEXT J:PRINT:NEXT I | + | 60 IF A(I,J)/K<>FIX(A(I,J)/K) THEN NEXT K:PRINTUSING"\ \";STR$(A(I,J))+"*";: |
+ | NEXT J:PRINT:NEXT I ELSE Y=Y+1:PRINT USING"\ \";STR$(A(I,J))+" ";:NEXT J:PRINT:NEXT I | ||
70 PRINT"Звездочками отмечены простые числа;составных чисел в Вашем массиве";Y | 70 PRINT"Звездочками отмечены простые числа;составных чисел в Вашем массиве";Y | ||
run | run | ||
Строка 2404: | Строка 2465: | ||
20 INPUT"Числовой отрезок[X,Y]";X,Y | 20 INPUT"Числовой отрезок[X,Y]";X,Y | ||
30 Z=RND(-TIME):DIM A[M,N],Q[M,N],L[N],F[N] | 30 Z=RND(-TIME):DIM A[M,N],Q[M,N],L[N],F[N] | ||
- | 40 'Заполняем массив A[M,N] случайными целыми числами из отрезка [X,Y] и копируем его в массив Q[M,N](строки 50-70) | + | 40 'Заполняем массив A[M,N] случайными целыми числами из отрезка [X,Y] и |
+ | копируем его в массив Q[M,N](строки 50-70) | ||
50 FOR I=1 TO M:FOR J=1 TO N | 50 FOR I=1 TO M:FOR J=1 TO N | ||
60 A[I,J]=INT((Y-X+1)*RND(1)+X):Q[I,J]=A[I,J] | 60 A[I,J]=INT((Y-X+1)*RND(1)+X):Q[I,J]=A[I,J] |