Презентация Простые типы данных языка С. Лекция 3 онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Простые типы данных языка С. Лекция 3 абсолютно бесплатно. Урок-презентация на эту тему содержит всего 74 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Простые типы данных языка С. Лекция 3
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:74 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:362.39 kB
- Просмотров:157
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№3 слайд
![Простые типы данных Тип](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img2.jpg)
Содержание слайда: Простые типы данных
Тип данных – это пара, состоящая из множества значений и набора операций над ними
Языки программирования позволяют строить одни типы данных из других типов данных
Простые типы данных – это типы данных, которые нельзя построить из других типов данных
Составные типы данных – это типы данных, которые строятся из других типов данных
№6 слайд
![Простые типы данных -- целые](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img5.jpg)
Содержание слайда: Простые типы данных -- целые
С89
спецификатор-целого-типа ::=
[signed|unsigned] [short|long] int
С99, С11 (поддержка есть в gcc 4.6)
спецификатор-целого-типа ::=
[signed|unsigned] [short|long [long]] int
С89/C99/C11 не определяют, есть ли знак у int
Все известные компиляторы считают int = singed int
Нестандартные целые типы
__int16, __int32, __int64, __int128
Наличие и смысл зависят от компилятора
№9 слайд
![Простые типы данных](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img8.jpg)
Содержание слайда: Простые типы данных – перечислимые типы
С89/С99/С11
enum-спецификатор ::=
'enum' [имя] '{' список-перечислителей '}'
| 'enum' [имя] '{' список-перечислителей ',' '}'
| 'enum' имя
список-перечислителей ::= перечислитель
| список-перечислителей ',' перечислитель
перечислитель ::= перечислимая-константа
| перечислимая-константа '='
константное-выражение
перечислимая-константа ::= имя
константное-выражение на след. лекции
Тип, диапазон значений и размер в памяти такие же, как у int
№10 слайд
![Простые типы данных](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img9.jpg)
Содержание слайда: Простые типы данных – перечислимые типы
Примеры
enum my_boolean_t { my_false = 0, my_true = 1 }
enum my_boolean_t { my_false, my_true }
my_false = 0
my_true = my_false+1 = 1
enum my_boolean_t { my_false = 0, my_true = 0 }
my_false = my_true = 0
enum my_day_t { mon, tue, wed, thu, fri, sat, sun }
№12 слайд
![Машинное представление](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img11.jpg)
Содержание слайда: Машинное представление значений типа char, signed char, unsigned char
1 байт памяти,
signed char целые числа от -128 до 127
unsigned char целые числа от 0 до 255
Программы на Си используют значения типов char, signed char, unsigned char для печати текстовых сообщений на экране, бумаге и т.п.
Соответствие значений и символов определяется кодировкой ОС
№18 слайд
![Машинное представление чисел](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img17.jpg)
Содержание слайда: Машинное представление чисел с плавающей точкой
Числа вида S ∙ M ∙ 2P
S – знак +1 или -1, 1 бит
M – мантисса, x/2mb от 0 до 1
mb – число битов в мантиссе
Intel, AMD, ARM -- 23 для float, 52 для double
x – целое от 0 до 2mb-1
P – порядок
Intel, AMD, ARM – 8 битов для float, 11 битов для double
float занимает 1+8+23 = 32 бита
double занимает 1+11+52 = 64 бита
long double обычно совпадает с double или эмулируется
№23 слайд
![Значение и обозначение числа](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img22.jpg)
Содержание слайда: Значение и обозначение числа
9, IX, девять, nine, 1001(2)
Значение числа
Числовая величина, «чистая»
Отвлеченная от измеряемых объектов и единиц измерения
Обозначение (форма, внешнее представление) числа
Название или знак в некотором языке или системе обозначений, позволяющих отличать данное число от других
Значение числа не зависит от обозначения
№24 слайд
![Система счисления с.с.](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img23.jpg)
Содержание слайда: Система счисления (с.с.)
Cистема правил для построения названий чисел некоторым регулярным способом
Непозиционные системы счисления возникли первыми
Основаны на простом суммировании «весов» – цифр - «разновесов», занятых в записи числа.
Римская с.с.
Цифры берутся с плюсом или минусом в зависимости от веса соседа слева – IX = 9, XI = 11
Позиционные системы счисления
Вклад каждой цифры зависит от «веса» ее позиции в записи числа
№25 слайд
![Представление целых чисел в](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img24.jpg)
Содержание слайда: Представление целых чисел в
позиционных системах счисления с
произвольным основанием
Позиционная система счисления, использующая b цифр, называется b-ичной системой счисления (с.с.)
Если b 10, то первые b цифр из 0, 1, ..., 9
Если 10 b 36, то первые b знаков из 0, 1, ..., 9, A, B, …, Z
10 – A, 11 – B, и т.д.
№40 слайд
![Алгоритм построения записи](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img39.jpg)
Содержание слайда: Алгоритм (построения) записи дробной части в b-с.с
Вход -- Nf ( 0 ≤ Nf < 1), b >1
i = -1;
цикл
a[i] = ц.ч.(Nf*b); // первая цифра дробной
// части числа Nf
Nf = Nf*b-a[i];
i = i – 1;
пока Nf != 0
Выход -- набор i < 0, a[i+], a[i+2], …, a[-1]
Когда алгоритм не завершится?
№42 слайд
![Конечная представимость](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img41.jpg)
Содержание слайда: Конечная представимость рациональных чисел
Несократимая дробь p/q конечно представима в b-ной с. с. тогда и только тогда, когда все простые делители q делят b
121/675 конечна в 15-с.с., т.к. 675 = 33*52 и 15 = 3*5
1/675 = 5*15-3 = 0.005(15);
121*5*15-3 = (2*152 + 10*151 + 5)*15-3 = 2*15-1 + 0*15-2 + 5*15-3
121/675 = 0.2A5(15);
Запись 1/10 бесконечна в 2-с.с.
№47 слайд
![Объявление и инициализация](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img46.jpg)
Содержание слайда: Объявление и инициализация переменных простых типов
<единица-трансляции> ::=
<внешнее-объявление>*
<внешнее-объявление> ::=
<определение-функции> | <объявление>
<определение-функции> ::=
[<спецификаторы-объявления>] <объявитель> [<список-объявлений>] <составная-инструкция>
<объявление> ::=
<простое-объявление> | <составное-объявление>
№48 слайд
![Объявление и инициализация](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img47.jpg)
Содержание слайда: Объявление и инициализация переменных простых типов
<инструкция>::=
| <помеченная-инструкция>
| <инструкция-выражение>
| <составная-инструкция>
| <инструкция-выбора>
| <циклическая-инструкция>
| <инструкция-перехода>
<инструкция-выражение>::= [<выражение>] ';'
<составная-инструкция>::=
'{' [<объявление>*] [<инструкция>*] '}'
№49 слайд
![Объявление и инициализация](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img48.jpg)
Содержание слайда: Объявление и инициализация переменных простых типов
<простое-объявление> ::=
<спецификаторы-объявления>
[<простой-объявитель-инициализатор>*]
C89:
Объявления переменных встречаются либо вне самого внешнего блока { }, либо сразу же после {
C99:
Объявления переменных встречаются в любом месте кода
№52 слайд
![Объявление и инициализация](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img51.jpg)
Содержание слайда: Объявление и инициализация переменных простых типов
<спецификатор-класса-памяти> ::=
| 'auto'
| 'register'
| 'static'
| 'extern'
| 'typedef'
auto
На стеке (по умолчанию)
register
В регистре
static
В статической памяти единицы компиляции
extern
В статической памяти программы
typedef
Вне памяти, объявляемый идентификатор далее обозначает тип
№53 слайд
![Объявление и инициализация](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img52.jpg)
Содержание слайда: Объявление и инициализация переменных простых типов
<спецификатор-простого-типа> ::=
'void' | 'char' | 'short' | 'int' | 'long' | 'float'
| 'double' | 'signed' | 'unsigned'
| <спецификатор-enum> -- было
| <typedef-имя>
<typedef-имя> ::= <идентификатор>
<квалификатор-типа> ::= 'const' | 'volatile'
const
Неизменяемое значение
volatile
Значение может асинхронно изменяться – например, в многопоточной программе
№59 слайд
![Кратные системы счисления](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img58.jpg)
Содержание слайда: Кратные системы счисления
Если основания двух систем счисления b1 и b2 связаны соотношением b2= b1m для некоторого натурального т, то такие системы счисления называются кратными.
Перевод числа из одной с. с. в другую для таких систем можно выполнить проще.
Сгруппируем цифры в b1-записи числа по m от точки влево и вправо (добавив при нехватке цифр нужное количество незначащих нулей):
№62 слайд
![Алгоритм А перевод из меньшей](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img61.jpg)
Содержание слайда: Алгоритм А8: перевод из меньшей кратной с.с. в большую
Вход: b1 > 1, b2 = b1m, b1 - представление числа;
• разбить число на группы по т цифр, начиная от точки, в обе стороны (если в крайних группах цифр меньше т, добавить незначащие нули: в целой части спереди, в дробной сзади);
• заменить каждую группу b2-цифрой по формуле (8) или таблице.
Выход: b2 -представление исходного числа.
№64 слайд
![Универсальные алгоритмы для](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img63.jpg)
Содержание слайда: Универсальные алгоритмы для арифметических операций
Все так называемые численные алгоритмы для арифметических операций сложения, вычитания, умножения и деления (в том числе, вычисления «столбиком») являются символьными, потому что оперируют входными, выходными и промежуточными данными как строками символов.
Символьные вычисления являются формальными в том смысле, что манипулируют только знаками, не обращаясь к их значениям.
Абстрагирование от смысла данных различной природы и описание алгоритма в терминах чисто символьных преобразований является одним из основных методов программирования обработки данных произвольной природы.
№65 слайд
![Алгоритм А сложение двух](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img64.jpg)
Содержание слайда: Алгоритм А10: сложение двух чисел
Вход: две строки цифр, представляющие слагаемые;
• выравнивание: расположить слагаемые одно под другим в произвольном порядке так, чтобы разряды с одинаковым весом находились друг под другом; если какое-то число короче других слева или справа, дополнить его нулями;
• начальные установки:
обнулить цифру переноса в следующий разряд;
установить результат равным пустой строке;
• цикл по текущему разряду от младшего до старшего:
определить сумму переноса и цифр в столбце текущего разряда чисел; младшую цифру суммы записать в текущий разряд результата, старшую — в перенос;
конец цикла;
• окончание: если перенос не равен 0, то дописать перенос в начало результата
Выход: строка, представляющая результат.
№68 слайд
![Особенности умножения и](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img67.jpg)
Содержание слайда: Особенности умножения и деления на основание системы счисления
В b-с. с. число b всегда имеет представление «10(b)».
Умножение на b сводится к дописыванию справа к
целому числу или (что то же), сдвигом b-ичной точки на один
разряд влево.
Деление на b равносильно сдвигу точки на один разряд вправо
или отбрасыванию младшей цифры целого числа — при
делении нацело.
Аналогично число b всегда представляется единицей с k
нулями, а умножение (деление) на b сводится к сдвигу точки
на k позиций вправо (влево).
Остатком от деления целого числа нацело на b является
число, составленное из k младших цифр. Добавление k нулей
справа и отбрасывание k младших цифр можно рассматривать
как две новые операции арифметического сдвига на k позиций.
№69 слайд
![Арифметические сдвиги](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img68.jpg)
Содержание слайда: Арифметические сдвиги
Добавление k нулей справа и отбрасывание k младших цифр можно рассматривать как операции арифметического сдвига на k позиций.
В Си определены операции арифметического сдвига на k позиций, которые равносильны умножению или целочисленному делению на 2k.
<< — сдвиг влево
>> — сдвиг вправо
Примеры:
a = 5 << 3; /* после выполнения присваивания a будет иметь значение 40 */
b = 112 >> 4; /* b будет равно 7 */
№71 слайд
![Сложность арифметических](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img70.jpg)
Содержание слайда: Сложность арифметических алгоритмов
Затраты памяти на хранение чисел и времени на выполнение
операций с ними зависят от длины записи числа в цифрах
рабочей системы счисления.
Для заданной b-с. с. следующие величины:
kn — длина записи (натурального) числа N,
Nk — максимальное натуральное число, записываемое k
цифрами, связаны соотношениями:
kn = [logbN] + 1, где [x] — наибольшее целое, не превышающее x;
Nk = bk − 1.
Верхние оценки для размера результата арифметической операции
над парой целых чисел N1 и N2 (пусть N1 > N2):
для сложения и вычитания — kN1 +1,
для умножения — kN1 + kN2,
для деления — kN1 +1, (так как N2 > 1).
№72 слайд
![Время исполнения Алгоритмы](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img71.jpg)
Содержание слайда: Время исполнения
Алгоритмы сложения содержат один проход по всем
разрядам числа, причем каждый разряд обрабатывается
не более одного раза. Поэтому время работы алгоритма
сложения линейно по k: Тслож(k)~k.
Алгоритмы умножения и деления выполняют сложение
и вычитание несколько раз (не более, чем k), со сдвигом
на одну позицию. Так как время сложения линейно, время
умножения и деления квадратично по k: Tyмн ~k2,, Tдел (k) ~ k2.
В системах команд компьютеров есть команды типа сложения
и умножения, которые работают не с отдельными битами, а с
байтами; они обычно рассматриваются как элементарные.
Проведенные выше оценки сохраняют свою силу, если
заменить базовую с. с. кратной ей (со степенью кратности
равной длине слова).
№73 слайд
![Упражнения . Выразить целую](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img72.jpg)
Содержание слайда: Упражнения
1. Выразить целую часть 17.5 * X через сложение и операции поразрядных сдвигов числа X вправо и влево.
17.5(10) = 16 + 1 + 0.5 = 24 + 20 + 2–1 = 10001.1(2)
17.5 *X = X* (24 + 20 + 2–1 ) =
= X*24 + X*20 + X*2–1 =
= (X << 4) + X + (X >> 1)
2. Если 120(x) делится на 11(10), то как выглядит (чему равно?) 310 в системе счисления с основанием x?
Подбором можно определить, что x = 9, т.к. 120(9) = 99(10) – делится на 11 без остатка.
310 = 32*5= (32)5 = 95 = 100000(9)
№74 слайд
![Объявление и инициализация](/documents_6/a0a7679bcf0444142c010fd3d8d8311c/img73.jpg)
Содержание слайда: Объявление и инициализация переменных простых типов
<объявитель> ::= [<указатель>] <собственно-объявитель>
<указатель> ::= ( '*' [<квалификаторов-типа>*] )*
<собственно-объявитель> ::=
<идентификатор>
| '(' <объявитель> ')'
| <собственно-объявитель> '[' [<константное-выражение>] ']'
| <собственно-объявитель> '(' <список-типов-параметров> ')'
| <собственно-объявитель> '(' [<список-идентификаторов>] ')'
<список-типов-параметров>::= <список-параметров> | <список-параметров> ',' '...'
список-параметров::= <объявление-параметра>*
объявление-параметра::=
спецификаторы-объявления объявитель
спецификаторы-объявления абстрактный-объявительнеоб
инициализатор:
выражение-присваивания
{ список-инициализаторов }
{ список-инициализаторов , }
имя-типа:
список-спецификаторов-квалификаторов абстрактный-объявительнеоб
абстрактный-объявитель:
указатель
указательнеоб собственно-абстрактный-объявитель
собственно-абстрактный-объявитель:
( абстрактный-объявитель )
собственно-абстрактный-обьявительнеоб [ константное-выражениенеоб ]
собственно-аострактныи-объявительнеоб ( список-типов-параметровнеоб )
typedef-имя:
идентификатор
Скачать все slide презентации Простые типы данных языка С. Лекция 3 одним архивом:
Похожие презентации
-
Назначение и возможности языка PHP. Переменные, константы и типы данных РНР. Лекция 1
-
Простые типы данных языка С
-
Простые типы данных на языке программирования Turbo Pascal
-
Базовые типы данных языков программирования высокого уровня. Лекция 3
-
Cписки и другие абстрактные типы данных. Лекция 8
-
Типы языка Си. Лекция 3
-
Поворение материала 1 семестра. Основы языка С. Основы ООП. Типы и структуры данных
-
Программирование на языке Java. Примитивные типы данных. Операции, комментарии. (Лекция 2. 1)
-
ПЯВУ. Основы программирования. Лекция 4. Типы текстовых данных
-
ПЯВУ. Лекция 5. Основы программирования. Типы данных. Понятие выражения, переменной. Область видимости