Главная » Просмотр файлов » А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки

А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки (1108027), страница 2

Файл №1108027 А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки (А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки) 2 страницаА.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки (1108027) страница2019-04-24СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Если явно модификатор знаковости неуказан, то целый тип int по умолчанию знаковый - signed int. К типу intприменимы также модификаторы размера short, long, long long. По неубываниюразмера целочисленные типы можно отсортировать как char, short, int, long,long long, при этом размер типа int не может быть менее 2 байт, типа long – не менее4 байт, типа long long – не менее 8 байт. Для современной 64-битной архитектуры x8664 размер типа int составляет 4 байта, long и long long – 8 байт.Целочисленные константы записываются в виде чисел в десятичной, восьмеричнойили шестнадцатеричной системе; основание системы счисления определяется префиксом,предшествующим цифрам числа: десятичные числа – без префикса (100), восьмеричные –с префиксом 0 (077=63), шестнадцатеричные – с префиксом 0x или 0Х (0x1F=31). Типцелочисленной константы определяется буквенным суффиксом, приписываемым кцифрам числа: константы без суффикса имеют знаковый тип int, суффикс Lсоответствует типу long, суффикс LL – long long, а буква U (или u) – типуunsigned.

Например, константы 1000u, 34L, 945LLU имеют типы unsigned int,long, unsigned long long соответственно. При этом если константа без суффиксаслишком велика, чтобы быть представлена типом int, она автоматически получит типlong или long long.Символьные константы записываются в одинарных кавычках, например, 'a','5'. Специальные символы, такие, как перевод строки, табуляция, а также сам символодинарной кавычки могут задаваться с помощью символа \ (обратный слэш), которыйтребует специально толковать следующий за ним символ или последовательностьсимволов (т.н. escape-последовательность). Так, перевод строки соответствует символу'\n', табуляция – символу '\t', одинарная кавычка – символу '\''. Можно указатькод символа через последовательность шестнадцатеричных цифр \x, например, '\x20' вкодировке ASCII соответствует символу пробела.

Символ с кодом 0 записывается как'\0'. Для поддержки символов в расширенных кодировках (Unicode) используетсяпрефикс L: L't' – символ t в Unicode.Значения целочисленных типов хранятся в позиционной двоичной системесчисления. Знаковый и беззнаковый варианты одного и того же целого типа имеют один итот же размер. При этом для беззнаковых n-битных типов возможные значенияпеременной данного типа лежат между 0 и 2n - 1. Для знаковых n-битных типов один битотводится на знак, а остальные биты хранят модуль числа. Отрицательные числа, как6правило, представляются в дополнительном коде: если x<0, то n-1 бит, хранящие число2n-1 - |x|, при этом необходимо, чтобы 1|x|2n-1.Представимые в знаковом n-битном типе числа находятся между -2n-1 до 2n-1-1.x, представляются какЗадача.Представить в дополнительном коде для 8-битного целого типа числа0, 1, 12, 64, 127, -1, -4, -17, -128,используя как двоичную, так и шестнадцатеричную системы счисления.(Ответы: 0 = 00000000 = 0x00, 1 = 00000001 = 0x01, 12 = 0x00001100=0x0C, 64 =01000000 = 0x40, 127 = 01111111 = 0x7F, -1 = 11111111 = 0xFF, -4 = 11111100 = 0xFC,-17 = 1110 1111 = 0xEF, -128 = 10000000 = 0x80).Объявление переменной состоит из описания типа переменной, ее имени инеобязательной инициализации: intx; unsignedlongy=5; signedshort z = - 2.

В качестве выражения для инициализации глобальных переменныхможет выступать константное выражение, т.е. такое выражение, которое может бытьвычислено на этапе компиляции; для локальных переменных можно использовать любоевыражение. При отсутствии инициализации глобальных переменных они обнуляютсякомпилятором (неявная инициализация). Напротив, локальным переменным всегданеобходимо присваивать значение вручную: неинициализированные локальныепеременные имеют неопределенное значение при выполнении программы, а обращение ктаким переменным, скорее всего, приведет к неверной работе программы и являетсячастым источником ошибок.При объявлении переменных часто используют спецификаторы классов памятиstatic, extern и квалификатор const: const – значение переменной не будет изменяться после инициализации,например, const int size = 100; При попытке изменить переменнуюпроизойдет ошибка на этапе компиляции. static – место под переменную будет выделено в статической памяти,доступ к переменной возможен во время всего выполнения программы, а ееинициализация выполняется до начала работы программы. extern – место под глобальную переменную выделяется при ееобъявлении в другом файле, инициализация также выполняется в другомфайле, доступ к переменной возможен во время всего выполненияпрограммы.Наиболее часто используемым выражением является операция присваивания "=".Левая часть присваивания должна обозначать объект памяти (будем рассматривать покатолько имя переменной), правая – являться выражением (например, a = b+c, где a, b,c – целочисленные переменные).

Результатом присваивания является изменение объектапамяти, т.е. побочный эффект. Обратите внимание, что присваивание является операциейи генерирует значение – результатом присваивания является значение левой части.Следовательно, возможно выписать цепочку присваиваний (a = b = c+d), при этомоперация присваивания ассоциируется справа налево (т.е. сначала вычисляется выражениеc+d, его результат записывается в переменную b, а потом – в переменную a, побочнымэффектом этого выражения является изменение переменных a и b).2.1. Вычисление выраженийАрифметические операции над целочисленными значениями (без побочногоэффекта) бывают одноместные (одноместный или унарный минус "-" и плюс "+") и7двухместные (сложение "+", вычитание "–", умножение "*", деление нацело "/", остатокот деления нацело "%"). Обратите внимание, что запись "-23" считается константнымвыражением, а не целочисленной константой: в этом выражении операция унарногоминуса применена к целочисленной константе 23.При делении нацело результат всегда округляется в сторону нуля и выполняетсяравенство (a/b)*b + a%b = a, поэтому знак остатка совпадает со знаком делимого: 27/5 = -5, -27%5 = -2, -27%-5 = -2, 27%-5 = 2.

Примеры выражений такжесодержатся в тексте программы на рис. 1.2.1.1. О приведении типов операндов.При вычислении арифметических операций с двумя операндами, а также привыполнении операции присваивания может автоматически выполняться неявноепреобразование операндов (приведение их к другому типу). Для двуместныхарифметических операций приведение типов выполняется по следующим правилам:1) Если операнды имеют различные типы, то осуществляется их приведение к общемутипу. Если один из типов операндов – вещественный, то второй операнд тоже приводитсяк вещественному типу, и общим типом будет наибольший вещественный тип из типовоперандов (т.е. для float и double – double, для double и long double –long double и т.п.).

Например, для получения вещественного результата операцииделения 3/2 необходимо один из операндов сделать вещественным, например, добавивточку в одну из констант: "3./2". Иначе результатом операции будет целое число 1, а невещественное число 1,5.2). Если есть операнд целого типа короче, чем int (т.е. знаковый или беззнаковыйвариант short или char), и все значения этого типа могут быть представлены как int, тоон преобразуется к int; иначе - к unsigned int.

Это преобразование называется«целочисленное расширение» (integer promotion) и выполняется для избежания потерьточности при вычислениях. Например, при сложении двух переменных типа short обепеременные приводятся к типу int, и само сложение выполняется в типе int.3). Для операндов целых типов неявное приведение типов управляется целочисленнымрангом приведения типа. Ранг выбирается таким образом, что ранг типа long longбольше ранга long, который в свою очередь больше ранга int и т.д.

до char. Рангзнакового и беззнакового варианта одного целого типа совпадают. При совпадениизнаковости типов операндов операнд типа с меньшим рангом преобразуется к операндутипа с большим рангом. При несовпадении знаковости выполняется операция приведения,в которой также, как правило, операнд типа меньшего ранга преобразуется к типуоперанда с большим рангом.Арифметическая операция выполняется после неявного приведения типов, и типомрезультата является тип, к которому были приведены оба операнда.Необходимо помнить, что при неявном приведении целых типов операнд знаковоготипа может быть приведен к операнду беззнакового типа и, если значение операндазнакового типа отрицательно, произойдет переполнение с возможной выдачейошибочного результата вычисления.Например, на современной системе с 4-байтовыми типами int и unsigned intпусть unsigned int u = 50; int i = -500; int res = i / u.

Значениепеременной res будет равно 85899335, т.к. при вычислении выражения i/u операнд i8будет приведен к беззнаковому типу и его значение будет равно 232-500 вместо -500, арезультат деления будет приведен обратно к знаковому типу int. Для избежания такихошибок крайне рекомендуется выполнять арифметические операции над знаковымицелыми типами.При присваивании переменных различных типов также выполняется неявноеприведение типов: если не все значения типа правой части могут быть представленытипом левой части, то происходит отсечение старших битов или превращение знаковогобита в значащий (для целых типов), либо округление или усечение числа для плавающихтипов.Например,1) если signed char c = -1, unsigned char uc и char является 8-битнымтипом, то после uc = c; значение uc будет равно 255;2) если short s = 920 и тип short – 16-битный тип, то после c = s;значение c будет равно -104.Явное приведение типов возможно с помощью выражения (type) expr:например, для получения вещественного результата деления в переменной d типа doubleсуммы двух целых переменных a и b на два можно использовать выражениеd = ((double) (a+b)) / 2.Часто возникает необходимость записать результат двухместной операции в одиниз операндов.

В этом случае можно воспользоваться укороченным присваиванием:a = a op b эквивалентно a op= b. Такие присваивания поддерживаются для всехдвухместных операций.Арифметическими операциями с побочным эффектом, помимо укороченныхприсваиваний, являются операции инкремента "++" и декремента "--" двух форм –префиксной (знак операции до операнда) и постфиксной (после операнда). Побочныйэффект этих операций – увеличение (соответственно уменьшение) значения операнда наединицу, а результат операции – значение операнда до изменения (для постфикснойформы) либо после изменения (для префиксной формы).

Например, если int a = 5,b = 3, то значение выражения a-- + b равно 8, побочный эффект – а = 4; значениевыражения a + --b равно 7, побочный эффект – b = 2.Операции сравнения (равно "==", не равно "!=") и отношения (больше ">", меньше"<", больше или равно ">=", меньше или равно "<=") генерируют результат типа int:единицу, если отношение истинно, и 0 в противном случае.Двумя реже используемыми операциями являются операция последовательноговычисления "," и условная операция "?:". В операции "," операнды вычисляются слеванаправо, а результатом операции является значение последнего вычисленного выражения:в выражении a = (b = 5, b + 2) сначала переменной b присваивается значение 5,потом вычисляется выражение b + 2, равное 7, и результат заносится в переменную a. Воперации "expr1 ? expr2 : expr3" сначала вычисляется выражение expr1, и еслиего значение отлично от нуля, то результатом всей операции является значениевыражения expr2, иначе – значение выражения expr3.

Условная операция, как иоперация присваивания, ассоциируется справа налево, т.е. выражениеa ? b : c ? d : e эквивалентно (a ? b : ( c ? d : e)).Точкой следования, или точкой последовательных вычислений (sequence point),называется момент во время выполнения программы (иногда говорят о месте впрограмме), в котором все побочные эффекты предыдущих вычислений закончены, ановых – не начаты. В корректной программе между двумя точками последовательныхвычислений изменение значения переменной возможно не более одного раза, при этомстарое значение читается только для определения нового.

Характеристики

Список файлов семинаров

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6363
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее