Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Язык си. Часть 5. Приведение типов. Символы и строки

Содержание

Приведение типов
Язык Си. Часть 5ПРИВЕДЕНИЕ ТИПОВ. СИМВОЛЫ И СТРОКИ. Приведение типов Приведение типовНекоторые операции в зависимости от своих операндов могут инициировать преобразование значений Преобразования целых типовЗнаковые и беззнаковые значения типа char, short int и enum Преобр-е «целое – веществ-е»При преобразовании из вещественного типа в целочисленный дробная часть Преобр-е вещественных типовПри преобразовании из вещественного типа меньшей точности к типу большей Арифметические преобразованияесли один операнд имеет тип:то другой преобраз-ся в:Во-первых, Преобразования указателейЛюбой указатель можно привести к типу void * без потери информации. Работа со строками и символами Кодировки символовДля представления текста в цифровом формате необходимо придумать систему кодирования, в Кодировка ASCII 	1967 год– американский стандартный код для обмена информацией (American Standard Полная ASCII-таблица есть в файле ascii.pdf. Там же есть и расширенные таблицы 866 и CP-1251. Unicode				1988 год– таблица кодирования символов, которая содержит 1 114 112 кодов для Тип charПеременная типа char занимает 1 байт памяти и хранит целое число, Функции для работы с charВвод/вывод:1. Указание типа в printf/scanf - %c. Пример: Функции для анализа символовisalnum (c) 	ИСТИННО isalpha(с)ИЛИ isdigit(с) isalpha (с) 	ИСТИННО isupper(с)ИЛИ #define EOF (-1) Макрос EOF – определен в файле stdio.h и служит СтрокиСтрока – это массив элементов типа char, заканчивающийся символом ‘\0’ (NULL). char Ввод строки:scanf(“ %s”, str); // до 1-го пробельного символаgets( str ); 	// Функции для работы со строками 	     #include char
Слайды презентации

Слайд 2 Приведение типов

Приведение типов

Слайд 3 Приведение типов
Некоторые операции в зависимости от своих операндов

Приведение типовНекоторые операции в зависимости от своих операндов могут инициировать преобразование

могут инициировать преобразование значений из одного типа в другой.


Приведение типов (cast) в языке Си может быть явным (explicit) и неявным (implicit).
При явном приведении типов перед выражением ставится имя нужного типа в круглых скобках.
Пример: float k = (float) 1/3; // k = 0.333…
Неявное приведение типов выполняется компиляторов автоматически по указанным далее правилам.

Слайд 4 Преобразования целых типов
Знаковые и беззнаковые значения типа char,

Преобразования целых типовЗнаковые и беззнаковые значения типа char, short int и

short int и enum могут использоваться в выражениях везде,

где разрешено применение целых чисел. Если тип int позволяет представить все значения исходного типа операнда, то операнд приводится к int, в противном случае— к unsigned int. Эта процедура называется расширением целочисленного типа (integral promotion).

При преобразовании signed-типа А к unsigned-типу В если длина с битах А > В, то лишние левые биты отбрасываются, иначе – недостающие заполняются нулями.
В результате приведения unsigned-типа к signed его значение не меняется, если оно представимо в этом новом типе; в противном случае результат зависит от реализации.

Слайд 5 Преобр-е «целое – веществ-е»
При преобразовании из вещественного типа

Преобр-е «целое – веществ-е»При преобразовании из вещественного типа в целочисленный дробная

в целочисленный дробная часть числа отбрасывается; если полученное при

этом значение нельзя представить величиной заданного целочисленного типа, то результат не определен.

Если число преобразуется из целого в вещественное и находится в допустимом диапазоне, но представляется в новом типе недостаточно точно, то результатом будет большее или меньшее ближайшее значение нового типа. Если результат выходит за границы диапазона допустимых значений, результат не определен.

Слайд 6 Преобр-е вещественных типов
При преобразовании из вещественного типа меньшей

Преобр-е вещественных типовПри преобразовании из вещественного типа меньшей точности к типу

точности к типу большей точности число не изменяется. (float

-> double)

Если преобразование выполняется от большей точности к меньшей и число остается в допустимых пределах нового типа, то результатом будет большее или меньшее ближайшее значение нового типа. Если результат выходит за границы допустимого диапазона, результат не определен:
double R = 2e+100;
float R2 = R; /* Исключение типа Floating overflow – переполнение типа float */

Слайд 8 Арифметические преобразования
если один операнд имеет тип:
то другой преобраз-ся

Арифметические преобразованияесли один операнд имеет тип:то другой преобраз-ся в:Во-первых,

в:
Во-первых,


Слайд 9 Преобразования указателей
Любой указатель можно привести к типу void

Преобразования указателейЛюбой указатель можно привести к типу void * без потери

* без потери информации. Если результат подвергнуть обратному преобразованию,

получится исходный указатель. Указатели типа void * можно употреблять совместно с указателями любого типа в операциях присваивания и сравнения каким угодно образом.

При преобразовании указателей других типов по факту ничего не происходит, но транслятор «запоминает», что операции адресной арифметики и разыменования нужно выполнять в соответствии с новым типом данных.

Слайд 10 Работа со строками и символами

Работа со строками и символами

Слайд 11 Кодировки символов
Для представления текста в цифровом формате необходимо

Кодировки символовДля представления текста в цифровом формате необходимо придумать систему кодирования,

придумать систему кодирования, в которой каждой букве соответствовал бы

уникальный двоичный код. Свои коды понадобятся и для цифр, и для знаков препинания, поскольку без них в тексте не обойтись.
Кодирование – это представление чего-либо чем-нибудь другим.
Кодировка (набор символов, чарсет, charset, кодовая страница) – это набор правил, описывающий способ перевода одного представления в другое, т.е. таблица кодов, закрепляющая за символом набор битов.

Слайд 12 Кодировка ASCII 1967 год
– американский стандартный код для

Кодировка ASCII 	1967 год– американский стандартный код для обмена информацией (American

обмена информацией (American Standard Code for Information Interchange).
ASCII

— это 7-битовая кодировка. Ее коды принимают значения от 0000000 до 1111111 или в шестнадцатеричном выражении от 00h до 7Fh.
Первые 33 кода – управляющие и непечатные символы (например: ‘\t’ – 09h, ‘\n’ – 0Ah), остальные – буквы латинского алфавита, цифры и знаки препинания.
Для кодирования национальных символов используют расширенную ASCII-таблицу и коды 128-255. Для Windows это кодировка Windows CP-1251. Кодировка букв в консоли Windows по умолчанию MS-DOS CP-866.
Кириллицу также содержат кодовые страницы ISO-8859-5 (Linux), CP KOI-8U и CP KOI-8R (СССР). Для других языков существуют свои кодовые таблицы.

Слайд 13 Полная ASCII-таблица есть в файле ascii.pdf. Там же

Полная ASCII-таблица есть в файле ascii.pdf. Там же есть и расширенные таблицы 866 и CP-1251.

есть и расширенные таблицы 866 и CP-1251.


Слайд 14 Unicode 1988 год
– таблица кодирования символов, которая содержит 1

Unicode				1988 год– таблица кодирования символов, которая содержит 1 114 112 кодов

114 112 кодов для символов всех языков.
Первые 128

символов — с кодами от 0000h до 007Fh — совпадают с символами ASCII.
Unicode в первую и главную очередь определяет таблицу пунктов для символов. Это такой способ сказать «65 – A, 66 – B, 9731 – ☃». Как эти пункты кодируются в байты зависит от конкретной кодировки. Для представления 1 114 112 значений двух байт недостаточно. Трех достаточно, но 3 – странное число, так что 4 является комфортным минимумом.
UTF-32 – это кодировка, которая переводит все символы в наборы из 32 бит.
UTF-16 и UTF-8 являются кодировками с переменной длиной кодирования. Если символ может быть закодирован одним байтом, UTF-8 закодирует его одним байтом. Если нужно 2 байта, то используется 2 байта. Кодировка сообщает старшими битами, сколькими битами кодируется текущий символ.
UTF-16 является компромиссом: все символы как минимум двухбайтные, но их размер может увеличиваться до 4 байт, если нужно. 

Слайд 15 Тип char
Переменная типа char занимает 1 байт памяти

Тип charПеременная типа char занимает 1 байт памяти и хранит целое

и хранит целое число, обозначающее код символа в какой-либо

стандартной кодировке.
Отсюда следует, что, во-первых, с типом char можно работать, как с обычным целым числом. А во-вторых, что значения типа int тоже можно воспринимать как коды символов.
В случае с типом int по умолчанию подразумевается модификатор знака signed. Но что касается типа char, то в стандарте указано, что тип char должен совпадать либо с signed char, либо с unsigned char, и это зависит от компилятора! То есть в общем случае, типы signed char, unsigned char и char – это 3 разных типа!*

Слайд 16 Функции для работы с char
Ввод/вывод:
1. Указание типа в

Функции для работы с charВвод/вывод:1. Указание типа в printf/scanf - %c.

printf/scanf - %c. Пример: вывод всей кодовой таблицы:
int main(){

int i;
for( i = 0; i < 256; i++)
printf("symbol: %c, code = %d\n", i, i);
}
2. Ввод: функция getchar() – возвращает код введенного символа.
Вывод: функция putchar(char c).
3. Для ввода/вывода в файл – функции getc(), putc().
4. Функции ungetch(), getch() – посмотреть самостоятельно!



Слайд 17 Функции для анализа символов
isalnum (c) ИСТИННО isalpha(с)ИЛИ isdigit(с)

Функции для анализа символовisalnum (c) 	ИСТИННО isalpha(с)ИЛИ isdigit(с) isalpha (с) 	ИСТИННО


isalpha (с) ИСТИННО isupper(с)ИЛИ islower(с)
iscntrl (c) Управляющий символ
isdigit

(с) Десятичная цифра
isgraph (с) Отображаемый символ, за исключением пробела
islower (с) Буква нижнего регистра
isprint (с) Отображаемый символ, в том числе пробел
ispunct (с) Отображаемый символ, за исключением пробела, буквы или цифры
isspace (с) Пробел, прогон страницы, конец строки, возврат каретки, табуляция, вертикальная табуляция
isupper (с) Буква верхнего регистра
isxdigit (с) Шестнадцатеричная цифра

Аргумент каждой из них имеет тип int и должен представлять собой либо EOF, либо unsigned char, приведенный к int; возвращаемое значение имеет тип int. Функции возвращают ненулевое значение (истина), если аргумент с удовлетворяет соответствующему условию или принадлежит указанному классу символов, и нуль (ложь) в противном случае.

#include

int tolower(int с) переводит с в нижний регистр;
int toupper(int с) переводит с в верхний регистр.


Слайд 18 #define EOF (-1)
Макрос EOF – определен в

#define EOF (-1) Макрос EOF – определен в файле stdio.h и

файле stdio.h и служит для индикации того, что в

потоке больше нет данных. В консоли Windows это сочетание Ctrl+Z.
Пример: программа для считывания символов с клавиатуры и вывода их на экран. Работает до нажатия Ctrl+Z. Подробнее
int main(){
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
getch();
return 0;
}
При операциях ввода-вывода выделяется область временной памяти (буфер), куда и помещаются поступающие символы. Как только поступает специальный сигнал (например, переход на новую строку при нажатии Enter), данные из буфера передаются по месту своего назначения (на экран, в переменную и др.).


Слайд 19 Строки
Строка – это массив элементов типа char, заканчивающийся

СтрокиСтрока – это массив элементов типа char, заканчивающийся символом ‘\0’ (NULL).

символом ‘\0’ (NULL).

char A1[20] = { 's','t','r','i','n','g','\0' };
char

A2[] = { 's','t','r','i','n','g','\0' };
char A3[20] = "string";
char A4[] = "string";
char * A5 = "string";
char B[10];

Слайд 20 Ввод строки:
scanf(“ %s”, str); // до 1-го пробельного

Ввод строки:scanf(“ %s”, str); // до 1-го пробельного символаgets( str );

символа
gets( str ); // ввод до Enter
При вводе строки

символ ‘\0’ добавляется без набора ‘\0’ с клавиатуры.

Вывод строки:
printf(“ %s ”, str); // вывод символов до ‘\0’
puts( str ); // . . . до ‘\0’

  • Имя файла: yazyk-si-chast-5-privedenie-tipov-simvoly-i-stroki.pptx
  • Количество просмотров: 107
  • Количество скачиваний: 0