Методические указания к выполнению контрольной работы по дисциплине «Информатика» Новочеркасск 2007

Вид материалаМетодические указания

Содержание


Формализация (математическая постановка)
Выбор (или разработка) метода решения.
3. Основы программирования
3.1. Азбука языка Qbasic
Option base 1.
3.2. Простейшие операторы языка
Data 7, 3.14159, "program", 1e-2
Input a, n%, xs
PRINT А, b, 125; 1+SIN(X)
Print using "##.##";56.746
Print using "##.##"; 126.94
Подобный материал:
1   2   3   4   5

Формализация (математическая постановка). На этом этапе все объекты задачи описываются на языке математики, выбирается форма хранения данных, составляются все необходимые формулы.
  • Выбор (или разработка) метода решения. Выбор существующего или разработка нового метода решения.
  • Разработка алгоритма. На этом этапе метод решения записывается применительно к данной задаче на одном из алгоритмических языков.
  • Составление программы. Перевод решения задачи на язык, понятный машине
  • Отладка программы.
  • Вычисление и обработка результатов.


    3. ОСНОВЫ ПРОГРАММИРОВАНИЯ


    Из десятков языков программирования Basic остается самым простым в изучении со времени его создания (1964 г.), кроме того, он имеется практически на всех ПЭВМ.

    Создание Microsoft QuickBASIC (QB) в середине 80-х годов произвело настоящую ре­волюцию в мире BASIC, результатом которой было то, что сегодня QB стал стандартом для языка BASIC.

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


    3.1. Азбука языка Qbasic


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

    Любой язык начинается с алфавита. Алфавит Basic включает в себя три группы сим­волов:

    буквенные символы - 26 букв латинского ал­фавита от А до Z (строчные и прописные) и буквы русского алфавита для записи коммен­тариев и символьных констант;

    цифровые символы - цифры от 0 до 9;

    специальные сим­волы (+,*,>,%,#,$, и другие).

    Из символов языка образуют слова, которые можно разделить на две группы:

    зарезер­вированные слова, имеющие фиксированный смысл и начертание (stop, end, print, if и другие);

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

    Программы на языке QuickBASIC обрабатывают два типа данных: константы и пере­менные. Переменные могут изменять свои значения в процессе выполнения программы, а значения констант фиксируются и не изменяются. Рассмотрим два типа констант: сим­вольные (строковые) и числовые.

    Строка представляет собой последовательность символов, заключенных в двойные ка­вычки.

    Например, "R=2m", "3.14159", "Скорость v=25 м/с" и т.д. Самая короткая строка не содержит никаких символов и называется пустой или нулевой строкой.

    Числовая константа может быть целого и вещественного типа. Самыми простыми чис­лами в QuickBASIC являются целые числа.

    Вещественные константы записываются в виде десятичной дроби (с фиксированной точ­кой).

    Например, 1.65, 9.,-.25 (ноль целых можно опускать). Допускается запись чисел с указанием порядка (с плавающей точкой) для представления очень больших или очень малых чисел.

    В этой форме число записывается в виде ±mE±р, где т - мантисса со знаком числа, а р - порядок числа со знаком (знак плюс можно опускать).

    Например, заряд электрона может быть представлен константой

    -1.60206Е-19.

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

    Тип переменной может быть определен последним символом идентификатора. Напри­мер, % - для целого типа, $ - для символьных переменных. Если имя переменной не окан­чивается одним из специальных символов, определяющих се тип, то по умолчанию счита­ется, что такой идентификатор обозначает числовую переменную обычной точности.

    Присвоение значений переменным может быть осуществлено с помощью оператора присваивания.

    Например, pi=3.14159

    а$="ток"

    n%=51


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

    Рассмотрим математические функции и их обозначения:




    SQR(x)



    EXP (x)

    sinx

    SIN(x)

    Lnx

    LOG (x)

    cosx

    COS(x)



    ABS (x)

    tgx

    TAN(x)

    arctgx

    ATN(x)


    Аргументом функции может быть произвольное арифметическое выражение. Напри­мер, sqr(x+5). Аргументы тригонометрических функций должны быть заданы в радианах. Функция atn(x) вычисляет при заданном значении х угол в радианах в интервале от -/2 до .

    Для вычисления arcsinx, arccosx, arcctgx пользуются известными соотношениями:

    arcctgx=/2–arctgx;

    arcsin x = arctg;

    arccosx=arcsinx.

    Для вычисления логарифмов с любым основанием используют известную формулу перехода: logаb = lnb/lna.

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

    INT(x) - наибольшее целое, не превосходящее х (целая часть числа);

    FIX(x) – усечение числа х до целого;

    CINT(x) - округление аргумента до целого.

    Например, INT (-2.6)=-3,

    INT(2.6)=2,

    FIX (-2.6)=-2,

    FIX (4.9)=4,

    CINT (4.9)=5.

    Если среди встроенных функций пользователь не найдет нужной ему, то он может сам определить свои функции. Это делается с помощью оператора DEF, после которого должно быть указано имя функции, начинающееся обязательно с букв FN. Оставшаяся часть имени может представлять собой любое допустимое имя переменной. За именем идет список параметров, заключенный в скобки. В правой части оператора записывается выражение, определяющее какие действия производит данная функция.

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

    DEF FNlg(x,b)=LOG(x)/LOG(b).

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

    DEF FNmin(a,b)=(a+b-ABS(a-b))/2;

    DEF FNmax(a,b)=(a+b+ABS(a-b))/2,

    которые вычисляют минимальное и максимальное значения из двух чисел а и b.

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

    Арифметические выражения - выражения, содержащие следующие знаки операций:



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

    *

    умножение

    +

    сложение

    \

    деление нацело

    /

    деление

    -

    вычитание

    Порядок выполнения действий определяется установленным приоритетом операций:

    - вычисление значений функций;

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

    - умножение и деление;

    - сложение и вычитание.

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

    Примеры записи арифметических выражений:



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

    Запись на Basic

    asinx + bcos2x

    A*SIN(x) + B*COS(2*x)

    -2ab/c + a/bc

    -2*A*В/С + A/B/C



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

    Например, 10\4=2, 25.75\б.98=3 (26\7=3).

    Выражения сравнения позволяют сравнивать два значения и устанавливать, выполняется ли между ними заданное соотношение.

    Допустимы следующие шесть типов отношений:


    =

    равно

    >

    больше

    < >

    не равно

    <

    меньше

    <=

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

    >=

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


    Они имеют одинаковый приоритет, т.е. при наличии в одном выражении нескольких опера­ций отношения они выполняются слева направо, если в выражении нет скобок.

    Результат сравнения при выполнении операций отношения может оказаться истинным (true) или ложным (false).

    Например,

    a > b+3 истинно при а=19 и b=2 и ложно при а=2 и b=19;

    х2<0 всегда ложно.

    Выражения с операциями отношения используются для проверки выполнения некото­рых условий и при сравнении величин.

    Логические выражения определяют специальные логические операции:

    NOT (логическое отрицание "НЕ");

    AND (логическое умножение "И");

    OR (логическое сложение "ИЛИ"),

    которые перечислены в порядке убывания приоритета.

    Результаты выполнения логических операций при соответствующих значениях пере­менных true (1) или false (0) даны в таблице истинности.


    Таблица 1

    Таблица истинности

    A

    B

    NOT A

    A AND B

    A OR B

    1

    1

    0

    1

    1

    1

    0

    0

    0

    1

    0

    1

    1

    0

    1

    0

    0

    1

    0

    0


    Если в одном выражении встречаются арифметические операции, операции отношения и логические операции, то они выполняются в порядке их перечисления.

    Например, логи­ческое выражение

    AND y>0

    будет истинно, если точка (х,у) принадлежит полукругу.

    Иногда удобно присвоить имя не одной переменной, а целой группе или, как говорят, массиву переменных.

    Пусть, например, задана числовая последовательность с общим чле­ном . Тогда каждому натуральному п (номеру члена) соответствует число - член последовательности. Так, а1 =5, а2=7 и т.д.

    В Basic такую последовательность задают массивом Аn)=2*n+3, а для обращения к отдельному элементу массива достаточно после его имени написать в скобках его поряд­ковый номер (индекс).

    Так, А(1)=5, А(2)=7.

    Элемент массива - это переменная с индек­сом.

    Количество индексов у массива определяет его размерность. Рассмотренный массив А, представляющий строку, - это одномерный массив. Если рассматривать числовые таб­лицы (матрицы), то положение числа в ней будет определяться двумя числами (номер строки и номер столбца).

    Такие массивы называются двумерными.

    Например, В(2,5) - элемент двумерного мас­сива, расположенный во второй строке и пятом столбце. В памяти ЭВМ двумерные массивы располагаются по строкам. По умолчанию нумерация элементов массива в QBASIC на­чинается с нуля.

    Правила образования имен массивов те же, что и для простых переменных. Все эле­менты одного массива должны иметь один и тот же тип.

    Объявление имени и типа массива, а также количества его элементов, осуществляется оператором DIM (размерность).

    Например, оператор

    DIM AS(55), N%(2,4)

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

    - одномерный с именем AS, состоящий из 56 элементов обычной точности, пронуме­рованных от 0 до 55;

    - двумерный с именем N, состоящий из 15 целых чисел, расположенных в трех строках (нулевой, первой и второй) и пяти столбцах (нулевом - четвертом).

    Чтобы порядковый номер (индекс) элемента массива начинался с 1, необходимо пе­ред оператором DIM записать оператор

    OPTION BASE 1.

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

    Например, B(i+l,2*j-l).

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


    3.2. Простейшие операторы языка

    Программа на QuickBASIC представляет собой последовательность строк, в которых записываются операторы или их метки. Операторы являются теми "кирпичиками", из ко­торых строится программа. Каждый из них содержит указание, что надо выполнить в данный момент. В строке может быть ни одного, один или несколько операторов, разде­ленных двоеточиями.

    Часто программы содержат различного рода комментарии, представляющие собой лю­бой текст, начинающийся одиночной кавычкой. Этот текст может помещаться в отдель­ной строке или в строке с операторами.

    Например, R=1.56: pi=3.14159

    - площадь круга S=pi*R2

    - длина окружности L=2*pi*R

    «Метка» оператора располагается в отдельной строке. Она служит для идентификации оператора, следующего непосредственно за ней. Метка может начинаться с буквы и со­стоять из любого количества букв и цифр. За меткой должно следовать двоеточие.

    На­пример,

    х = РI/n+1.2

    Ml:

    Y=SIN(2*x)+SQR(x)

    Z=l-2*y/x

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

    Он имеет вид: V = E,

    где V - переменная, Е - выражение.

    Например:



    pi=3.14159

    N=51

    M=M+1

    B(i)= 1-(2*I-1 )3

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

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

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

    READ <список переменных>

    DATA <список конcтант>

    Оператор DATA может содержать любые допустимые числовые или строковые кон­станты, заключаемые в кавычки.

    Например,

    DATA 7, 3.14159, "PROGRAM", 1E-2

    READ k%, pi, t$, В

    Выполнение этих операторов эквивалентно следующим присваиваниям:

    k%=7, pi=3.14159, t$-PROGRAM, В=1Е-2

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

    INPUT <список переменных>

    Например,

    INPUT A, N%, XS

    Выполняя оператор INPUT, ЭВМ выводит па экран дисплея знак вопроса. Появление этого знака означает, что пользователь программы должен ввести с клавиатуры значение каждой переменной, отделив их друг от друга запятыми. После набора последнего значе­ния следует нажать клавишу ENTER.

    Оператор INPUT позволяет выводить некоторое наводящее сообщение. Текст этого сообщения должен указываться в операторе INPUT в пиле строковой константы, за­ключенной в кавычки и отделяется от имени переменной точкой с занятой.

    Например, оператор:

    INPUT "Скорость равна"; v

    обеспечит появление на экране сообщения: Скорость равна ?

    Если вместо точки с запятой поставить запятую, то знак вопроса не выводится на эк­ран. После того как пользователь нажимает клавишу ENTER, отмечая окончание ввода, производится проверка правильности вводимого сообщения. Если количество набран­ных пользователем значений больше или меньше числа переменных оператора INPUT, то выдается сообщение " ? Redo from start" ("Повторите ввод"). После этого сообщения осуществляется повторный ввод всех значений с самого начала строки. Операторов INPUT может быть сколь угодно много и размещаться они могут в любом месте программы.

    Вывод информации осуществляется оператором

    PRINT <выводной список>

    Значения, выводимые на экран, зависят от элементов списка:

    - если в качестве элемента указана константа, то при выполнении оператора PRINT она будет напечатана на экране дисплея;

    - если в качестве элемента указана переменная, то на экране будет напечатано се зна­чение;

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

    Текст в списке оператора PRINT используется для печати заголовков и пояснений. Та­кой текст заключается в кавычки и может состоять из произвольной последовательности символов BASIC (включая и русский алфавит). При выполнении оператора PRINT этот текст будет напечатан на экране дисплея без кавычек.

    Например,

    PRINT А, b, 125; 1+SIN(X)2

    PRINT "Значение функции";У

    PRINT

    В операторе PRINT может отсутствовать список. В этом случае на экран выводится пустая строка.

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

    Если список завершается запятой или точкой с запятой, то следущий оператор PRINT начинает вывод в той же строке. В противном случае следующий оператор PRINT начинает вывод с крайней левой позиции следующей строки.

    Например, строка печати по­сле выполнения операторов

    х%=1

    PRINT "x";x%;

    PRINT " у=";1-2*х% ;

    будет иметь вид: х= 1 у= -1

    При использовании в операторе PRINT в качестве разделителя запятой значения выводятся в так называемом зонном формате. При этом экран разделяется на 5 зон печати по 14 позиций каждая, и печать элемента выводного списка осуществляется с начала сле­дующей зоны.

    Например, при выполнении оператора

    PRINT "Аргумент",Х,"Функция",Х2

    при Х%=2 будет выведено

    Аргумент 2 Функция 4

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

    При выводе информации с помощью оператора PRINT пользователь лишен возмож­ности изменять стандартную форму выводимых данных. В ряде случаев такой порядок может не удовлетворять пользователя. В QB имеется специальный оператор PRINT USING, организующий вывод значений числовых и строковых переменных по специаль­ным форматам. Общая форма оператора имеет вид

    PRINT USING "формат"; <список>

    Параметр «формат» состоит из специальных символов форматирования и показывает, как следует вывести на печать список, который формируется точно так же как и в опера­торе PRINT.

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

    # - вывод одного разряда выводимого значения;

    . - вывод в заданной позиции десятичной точки.

    Если количество позиций, указанное для дробной части, недостаточно, то число округля­ется. Для отрицательных чисел необходимо предусмотреть место под знак числа.

    Напри­мер, операторы

    PRINT USING "##.##";56.746

    PRINT USING "###.##";-25.3412

    выводят на экран значения

    56.75

    -25.34

    Если выводимые данные не помещаются и заданное форматом поле, то для обозначения ошибки перед числом печатается знак %, а затем - выводимое значение без соблюдения формата. Кроме того, если при округлении для числа потребуется больше позиций, чем отведено, то перед округленным числом также будет выведен знак %.

    Например, при вы­полнении операторов

    PRINT USING "##.##"; 126.94

    PRINT USING "#.##";9.9999

    будет напечатано

    %126.94

    %10

    Шаблон, задаваемый в операторе PRINT USING, может содержать любые символы, которые при использовании этого шаблона будут выводиться в том виде, как они запи­саны.

    Например, выполнение оператором S=457.82

    PRINT USING "Сумма равна ###.##";S

    приведет к появлению на экране строки

    Сумма равна 457.82