Читать книгу Программирование - Валерий Федорович Альмухаметов - Страница 1

Оглавление

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

– постановкой задачи;

– информацией об исходных данных;

– структурой используемой ЭВМ;

– представлением чисел; (точность, округление…);

– степенью универсальности задачи;

– требованиями к выходным данным.

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

При решении задачи на ЭВМ всегда получается не точное решение, а некоторое приближённое. Погрешность численного метода делится на:

– неустранимую погрешность, обусловленную неточным заданием входных данных, или погрешностью измерения,

– погрешность дискретизации или погрешность метода, она обусловлена заменой исходной задачи другой задачей, более удобной для решения на ЭВМ,

– погрешность округления, которая может нарастать в процессе вычислений.

Рассматриваюются базовые понятия современных универсальных языков программирования Basic, Visual Basic, Pascal и среда Delphi, а также C#. Представлены упражнения для освоения языков программирования.


©Альмухаметов В.



Язык программирования BASIC

Одна из разновидностей языка базовый BASIC, например GWBASIC.

Каждая программная строка начинается с номера строки. Минимальный номер строки = 0, максимальный номер строки = 65535. Ввод набранной строки осуществляется клавишей ENTER. Максимальная длина вводимой строки до 255 символов.

Программные строки можно вводить в любой последовательности, но выполняются они в порядке возрастания номеров. Нумерацию строк производят с некоторым шагом, например 10, 20, 30, …, это позволяет при необходимости добавлять внутрь программы новые строки.

Команды языка

LOAD -(клавиша F3) после команды необходимо указать набором полное имя (или маршрут и имя) загружаемого файла программы.

LIST – (клавиша F1) вызов строки или программы. Для исправления строки программы необходимо вывести строку с помощью команды LIST N, где N это номер строки или группу строк LIST N – M, либо набрать и ввести строку заново с тем же номером. После исправления не меняя положение курсора нажать ENTER.

DELETE N-M – удаление строк программы с номера N по M (удалить любую строку можно набором ее номера и нажатием клавиши ENTER).

RUN – (клавиша F2) запуск программы на исполнение.

Основные конструкции языка

Основной конструкцией языка является ОПЕРАТОР. Строка программы может состоять из одного или нескольких операторов, которые разделяются символом (:).

Алфавит языка

– 26 прописных и строчных букв латинского алфавита;

– десятичные цифры от 0 до 9;

– знаки арифметических операций (+, -, *, /, \, ^);

– знаки операций отношения ( >, <, >=, <=, =);

– специальные знаки ( ),(,”, %, ‘, ?, !, #, $, @, & );

Данные языка

Имя данного должно начинаться с буквы, а в конце может иметь знак, определяющий тип данного. В случае, если обозначение типа отсутствует, то идентификатору присваивается тип вещественный. Обозначения: % -целые данные, ! -вещественные, # -двойной точности, $ -символьные.

Индексированные переменные ( А(1,5); К#(7); D(3,3,3); N%(2,4)), имеют кроме имени индекс, заключаемый в круглые скобки.

ИНДЕКСЫ массива – целые выражения, принимающие положительные значения. Массивы чисел, использующиеся в программе, должны обязательно быть описаны с помощью оператора ОПИСАНИЯ РАЗМЕРНОСТИ МАССИВА: DIM, например:

10 DIM A(15),M(5,10,20)

Описывается два массива “А” из 16 элементов и “М” из 1386 элементов (начиная с нулевого). Количество элементов в массиве равно произведению его измерений. Оператор DIM должен располагаться в программе до первого обращения к массивам, которые он описывает.

Для определения переменных используется оператор ПРИСВАИВАНИЯ: LET.

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

120 LET V=A(4)

Ключевое слово LET в операторе может быть опущено.

130 C= А(6)+В

Ввод вывод данных

Для ввода данных из программы может использоваться оператор ДАННЫХ: DATA. Он может находится в любом месте программы.

Оператор ВВОДА: READ присваивает значения переменных величинам из оператора DATA. Должно соблюдаться соответствие количества элементов операторов READ и DATA.

Оператор ВОССТАНОВЛЕНИЯ: RESTORE возвращает к считыванию первого элемента оператора DATA после того как несколько из них или все были считаны.

200 DATA 2.5,7.1,5,9,12

210 READ A,B,C

220 READ K

Величинам A,B,C и К присвоятся соответственно значения: A=2.5; B=7.1; C=5; К=9.

230 RESTORE

240 READ M,N

Величинам М и N присвоятся значения 2.5 и 7.1.

Оператор ВВОДА С КЛАВИАТУРЫ: INPUT содержит список переменных, которые необходимо ввести.

250 INPUT “скорость=”;V

При выполнении этого примера на экране появится надпись: скорость=? после этого компьютер переходит в режим ожидания и необходимо ввести численное значение величины V (набрать значение и нажать клавишу исполнения). Если переменных несколько, то набираются они все через запятую. Комментарий, заключенный в кавычки можно опустить, но при этом на экране появится знак вопроса без указания какую из переменных необходимо ввести.

Для ввода из файла используется оператор ОТКРЫТИЯ ФАЙЛА: OPEN.

260 OPEN “A1.DAT” FOR INPUT AS #K

Открывается файл с именем A1 и расширением DAT, номер его К (1 – 3 ), затем из файла вводится с помощью оператора INPUT #K,R переменная R.

Оператор ЗАКРЫТИЯ файла: CLOSE K# закрывает открытый К# файл. Для вывода в файл используется оператор с записью ( FOR OUTPUT ) и затем ( PRINT # ).

Вывод на экран дисплея осуществляется оператором ВЫВОДА: PRINT со списком выводимых переменных.

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

300 PRINT “РЕЗУЛЬТАТ А и В =”,A;B

Для раздельного вывода по столбцам, запятая:

310 PRINT C,D

Оператор PRINT без списка данных выполняет перевод строки.

Функция TAB производит форматирование вывода.

330 PRINT TAB(5),X

Перед выводом числа Х будет пропущено 5 пробелов. Функция TAB часто используется для построения графиков или таблиц.

Операции

Действия, совершаемые над числовыми данными, называются ЧИСЛОВЫМИ операциями.

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

* – умножение; / – деление;

\ – деление нацело ( 10\4 = 2; 25.7\6.98 = 3 ), результат выполнения равен целому числу;

МOD – арифметический модуль ( 10 MOD 3 = 1 ), результат выполнения равен целому остатку от деления;

+ – сложение; – – вычитание.

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

Результатом выполнения операции ОТНОШЕНИЯ ( = равно, > больше, < меньше, >= больше или равно, <= меньше или равно, <> не равно ) является 1, если ответ положителен и 0, в противном случае.

Результатом ЛОГИЧЕСКИХ операций (AND-и, OR-или, NOT-нет) является истина или ложь.

Нестандартные функции

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

Для описания типа функции используется оператор ОПИСАНИЯ ТИПА ФУНКЦИИ: DEF FNR1(X) = E, где DEF FN -оператор, R1– имя или идентификатор функции, Х – список ФОРМАЛЬНЫХ ПАРАМЕТРОВ ( имена фиктивных переменных фактических значений, которые должны быть вычислены к моменту выполнения функции, если их несколько, то все они перечисляются через запятую). Е – вид описываемой функции.

Например:

400 DEF FNFS1(X,Y)=A*(X^2+Y^2)

500 C=A+FNFS1(B,C)

где имя функции FS1, формальные параметры– X и Y, фактические значения– B и C.

Стандартные функции

МАТЕМАТИЧЕСКИЕ функции:

ABS(X) = +X ,число или выражение по модулю;

SIN(X) = sin(Х), синус числа или выражения;

COS(X) = косинус аргумента;

TAN(X) = тангенс аргумента;

SQR(X) = корень квадратный числа или выражения;

EXP (X) = ех – экспонента аргумента;

LOG(X) = натуральный логарифм;

RND(1) = случайное число из диапазона 0 – 1.

Функции ПРЕОБРАЗОВАНИЯ ДАННЫХ:

FIX(X) – отбрасывает числа после запятой;

СINT(X) – определяет наибольшее целое, не превосходящее значение аргумента;

INT(X) – округляет значение до ближайшего целого;

SGN(X) – определяет знак аргумента и присваивает результату значение -1, если знак аргумента отрицательный, 0, если аргумент равен нулю, и 1 , если положительный.

Функции ОБРАБОТКИ СТРОК:

STRING$(N,”Z”) – формирует строку из N знаков Z;

MID$(X$,N,M) – выделяет часть строки: с номера символа N всего M символов строкового аргумента Х$.

Функции ПРЕОБРАЗОВАНИЯ СТРОК:

VAL(X$) – преобразование цифровой строки в цифровое значение;

STR$(X) – преобразование цифрового значения в текстовую строку, содержащую цифры.

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

Операторы передачи управления

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

Оператор БЕЗУСЛОВНОГО ПЕРЕХОДА: GOTO N осуществляет переход к выполнению операторов с номера строки N. номер строки N – целая константа.

Оператор УСЛОВНОГО ПЕРЕХОДА: IF L THEN S , где L – выражение, принимающее логическое значение “истина” (не нуль) или “ложь” (нуль), S – оператор. Читается этот оператор таким образом: если условие выполняется, тогда выполнить предложенное действие (тоже оператор).

IF A>B THEN PRINT “A”

IF X<>B AND B<>0 THEN GOTO 500

или запись:

IF X<>B AND B<>0 THEN 500

или запись:

IF X<>B AND B<>0 GOTO 500

ПОЛНЫЙ оператор условного перехода дополняется ключевым словом ELSE – иначе, после которого расположен оператор, выполняемый при значении “ложь”. Если условие выполняется, то выполнить действие, а иначе выполнить другое действие.

IF L THEN S ELSE S1

IF A=B THEN 10 ELSE PRINT “A<>B”

IF A=B THEN IF B=C THEN

PRINT “A=C” ELSE PRINT “A<>C”

Последний из записанных операторов имеет вложенную структуру, одно условие содержит другое.

Операторы организации циклов

Цикл в программе можно организовать с помощью операторов: безусловного перехода (для выполнения повтора) и условного перехода, содержащего условие, при выполнении которого производится выход из цикла.

Для организации цикла также могут использоваться специальные операторы языка: оператор НАЧАЛА ЦИКЛА: FOR и оператор ОКОНЧАНИЯ ЦИКЛА: NEXT.

Цикл FOR – NEXT записывается в виде:

FOR I = E1 TO E2 STEP E3

Где I – простая числовая переменная, параметр цикла, Е1, Е2, Е3 – числовые выражения (начальное, конечное значения и шаг изменения параметра цикла). Читается этот оператор: для индекса I, изменяющегося от значения Е1 до значения Е2 с шагом Е3, выполнить следующие действия. Цикл завершается оператором NEXT I.

Если шаг изменения Е3 равен 1 то конструкция STEP опускается. Параметр I после слова NEXT можно не указывать, особенно если цикл в программе один.

600 FOR K=1 TO N

610 F=F*K

620 NEXT

После окончания данного цикла параметр К принимает значение К = N + 1. Циклы могут иметь вложенную структуру.

700 FOR I=1 TO 5

710 FOR J=0 TO -10 STEP -2

720 FOR K=5.5 TO 10.5 STEP .5

. . .

830 NEXT K

840 NEXT J

850 FOR L=2 TO 20 STEP 2

. . .

890 NEXT

Закрываются вначале внутренние циклы, а затем внешние. Используется одно окончание NEXT для циклов по I и L.

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

Подпрограммы

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

Вызов подпрограммы осуществляется оператором GOSUB N, где N – номер первой строки подпрограммы. Завершает подпрограмму оператор RETURN, возвращающий управление в основную программу на оператор, следующий за оператором обращения к подпрограмме GOSUB. Из подпрограммы также можно выйти с помощью операторов передачи управления: GOTO или IF – THEN. В операторе возврата в некоторых версиях Бейсика можно предусмотреть номер строки возврата RETURN N.

Программирование

Подняться наверх