- •Содержание
- •Введение
- •1. Структурное программирование
- •4. Семь основных элементов программирования
- •4.1. Вывод
- •4.1.1. Функция printf
- •4.1.2. Другие функции вывода: puts и putchar
- •4.2 Ввод
- •4.2.1. Функция scanf
- •4.2.2. Использование gets и getch для ввода
- •4.3. Потоковый ввод-вывод
- •4.4. Типы данных
- •4.4.1. Числа с плавающей точкой
- •4.4.2. Три типа целых
- •4.4.3. Определение строки
- •4.4.4. Идентификаторы
- •4.4.5. Преобразования типов
- •4.5. Операции
- •4.5.1. Операции присваивания
- •4.5.2. Одноместные и двуместные операции
- •4.5.4. Побитовые операции
- •4.5.5. Комбинированные операции
- •4.5.6. Адресные операции
- •4.6. Условные операторы
- •4.6.1. Операции сравнения
- •4.6.2. Логические операции
- •4.6.3. Операторы присваивания
- •4.6.5. Оператор запятая
- •4.6.6. Оператор if
- •4.6.7. Условный оператор (?:)
- •4.7. Циклические конструкции в программах
- •4.7.1. Цикл while
- •4.7.2. Цикл for
- •4.7.3. Цикл do...While
- •4.7.4. Оператор switch (переключатель)
- •4.7.5. Оператор break
- •4.7.6. Оператор continue
- •4.7.7. Оператор goto
- •4.7.8. Использование команд передачи управления
- •4.8. Функции
- •4.8.1. Анализ программы
- •4.8.2. Глобальные описания
- •4.8.3. Описание функции void
- •4.8.4. Оператор return
- •4.8.5. Использование прототипов функций и полных определений функций
- •4.9. Комментарии
- •5. Обзор структур данных
- •5.1. Указатели
- •5.1.1. Динамическое распределение
- •5.1.2. Указатели и функции
- •5.1.3. Адресная арифметика
- •5.1.4. Неправильное употребление указателей
- •5.1.5. Использование неинициализированных указателей
- •5.1.6. Ошибки при передаче по адресу
- •5.2. Массивы
- •5.2.1. Массивы и указатели
- •5.2.2. Массивы и строки
- •5.2.3. Многомерные массивы
- •5.2.4. Массивы и функции
- •5.2.5. Индексы массивов
- •5.3. Структуры
- •5.3.1. Структуры и указатели
- •5.4. Операции с файлами
- •5.5. Использование директивы typedef
- •Соглашения, принятые для описания алгоритмов
- •And do else fi for goto if od set then through to while
- •Библиографический список
4. Семь основных элементов программирования
В разделе 2 вы написали две совершенно разные программы на С++, использующие несколько основных элементов программирования. Что это за элементы? Вы узнаете о них, прочитав следующий раздел.
Целью большинства программ является решение задач. Программа решает задачи, манипулируя информацией или данными. Вам необходимо научиться:
– вводить информацию в программу;
– выделять место для хранения информации;
– задавать инструкции по обработке информации;
– выводить информацию обратно из программы пользователю.
Можно организовать инструкции так, что:
– некоторые из них будут выполняться только тогда, когда специальное условие (или набор условий) истинно;
– другие будут повторяться несколько раз;
– третьи разбиты на группы, которые могут выполняться в различных местах вашей программы.
Мы описали семь основных элементов программирования: ввод, тип данных, операции, вывод, условное выполнение, циклы и подпрограммы. Этот список не полон, но он описывает те общие элементы, которые обычно включают программы.
Большинство языков программирования содержат все эти элементы; многие, включая С++, имеют также и дополнительные возможности. Однако, если вы хотите изучить новый язык быстро, вы можете определить, как этот язык реализует эти семь элементов, а затем двигаться дальше. Приведем обзорное описание каждого элемента:
– вывод означает запись информации на экран, на диск или в порт ввода-вывода;
– ввод означает чтение значений с клавиатуры, с диска или из порта ввода-вывода;
– типы данных – это константы, переменные и структуры, которые содержат числа (целые и вещественные), текст (символы и строки) или адреса (переменных и структур);
– операции присваивают одно значение другому, комбинируют значения (складывают, делят и т.д.) и сравнивают значения (равно, не равно и т.д.);
– условное выполнение относится к выполнению набора инструкций, если заданное условие истинно (и пропуску их, если оно ложно);
– циклы выполняют набор инструкций некоторое фиксированное количество раз, или пока истинно некоторое условие;
– подпрограммы являются отдельно поименованными наборами инструкций, которые могут быть выполнены в любом месте программы с помощью ссылки по имени.
Теперь мы рассмотрим, как использовать эти элементы в С++.
4.1. Вывод
Может показаться странным, что мы начинаем разговор именно с вывода, однако программ, которые ничего не выводят, почти нет. Под выводом обычно понимают форму информации, записываемой на экран (текст и изображения), на запоминающее устройство (гибкий или жесткий диск) или в порт ввода-вывода (последовательный порт, порт принтера).
4.1.1. Функция printf
Мы уже использовали наиболее употребительную функцию вывода в С++ – подпрограмму printf. Ее целью является запись информации на экран. Ее формат как прост, так и гибок:
printf(<строка формата>, <объект>, <объект>,...);
Строка формата – это строка, которая начинается и заканчивается двойными кавычками (“как эта”); цель printf – запись этой строки на экран. Перед выводом printf заменяет все дополнительно перечисленные объекты в соответствии со спецификациями формата, указанными в самой строке. Например, во второй программе был следующий оператор printf:
printf("Сумма=%d\n", sum);
Символ %d в строке формата – это спецификация формата. Все спецификации формата начинаются с символа процента (%) и (обычно) сопровождаются одной буквой, обозначающей тип данных и способ их преобразования.
Для каждого объекта необходимо иметь только одну, соответствующую ему, спецификацию формата. Если объект имеет тип данных, не соответствующий спецификации формата, то С++ попытается выполнить нужное преобразование.
Сами объекты могут быть переменными, константами, выражениями, вызовами функций. Короче говоря, они могут быть чем угодно, что дает соответствующее значение спецификации формата.
Общеиспользуемые спецификации формата:
%d – целое число;
%u – целое число без знака;
%p – значение указателя;
%f – число с плавающей точкой;
%e – число с плавающей точкой в экспоненциальной форме;
%c – символ;
%s – строка;
%x или %X – целое в шестнадцатеричном формате.
Вы можете задать ширину поля, помещая ее между % и буквой; например, десятичное поле шириной 4 задается, как %4d. Значение будет напечатано сдвинутым вправо (впереди пробелы) так, что общая ширина поля равна 4.
Если нужно напечатать знак %, то вставьте %%.
Символ \n в строке не является спецификацией формата, а употребляется (по историческим мотивам) как управляющая (escape) последовательность, и представляет специальный символ, вставляемый в строку. В этом случае \n вставляет символ в начале новой строки, поэтому после вывода строки курсор передвинется к началу новой строки.
Наиболее часто используемые управляющие последовательности:
\f – (перевод формата или очистка экрана);
\t – (табуляция);
\b – забой <;
\xhhh – (вставка символа с кодом ASCII hhh, где hhh содержит от одной до трех шестнадцатеричных цифр).
Если вам нужно напечатать обратную косую черту, то вставьте \\.
Маршрут MS-DOS в строке С++. Все знают, что обратный слеш (\) в MS DOS означает, что следующая далее строка есть имя каталога (справочника), однако в С++ слеш является ключевым словом в строке. Это противоречие является одной из проблем, в тех случаях, когда вам необходимо указать маршрут доступа к файлу в строке С++. Например, вы набираете:
"c:\new\tools.c"
При этом вы ожидаете, что задается файл tools.c в каталоге new на диске с. Это, однако, не совсем так. Вместо желаемого, комбинация \n , являющаяся подстрокой строки С++, указывающей маршрут доступа к файлу, представляет собой ключевую последовательность для перехода на новую строку (LF или символ перехода на новую строку), а \t есть ни что иное как изображение символа табуляции в С++-программе. Таким образом, возникла ситуация, когда в имя файла были встроены символы новой строки и табуляции. В результате, DOS воспринимает эту строку как неправильное имя файла, так как имя файла не должно включать символов табуляции или новой строки. Если же необходимость использования в имени файла комбинации символов, воспринимаемых как управляющие, велика, применяйте их экранирование путем удвоения обратного слеша для каждой из встречающихся комбинаций управляющих символов.
Правильная строка (с учетом экранирования управляющих последовательностей) будет иметь вид:
"c:\\new\\tools.c"
