sem03 (Мини-учебник с ejudge = Чернокнижка)

PDF-файл sem03 (Мини-учебник с ejudge = Чернокнижка) Практика расчётов на ПЭВМ (37204): Книга - 3 семестрsem03 (Мини-учебник с ejudge = Чернокнижка) - PDF (37204) - СтудИзба2019-05-08СтудИзба

Описание файла

Файл "sem03" внутри архива находится в следующих папках: Мини-учебник с ejudge = Чернокнижка, Еще, Entry level. PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

1Занятие №31.1 Литеральные значенияРассмотрим правила записи констант (литеральных значений) в языке Си.1.1.1 ЦелыеЦелые значения могут записываться в программе в десятичной, восьмеричной и шестнадцатеричной системе счисления. Восьмеричная константа начинается с символа 0(«ноль»), за которым идут цифры 0–7, например 0377.

Шестнадцатеричная константа начинается с символов 0x, затем идут цифры 0–9, a–f, A–F. Пример 0xFF. Десятичная константа начинается с цифр 1–9, далее идут цифры 0–9.Язык Си не позволяет записывать целые числа в двоичной системе. Обратите внимание,что ведущий ноль является признаком восьмеричного числа. Запись 09 неверна и вызоветошибку компиляции.Тип константы — это минимальный тип, который может содержать данное значение.

Дляконстант, заданных в десятичной форме, последовательно выбираются int, long, longlong (для C99). Для констант, заданных в восьмеричной или шестнадцатеричной форме,последовательно выбираются int, unsigned int, long, unsigned long, long long,unsigned long long (для C99).Тип константы можно задать явно указанием суффикса u или l. Эти суффиксы могутупотребляться совместно. Например, 10u — константа 10 типа unsigned int, 6uL —константа 6 типа unsigned long. 7ll — константа 7 типа long long.По правилам языка Си знак - перед числом не является частью записи числа, а являетсяунарной операцией, применённой к положительному числу.

Поэтому, если размер типа longlong равен 16 битам, запись -32768 неверна и даст результат 0! Для другого размера целых типов пример соответственно меняется.1.1.2 ВещественныеВещественная константа может содержать целую и дробную часть мантиссы и порядок.Вещественные числа могут записываться в десятичной или шестнадцатеричной (C99) системах счисления.Запись вещественного числа в десятичной системе счисления такая же, как в языке Паскаль и может состоять из целой части, дробной части и порядка числа.

Признаком вещественного числа является либо присутствие десятичной точки ., либо присутствие e или Eдля обозначения порядка. Примеры вещественных чисел приведены ниже:1.21..51e41e+61.e-7.7E12Вещественное число может записываться и в шестнадцатеричной системе счисления. Вэтом случае перед числом ставится префикс 0x, а знак порядка p или P обязателен. Целая идробная часть мантиссы записывается в шестнадцатеричной системе счисления, а порядок1— в десятичной системе счисления. Порядок показывает, на какую степень двойки должнабыть умножена мантисса.

Например, запись 0x1c.2fp5 задаёт вещественное число, равное0x2f) · 25 = 901.875. Другие примеры шестнадцатеричных вещественных чисел:(0x1c +0x1000x1p100x1.ddP-5По умолчанию вещественные константы имеют тип double. Для явного задания типаможно использовать суффикс l или L для указания типа long double. Суффикс f или Fдля указания типа float.

Например, 1.5L, 0x3.aap10f.Как и в случае целых чисел, знак «плюс» или «минус» перед вещественным числом является не частью числа, а унарной операцией, применённой к положительному константномузначению.1.1.3 ЛитерныеЛитерные константы мы уже рассматривали. Напомним, что литерные константы имеюттип int. В апострофах может быть записано несколько символов, в этом случае соответствующее целое значение зависит от компилятора.Изначально на большинстве архитектур для хранения литерных значений использовался тип char, чего было достаточно для хранения всех значений из диапазона кодов ASCII(0–127).

Затем стали использоваться 8-битные кодировки, и для хранения кодов символовиз диапазона (0–256) следует использовать тип unsigned char, чтобы избежать потенциальных ошибок, связанных с индексированием по коду символа.8-битные кодировки и сейчас широко используются, но также используются и 16-битныекодировки (Unicode, или UCS-16), и кодировки с переменной длиной символа (UTF-8). Дляпредставления литерных значений в расширенной кодировке используются «длинные» символьные литералы, например L’a’. Такие литералы имеют тип wchar_t, совпадающий снекоторым целым типом, диапазона значений которого достаточно для представления всехсимволов в расширенной кодировке, используемой на данной платформе или в данном языковом окружении.1.1.4 СтроковыеСтроковые литералы имеют тип char const * (константный указатель на тип char).Все строковые константы имеют в конце строки неявный символ с кодом ’\0’ — терминатор строки.

Строка не имеет явного поля длины, в отличие от языка Turbo Pascal. Сейчас мырассмотрим работу со строками подробнее.1.2 Простейшая работа со строкамиЯзык Си не поддерживает специального строкового типа. Строки хранятся в массивахтипа char, signed char или unsigned char. Большой набор функций работы со строками предоставляется стандартной библиотекой. В языке Си одной строкой является последовательность символов, завершающаяся специальным символом-терминатором с кодом 0.Таким образом,• строки не содержат длины строки явно и для вычисления длины её необходимо просматривать до первого символа с кодом 0,2• нет ограничений языка на длину строки,• в строке не может присутствовать символ с кодом 0.Переменная для хранения строки определяется как массивchar str[N];где N задаёт объем памяти, отводимый для строки.

Поскольку строка всегда хранит символтерминатор ’\0’, максимальное число значащих символов в такой строке на единицу меньше (N-1 символ). Неправильное выделение памяти под символьную строку — одна израспространённых и опасных ошибок программирования на Си!Строки можно инициализировать следующим образом:char str[20] = "a string";В этом примере будет задано значение 9 байт (8 значащих символов и один символтерминатор), остальные 11 байт будут либо обнулены, либо содержать произвольное значение.Символьные массивы можно определять без указания размера, если присутствует инициализация.

Например,unsigned char x[] = "xxx";В этом случае под массив x будет выделено 4 байта.Обратите внимание, что в Си нет «строк переменного размера», то есть строк, памятьпод которые автоматически расширяется, если строка становиться длиннее текущего буфера. При работе со строками необходимо внимательно следить за тем, чтобы строка копировалась в буфер достаточного размера!По аналогии с длинными символьными литералами есть и «длинные» символьные строки, которые записываются с префиксом L, например, L"string". Для хранения таких строкиспользуются массивы типа wchar_t.Для манипуляций со строками в языке Си используются стандартные библиотечныефункции.

Чтобы их можно было использовать, в начале программы нужно подключить заголовочный файл string.h.#include <string.h>Некоторые из этих функций мы рассмотрим ниже.Функция strcmp, прототип которой упрощённо записываетсяint strcmp(char s1[], char s2[]);сравнивает две строки s1 и s2. Если строка s1 лексикографически меньше строки s2, функция возвращает отрицательное значение. Если строка s1 лексикографически больше строкиs2, функция strcmp возвращает положительное значение.

Если две строки равны, функциявозвращает ноль. Проверка на равенство двух строк записывается несколько неожиданнымспособомif (!strcmp(s1, s2)) { /* строки равны */ }Обратите внимание, что строки нельзя сравнивать обычными операциями сравнения!=, == и т. д. Дело в том, что в этом случае будут сравниваться не значения строк, а адресаэтих строк. Компилятор в этом случае не даст никаких предупреждений.Функция strlen с прототипом3int strlen(char s[]);вычисляет количество значащих символов в строке, то есть число символов до символатерминатора. Например strlen("xx") даёт результат 2.Функция strcpy с прототипомchar *strcpy(char dst[], char src[]);копирует строку str в строку dst, включая символ-терминатор.

Забегая вперёд, функциявозвращает указатель на первый символ строки dst.Как и везде в языке Си, контроль переполнения массива полностью лежит на программисте. Существует вариант этой функции (strncmp), который позволяет ограничить максимальное количество копируемых символов.Функция strncpy имеет следующий прототип:char *strncpy(char dst[], char src[], size_t n);Здесь size_t — это тип, который используется в стандартной библиотеке языка Си дляразмеров объектов.

Это один из беззнаковых целых типов (обычно unsigned long).Функция strncpy работает следующим образом:• Если длина строки src меньше значения n, то в буфер dst копируется вся строка, аостаток буфера dst заполняется нулевыми байтами.• Если длина строки src больше или равна n, то в буфер dst копируеются первыеn символов строки. При этом в конец скопированной строки нулевой байттерминатор не добавляется!Как и strcpy, эта функция возвращает адрес первого символа строки dst.

Для копирования строки в другую строку удобнее использовать функцию snprintf.Функция strcat с прототипомchar *strcat(char dst[], char src[]);добавляет строку str в конец строки dst. Контроля количества скопированных символов непроизводится. Существует вариант этой функции (strncat), который позволяет ограничитьчисло добавляемых символов.Строку очистить можно с помощью функции strcpystrcpy(s, "");а можно проще:s[0] = 0;1.3 Ввод/вывод строкДля вывода строк предусмотрен специальный спецификатор формата %s который можноиспользовать в функциях семейства printf. Например,printf("His name is %s\n", name);Символ-терминатор на печать выводиться не будет.Считывать строки можно аналогичным спецификатором формата %s для функций семейства scanf. Например,4char buf[20];scanf("%s", buf);В этом случае сначала будут пропущены все пробельные символы, затем все символы допервого пробельного символа будут занесены в buf.

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