Общие сведения о языке программирования Qbasic

Общие сведения об языке программирования

	 Qbasic

	Язык QBASIC (Beginner's All-purpose Instruction Code) разработан Джоном Кимини и Томасом Куртцем в Дартмутском колледже, США, в середине 1960 г.

	QBASIC занимает  особое место среди всех языков высокого уровня. С самого начала он задумывался как универсальный язык для начинающих, и средства программирования на QBASIC до сих пор включаются в комплект поставки ПК, - как обязательный  элемент технологии.

	Вот некоторый достоинства QBASIC (с точки зрения массового пользователя):

простота синтаксиса;

простота организации данных и управляющих структур;

большое число встроенных команд и функций, позволяющих без труда выполнять такие операции, как управление текстовым и графическим экраном, обработка символьных строк и т.п.)

	Особым достоинством QBASIC следует считать возможность работы в режиме интерпретации, который резко упрощает процесс отладки программ: исполнение почти каждой команды можно проверить сразу после написания(Shift +F5).



АРИФМЕТИЧЕСКИЕ  ВЫРАЖЕНИЯ

 

      Программа на языке Бейсик записывается в виде последовательности символов, к числу которых относятся латинские и русские буквы, арабские цифры, знаки препинания (, ; : " ' ?) , знаки операций (* / - + < > <= >= = <> .), специальные символы (% & ! # $ ).

     Для обозначения исходных данных и результатов вычислений употребляются переменные.

     Последовательность латинских букв и цифр, начинающаяся с буквы, называется   идентификатором или именем переменной.

     Числа в программе записываются в десятичной системе, вместо запятой  в десятичных дробях пишется точка: 0, - 17, 0.25, - 34.85.

     Переменные и числа  -  это простейшие частные случаи выражения. Более сложные выражения строятся из чисел и переменных с помощью знаков сложения, вычитания, умножения, деления,  возведения в степень.  , , *, /, ^.

    При вычислении значений выражений действуют обычные правила старшинства  операций: 

возведение в степень - ^ 

умножение, деление *, /

3) сложение, вычитание +, -

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

     В выражении могут быть использованы следующие встроенные функции:

      ABS ( х)  - модуль х          х 

      SQR ( х)  - корень квадратный из х   ( х ).

      INT ( х ) - целая часть х

      SIN  ( х) - синус х (аргументом служит радианная мера угла)

      COS ( х ) - косинус х

      TAN ( x ) - тангенс х

      ATN ( x ) - арктангенс х

      LOG ( x )  - натуральный логарифм х

      EXP ( x ) - экспонента х

      SGN (x) - определение знака числа х

	

	Например. Записать по правилам Бейсика математические выражения



     X2 +2X-5.12                        (X^2+2*X-5.12)/(X^2+12.51)

            X2+12.51





2)          COS(X) - SIN(X)                     (COS(X)-SIN(X))/(ABS(COS(X)+SIN(X)))

          | COS(X) + SIN(X)|



Упражнения



1. Какие из следующих последовательностей символов являются идентификаторами, а какие нет.

       

а) Х                б) Х1             в) Х              г) Х1Х2         д) AB          е) ABCD       

ж) SIN            з) SIN ( Х )   и) А-1      к) 2А              л) MAX15



2. Записать по правилам Бейсика следующие выражения:



                     

    -  2,5     

     Х2 + Y2

1+ Х2- Y2

          2       

      

     







а)                              б) 1+ Х + Х2    в)  1+ Х+ 1+Х   г) А+В                                                 2                                                              C+D   

                                                                                                                                                                                                   

 



  + 30,2

               

     C+D

    д)     A+B -1,7                    е)  1,2-9,8Х                  ж)   Х2 + Y2  +100     

                                                 1-Y(54,264-Х)                        (2Х+50,2)    

            E+F+0,5                 

                                                                                                                                                                                                                                                                                                                                                  

	



 3. Переписать следующие выражения, записанные по правилам Бейсика, в традиционной математической форме:



а) А+B/ (C+D) - ( A+B) / C+D                б) A*B/ (C+D) - (C - D)/ B*(A+B)

в) 1+SQR (COS (Х+Y)/ 2)                       г) 2.56 + АВS ( Х^2-Y^6)

д) INT (Х*5.234 - А*(Х+Y))



ОПЕРАТОРЫ ВВОДА-ВЫВОДА



I Оператор присваивания      имеет общий вид:

 

                                           имя другой переменной                                                                              

      имя переменной=    арифметические выражения                                                   

                                           число 

                                                                                            

          В результате выполнения оператора присваивания переменной, стоящей слева от знака равенства присваивается значение другой переменной или значение арифметического выражения или численное значение. Для того, чтобы оператор присваивания мог быть выполним, необходимо, чтобы все переменные в выражении имели некоторые  значения , были заданы выше.



 ПРИМЕРЫ                1. А=0          2. С=2             3. А=2  :  В=3

                                                               В=С                С= (А+В)^ 2/5



УПРАЖНЕНИЯ 

1. Какие из следующих последовательностей символов являются операторами присваивания:



 а) А=В             б) А*Х+B=C      в) Z=Z+1       д)  Y=Y      e)  - Y=Y



2. Задать в виде оператора присваивания следующие действия:



а) переменной Z присвоить значение, равное полусумме значений переменных

  Х и Y.

б) удвоить значение переменной А,

в) значение переменной Х увеличить на 0.1,

г) изменить знак значения переменной Y.



3. Задать с помощью операторов присваивания следующие действия:

а) переменной А присвоить значение разности, а переменной В-полусуммы значений переменных Х и Y.

б) переменой А присвоить значение удвоенного произведения значений переменных Х и Y, а переменной В значение 0.

 

Даны Х, Y      получить    Х-Y             X=2,57    Y=-5,379

                                                  1+Х*Y 



Операторы  ввода-вывода



Оператор ввода с клавиатуры:



 INPUT ["текст";] X1, [X2, X3... XN]

[ ] - обозначают, что параметры, стоящие в них не обязательны;

X1, X2, ... XN - имена переменных или идентификаторы.

	В результате выполнения этого оператора на экране появится текст, а переменным X1, X2, ... XN  будут заданы значения с клавиатуры.



Операторы блока данных



READ X1,X2,X3, ... XN      где X1,X2,..XN - это имена переменных

DATA C1, C2, C3, ... CN        C1, C2, ... CN - это значения

	В результате выполнения этих операторов переменная X1 получит значение C1,  X2 примет значение C2...

Замечание! Оператор DATA может стоять в любом месте программы. Считывать данные из хранилища DATA можно с помощью нескольких операторов READ.

	Оператор RESTORE возвращает считывание данных на начало.



Оператор вывода на экран 

PRINT S1[ ;S2; S3 ...]

где  S1, S2 ... SN - списки

Списки это :

имя переменной, значение которой необходимо вывести на печать;

арифметическое выражение, значение которого необходимо вывести на печать;

текст, заключенный в кавычки.

	Разделителем между списками может быть:

, - списки отделяются друг от друга шагом табуляции, равным 8 пробелам;

; - списки печатаются вплотную друг к другу.

	Для управления выводом используют специальный оператор:

			LOCATE X,Y

где  X  - номер строки экрана 1<=X<= 24 , Y - номер столбца экрана 1<=Y<= 80.

Этот оператор указывает место для печати.

Задачи

Написать программу для вычисления функции:

1) Y=,где Х=.  Ответ вывести в  виде:

  ответ=Yпри Х=X                                      



2) Y=,      где       А=- 5.25,       В=,     С=

Ответ вывести в виде: Y=Y   

пропуск 2 строк

А=АВ=ВС=С



3) Y=,      где В=Sin, Х любое

Ответ вывести в виде:              

Y=Y

пропуск 2 строк

 Х=Х 

Y    где Х= (723,3/200,2)2 ,  Z=(53.2/41.3)3 

 Ответ вывести в виде:

 Y=Y

 пропуск 2 строк

 X=X        Z=Z



5)Y= ,   где X=Sin2 |Z|+0.5Z ;  A=2CosZ+1/(SinZ+2), где Z любое

Ответ вывести в виде:

Y=Y

пропуск строки

X=X A=A

6)Y=Cos, Z=Sin   ,X*



Ответ вывести в виде Y=Y        Z=Z  в 10-ой позиции 12-ой строки.

7)Даны действительные числа Х,У. Не пользуясь никакими операциями, кроме умножения, сложения и вычитания, вычислить за минимальное количество операций:

а)3Х2У2-2ХУ2-7Х2У-4У2+15ХУ+2Х2-3Х+10У+6

б)1-2Х+3Х2-4Х3              в)1+2Х+3Х2+4Х3             г)2Х4-3Х2+4Х2-5Х+6



Операторы  перехода

	Операторы условного перехода реализуют на языке программирования алгоритмическую конструкцию ветвления.

	Ветвление - это такая форма организации действий, при которой выполнение или иного действия зависит от выполнения или невыполнение некоторого условия.

Условие - это логическое выражение, содержащее знаки сравнения   и логические операции.(см. табл.)



знаки сравнения

логические операции

= равно

=

AND

логическое "и" (пересечение)

< меньше

<

OR

логическое "или" (объединение)

> больше

>

NOT

"не" (отрицание)

<=меньше или равно

<=





>=больше или равно

>=





<> не равно

<>





	

	Таблица действия логических функций (таблица истинности), где a и b -логические выражения.

A

B

NOT a

NOT b

a AND b

a OR b

TRUE

TRUE

FALSE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

TRUE

TRUE

FALSE

FALSE



	Пример записи логического выражения: a + b > c AND d <> 8 .

	Логическая операция NOT (отрицание) выполняется над простым логическим выражением:           NOT ( a> b )

Логическое выражение принимает одно из двух значений: TRUE (истина) и FALSE (ложь). Эти выражения применяются в операторах ветвления и цикла.

	Существующий приоритет выполнения операций поддерживается и здесь:

сначала выполняются операции в скобках, затем логическое умножение, логическое сложение

Примеры записей логических выражений:



математическая запись

запись на языке Бейсик

( X>0 ) и (Y<0 )

( X>0 ) AND (Y<0 )

-2<= X <=2

(X>=-2 ) AND (Y<= 2 )

 X<0 и X>10

( X<0 ) OR (X>10 )

Принят следующий приоритет логических и арифметических операций:

операции в скобках;

операция NOT ;

операции AND, /, * ;

операции OR, +, - ;

операции отношения.

	Упражнения

Вычислить значение логического выражения 

а) Х2 -У2  <=12 при Х=0 и У=-1          б) NOT ((X*Y) OR (Y >X) при X=4, Y=1

Написать логические выражения, которые имеют значение истинна лишь при выполнении указанных условий:

а)  X>0 и Y>0                                      Y не является MAX (X, Y, Z)

б) неверно, что X>0                            X, Y, Z равны между собой

в) 2< X < 20                                        точка с координатами X, Y принадлежит 1-                                                           

	                                                  ой четверти 



Операторы перехода разделяются на две группы:

операторы безусловного перехода и операторы условного перехода.



Оператор  безусловного перехода.

	Он служит для перехода из одной строки программы к другой, помеченной номером или меткой.



	Общий вид оператора:                   GOTO N



где  N - номер строки или метки оператора, на который происходит переход в программе.

Примеры:

   X=3                                         2.     GOTO   W

       GOTO 7                                             . . . 

       Y=2*X                                        W   PRINT "решение получено"

    7 Z=5*X



Операторы условного перехода

Существуют две формы ветвления: полная и неполная.





нет

да

да

нет









Блок операторов 

Блок операторов 2

Блок операторов 1









неполная форма ветвления

Полная форма ветвления







	Соответственно существуют и два вида операторов: полной и неполной альтернативы.

Полная альтернатива (предусмотрены команды в ветви "ДА" и в ветви "НЕТ").

Линейная форма записи (оператор записывается в одной строке)

		Условие выполняется  "ДА"



 

   IF  условие THEN блок операторов 1 ELSE блок операторов 2





			Условие не выполняется "НЕТ"



Работа оператора: в зависимости от того выполняется или не выполняется условие (условие - логическое выражение, которое может содержать знаки сравнения и логические операции). Если  условие истинно, то выполняется блок операторов 1, если условие ложно, то выполняется блок операторов 2.



ПРИМЕР:  IF A=1 THEN PRINT "ДА" ELSE PRINT "НЕТ"

                   PRINT "КОНЕЦ"

Здесь операторы работают следующим образом:

если условие А=1 "ИСТИННО", то выполняются операторы PRINT "ДА" и PRINT "КОНЕЦ";

если условие А=1 "ЛОЖНО", то выполняются операторы PRINT"НЕТ" и PRINT "КОНЕЦ".





Блочная форма записи:



IF условие THEN                                 ПРИМЕР:

	блок операторов                       CLS: INPUT a

	ветви "ДА"                                 IF a=1 THEN 

ELSE                                                         PRINT "работает ветвь ДА  "

	блок операторов                            PRINT a

	ветви "НЕТ"                               ELSE

END IF                                                      PRINT "работает ветвь НЕТ"

                                                                   PRINT a

                                                              END IF



II. Условный оператор неполной альтернативы:



IF условие THEN блок операторов



Примеры решения задач.

Пример 1.Определить наибольшее из двух чисел Х и У, введенных клавиатуры. 

CLS: INPUT " ";X, Y

IF X > Y THEN

             PRINT "НАИБОЛЬШЕЕ ЧИСЛО X="; X

ELSE

             PRINT "НАИБОЛЬШЕЕ ЧИСЛОY=";Y

END IF

END

Пример 2. Вычислите Функцию для любого значения Х.

              X2 +4X-7  , X<=-2      CLS: INPUT "введите X";X

  Y=<                                           IF X<=-2 THEN 

              X2-3X+12 , X>2                  Y=X^2+4*X-7

                                                    ELSE

                                                            Y=X^2-3*X+12

                                                    END IF

                                                    PRINT "ФУНКЦИЯ =";У;" при Х=";Х

                                                    END



Пример 3. Вычислите функцию У=3Х2 -5Х+12 на отрезке (-3,3) с шагом 1.

CLS: PRINT "Y", "X"

X=-3

4 Y=3*X^2-5*X+12

PRINT Y,X

X=X+1

IF X<3 THEN GOTO 4

END

Пример 4. Вычислите сумму целых чисел от 10 до 20 

S =10+11+12+...+20

CLS: S=0: X=10

5 S=S+X

X=X+1

IF X<=20 THEN GOTO 5

PRINT "сумма = ";S

END

Пример 5. Вычислите произведение нечетных чисел от 15 до 30  

Р= 15*17*19*...*29

CLS:P=1:X=15

7 P=P*X

X=X+2

IF X<30 THEN GOTO 7

PRINT "произведение = ";P

END



Циклы.

	В языке QBASIC предусмотрено два основных способа организации циклов:

повторение блока команд заданное количество (число) раз (цикл со счетчиком);

циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие.



Цикл со счетчиком (FOR... NEXT) ДЛЯ... СЛЕДУЮЩИЙ



	Оператор цикла реализует алгоритмическую конструкцию, в которой определенные действия повторяются многократно. 



Общий вид оператора цикла со счетчиком:



FOR  K=K1   TO   K2 STEP  K3   - заголовок цикла

      -   тело цикла   -

NEXT K                                          - конец цикла



	Здесь FOR  - имя оператора (переводится "для"); К - переменная (обычно целого типа), называемая переменная управления циклом ; К1, К2, К3 - начальное, конечное значения и шаг изменения величины К соответственно, могут быть представлены любыми арифметическими выражениями; ТО, SТЕР - переводится - "до", "шаг"; тело цикла - любые операторы языка Бейсик;   NEXT -  оператор (переводится "следующий").

	Совместная работа операторов и  определяется схемой:



К=К1









Тело цикла







К=К+К3







да









нет





где 

                                        K < K2,  если K3 > 0

   < условие  >  =      <

                                        K > K2 ,если  K3 < 0



Иначе говоря, операторы FOR и NEXT обеспечивают изменение значения К от К1 до К2 с шагом К3 и выполнение оператора (операторов), заключенных между FOR и NEXT, при каждом значении К.



Ограничения: 

Изменять значение величин К1, К2, К3 в процессе выполнения операторов FOR и NEXT не рекомендуется.

Вход в цикл, минуя оператор FOR, в Бейсике запрещен.

	

Примеры решения задач 



Пример 1. Выведите на экран в столбик целые числа от 1 до 10.

CLS

FOR J=1 TO 10 STEP 1

PRINT J

NEXT J

END



Пример 2. Вычислите сумму целых чисел от 1 до 10

CLS: S=0

FOR I=1 TO 10 STEP 1

S=S+I

NEXT I

PRINT " "; S

END



Пример 3. Вычислите значение функции   y=2X2-3X+5 на отрезке (-3, 3) с шагом 1,5

CLS : PRINT "Y"; "X"

FOR X=-3 TO 3 STEP 1.5

Y=2*X^2-3*X+5

PRINT Y,X

NEXT X

END



Пример 4. Вычислите сумму S=  2+4+ ...+2 N , если  N  вводится с клавиатуры    CLS : S=0

INPUT «введите  « N»;  N

FOR  I = 1 TO  N

S=S + 2 *N

NEXT I

PRINT «сумма = «; S

END



Пример 5  Выведите слово  «IBM» 10 раз, чтобы получилась  диагональ

 CLS

 FOR K =5  TO 15

 LOCATE  K, K

 PRINT  « IBM»            

 NEXT  K

 END



Цикл WHILE...  WEND (ПОКА...  КОНЕЦ)



	Конструкция WHILE...  WEND (ПОКА... КОНЕЦ) позволяет выполнять блок команд до тех пор, пока значение выражения, заданного в WHILE - "Истина".

Общий вид оператора



WHILE логическое выражение

-- блок команд –

WEND

	Работа операторов может определяться следующей схемой:





I = 1







								НЕТ	

		



						

						ДА



    Т е л о

    ц и к л а











	После завершения цикла управление передается команде, следующей за WEND.

	Если при проверке условия окажется, что значение логического выражения - "Ложь", блок команд не будет выполнен ни разу.

	С помощью WHILE...  WEND можно организовать вложенные циклы - каждый со своими WHILE...  WEND.

Ограничение: из этой конструкции нельзя выйти "досрочно", т.е. до завершения работы оператора.

Примеры решения задач.

CLS : I=1

WHILE I < 5

  PRINT "I=" ; I;

  I=I+1

WEND

	На экране будет :   I=1 I=2 I=3 I=4



Задачи по теме "Условный оператор" и "Оператор цикла"



1.Найти наибольшее из чисел (х+у)/2 и (х+у/2)для любых чисел х и у.

Вычислить значения функций для любых Х и Z

а)Y= (X-15)/(x-6) ;   б) Y= 2X-5/(7Z-4X);



               X2+5X-14,  если  X<-2

с)  Y= <

               3X2-7X   ,    если X>=-2

г)            5X2+4X-21 ,  если X < -7

     Y=<

               2X2-3X   ,   если X>=-7

д)            X+Z , если X<10 и Z>5

      Y=    X*Z в остальных случаях

Заданы длины сторон треугольника - А, В, С, Определить, является ли треугольник равнобедренным.

Составить программу, выводящую на экран первые десять натуральных чисел.

Составить программу, печатающую таблицу квадратов первых десяти целых чисел в центре чистого экрана.

Вычислить значения функции

а)  Y= 5*X2 -4X+11      на отрезке (-5,5) с шагом 1,5;



б)             X2-2*X+3, если X<0

         Y= <                                  на отрезке  (-7, 7) с шагом 1;

                 X-18+12,  если X>=0

в)               SIN(X),   если X<=0

        Y= <  SIN(X)+COS(X),  если 0<X<3

                  COS(X),  если X>=3;

на отрезке (-6, 6) с шагом 0,5.



Выведите в столбик ряд натуральных чисел от 1 до 10.



Выведите на экран в столбик четные числа от 1 до 20.



Выведите на экран в строку нечетные числа от 15 до 20.



Найдите:

а) сумму целых чисел от 10 до 20;

б) произведение целых чисел от 20 до 20;

в) сумму нечетных чисел от 20 до 40;

г)произведение целых чисел от 20 до 40;

д) сумму четных чисел от 1 до 20;

е) произведение четных чисел от 1 до 20.



Выведите на экран 10 раз слово "PENTIUM" по диагонали.



Дна последовательность чисел, введенная с клавиатуры. Найдите сумму отрицательных членов этой последовательности и произведение положительных, количество отрицательных и положительных.



Составьте программу, выводящую на экран:



а) движение "*" по первой строке экрана;

б) движение "*" по последнему столбцу экрана;

в) движение "*" по диагонали.



Вычислите суммы, если N  вводится с клавиатуры:

а)   1        1              1                  б)    1         1                   1

     15  +   25   + ... + N5 ;                    (3)2  + (5)2  + ... + (2N+1)2      ;



Вычислите произведения, если А и вводятся с клавиатуры:

а)      1          1           1                   ;                 

     (1+12)*(1+22)...(1+N2)

б) A*(A-N)*(A-2N)...(A-N*N);        в)    2*4*6*...*2*N .



Определить является ли произвольное число кратным:

а) двум;           б) трем;          в) пяти.

Выведите на экран простые числа в диапазоне

а)   от 1 до 20  ;       б)  от 20 до 100.

Определить является произвольное число простым.



Строковые переменные



	В языке Бейсик существует возможность обработки не только числовых, но текстовых, символьных данных. Для этого используют символьные (или строковые, литерные) константы, переменные и выражения.

	Символьная константа - это строка символов, заключенная в кавычки. Значением константы является последовательность составляющих ее символов не считая кавычек. Два идущих подряд знака кавычек задают пустую символьную строку, не содержащую ни одного символа.

	У символьной переменной есть имя, которое заканчивается знаком $, и значение в виде строки символов. 

	Для строк определена операция сравнения: строки считаются равными, если их длины равны и коды всех символов попарно совпадают. Если одна из строк совпадает с началом другой (но короче ее), то она меньше. В остальных случаях все решает код первого несовпадающего символа - меньше та строка, у которой он меньше.

	Операции, производимые над строковыми переменными

а) присвоение текстовой константы:

                       A$="СТРОКА СИМВОЛОВ"

                       T$=""   - очистка строки

б) печать значений строковых переменных:

                       PRINT A$, T$



в) склейка двух строк:

                                          T$=A$+B$

                                          P$="СЛОВО: "+P$

                                          C$="СКЛЕЙКА"+" "+"СТРОК"

г) ввод значений строковых переменных с клавиатуры:

                                      INPUT A$, B$

 - при вводе строку можно не заключать в кавычки.



	Основные функции работы с символьными переменными:



   VAL(A$) - перевод строки в число;

CHR$(L) - выдает символ по коду данного числа;

ASC(S$) - выдает код первого символа строки

   SRT$(K) - преобразует число в символьную строку, которая является записью в виде последовательности десятичных цифр;

   LEN(F$) - выдает длину символьного выражения;

   LEFT$( F$, N) - вырезает заданное количество символов слева; 

   RIGHT$  (F$, N) - вырезает заданное количество символов справа;

MID$(F$, N1, N2) - вырезка из строки заданного количества символов с заданного символа



Примеры решения задач.



Пример 1. Подсчитать, сколько раз среди символов заданной строки встречается буква "F".

CLS

INPUT "Введите строку - ";S$

K=0

FOR I=1 TO LEN(S$)

IF MID$(S$, I, 1)="F" THEN K=K+1

NEXT I

PRINT "Буква F встретилась ";K;" раз(а) "

END



Пример 2 . Составить программу, которая печатает заданное слово задом наперед.

CLS

INPUT "Введите слово - ";S$

FOR I=LEN(S$) TO 1 STEP -1

PRINT MID$(S$, I, 1);

NEXT I

END



Пример 3. Выдать номер позиции заданной строки, в которой впервые встречается буква "в". Если такой буквы в строке нет, выдать сообщение об этом.

CLS: INPUT "Введите строку - ";S$

K=0

FOR I=1 TO LEN(S$)

IF MID$(S$, I, 1)="в" THEN 80

NEXT I

PRINT "Буквы в нет в заданной строке"

GOTO 90

80 PRINT "Первая буква в встретилась в "; I ; " -й позиции"

90 END



Задачи на работу с символьными переменными



Подсчитать сколько раз среди символов заданной строки встречается буква «F».

Составить программу, которая печатает заданное слово задом наперед.

Подсчитать количество цифр в заданной строке.

Подсчитать количество слогов в слове.

Проверить, является ли заданное слово палиндромом  («перевертышем», как слова КАЗАК, ШАЛАШ и т.д.)

Среди натуральных чисел от 1 до n найти все такие, запись которых совпадает с последними цифрами записи их квадратов (5 и 25, 6 и 36, 25 и 625 и т.д.)

Выдать номер позиции заданной строки, в которой впервые встречается буква «в». Если такой буквы в строке нет, выдать сообщение об этом.

Выдать номер позиции заданной строки, в которой в пятый раз встречается буква «W». Если такой позиции нет, выдать сообщение об этом.

В заданной строке подсчитать отдельно количество символов «а» и «b».

Из заданной строки получить новую, заменив все запятые на точки. Распечатать полученную строку.

Из заданной строки получить новую, выбросив из нее все точки. Распечатать полученную строку.

Из заданной строки получить новую, удалив все звездочки («*») и повторив каждый символ, отличный от звездочки. Распечатать полученную. строку.

Из заданной  строки получить новую, заменив в ней все символы после первой звездочки («*») знаком «-«  (если в строке нет звездочек, оставить ее без изменения). Распечатать полученную строку.

Из заданной строки получить новую, удалив из нее все двоеточия, предшествующие первой точке, и заменив в ней все знаки «+» после первой точки знаком  -  (если в строке нет точек, добавьте одну в конце). Распечатать полученную строку.

В заданной строке поменять местами первую букву  а  и первую букву        b . Если хотя бы одной из них нет, напечатать сообщение, иначе распечатать полученную строку.

Определить наименьшую длину слова в заданной строке (считать, что слова отделяются друг от друга пробелами).

Из заданной строки выделить подстроку длиной 5 знаков (либо до конца строки, если осталось меньше), которая начинается с первой встретившейся в строке буквы  f . Распечатать эту подстроку или сообщение о том, что ее нет.

В заданной строке первый символ- заглавная латинская буква. Если это        К ,   О ,    D , заменить ее соответствующей строчной буквой. Распечатать полученную строку.

В заданной строке подсчитать количество букв латинского алфавита.

Из заданной строки получить новую, удалив все символы, не являющиеся буквами латинского алфавита.

В заданной строке преобразовать все заглавные буквы латинского алфавита в строчные, а строчные в заглавные.

Из заданной строки получить новую, удалив все группы букв  abcd .

Из заданной строки получить новую, заметив все группы букв  abc  на abcd .

Подсчитать, сколько слов в заданной строке оканчивается буквой  я , если известно, что после слова обязательно стоит пробел, либо точка.

Даны натуральное число n, символы s1,...sn. Преобразовать последовательность s1,...sn, , заменив в ней:

    а) все восклицательные знаки точками;

    б) каждую точку многоточием (т.е. тремя точками);

    в) каждую из групп стоящих рядом точек одной точкой;

    г) каждую из групп стоящих рядом точек многоточием (т.е. тремя точками).

Даны натуральное число n, символы s1,...sn. Выяснить, имеются ли в последовательности s1,...sn такие члены последовательности sj,sj+1, что sj - это запятая, а sj+1 - тире.

Даны натуральное число n, символы s1,...sn. Получить первое натуральное j, для которого каждый из символов sj и sj+1 совпадает с буквой а. Если такой пары символов в последовательности s1,...sn  нет, то ответом должно быть число 0.



Массивы



	В математике принято сходные по характеру величины обозначать одним общим именем, а различать их по индексу. Например, члены какой- либо последовательности можно обозначить следующим образом:

                           А1, А2 , ....  , А n

    имя                                             индекс

Аналогично поступают в Бейсике

                           А(1)    А(2)   ...    А(N)



      имя массива                         индекс в круглых скобках

	Массив - это совокупность переменных обозначенных общим  именем и различаемых с помощью индексов, которые записываются в круглых скобках после имени массива.

      DIM            Английское слово (дименшн) означает массив

	Оператор DIM используется для того, чтобы указать общее количество переменных в массиве. Это необходимо для рационального распределения памяти компьютера.



	

Объявление массива

	DIM A(7)          количество переменных в массиве (элементов            

 	                          в массиве)

Общее имя                          Исполнение оператора DIM  заключается 

элементов массива          в том, что в памяти компьютера образуется 

       				  массив переменных.

       А(0)  А(1) А(2)  А(3)  А(4)  А(5)  А(6)  А(7)  

А



















 Ограничение: массив нельзя объявлять дважды, поэтому следует объявлять массивы в начальных строках программы и не возвращаться в эти строки с помощью оператора GOTO.

	Каждый элемент массива обладает:

именем                  Х(5)

индексом                                        место в памяти, отведенное

значением                3,2                  под данный элемент массива

 

Ввод элементов массива может осуществляться несколькими способами:

1) DIM A (5)

    A(0)=4:  A(I)=-2.5:  (3)=10:  A(4)=0:  A(5)=6:  A(2)=3

   Этот способ ввода удобен, когда массив небольшой

2)Ввод элементов массива с клавиатуры

    DIM А(9)

    FOR I=0 TO 9

    INPUT A(I)

    NEXT I

3) DIM B (6)

    DATA 0, -2, 1, 5, 8, 5, 6. 26

    FOR N=0 TO 6

    READ B (N)

    NEXT N

Вывод элементов массива можно осуществлять в строку и в столбик:

1) DIM A(3)

     PRINT A(0), A(I), A(2), A(3)

   Этот способ вывода удобен, когда массив небольшой

2) DIM A(10)

    FOR I=0 TO 9

    PRINT A(I)

    NEXT I



Основные приемы при решении задач с применением массивов



Пример 1. Дан массив из 10 элементов. Найти сумму элементов массива

    DIM A (9)

    S=0

    FOR N=0 TO 9

    S=S+A(N)

    NEXT N

    PRINT сумма=;S



Пример 2. Найти минимальный элемент массива и индекс этого минимального  элемента

    DIM L (9)

    MIN=L(0): K=0

    FOR I=1 TO 9

    IF MIN>L(I) THEN MIN=L(I):K=I

    NEXT I

    PRINT минимум; MIN



Пример 3. Даны 2 массива А(9), В(9). Получить массив, каждый элемент которого равен сумме соответствующих элементов данных массивов

    DIM A(9), B(9), C(9)

    FOR I=0 TO 9

    C(I)=A(I)+B(I): PRINT C(I)

    NEXT I

СОРТИРОВКА  МАССИВА ПО ВОЗРАСТАНИЮ

1 СПОСОБ (метод пузырька)               2 СПОСОБ (метод сортировки         DIM A(9)                                                                                     простым способом).

    CLS                                                                       DIM  A(9)

    FOR  i = 0 TO 9                                                    PRINT “Введите 10 элементов”

INPUT A (i)                                                           FOR i=0 TO 9 

NEXT i                                                                  INPUT A(i) 

FOR  i = 0 TO 9                                                     NEXT i

FOR  y = 9 TO i STEP - 1                                      FOR i=0 TO 9

    IF A (y) >A(y-1) THEN GOTO 20                        P=A(i) : K=i

m = A (y)                                                               FOR y=i+1 TO 9 

A (y) = A (y-1) : A (y-1) = m                                IF A(y)>P THEN GOTO 50 

20 NEXT y                                                                P=A(y):K=y

 NEXT i                                                            50 NEXT y 

 FOR i=0 TO 9                                                       A(K)=A(i):A(i)=P

 PRINT А(i)                                              NEXT i

     NEXT i                                                    PRINT    “Отсортированные элементы”

                                                                      FOR i=0 TO 9

                                                                      PRINT A(i)

                                                                      NEXT i

                                                                      END

                                                                                

3 способ (метод простого включения)

DIM  A  (10),  В(9)

PRINT “Введите 10 элементов”

FOR i=0 TO 9

INPUT B (i)

NEXT i

FOR i=1 TO 10

A(i)=B(i-1)

NEXT i

FOR i=1 TO 10

P=A(I):Y=I-1

40IF  P<A(Y) AND Y>0 THEN  A(Y+1)=A(Y):Y=Y-1:GOTO 40

A(Y+1)=P

NEXT i

PRINT “Отсортированные элементы”

FOR i=1 TO 10

PRINT A (i)

NEXT i

END 



Задачи на использование цикла при обработке массивов.

Вывести положительные элементы массива Х(k), затем отрицательные элементы массива У(m) и количество выведенных чисел.

Даны k  и массив X(k). Найти сумму.

    (X1-P)2+(X2-P)2+...+(Xk-P)2,  где  Р=Х1+Х2+...+Хk)/k.

Даны m и массив Х   ( m ). Найти произведение.

    (2+Х21)*(2+Х22)*...*(2+Х2m).

4. Найти номер элемента массива Х(k), ближайшего к С, где

    С=(Х1+Х2+...+Хk)/k

Даны С, m и массив Т(m). Найти число элементов массива Т, меньших С, а для элементов, больших С, найти их среднее арифметическое.

Для массива Т(m) найти число элементов, больших предыдущего элемента, а для тех, которые меньше, найти их среднее арифметическое.

Найти номер наименьшего положительного элемента массива Х(m).

Для массива Х(m) напечатать сумму, произведение и номера положительных элементов после последнего нулевого элемента. 

Даны k  и массив Т(k). Найти сумму и количество элементов в массиве Т после первого нулевого элемента.

Даны m и массив А (m). Напечатать сумму отрицательных элементов массива А после первого нулевого элемента.

Даны m, координаты ХА,УА пункта А и в массиве К из 2m чисел координаты Х1, У1, Х2,У2,...,Хm,Ym пунктов В1, В2,...,Вm. Вывести номер и координаты пункта В наиболее удаленного от пункта А.

Найти общее количество нулевых элементов в массивах Х(m), У(k).

Образовать и вывести массив Т из неотрицательных элементов массива  Х(m). Напечатать число элементов в массиве Т.

Вывести четные по значению среди положительных элементов массива Х(m), начиная с первого положительного элемента.

Удвоить наибольший элемент массива Х(m) и напечатать измененный массив.

Вывести ненулевые элементы массива Х(m) и их произведение.

Найти сумму и количество нечетных по значению элементов массива Х(m).

Образовать массив Т из ненулевых элементов массива Х(m). Затем вывести массив Т и количество элементов в нем.

В массиве Т(m) заменить нулевые элементы наибольшим элементом.

В массиве Х(m) найти сумму и количество элементов между первым и последним нулевым элементами.

Поменять местами наибольший и наименьший элементы массива Т(m).

В массиве Х(m) найти общее число элементов до первого и после последнего нулевых элементов.

Сколько элементов в массиве Х(m) после второго нулевого элемента.

Из элементов массивов Х(m) и У(m) образовать массив

    Н(Х1,У1,Х2,У2,..., Х(m), У(m) из 2m элементов.

Округлить элементы массива Х(m) до ближайшего целого.

Из элементов массивов Х(m), У(k) образовать массив

     Н((Х1,Х2,Х3,..., Хm, У1,У2,У3,...,Уk)   из m+k элементов.

Найти номер второго нулевого элемента массива Х(m).

Найти номер предпоследнего нулевого элемента массива Х(m).

Переставить элементы массива Х(m)  в обратном порядке, т.е. Хm,...,X2,Х1.

В массиве Х(m) найти число элементов между первым и вторым нулевыми элементами.

Сколько в массиве Т(m) элементов, меньших суммы всех элементов?

В массиве Т(m) нулевые элементы заменить суммой всех элементов.

Образуют ли арифметическую или геометрическую прогрессию элементы массива Х(m) ?

В массиве Т(m) заменить элементы с четными номерами суммой элементов с нечетными номерами.

Найти расстояние Р между массивами А(k) и В(k) по формуле:

     Р2-(А1-В1)2 +(А2-В2)2+...+(Ак-Вк)2.

В массив Р записать сначала отрицательные элементы массива Х(k). затем положительные.

В массиве Х(k) найти сумму элементов и их количество до первой перемены знака.

Из элементов массива Х(k), попадающих в отрезок [A,B], составить массив М и вывести его.

На плоскости ХОУ даны k точек массивами координат Х(k), Y(k). Образовать массив номеров точек вне I четверти.

Образовать массив Н номеров нулевых элементов массива Х(k).

В одномерном массиве с четным количеством элементов (2*N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: х1,у1,х2,у2,х3,у3 и т.д. Определить минимальный радиус окружности с центром в начале координат, которая содержит все точки, и номера наиболее удаленных друг от друга точек.

В двумерном массиве N x M  содержатся М ординат N графиков функций в точках 1,2,3 ,..., М. Определить, пересекаются ли эти графики в одной точке, и если да, то найти ее номер. Считать, что графики могут пересечься только в указанных точках.

В одномерном массиве содержится график движения электропроезда от Перми до Кунгура в виде:

    первый элемент- время движения до первой остановки;

    второй элемент- время стоянки на первой остановке;

    третий элемент- время движения до второй остановки;

    четвертый элемент- время стоянки на второй остановке;

    и так далее ....

    последний элемент- время движения от предпоследней остановки до Кунгура.

В одномерном массиве хранятся результаты социологического опроса. Написать программу для подсчета количества результатов, отклоняющихся от среднего не более чем на 7%.

От острова Буяна до царства славного Салтана месяц пути. Капитан корабля записывает в вахтенный журнал количества миль, пройденных за день. Написать программу, определяющую, в какую десятидневку пройден большой путь.

В массиве хранятся данные о температуре окружающего воздуха за месяц. Определить самую холодную декаду месяц.

Рост студентов двух групп, в которых соответственно 23 и 25 человек, размещен в двух массивах. Требуется определить средний рост студентов каждой группы, а также количество студентов в двух группах вместе, имеющих рост выше 180 см.

20 покупателей магазина оценивают качество товара оценками 3,4,5. Определить сколько процентов составляют покупатели, поставившие 5,4 и 3 в отдельности от общего числа покупателей, участвовавших в экспертизе товара.

В соревновании принимали участие команды трех классов по 6 человек в каждой. Результаты каждой команды занесены в определенный массив в виде баллов, которыми судьи оценивали каждого участника. Определить команду- победителя.

Необходимо протестировать 15 абитуриентов для распределения их по группам для изучения иностранного языка: английский язык, французский язык, немецкий язык, начальное знакомство с иностранным языком. Составьте программу, подсчитывающую количество абитуриентов в каждой группе в зависимости от того, как ответил абитуриент на вопрос о изучении иностранного языка в школе.

В течении января месяца в доме не работала котельная, поэтому температура в квартирах была непостоянной. Определить количество дней в течении которых жильцам посчастливилось иметь температуру не ниже 15 градусов, а также вычислить среднюю температуру воздуха в квартирах за этот месяц. Для решения задачи использовать массив.

18 учащихся сдавали норму по метанию гранаты. Составьте программу, определяющую какой процент учащихся выполнил норму. Если известно, что норма 38 метров.

В каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а в каждый пасмурный день опускается вниз на 1 см. В начале наблюдений улитка находилась в 30 см. от земли. Дан массив из 30 элементов, содержащий сведения о том был ли день солнечным или пасмурным. Составьте программу определения места нахождения улитки к концу 30 дня.

В день вашего рождения тетя положила на ваше имя в сбербанк вклад в размере 1000 рублей. Каждый год к вкладу добавляется S% годовых. Составьте программу для вычисления:

а)через сколько лет вклад достигнет R рублей?

б)какой размер вклада будет через 15 лет после вложения?

   

Операторы графики  



	Современные компьютеры обладают превосходными графическими возможностями - у современных мультимедийных ЭВМ возможен даже просмотр и редактирование видеофильмов. Графика  ориентирована на построение простейших геометрических фигур и реализацию простейших возможностей динамической графики.

	Для того чтобы работать с графической информацией необходимо установить графический режим работы специальным оператором и использовать соответствующие операторы:



SCREEN N- оператор включения графического режима, где N - номер режима работы (0 - текстовый режим работы, от 1 до 13 - графические режимы работы)



PSET (X,Y) - оператор рисования точки с координатами Х, У (0<= X<=XК  0<=Y<= YК, где ХК и УК - размер экрана в текущем режиме работы)



LINE (X1, Y1) - (X2, Y2) - оператор рисования отрезка, 

 где  (X1, Y1), (X2, Y2)- координаты концов отрезка, лежащих в диагональных вершинах

   LINE (X1, Y1) - (X2, Y2),, B- оператор рисования 

прямоугольника со 

сторонами параллельными осям 							X2,Y2

координат, если вместо параметра B

используется BF, то прямоугольник будет закрашенный

										

										X1, Y1

4. CIRCLE (X, Y),R - оператор рисования окружности 

CIRCLE (X, Y),R,,A,B - оператор рисования дуги от угла A до B против часовой стрелки, углы измеряются в радианной мере ( см. диаграмму).









 







PAINT (X, Y) - оператор окрашивает 

замкнутую область, начиная от указанной точки





	В основном работаем во втором графическом режиме, который имеет следующие характеристики: 

черно- белый экран, 

размер по горизонтали 0<=X<=639, 

по вертикали  0<=Y<=190.



Пример 1.Постройте три точки, которые являются вершинами равнобедренного треугольника.

            CLS

            SCREEN 2

            PSET (100,100)

            PSET (200,100)

            PSET (150,200)

            END

Пример 2. Постройте главную и побочную диагонали экрана.

            CLS 

            SCREEN 12

            FOR X=0 TO 639

            Y=-425/600*X+460

            PSET (X, Y)

            NEXT X

            END



Пример 3. Постройте n концентрических окружностей

            INPUT N

            SCREEN 2

            CLS

            FOR X=1 TO N

            R=1+3.14*(X -1)

            CIRCLE (315, 100) ,R,

            NEXT X

            END



Пример 4. Постройте  10 окружностей, расположенным случайным образом, пользуясь функцией RND.

	CLS

	SCREEN 2

	FOR I=1 TO 10

	CIRCLE (RND(1) * 639, RND(1)*190), RND(1)*100,0,0.14

	NEXT I

	END	

             

Пример 5. Составить программу, изображающую окружность в закрашенном прямоугольнике

SCREEN 2

CLS

LINE (60, 30) - (180, 150),,B

CIRCLE (120, 90), 60

PAINT (61, 31)

PAINT (179, 149)

END



Задачи на построение изображений.



 Графики элементарных функций                   

    Все рисунки, которые до сих пор были нарисованы на экранах, составлялись только из точек, отрезков прямых и дуг окружностей. Часто приходится в инженерных расчетах строить на экране дисплея любую кривую, для которой существует аналитическая (записанная в виде формулы) зависимость между абсциссой и ординатой каждой ее точки.

         Рассмотрим кривую, которая задана уравнением у=22+1. Это обыкновенная парабола, вершина которой лежит на единицу выше оси абсцисс.   Для построения параболы у=х2+1 в требуемом интервале изменения переменной надо работать по меньшей мере в двух  четвертях координатной плоскости.

     Чаще всего бывает нужна система координат с началом центра экрана (как на математической плоскости). В этом случае, установив начало координат в требуемой точке (х0,у0) на экране, можно координаты (х,у) произвольной точки кривой определять разностью (х-х0,у-у0). После этого в программе можно употреблять не только положительные, но и отрицательные значения.

     Рисунок получается маленький, почти незаметный, поэтому увеличить масштаб изображения: надо увеличить рисунок по х и по у в 319 раз, так как графический экран имеет размеры 640 на 480. Разделив 640 пополам, получим 320, т.е. от 0 до 319 приходится на положительную и отрицательную оси абсцисс. На экране можно получить ограниченное количество значений х, то все их легко перебрать с помощью цикла: Начальное значение цикла х=1, конечное значение х=1, а шаг по х при 639 значениях х на отрезке [-1,1]  получается равным 2/639 или 1/319.



 Примеры решения задач

Пример 1.Постройте график функции у=2х+4

screen 2

line (320,0)-(320,200)

line (0,100)-(640,100)

for x =-20 to 20

y= (2*x+4)*(-1)

pset (x+320,y+100)

next x



Пример 2. Постройте график функции у=х3.

screen 12

line (0,240)-(640,240),13

line (320,0)-(320,480),13

for x=-20 to 20 step 0.01

y=x^3

pset (320+4*x,240+y),3

next



Пример 3. Решите графически систему уравнений и проверьте, есть ли общее решение:

    { у=х2

    { у=х+6

     Решение:

screen 12

line (320,500)-(320,10),9

line (0,100)-(620,100),9

for x=-10 to 10 step 0.01

y=-x^2

pset (320+4*x,160+y),10

next x

for x=-100 to 100 step .01

y=-6-x

pset (320+x,160+y),12

next x

line (320,10)-(300,50),9

line (320,10)-(340,50),9

Графики пересекаются т.е. общее решение есть.



Задачи по теме "Графики элементарных функций"

1. Постройте график функции у= 1/2х+3

2. Постройте график функции у=х2+4

3. Решите графически систему уравнений и проверьте ,есть ли общее решение:

     {у=х2+5

     {у=|x|  

4. Решите графически систему уравнений и проверьте . есть ли общее решение:

  {у=х+2

  {у=|x|

5. Решите систему уравнений и проверьте, есть ли общее решение:

{у=2-7/х

{у=-х+6

6. Решите графически систему уравнений и проверьте, есть ли общее решение:

{у=х3

{у=|x|  

7. Постройте график тригонометрической функции у=сos(х).

8.Постройте график тригонометрической функции у= 2+sin (x).

9.Постройте график тригонометрических функций у=2+SIN(X/2).

10. Постройте график тригонометрической функции у= 1/2*COS (X)

11.Постройте график тригонометрической функции  Y=TAN(X)

12.Постройте график тригонометрической функции у=0,5*COS(X)-1

   

 









 















1