Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзамен по информатике.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
197.4 Кб
Скачать
  1. Базовая алгоритмическая конструкция разветвление

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

 

  

       

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

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

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

  1. Если условие выполняется , то идти к п.4;

  2. Исполнить действие ;

  3. Идти к п.5;

  4. Исполнить действие ;

…(конец вычислений или следующие предписания).

  1. Базовая алгоритмическая конструкция цикл с предусловием.

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

1) Проверяется условие (вычисляется значение логического выражения).

2) Если значение логического выражения — «истина» (да), осуществляется переход к следующему пункту, иначе к п. 1.5.

3) Выполняется тело цикла.

4) Осуществляется переход к п. 1.1.

5) Конец цикла.

  1. Базовая алгоритмическая конструкция цикл с постусловием.

В цикле с постусловием (цикл «до») – команда или серия команд повторяются, если условие выхода из цикла не соблюдается.

1) Выполняется тело цикла.

2) Проверяется условие (вычисляется значение логиче­ского выражения).

3) Если значение логического выражения - «ложь» (нет), осуществляется переход к п. 2.1, иначе к следующему пункту.

4) Конец цикла.

  1. Базовая алгоритмическая конструкция цикл с параметром.

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

Операторы тела цикла заключены между командой Repeat и служебным словом Until, что позволяет обходиться без операторных скобок (Begin – End) в случае нескольких операторов в теле цикла.

Без конструкции «цикл с постусловием» можно было бы обойтись, используя «цикл с предусловием», но если она есть –

значит ею надо пользоваться!

1) Вычисляются значения выражений, определяющих начальное и конечное значения параметра цикла.

2) Параметру цикла присваивается начальное значение.

3) Параметр цикла сравнивается с конечным значени­ем.

4) Если при положительном шаге параметр цикла превосходит конечное значение (при отрицательном шаге параметр цикла меньше конечного значения), то осуществляется переход к п. 3.8, иначе к следую­щему пункту.

5) Выполняется тело цикла.

6) Параметр цикла автоматически изменяется на вели­чину шага.

7) Осуществляется переход к п.3.3.

8) Конец цикла.

Вопрос № 19 Классификация языков программировая.

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

Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам, – языком низкого уровня.

Языки программирования также можно классифицировать на процедурные и непроцедурные.

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, К непроцедурному программированию относятся функциональные и логические языки.

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

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

Вопрос №20 Трансляторы, компиляторы и интерпретаторы

Транслятор –это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня , в программу состоящую из машинных команд (низкого уровня).

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

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

Интерпрекатор переводит и выполняет программу строка за строкой.

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

Вопрос №21 Машинно–ориентированные языки программировая.

Машинно – ориентированные языки

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

- высокое качество создаваемых программ (компактность и скорость  выполнения);

- возможность использования конкретных аппаратных ресурсов;

- предсказуемость объектного кода и заказов памяти;

- для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;

- трудоемкость процесса составления программ ( особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;

- низкая скорость программирования;

- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы.

Различают два уровня машинно-ориентированных языков:

  • языки символического кодирования (мнемокоды);

  • макроязыки.

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

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

Вопрос №22 Алгоритмические языки прогороммирования.

Алгоритми́ческий язык — формальный язык, используемый для записи, реализации или изучения алгоритмов. Всякий язык программирования является алгоритмическим языком, но не всякий алгоритмический язык пригоден для использования в качестве языка программирования

Основу языков программирования составляют алгоритмические языки. Первыми языками программирования были машинные языки, представляющие собой системы команд для конкретных электронно-вычислительных машин. С развитием вычислительной техники появились более сложные языки программирования, ориентированные на решение различных задач: обработка экономической информации (кобол), инженерные и научные расчеты (фортран), обучение программированию (алгол-60, паскаль), моделирование (сленг, симула). Расширение сферы использования компьютерной техники привело к появлению универсальных языков программирования для записи алгоритмов решения разнообразных задач (алгол-68, СИ, ПЛ/1), а также языков программирования для персональных компьютеров (бейсик, паскаль). Для перевода (трансляции) описаний алгоритмов с одного языка программирования на другой, преимущественно на машинный язык, применяют специальные программы — трансляторы.

Вопрос № 23 Алфавит, слова , числа , строки в языке QBasic.

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

Примеры строк программы на QBasic:

10 А=12

20 S=A+B

met1: I=1

Здесь в качестве меток выступают 10, 20 и met1. Однако нумерация

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

тексте программы на данную строку есть ссылка (передача управления), для

остальных же строк метки необязательны и нецелесообразны.

Программа на QBasic состоит из команд, которые представляют собой

совокупность различных символов – цифр, букв и специальных знаков, пере-

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

несколько команд (в последнем случае команды отделяются друг от друга

двоеточием, например: A = 1: B = 12: K = 5).

С помощью символов алфавита записываются служебные слова, которые составляют словарь языка. Примеры: INTEGER STRING IF THEN ELSE GOTO WHILE LOOP FOR TO NEXT

Алфавит QBasic включает:

– 26 латинских прописных букв:

– 10 арабских цифр:

(нуль в программах на QBasic обычно перечеркивается наклонной

чертой, чтобы нельзя было спутать его с буквой О);

– знаки арифметических операций:

– вычитание или присвоение знака минус,

+ сложение,

* умножение,

/ деление,

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

В QBasic широко используются следующие специальные знаки: 9

( ) – скобки ! – восклицательный знак

: – двоеточие = – равенство

; – точка с запятой > – меньше

. – точка < – больше

, – запятая \ – наклонная черта

" " – кавычки # – «решетка»

‘ – апостроф $ – знак денежной единицы

? – вопросительный знак % – знак процентов

& – амперсант

Форма записи чисел

Форма записи чисел на QBasic близка к естественной. Они представляются в виде последовательности соответствующих цифр с особыми знаками: знаками мантиссы (Мантисса — дробная часть логарифма числа.

) и порядка + или – , символом ввода порядка Е и знаком разделения целой и дробной части чисел – точкой вместо разделительной запятой.

Однако, если первая цифра мантиссы – число 0, ее можно не вводить.

Так, правильные дроби записываются в виде

.012 .3 -.991 -.0011

Вопрос № 24 Классификация данных языка QBasic.

Типы данных

Как правило, любой программе необходимы данные, которые каким-то образом обрабатываются  программой. Эти данные могут быть совершенно различными. Так, в простейшем случае различают два типа данных: числовые и строковые. В QBASIC разные типы данных должны иметь четкие различия и признаки.

Стандартные типы данных. 

В QBASIC можно объявить следующие стандартные типы данных:

Тип

Символ

Содержание

INTEGER

%

целые числа в интервале от -32 768 до +32 768

LONG

&

целые числа в интервале от -2 147483648 до +2 147483648

SINGLE

!

числа с плавающей запятой в интервале от ±8,43*10-37 до ±3,З7*1038

DOUBLE

#

числа с плавающей запятой в интервале от ±4,19*10-307 до ±1,67*10308

STRING

$

любые тексты с максимальной длиной 32 767 знаков

Примечание:

Обработка данных типа INTEGER производится значительно быстрее, чем данных типа DOUBLE.

Синтаксис языка напоминает Фортран и многие элементы — явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа.

1.Целые(тип- Integer) – это числа, не содержащие дробной части, например, 0, 5, -577. Целые числа могут быть положительными и отрицательными.

Если число отрицательное, то пред ним знак минус. Целые числа занимают в памяти ПЭВМ 2 байта.

2.Если диапазон изменения целых чисел слишком мал, то можно воспользоваться длинными целыми (тип- Long integer). Их значения могут изменяться в значительно больших пределах и занимаю в памяти 4 байта.

3. Числа с дробной частью представлены действительным типом( тип - Single-precision)

Когда числа слишком малы или велики то используется экспоненциальная форма записи. Буква Е в такой записи означает «10 в степени…», а показатель степени стоит после нее. Действительные числа могут иметь только семь значащих цифр. Занимают 4 байта в памяти.

4.Расширять диапазон и точность действительных чисел можно применяя числа типа действительные с двойной точностью ( тип - Double-precision). Для данных этого типа вместо буквы Е в записи применяют D. Числа с двойной точностью могут иметь 16 значащих цифр. Эти числа занимают в памяти ПЭВМ 8 байт.

Вопрос № 25 Логический тип данных.

Логический, булев (англ. Boolean или logical data type) тип данных — примитивный тип данных в информатике, которые могут принимать два возможных значения, иногда называемых правдой (true) и ложью (false). Присутствует в подавляющем большинстве языков программирования как самостоятельная сущность или реализуется через численный тип. В подавляющем большинстве языков за истину полагается единица, за ложь — ноль..

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

Доступные операции :

К этому типу данных применимы следующие операции:

И (логическое умножение) (AND, &, *),

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

исключающее ИЛИ (умножение с переносом) (xor, NEQV, ^),

эквивалентность (равенство) (EQV, =, ==)

инверсия (NOT, ~, !)

сравнение (>, <, <=, >=)

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

Применение

Традиционным применением булева типа данных являются значения «да»/«нет» в отношении результата более сложных операций.

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

Логический тип (boolean):

Логический тип данных часто называют булевым по имени английского математика Д. Буля, создателя математической логики. В языке Паскаль имеются две логические константы TRUE и FALSE. Логическая переменная принимает одно из этих значений и имеет тип Boolean. Для сравнения данных предусмотрены следующие операции отношения: <, <=, =, <>, >, >= Результат операции отношения имеет логический тип, т.е. результат операции может быть истинным или ложным, например, 3>5 – ложь.

Над величинами этого типа можно выполнять специфические логические операции OR - или; AND - и; NOT - не.

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

Вопрос №26 Целый тип данных.

Эта группа типов обозначает множества целых чисел в различных диапазонах. Имеется пять целых типов, различающихся допустимым диапазоном значений и размером занимаемой оперативной памяти. Целые типы обозначаются идентификаторами. Byte, Shortint, Word, integer, Longint; их характеристики приведены в следующей таблице.

Целый тип

Диапазон значений

Размер памяти

Shortint

-128..127

1 байт

Integer

-32768..32767

2 байта

Longint

-2147483648..2147483647

4 байта

Byte

0..255

1 байт

Word

0..65535

2 байта

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

-2147483648 ., +2147483747

Над целыми типами определены такие операции:

  1. "+" - сложение;

  2. " * " - умножение;

  3. " - " вычитание;

  4. div - целочисленное деление;

  5. mod - получение остатка от целочисленного деления.

Над целыми значениями допустимы следующие операции:

- четыре арифметических действия, имеющие привычный смысл. Эти действия обозначаются символами:

+ сложение

- вычитание

* умножение

/ деление

- две дополнительные операции "типа деления", обозначаемые служебными словами:

div деление нацело (с отбрасыванием дробной части)

mod взятие остатка от целочисленного деления

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

Вопрос №27 Действительные типы данных

Вещественный тип данных - это множество значений с десятичной точкой.

В языке Q basic числа с дробной частью представлены действительным типом( тип - Single-precision)

Когда эти числа слишком малы или велики, как например , - 5678000000, то используется экспоненциальная форма записи. -5678000000=-5.678* -в бейсике -5.678Е+9

Буква Е в такой записи означает «10 в степени…», а показатель степени стоит после нее. Действительные числа могут иметь только семь значащих цифр. Занимают 4 байта в памяти.

Расширять диапазон и точность действительных чисел можно применяя числа типа действительные с двойной точностью ( тип - Double-precision). Для данных этого типа вместо буквы Е в записи применяют D. Числа с двойной точностью могут иметь 16 значащих цифр. Эти числа занимают в памяти ПЭВМ 8 байт.

ПЭВМ -Персональная Электронно-Вычислительная Машина.

Вопрос №28 Структура программы

Структура программы

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

Алгоритмический язык

В алгоритмическом языке структура программы имеет следующий вид:

алг <имя программы> (<список переменных>)

<список аргументов>

<список результатов>

нач

<операторы>

кон

<имя программы> — идентификатор, однозначно определяющий программу;

<список переменных> — список величин, которые обрабатываются программой;

<список аргументов> — список величин, которые передаются в программу для обработки;

<список результатов> — список величин, которые вычисляются программой;

<операторы> — конечная последовательность операторов, реализующих исходный алгоритм и составляющих тело программы.

Бейсик

<метка> оператор

<метка> оператор

<метка> END

<метка> — уникальный числовой идентификатор каждой строки, позволяющий операторам перехода изменять ход выполнения операторов.

Вопрос №29 Средства ввода – вывода данных.

Оператор INPUT позволяет в процессе выполнения программы вводить данные с клавиатуры.  INPUT" наводящая строка "; список переменных,

Наводящая строка – любой текст, выводимый на экран перед запросом значения, список переменных- список переменных, для которых требуется ввод значений; имена переменных в списке должны быть разделены запятыми. При достижении оператора INPUT выполнение программы приостанавливается и на экране выводится знак вопроса, который указывает на то, что программа ожидает ввода данных. Если в оператор включена <"наводящая строка">, то она печатается перед знаком вопроса. После этого с клавиатуры производится ввод необходимой информации. Вместо точки с запятой после <"наводящей строки"> можно использовать запятую, которая подавляет печать вопросительного знака. Введенные данные присваиваются переменным, заданным в <списке переменных>. Число вводимых элементов данных должно соответствовать числу переменных в списке. Элементы данных в списке переменных разделяются запятыми. В качестве имен переменных в списке могут быть заданы переменные с индексами и строковые переменные. Тип каждого вводимого элемента данных должен соответствовать типу, задаваемому именем переменной. Строковые данные для оператора INPUT не нужно заключать в кавычки.

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

PRINT <список выражений>-выводится на экран дисплея.

LPRINT<список выражений>-выводится на принтер. В случае если <список выражений> отсутствует, печатается пустая строка. Если <список выражений> задан, то на дисплее распечатываются значения выражений. Выражения в списке могут быть числовыми и (или) строковыми. Строки должны быть заключены в кавычки. Позиция каждого печатаемого элемента определяется пунктуацией, используемой для разделения элементов в списке. Компилятор Basic разделяет строку на зоны печати, каждая из которых состоит из 14 позиций. Задание запятой в списке выражений приводит к тому, что следующее значение будет напечатано в начале следующей зоны. Если же задана точка с запятой, то следующее значение выражения будет распечатано непосредственно после предыдущего значения. Задание одного или нескольких пробелов между выражениями приводит к такому же результату, что и задание точки с запятой. Если запятая или точка с запятой стоят в конце списка выражений, то следующий оператор PRINT будет осуществлять печать значений выражений в той же строке, что и предыдущий оператор PRINT. В случае если список выражений не заканчивается запятой или точкой с запятой, то в конце каждой строки на печать будет выдаваться код возврата каретки. Если печатаемая строка длиннее, чем длина строки дисплея, то осуществляется переход на следующую физическую строку и печать продолжается. Перед положительным числом и после любого числа всегда помещается пробел. Перед отрицательным числом ставится знак минус.  Числа с обычной точностью, которые могут быть представлены семью и менее цифрами в формате без показателя степени с такой же точностью, что и в формате с показателем степени, выводятся на печать в формате без показателя степени.  Числа с двойной точностью, которые могут быть представлены шестнадцатью и менее цифрами в формате без показателя степени с такой же точностью, что и в формате с показателем степени, выводятся на печать в формате без показателя степени. В операторе PRINT вместо ключевого слова PRINT можно использовать вопросительный знак. 

Средства вывода данных: монитор , принтер, акустическия система.

Средства ввода данных: клавиатура , мышь , джойстик , трекбол, сканер, цифровые камеры.

Вопрос №30 Оператор присваивания.

Оператор присваивания - основной оператор любого языка программирования. Общая форма записи оператора:

  имя величины := выражение

Например, V:=A; или V:=A+1;

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

Как только в программе встречается переменная, для неё в памяти отводится место. Оператор присваивания помещает значение выражения в место, отведённое переменной.

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

Вопрос №31 Условный оператор .

Условный оператор имеет полную и краткую формы.

Полная форма условного оператора выглядит следующим образом:

if условие then оператор1 else оператор2

В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2.

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

if условие then оператор

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

В случае конструкции вида

if условие1 then    if условие2 then оператор1   else оператор2

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

if условие1 then begin    if условие2 then оператор1 end else оператор2

Например:

if a<b then   min := a else min := b; IF Условие THEN Оператор1 ELSE Оператор2;

или

IF Условие THEN Оператор;

Условие может быть представлено логической константой (FALSE – ложь, TRUE - истина), переменной логического типа (Boolean) или логическим выражением.

Если условие истинно, то выполняется оператор (простой или составной), следующий за словом THEN, в противном случае, когда условие ложно, будет выполняться оператор, следующий за словом ELSE. Альтернативная ветвь ELSE может отсутствовать, если в ней нет необходимости. В таком “усеченном” варианте, в случае, если условие оказывается ложным, ничего не происходит и выполняется оператор следующий за условным оператором IF.

Вопрос №32 Оператор выбора.

Оператор выбора case

Оператор case используется для выбора одного из нескольких направлений дальнейшего хода программы. Этот оператор имеет вид:

         case p of

             a: s1;

             b: s2;

             . .

             n: sn;

             else sn+1

         end;

При выполнении оператора case сначала вычисляется выражение p, называемое селектором выбора. Выражение p должно принадлежать типу данных, имеющему конечное число значений (например: integer). Затем, в зависимости от полученного значения (если оно равно одной из констант a, b, …, n, которые называются константами выбора), выполняется один из операторов s1, s2, …, sn, помеченный соответствующей константой. Каждый из этих операторов может быть составным. Затем управление передается следующему (после case) оператору в программе.

Если значение выражения p не совпадает ни с одной из констант выбора,  выполняется оператор sn+1, содержащийся после ключевого слова else, причем ветвь else в операторе case необязательна.

Зарезервированные слова case, of, else и end имеют смысл вариант, из, иначе и конец.

Кроме одиночных констант в вариантах оператора case могут использоваться диапазоны значений и списки (представленные через запятую).

Вопрос №33 Оператор цикла с предусловием

Оператор цикла с предусловием WHILE

Операторы WHILE...WEND предназначены для циклического повторения последовательности операторов до тех пор, пока заданное условие истинно.  WHILE<выражение>  ...  [<операторы цикла>]  ... WEND В случае если <выражение> не равно нулю (т.е. истинно), осуществляется выполнение <операторов цикла> до тех пор, пока не будет встречен оператор WEND. Затем происходит возврат к оператору WHILE и выполняется проверка <выражения>. Если оно, по - прежнему, истинно, то <операторы цикла> выполняются вновь. Если же оно не истинно, выполнение программы продолжается с оператора, который непосредственно следует за оператором WEND.  Допускается произвольное число уровней вложенности циклов WHILE…..WEND. Каждый оператор WEND соответствует последнему оператору WHILE. Если у оператора WHILE нет соответствующего ему оператора WEND, выдается сообщение об ошибке "WHILE without END". Если же наоборот оператору WEND не соответствует оператор WHILE, то выдается сообщение "WEND without WHILE".

Вопрос №34 Оператор цикла с постусловием.

Операторы DO ... LOOP организуют циклическое выполнение группы операторов ограниченных телом цикла DO ... LOOP пока (WHILE) или до тех пор, пока (UNTIL) условие продолжение цикла истинно.  DO 

…. <операторы>  …. LOOP {WHILE | UNTIL} <условие продолжения цикла>  или DO {WHILE | UNTIL} <условие продолжения цикла>  ….. <операторы> ….. LOOP где <условие продолжения цикла> - организуется оператором IF, а <операторы> - список выполняемых операторов программы.

Принципиальное отличие оператора DO…LOOP от оператора WHILE в том, что проверка условия производится не перед началом выполнения тела цикла, а после его выполнения, когда решается вопрос, повторить ли еще раз действия. Поэтому тело цикла всегда выполняется по крайней мере один раз.

Вопрос №35 Оператор цикла с параметром.

Операторы FOR и NEXT предназначены для организации циклического выполнения последовательности операторов языка Basic заданное число раз.  FOR <переменная>=x TO y [STEP z]  .…. <операторы>  .….  NEXT  где <переменная> - используется в качестве счетчика. Первое числовое выражение (x) задает начальное значение счетчика. Второе числовое выражение (y) определяет конечное значение счетчика.  Строки программы, следующие за оператором FOR, будут выполняться до тех пор, пока не будет встречен оператор NEXT. После этого к значению счетчика будет прибавлена величина, определяемая выражением (z) опции STEP - шаг. Затем осуществляется проверка с целью определения того, не превысило ли значение счетчика его конечного значения (y). Если этого не случилось, компилятор Basic осуществляет переход назад на оператор, который располагается сразу за оператором FOR и процесс вычисления повторяется. В случае если значение счетчика превысило конечное значение, выполнение программы продолжается с оператора, следующего непосредственно за оператором NEXT. В случае если опция STEP не задана, приращение принимается равным единице. Если в опции STEP задано отрицательное значение, то конечное значение счетчика цикла должно быть меньше начального. При этом значение счетчика каждый раз будет уменьшаться, и цикл будет выполняться до тех пор, пока значение счетчика не станет меньше конечного значения. В случае если начальное значение счетчика, умноженное на знак приращения, превышает его конечное значение, умноженное на знак приращения, цикл игнорируется. Циклы FOR ... NEXT могут быть вложенными, т.е. один цикл FOR ... NEXT может быть помещен в контексте другого цикла FOR ... NEXT. При вложении циклов каждый цикл должен иметь собственное, отличное от других имя счетчика цикла. Оператор NEXT вложенного цикла должен располагаться в программе до оператора NEXT, соответствующего внешнему циклу. В случае если вложенные циклы имеют одну и ту же точку окончания, для них можно задавать один оператор NEXT. Переменные в операторе NEXT могут быть опущены. В этом случае оператор NEXT будет соответствовать последнему оператору FOR. Если оператор NEXT располагается в программе раньше соответствующего ему оператора FOR, то выдается сообщение об ошибке "NEXT without FOR", и выполнение программы прекращается. 

Вопрос №36 Массивы и переменные с индексами.

Индексы массива

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

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

DIM <список переменных с индексами [AS тип]>

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

Пример для одномерных массивов: DIM A(20), B(50), C(100)

Пример для двумерных массивов: DIM A(20,10), B(20,50), C(5,100)

Если переменная массива не была описана оператором DIM, то максимальное значение индексов принимается равным 10. Если значение индекса превышает максимальное установленное значение, то выдается сообщение "Subscript out of range". Минимальное значение индекса всегда равняется нулю, кроме того случая, когда оно изменяется с помощью оператора OPTION BASE.

Оператор DIM устанавливает все элементы описываемого массива равными нулю. Приставка RE переопределяет ранее определенный массив.

Индекс - это метка ячейки памяти которая используется для обращения к этой ячейке.

Переменные с индексами имеют одно и тоже имя, но разные индексы :

А(1), А(2), А(3)

В программировании индекс пишется в скобках, в отличии от математической формы:

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

Дополнительно:

Ссылаться на элементы массива можно по их индексам. У каждого элемента массива имеется уникальный числовой индекс, идентифицирующий его. Если массив одномерный, индекс элемента ѕ это номер его строки. Например, индекс элемента, находящегося в третьей строке одномерного массива, равен 3. 2

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

Например, индексами элемента, находящегося в третьей строке и четвертом столбце двумерного массива, будут 3,4. Подробнее об индексах элементов массивов см. описание функции ASUBSCRIPT().

Индекс (индексы) первого элемента массива всегда равен 1. Если массив двумерный, его также можно обозначить одним числом. Функция AELEMENT() возвращает одиночный индекс для пары строчного и столбцевого индексов, а функция ASUBSCRIPT() возвращает строчный и столбцевой индексы элемента из его одиночного индекса.

Переменные с индексами

Описания необходимы для того, чтобы резервировать в памяти ЭВМ место для размещения элементов используемых массивов. Переменные с индексами (элементы массивов) можно использовать в программах так же, как и простые переменные соответствующего типа. Рассмотрим примеры составления программ с использованием массивов. Такого рода программы обычно являются циклическими: для того чтобы «перебрать» все элементы массива, необходимо многократно повторить однотипные действия. Пример 3.3.1. Составим программу отыскания наименьшего элемента в заданном одномерном массиве, содержащем я + 1 элементов а0, а,     ап. Поскольку задачу должна решать ЭВМ, то алгоритм решения должен предусматривать ввод элементов массива в ее память. Предварительное описание алгоритма может быть таким: 1. Ввести элементы массива; 2. Отыскать в массиве наименьший элемент (т. е. найти его величину и номер); 3. Вывести найденные значения. Второй и третий шаги алгоритма уже представлены нами в виде последовательности предписаний (см. с. 70). Ясно, что для осуществления первого шага нужно сначала ввести значение я, а затем 104 для каждого I, изменяющегося от 0 до я, произвести ввод а;. Теперь мы можем оформить весь алгоритм в виде последовательности предписаний, отвечающих определенным ранее управляющим структурам.

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

Долговременное хранение информации на компьютере производится на устройствах внешней памяти. На персональных компьютерах основной вид внешней памяти - магнитный диск.

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

Гибкие диски (дискеты) - сменные устройства, т. е. их можно менять в дисководе; винчестерский диск жестко вмонтирован в компьютер.

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

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

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

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

Правила именования каталогов и файлов.

Имя каталога может содержать от одного до восьми символов (латинских букв, цифр, а также некоторых других допустимых символов; в имени нельзя употреблять пробел): SYSTEM. WINDOWS, ICATAL, 2CATAL, Р1С_55 и  т. п.

Имя файла состоит из двух частей: собственно имени и расширения, между которыми ставится точка: < имя>. < расширение>.

Имя - последовательность от 1 до 8 символов.

Расширение - необязательная часть, которая может содержать от 1 до 3 символов. Расширение указывает на тип информации, хранящейся в файле.

Все файлы можно разделить на программные файлы и файлы данных (документов).

Полное имя фаила - это последовательность, состоящая из пути к файлу и имени самого файла.