- •11. Операторы. Дополнение 135
- •12. Передача данных потоком 145
- •13. Файлы 149
- •14. Структура программы 157
- •15. Указатели, массивы, строки 170
- •16. Работа с экраhом 179
- •Задачи 185
- •Приложения 197
- •Библиографический список 224 введение
- •1. Основные понятия и определения
- •1.1. Компьютер
- •Процессор
- •Периферия
- •1.2. Алгоритмы
- •1.3. Программы и языки
- •Основные понятия языка программирования
- •Выполнение программы
- •Машинный и алгоритмический языки
- •Метаобозначения
- •Этапы обработки программы на компьютере
- •Терминология
- •Трансляция
- •Редактирование связей (компоновка)
- •Загрузка
- •1.4. Данные
- •Системы счисления
- •Типы и совокупности данных
- •Вещественные
- •Логические
- •Совокупности данных
- •2. Элементы языка
- •2.1. История языков с и Basic
- •2.2. Алфавит
- •2.3. Идентификаторы
- •2.4. Знаки разрядки
- •2.5. Комментарии
- •Могут ставиться везде, где допустим знак разрядки. Транслятор рассматривает их как пробел.
- •2.6. Запись текста программы
- •3.1.1. Целые
- •3.1.2. Данные с плавающей точкой
- •3.1.3. Логический тип
- •3.1.4. Символьные данные
- •3.1.5. Дополнительные типы данных
- •3.2. Совокупности данных
- •3.2.1. Массивы
- •Объявления массивов
- •Обращение к элементу массива
- •3.2.2. Структуры
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •4. Выражения
- •4.1. Арифметические операторы Основные
- •Дополнительные
- •Приоритет
- •4.2. Операторы конкатенации
- •4.3. Операторы сравнения
- •4.4. Логические операторы
- •4.5. Обращение к функции
- •4.6. Встроенные функции
- •4.7. Заключительные замечания
- •5.2. Присваивание
- •5.3. Безусловный переход
- •5.4. Инструкция If. Пустая инструкция
- •5.5. Составная инструкция
- •5.6. Циклы
- •5.6.1. Циклы с предусловием
- •Циклы while
- •Циклы for
- •5.6.2. Циклы с постусловием
- •5.6.3. Вложенные циклы
- •5.7. Управляемые переходы
- •5.7.1. Инструкция break
- •5.7.2. Инструкция continue
- •5.7.3. Инструкции exit и continue
- •5.8. Многоальтернативный выбор
- •5.8.1. Инструкция switch (язык с)
- •5.8.2. Инструкция select case (язык Basic)
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •6. Ввод-вывод
- •6.1. Язык Си
- •6.1.1. Управляющая строка
- •6.1.1.1. Спецификация d (целые десятичные числа)
- •6.1.1.2. Спецификация f (десятичные числа с плавающей точкой)
- •6.1.1.3. Спецификация e (десятичные числа с плавающей точкой)
- •6.1.1.4. Спецификация g (универсальная спецификация)
- •6.1.2. Вывод символьной информации
- •6.1.3. Инструкции printf и scanf. Схема ввода-вывода
- •6.2. Язык Basic
- •6.2.1. Метод ReadLine
- •6.2.2. Методы Write и WriteLine
- •7.1.1. Распределение скаляров
- •7 .1.2. Распределение массивов
- •7.1.3. Статическое и динамическое распределение памяти
- •7.2. Блоки
- •7.3. Процедуры
- •7.3.1. Определения процедур
- •7.3.2. Передача данных между процедурами
- •Механизмы передачи данных
- •Прототипы функций (c)
- •Передача скаляров Возвращаемое значение
- •Входные данные
- •Выходные данные
- •Передача массивов
- •Передача функций
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •8. Препроцессор
- •8.1. Определение символических констант
- •8.2. Включение файлов в текст программы
- •9.1. Формирование листинга
- •Перенос:
- •9.2. Комментарии
- •9.3. Имена Имена объектов программы должны быть осмысленными.
- •3. Литералы.
- •9. Ввод-вывод:
- •10.5. Подмассивы (сечения) (c)
- •10.6. Динамические массивы (b)
- •10.7. Структуры и объединения
- •10.7.1. Структуры
- •10.7.3. Поля битов (с)
- •10.7.4. Объединения (смеси) (с)
- •10.7.5. Переменные структуры
- •10.10. Пользовательские типы данных
- •10.11. Преобразование типов
- •10.10.1. Автоматические преобразования
- •10.10.2. Явные преобразования
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •11. Операторы. Дополнение
- •11.1. Уровень 1
- •11.2. Уровень 2 (унарные или одноместные операторы)
- •11.3. Уровень 3 (мультипликативные операторы)
- •11.4. Уровень 4 (аддитивные операторы)
- •11.5. Уровень 5 (сдвиги)
- •11.6. Уровень 6 (отношения)
- •11.7. Уровень 7 (равенство и неравенство)
- •11.8. Поразрядные операторы
- •11.9. Логические операторы
- •11.10. Уровень 13 (условное выражение)
- •11.11. Уровень 14 (операторы присваивания)
- •11.12. Уровень 15 (оператор ',' - запятая)
- •11.13. Некоторые замечания
- •11.14. Постоянные выражения
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •12. Передача данных потоком
- •12.1. Спецификация "s" управляющей строки функций scanf и printf
- •12.2. Функции getchar и putchar
- •12.3. Функции gets и puts
- •12.4. Внутренняя передача данных (функции sscanf и sprintf)
- •13.1. Основные понятия
- •13.2. Описание файла
- •13.3. Открытие и закрытие файлов
- •13.4. Средства языка с
- •13.4.1. Открытие и закрытие файла
- •13.4.2. Основные функции обмена
- •13.5. Средства языка Basic
- •13.5.1. Открытие и закрытие файла Инструкция FileOpen
- •Инструкция FileClose
- •13.5.2. Работа с файлами Инструкция Input
- •Инструкция LineInput
- •Инструкции Write и WriteLine
- •Инструкции Print и PrintLine
- •Дополнительные функции
- •Функция MsgBox
- •14.1. Элементы структуры программы.
- •14.1.2. Язык Basic
- •14.2. Область видимости (действия) и время жизни переменных
- •14.2.1. Язык c
- •14.2.2. Язык Basic
- •14.3. Инициализация данных
- •14.3.1. Язык с
- •2. Массивы.
- •15.1. Указатели
- •Определение указателей
- •Задание значений
- •Вывод значений
- •15.2. Указатели и массивы
- •15.3. Работа со строками
- •15.3.1. Литералы
- •15.3.2. Переменные
- •15.3.3. Операторы и функции
- •15.4. Динамические объекты
- •15.5. Типичные ошибки, связанные с указателями Отсутствие инициализации указателя
- •Двойное указание
- •15.6.2. Однонаправленный список
- •15.7. Указатели и многомерные массивы
- •15.8. Рекурсивные процедуры
- •15.8.1. Рекурсивное решение
- •15.8.2. Нерекурсивное решение. Стек в виде массива
- •15.8.3. Нерекурсивное решение. Стек в виде списка
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •16. Работа с экраhом
- •16.2. Управление окном
- •16.3. Управление атрибутом (цветами символа и фона в окне)
- •16.4. Информация о текстовом режиме
- •16.5. Пример
- •Простые циклы
- •Вложенные циклы
- •Процедуры
- •Работа со строками
- •Приложения
- •П1.1. Установка среды
- •П1.2. Запуск среды
- •П1.3. Меню Файл
- •П1.4. Меню Сервис
- •П1.5. Отладка
- •Начало отладки
- •Установка точек прерывания
- •Прогон до точки прерывания
- •Пошаговое выполнение программы
- •Получение значений объектов программы
- •Приложение 2. Среда разработки Visual Basic п2.1. Запуск среды
- •П2.2. Подготовка к работе с новым проектом
- •П2.3. Окна и режимы работы
- •П2.4. Главное меню
- •П2.5. Меню File (Файл)
- •П2.6. Редактирование текста
- •П2.7. Меню View (Вид)
- •П2.8. Меню Project (Проект)
- •П2.9. Отладка
- •Точки прерывания
- •Определение значений объектов программы в момент прерывания
- •Продолжение работы
- •П2.10. Меню Tools (Сервис)
- •П2.11. Меню Window (Окно)
- •Приложение 3. Ответы на вопросы для самопроверки
- •2. Элементы языка
- •3. Элементы данных
- •4. Выражения
- •5. Основные инструкции
- •6. Ввод-вывод
- •7. Процедуры
- •8. Препроцессор
- •9. Стиль программирования
- •10. Данные. Дополнение
- •11. Операторы. Дополнение
- •12. Передача данных потоком
- •13. Файлы
- •14. Структура программы
- •15. Указатели, массивы, строки
- •16. Работа с экраном
- •Приложение 4. Темы для курсовой работы
- •Библиографический список
6.2. Язык Basic
Средства консольного ввода-вывода реализуются в виде методов класса Console. В данном разделе рассмотрим только методы, которые предоставляют те же возможности, что и рассмотренные выше средства языка C. Напомним, что обращение к некоторому методу этого класса должно иметь вид:
Console.<имя метода>([<список параметров>])
Чтобы не записывать префикс Console при каждом обращении к методам, следует перед инструкцией Module записать инструкцию Imports System.Console.
Замечание. Обмен данных производится через буферы ввода-вывода по тем же правилам, что и для языка C.
6.2.1. Метод ReadLine
Метод читает введенную с клавиатуры строку, завершенную нажатием клавиши Enter.
Пример.
s=ReadLine( )
В сравнении данного метода с функцией scanf языка С очевидны следующие его ограничения:
- вводится одно значение типа String,
- нет средств преобразования введенной строки в значения других предопределенных типов таких, как: Integer, Single и др.
Первое ограничение требует ввода каждого значения с новой строки (столбиком).
О втором. Язык Basic допускает неявное преобразование значения типа String в числовой тип при условии, что строка не содержит недопустимых символов. Для этого в свойствах проекта задачи Компиляция (Compile) надо установить опцию Проверка сужающих преобразований (Option strict) в состояние Off.
Пример.
For i = 0 To m - 1
For j = 0 To n - 1
a(i, j) = ReadLine()
Next j
Next i
Замечание. По умолчанию максимальная длина строки 256 символов.
6.2.2. Методы Write и WriteLine
Оба метода формируют и выводят информацию на экран. Разница между ними в том, что WriteLine завершает вывод переводом строки, а Write – нет.
Вывод выполняется с преобразованием данных из внутреннего представления значений различных предопределенных типов в символьную строку. Правила преобразования напоминают аналогичные для функции printf языка C, поэтому воспользуемся той же терминологией.
Формат обращения:
{Write | WriteLine}(<управляющая строка>[, <список-данных>])
Управляющая строка состоит из текста и спецификаций. Каждая спецификация определяет только одно передаваемое значение. Текст вне спецификаций выводится на экран так же, как в языке С. Не надо только помещать в конце выводимой строки символ ′\n′, это сделает сама инструкция WriteLine.
Формат одной спецификации:
{индекс элемента списка вывода [, выравнивание][:формат]}, где:
- индекс элемента списка вывода – порядковый номер-1элемента списка данных, преобразованное значение которого должно быть подставлено на место спецификации в строку вывода;
- выравнивание – это целое, определяющее ширину поля вывода для значения; если длина выводимого значения больше данного параметра, то он игнорируется, если меньше, то, если параметр > 0, то значение в поле вывода выравнивается вправо, если он < 0, то – влево; в целом, аналог параметра W функции printf в сочетании с флагом - (минус) при выравнивании влево;
- формат – <тип>D, где <тип> - спецификация, определяющая тип передаваемого значения, D – параметр точности (совпадает с языком C), целое без знака (не более 2-х цифр).
Перечень типов
Тип |
Имя |
Описание |
Примеры |
"D" | "d" |
Decimal |
Результат: целое число с необязательным знаком - Поддерживает: только целые типы. Точность D: минимальное количество цифр. Точность по умолчанию: длина выводимого значения. |
1234 ("D") -> 1234 -1234 ("D6") -> -001234 |
"E" | "e" |
Exponential (scientific) |
Результат: число с плавающей точкой в показательной форме. Поддерживает: все числовые типы. Точность: число цифр после точки в мантиссе (младшая цифра округляется). Точность по умолчанию: 6. |
1052.0329112756 ("E") -> 1.052033E+003 -1057.0329112756 ("e2") -> -1.06e+003 -1052.0329112756 ("E2") -> -1.05E+003 |
"F" | "f" |
Fixed-point |
Результат: число с плавающей точкой в обычной форме. Поддерживает: все числовые типы. Точность: число цифр после точки (младшая цифра округляется). Точность по умолчанию: 2. |
1234.567 ("F") -> 1234.57 1234 ("F1") -> 1234.0 -1234.56 ("F4") -> -1234.5600
|
"G" | "g" |
General |
Результат: наиболее компактное представление значения в обычной или показательной форме. Поддерживает: все числовые типы. Точность: число значащих цифр. Точность по умолчанию: 6 для чисел с плавающей точкой (для других не рекомендуется). |
-123.456 ("G") -> -123.456 123.4546 ("G4") -> 123.5 -1.234567890e-25 ("G") -> -1.23456789E-25 -1.234567890e-25 ("g") -> -1.23456789e-25 |
Как видно из таблицы, действие спецификаций аналогично языку C.
Для очистки экрана можно использовать метод Clear(), для остановки экрана – метод ReadLine().
Вопросы для самопроверки и контроля
Вопросы для самопроверки
1. Что происходит, когда длина выводимого значения больше величины W?
2. При каких условиях при выводе значений с плавающей точкой не ставится десятичная точка?
3. Перечислите символы – ограничители ввода для языка С.
4. А для языка Basic?
5. Чем отличаются правила ввода значений по спецификациям f и e?
6. Что возвращают функции printf и scanf?
Контрольные вопросы
1. Почему при вводе не используется второй параметр спецификации D?
2. При каких условиях производится округление выводимого значения?
3. Как организуется ввод элементов массива?
4. Когда разумно применять спецификацию g?
7. ПРОЦЕДУРЫ
7.1. Распределение памяти
Распределение памяти – это процесс, связывающий некоторую область памяти с какой-либо переменной так, что элемент данных, описанный этой переменной, может быть размещен в этой области.
СХЕМА
Предметная область Программист Память
скаляры,
элементы массивов имена адреса
и структур
Источник информации: определения переменных.
C: инструкции описания типа: int long float double char.
Basic: инструкция Dim.
