Лекция 1. Основы алгоритмизации и программирования на Си (1153708), страница 2
Текст из файла (страница 2)
При написании программ считают, что ячейка памяти обладает следующими свойствами:1. Информация в ячейке памяти хранится сколь угодно долго. Это свойство в известной мере является абстрактным, так как при выключениикомпьютера, например, информация в оперативной памяти не сохраняется.2Предполагается, что читатель имеет представление об уровняхпамяти компьютера, а также о двоичной системе счисления и организации памяти компьютера (битах, байтах и т.д.)52.
При записи нового содержимого в ячейку предыдущее содержимое несохраняется. Запись содержимого в ячейку называется присваиванием. Оператор присваивания описан в п.1.2.5.3. При считывании содержимое ячейки не изменяется.4. Если в ячейку на протяжении программы не было ничего записано, тоее содержимое считается неопределенным. Отметим, что это свойство не всегда выполняется в реализациях алгоритмических языков(все переменные в Borland Pascal, статические переменные в BorlandC++ при объявлении обнуляются).Под константой в программировании понимается значение, неизменяющееся в процессе выполнения программы. Константам, такжекак и переменным, соответствуют ячейки памяти. Можно считать, чтоэти ячейки защищены от записи.
В программе, кроме констант обозначенных или именованных (т. е. имеющих имя), могут использоватьсяявные константы, заданные своим значением. Например, можно использовать константу с именем pi, предварительно задав ей значение3.1415, а можно использовать в программе явную константу 3.1415.В качестве имен переменных и констант, также как в качестведругих имен, в Си используются идентификаторы. Под идентификатором понимается последовательность букв, символов подчеркиванияи цифр, начинающаяся с буквы или символа подчеркивания. Приформировании имен (а также служебных слов) прописные и соответствующие строчные буквы считаются различными символами.1.2.2.
Типы данных в СиКроме разделения данных на переменные и константы, существует классификация данных по типу. Описание переменных преждевсего состоит в объявлении их типа. Тип данных характеризует область их значений и форму представления в памяти компьютера. Каждый тип характеризуется набором выполняемых над данными операций. Традиционно в универсальных языках программирования существуют такие стандартные типы, как целый, вещественный, символь-6ный и логический3. Сразу отметим, что логического типа в Си нет.
Выражение (в частном случае, переменная) считается истинным, еслионо отлично от нуля, в противном случае оно считается ложным.Существование двух числовых типов (целого и вещественного)связано с двумя возможными формами представления чисел в памятикомпьютера.Данные целого типа хранятся в форме представления с фиксированной точкой. Для нее характерны абсолютная точность представления чисел и выполнения операций над ними, а также ограниченный диапазон значений чисел.
Целый тип используется для данных, которые в принципе не могут иметь дробной части (количестволюдей, машин, и т.д., номера и счетчики).Тип вещественный соответствует форме представления чисел сплавающей точкой, для которой характерны приближенное представление числа с заданным количеством значащих цифр (знаков мантиссы) и большим диапазоном порядка числа, что обеспечивает возможность представления как очень больших, так и очень малых по абсолютной величине чисел. В силу приближенного представления данныхвещественного типа их некорректно сравнивать на равенство.В современных реализациях универсальных языков программирования обычно существует несколько целых и несколько вещественных типов, каждый их которых характеризуется своим размером отводимой под одно значение памяти и, соответственно, своим диапазоном значений чисел, а для вещественных типов - и своей точностью(числом цифр мантиссы).Данные символьного типа принимают значения на всем множестве допустимых для данного компьютера символов.
Для храненияодного символьного значения отводится один байт, кодирование символов осуществляется в соответствии с таблицей кодирования. Обратите внимание, что в консольном приложении используется кодоваятаблица, отличная от принятых в современных версиях Windows.3Данные логического типа могут принимать два значения: истинаи ложь. Предполагается, что читатель знаком с основными логическими операциями.7Вследствии этого в консольном приложении неправильно выводятсярусские буквы.В Си имеется 4 базовых типа:char - символьный тип;int - целый тип,float - вещественный тип одинарной точности,double - вещественный тип двойной точности.Для задания производных типов используются квалификаторы:short (короткий) - используется с типом int, long (длинный) - используется с типами int и double; signed (со знаком), unsigned (без знака) применимы к любому целому типу.
При отсутствии слова unsignedзначение считается знаковым ,т. е. по умолчанию принято signed. Всилу допустимости произвольного соединения квалификаторов иназваний базовых типов один тип может иметь несколько обозначений.Диапазон значений каждого числового типа определяется объемом памяти (количеством байтов), отводимым для хранения этогозначения. Этот объем памяти (а также разделение его на мантиссу ипорядок для чисел с плавающей точкой), в свою очередь, определяется разрядностью центрального процессора компьютера, типом операционной системы и средой программирования.Интересно, что в Си тип char в зависимости от контекста можетиспользоваться как символьный или как целый тип.Для написания программ первой лекции нам потребуются в основном два типа: float и int.1.2.3.
Правила записи констант в СиМы рассмотрим простейшие правила записи явных констант. Целая десятичная константа - это последовательность десятичныхцифр, начинающаяся не с нуля; например, 126789099. Последовательность цифр, начинающаяся с нуля и не содержащая цифр старше7, воспринимается как целая восьмеричная константа.
Последовательность шестнадцатеричных цифр (0, 1, ..., 9, A, B, C, D, E, F), передкоторой записаны символы 0x или 0Х, считается целой шестнадцатеричной константой; например, 0ХFF - шестнадцатеричное пред-8ставление числа 255. Соответствующие отрицательные значения получаются в результате применения унарной операции минус (-) - см.п.1.2.5.Простейшие правила записи вещественных констант состоят вследующем: разделителем между целой и дробной частью числа является точка; можно использовать показатель десятичного порядкаЕ (большую или малую латинскую букву). Пример вещественных кон3стант: 100.01, 3.44Е3 (значение 3.44*10 ), 1.0 Е-2 (значение 0.01).Для представления числовых констант в памяти компьютера выбирается подходящий тип в соответствии с таблицами 1 и 2.
Естественно, при этом следует выбирать минимальный диапазон и минимальное число значащих цифр.Символьная константа - это соответствующий символ клавиатуры, заключенный в апострофы. Примеры: 'a', '5', '?'. Существует несколько способов задания символьных констант, не имеющих графического представления на клавиатуре или экране дисплея. Подробноони будут рассмотрены в п.3.1.1. Сейчас рассмотрим только способзадания некоторых констант в виде комбинации символов, заключенной в апострофы и начинающейся с символа '\' (обратная косая черта- backslash). Например, '\n' - перевод строки, '\t' - горизонтальная табуляция, '\0' - нулевой символ (его байт содержит все нули), '\a' - сигналзвонок.Уже при написании простейших программ при записи оператороввывода (а иногда и ввода) нам потребуется понятие строковой константы.
Это последовательность символов, заключенная в двойныекавычки, Например: "Введите исходные данные". Строковая константатакже называется литералом.1.2.4. Описание переменных и именованных констант в Си.Пока мы рассматриваем переменные и константы, занимающиеодну ячейку памяти.
Такие переменные и константы называются простыми. Простые переменные описываются с помощью инструкций вида:тип список_имен_переменных;9Слово список при описании фрагментов языка обычно означает,что элементы списка перечисляются через запятую.
Инструкции в Сиразделяются точкой с запятой (обратите внимание на этот знак в конце описания).При описании переменных возможна их инициализация, т. е. задание начальных значений. В список переменных вместо имени переменной может входить конструкция:имя_переменной=начальное_значение;Пример описания:float a, b=1.5, c; int n=10,i=0, j, k=1;/*для a,c,j начальные значения не заданы*/Именованные константы описываются с помощью инструкцийвида:const тип имя_константы=значение константы;Здесь ключевое слово const показывает, что определяемое данное имеет постоянное значение, т.
е. доступно только для чтения. Типпри описании констант может отсутствовать, тогда он определяется позначению константы.Описания могут стоять в любом месте программы до использования переменных или констант. Хороший стиль программированияпредполагает, чтобы описания были собраны в начале программы.1.2.5. Выражения в СиПриведем очевидное определение: выражение - это операнды,соединенные знаками операций. В качестве операндов могут использоваться переменные, константы, результаты обращения к функциям4и выражения, заключенные в круглые скобки.
Способы описания переменных и констант мы рассмотрели в предыдущем параграфе; заметим, что пока мы знакомы только с простыми переменными; конечно, в выражении может участвовать и элемент массива (переменная синдексом – см. п. 1.5), и поле структуры или объединения (см. п.3.2).В таблице 3 приведены знаки операций, определенные стандартом языка Си. В первом столбце таблицы указан ранг (приоритет опе4Пока рассматриваем только стандартные функции10раций).