🗊 Презентация 3. Объекты и типы

Нажмите для полного просмотра!
3. Объекты и типы, слайд №1 3. Объекты и типы, слайд №2 3. Объекты и типы, слайд №3 3. Объекты и типы, слайд №4 3. Объекты и типы, слайд №5 3. Объекты и типы, слайд №6 3. Объекты и типы, слайд №7 3. Объекты и типы, слайд №8 3. Объекты и типы, слайд №9 3. Объекты и типы, слайд №10 3. Объекты и типы, слайд №11 3. Объекты и типы, слайд №12 3. Объекты и типы, слайд №13 3. Объекты и типы, слайд №14 3. Объекты и типы, слайд №15 3. Объекты и типы, слайд №16 3. Объекты и типы, слайд №17 3. Объекты и типы, слайд №18 3. Объекты и типы, слайд №19 3. Объекты и типы, слайд №20 3. Объекты и типы, слайд №21 3. Объекты и типы, слайд №22 3. Объекты и типы, слайд №23 3. Объекты и типы, слайд №24 3. Объекты и типы, слайд №25 3. Объекты и типы, слайд №26 3. Объекты и типы, слайд №27 3. Объекты и типы, слайд №28 3. Объекты и типы, слайд №29 3. Объекты и типы, слайд №30 3. Объекты и типы, слайд №31 3. Объекты и типы, слайд №32 3. Объекты и типы, слайд №33 3. Объекты и типы, слайд №34 3. Объекты и типы, слайд №35 3. Объекты и типы, слайд №36 3. Объекты и типы, слайд №37 3. Объекты и типы, слайд №38 3. Объекты и типы, слайд №39 3. Объекты и типы, слайд №40 3. Объекты и типы, слайд №41 3. Объекты и типы, слайд №42 3. Объекты и типы, слайд №43 3. Объекты и типы, слайд №44 3. Объекты и типы, слайд №45 3. Объекты и типы, слайд №46 3. Объекты и типы, слайд №47 3. Объекты и типы, слайд №48 3. Объекты и типы, слайд №49 3. Объекты и типы, слайд №50 3. Объекты и типы, слайд №51 3. Объекты и типы, слайд №52 3. Объекты и типы, слайд №53 3. Объекты и типы, слайд №54 3. Объекты и типы, слайд №55 3. Объекты и типы, слайд №56 3. Объекты и типы, слайд №57 3. Объекты и типы, слайд №58 3. Объекты и типы, слайд №59 3. Объекты и типы, слайд №60 3. Объекты и типы, слайд №61 3. Объекты и типы, слайд №62 3. Объекты и типы, слайд №63 3. Объекты и типы, слайд №64 3. Объекты и типы, слайд №65 3. Объекты и типы, слайд №66 3. Объекты и типы, слайд №67 3. Объекты и типы, слайд №68 3. Объекты и типы, слайд №69 3. Объекты и типы, слайд №70 3. Объекты и типы, слайд №71 3. Объекты и типы, слайд №72 3. Объекты и типы, слайд №73 3. Объекты и типы, слайд №74 3. Объекты и типы, слайд №75 3. Объекты и типы, слайд №76 3. Объекты и типы, слайд №77 3. Объекты и типы, слайд №78 3. Объекты и типы, слайд №79 3. Объекты и типы, слайд №80 3. Объекты и типы, слайд №81 3. Объекты и типы, слайд №82 3. Объекты и типы, слайд №83 3. Объекты и типы, слайд №84 3. Объекты и типы, слайд №85 3. Объекты и типы, слайд №86 3. Объекты и типы, слайд №87 3. Объекты и типы, слайд №88

Содержание

Вы можете ознакомиться и скачать презентацию на тему 3. Объекты и типы. Доклад-сообщение содержит 88 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Объекты и типы Именование – средство повышения абстракции: использование имени объекта вместо него самого позволяет отвлечься от деталей его...
Описание слайда:
Объекты и типы Именование – средство повышения абстракции: использование имени объекта вместо него самого позволяет отвлечься от деталей его реализации.

Слайд 2


Области видимости Блочная структура – иерархия областей, содержащих определения объектов. Правило видимости: объект, определённый в некоторой области...
Описание слайда:
Области видимости Блочная структура – иерархия областей, содержащих определения объектов. Правило видимости: объект, определённый в некоторой области виден в ней самой и всех вложенных областях за исключение тех, где определён одноимённый объект. Однозначность: в одном блоке не может быть несколько определений одного и того же имени. Поиск определения: определение для использования объекта с именем X находится в ближайшем охватывающем блоке, содержащем определение объекта с именем X.

Слайд 3


Блоки Пример: int power(float x, int n) { int s = 0; for (int k = 0; k
Описание слайда:
Блоки Пример: int power(float x, int n) { int s = 0; for (int k = 0; k

Слайд 4


Области видимости Присоединяющий оператор with S: блок, определяющий множество имён из структуры S with S do R.X = X Квалификация – указание...
Описание слайда:
Области видимости Присоединяющий оператор with S: блок, определяющий множество имён из структуры S with S do R.X = X Квалификация – указание охватывающей структуры, типа или библиотеки перед использованием имени R.X A[i]->X System.Drawing.Color.Aquamarine

Слайд 5


Области видимости - исключения Библиотеки Конфликты возникают только в момент использования имени Квалификация имён: явное и неявное использование...
Описание слайда:
Области видимости - исключения Библиотеки Конфликты возникают только в момент использования имени Квалификация имён: явное и неявное использование библиотеки Раздельные пространства имён для разных сортов объектов (SQL): select select.select from select, where where where.select=select.where;

Слайд 6


Области видимости
Описание слайда:
Области видимости

Слайд 7


Анонимные объекты Объекты, не имеющие собственного имени, доступ к которым осуществляется только через имена других объектов - вычисление имени...
Описание слайда:
Анонимные объекты Объекты, не имеющие собственного имени, доступ к которым осуществляется только через имена других объектов - вычисление имени (адреса). Массивы: M[(int) sqrt(R) - 1] Указатели: *p, *(p->x[i].y->z)

Слайд 8


Типы данных Моделируемая категория (например, неотрицательные целые числа) Синтаксис (например, unsigned int) Литеральные значения – запись констант...
Описание слайда:
Типы данных Моделируемая категория (например, неотрицательные целые числа) Синтаксис (например, unsigned int) Литеральные значения – запись констант в тексте программы (например, 0x123) Набор операций (например, +, -, *) Реализация (например, машинное слово)

Слайд 9


Анализ типов Статический – тип всех выражений можно выполнить во время трансляции, до исполнения программы Надёжность Понимаемость Динамический – тип...
Описание слайда:
Анализ типов Статический – тип всех выражений можно выполнить во время трансляции, до исполнения программы Надёжность Понимаемость Динамический – тип выражений определяется во время исполнения программы Гибкость (?) Необходим, если новые типы появляются в процессе выполнения

Слайд 10


Статический анализ типов Строгая типизация Для каждой переменной, параметра, поля и т.п. указан тип Для операций, функций, процедур и т.п. указаны...
Описание слайда:
Статический анализ типов Строгая типизация Для каждой переменной, параметра, поля и т.п. указан тип Для операций, функций, процедур и т.п. указаны типы аргументов и результатов. Разноимённые типы различны (?): typedef int Apples; /* количество */ typedef int Distance; /* в километрах */ typedef int LocalDistance; /* в метрах */

Слайд 11


Динамическая типизация Пример: Input x If x > 0 y = 2 Else y = “2” End If Print x + y
Описание слайда:
Динамическая типизация Пример: Input x If x > 0 y = 2 Else y = “2” End If Print x + y

Слайд 12


Полиморфизм Перегрузка операций: разные реализации в зависимости от типов аргументов и результатов. Например, 1 + 2, 1.2 + 3.4, “Hello” + “2” void...
Описание слайда:
Полиморфизм Перегрузка операций: разные реализации в зависимости от типов аргументов и результатов. Например, 1 + 2, 1.2 + 3.4, “Hello” + “2” void DrawRectangle(int x, int y, int w, int h); void DrawRectangle(Location p, Size s); void DrawRectangle(Rectangle r);

Слайд 13


Полиморфизм Родовые типы – типы, имеющие параметры, в том числе и типовые. Реализация операций зависит только от свойств параметров-типов class...
Описание слайда:
Полиморфизм Родовые типы – типы, имеющие параметры, в том числе и типовые. Реализация операций зависит только от свойств параметров-типов class SortedList { public void Insert(KeyType k, ElementType e) { … } } Пример (C#): SortedList Persons; SortedList Matrices; Persons.Insert(“Mike”, Me); Matrices.Insert(A.Determinant(), A);

Слайд 14


Типы данных Классификация Предопределённые – предоставляемые языком Определяемые – описанные в программе Простые – неделимые с точки зрения языка, не...
Описание слайда:
Типы данных Классификация Предопределённые – предоставляемые языком Определяемые – описанные в программе Простые – неделимые с точки зрения языка, не имеющие компонент Структурированные – предназначенные для агрегации компонентов или связи между данными Неупорядоченные – присваивание, сравнение на равенство и неравенство: =, == и != (C), :=, = и (Pascal). Упорядоченные – кроме того, сравнения = Перечислимые (интегральные) – сопоставление целым Арифметические – кроме того, сравнения +, -, *, /

Слайд 15


Логические (Pascal)
Описание слайда:
Логические (Pascal)

Слайд 16


Символы (Pascal)
Описание слайда:
Символы (Pascal)

Слайд 17


256 символов – много или мало? 10 цифр + 26 букв + ().,;+-*/ - достаточно С другой стороны 32 управляющие кода: перевод строки, возврат каретки,...
Описание слайда:
256 символов – много или мало? 10 цифр + 26 букв + ().,;+-*/ - достаточно С другой стороны 32 управляющие кода: перевод строки, возврат каретки, перевод страницы,гудок, табуляция,... 32 символа: пробел, 0..9, … 32 буквы: ABC…XYZ + @[\]^_ 32 строчные буквы: аbc..xyz + `{|}~… 64 кириллица: АБВ...ЭЮЯабв...эюя 64 псевдографика: ╫╪┘... Буква ё, диакритика, лигатуры: ùÿÜ… Греческие: αßπΣΓ... Катакана, арабский, иврит, санскрит, иероглифы:...

Слайд 18


Многобайтные кодировки Shift-JIS – специально для японского Двуязыковая кодировка «Обычные» символы – одним байтом Shift-In, Shift-Out – «скобки»...
Описание слайда:
Многобайтные кодировки Shift-JIS – специально для японского Двуязыковая кодировка «Обычные» символы – одним байтом Shift-In, Shift-Out – «скобки» двухбайтовой кодироки Universal Character Set (Unicode) Многоязыковые тексты около 100,000 абстрактных символов Кодировки UCS-2 – два байта на каждый символ UCS-4 – четыре байта на каждый символ UTF-8 – от одного до четырёх байтов

Слайд 19


Целые числа (Pascal)
Описание слайда:
Целые числа (Pascal)

Слайд 20


Множества (Pascal)
Описание слайда:
Множества (Pascal)

Слайд 21


Перечисления (Pascal)
Описание слайда:
Перечисления (Pascal)

Слайд 22


Целые – представление 1 Неотрицательные bn-1 bn-2 … b0 – последовательность битов n – разрядность Диапазон: 0..2n-1
Описание слайда:
Целые – представление 1 Неотрицательные bn-1 bn-2 … b0 – последовательность битов n – разрядность Диапазон: 0..2n-1

Слайд 23


Целые – представление 1 (пример) n=8 00000000 = 0 00111110 = 32+16+8+4+2 = 62 10000100 = 128+4=132 11111111 = 128+64+32+16+8+4+2+1 = 255
Описание слайда:
Целые – представление 1 (пример) n=8 00000000 = 0 00111110 = 32+16+8+4+2 = 62 10000100 = 128+4=132 11111111 = 128+64+32+16+8+4+2+1 = 255

Слайд 24


Целые – представление 2 Cо знаком - дополнительный код bn-1 bn-2 … b0 – последовательность битов n – разрядность. bn-1 - знак (1 – отрицательные)...
Описание слайда:
Целые – представление 2 Cо знаком - дополнительный код bn-1 bn-2 … b0 – последовательность битов n – разрядность. bn-1 - знак (1 – отрицательные) Неотрицательные: Неположительные: Диапазон: -2n-1-1 .. 2n-1-1

Слайд 25


Целые - представление 2 (пример) n=8 0 0000000 = 0 0 0111110 = 32+16+8+4+2 = 62 1 0000100 = -(64+32+16+8+2+1)=-123 1 1111111 = 0
Описание слайда:
Целые - представление 2 (пример) n=8 0 0000000 = 0 0 0111110 = 32+16+8+4+2 = 62 1 0000100 = -(64+32+16+8+2+1)=-123 1 1111111 = 0

Слайд 26


Целые – представление 3 Со знаком - двойное дополнение bn-1 bn-2 … b0 – последовательность битов n – разрядность Диапазон: -2n .. 2n-1
Описание слайда:
Целые – представление 3 Со знаком - двойное дополнение bn-1 bn-2 … b0 – последовательность битов n – разрядность Диапазон: -2n .. 2n-1

Слайд 27


Целые - представление 3 (пример) n=8 0 0000000 = 0 0 0111110 = 32+16+8+4+2 = 62 1 0000100 = -128+4 = -124 1 1111111 = -128+64+32+16+8+4+2+1 =-1
Описание слайда:
Целые - представление 3 (пример) n=8 0 0000000 = 0 0 0111110 = 32+16+8+4+2 = 62 1 0000100 = -128+4 = -124 1 1111111 = -128+64+32+16+8+4+2+1 =-1

Слайд 28


Целые – синтаксис и диапазон значений (C) Algol-68: long long long int
Описание слайда:
Целые – синтаксис и диапазон значений (C) Algol-68: long long long int

Слайд 29


Целые – константы (С) 0..9 – десятичная цифра 0..7 – восьмиричная цифра 0..9A..F – шестнадцатерич-ная цифра H – short L – long U – unsigned
Описание слайда:
Целые – константы (С) 0..9 – десятичная цифра 0..7 – восьмиричная цифра 0..9A..F – шестнадцатерич-ная цифра H – short L – long U – unsigned

Слайд 30


Символы-коды (С) 0..7 – восьмиричная цифра 0..9A..F – шестнадцатеричная цифра
Описание слайда:
Символы-коды (С) 0..7 – восьмиричная цифра 0..9A..F – шестнадцатеричная цифра

Слайд 31


Символы, как целые (C) Символ – изображение своего кода: ‘\123’ == 0123 Пример: i-aя буква Pascal: chr(ord(‘A’) + i – 1) C: ‘A’ + i -1
Описание слайда:
Символы, как целые (C) Символ – изображение своего кода: ‘\123’ == 0123 Пример: i-aя буква Pascal: chr(ord(‘A’) + i – 1) C: ‘A’ + i -1

Слайд 32


Целые, как логические (С) 0 – ложь Не ноль – истина Операции && - конъюнкция (и) || - дизъюнкция (или) ! - отрицание (не) Пример: !1 || ‘A’ && 0x12L...
Описание слайда:
Целые, как логические (С) 0 – ложь Не ноль – истина Операции && - конъюнкция (и) || - дизъюнкция (или) ! - отрицание (не) Пример: !1 || ‘A’ && 0x12L - результат = 1 ‘\0’ || (‘A’ == ‘B’) – результат = 0

Слайд 33


Целые, как битовые шкалы (С) & - побитовая конъюнкция | - побитовая дизъюнкция ^ - побитовый xor (неравенство) ~ побитовое отрицание - сдвиги влево и...
Описание слайда:
Целые, как битовые шкалы (С) & - побитовая конъюнкция | - побитовая дизъюнкция ^ - побитовый xor (неравенство) ~ побитовое отрицание - сдвиги влево и вправо

Слайд 34


Целые, как битовые шкалы (С) Реализация операций над множествами set of 1..32 - unsigned long int S1 * S2, S1 + S2, S1 – S2 S1 & S2, S1 | S2, S1 &...
Описание слайда:
Целые, как битовые шкалы (С) Реализация операций над множествами set of 1..32 - unsigned long int S1 * S2, S1 + S2, S1 – S2 S1 & S2, S1 | S2, S1 & ~S2 x in S (1

Слайд 35


Перечисление как целые Определение констант #define red 0 #define green 1 #define blue 2 или const int red = 0; const int green = 1; const int blue =...
Описание слайда:
Перечисление как целые Определение констант #define red 0 #define green 1 #define blue 2 или const int red = 0; const int green = 1; const int blue = 2; Недостаток – лишняя информация При добавлении новой константы – перенумеровать Нестрогая типизация: blue / green, red + 8

Слайд 36


Перечисление Синтаксис
Описание слайда:
Перечисление Синтаксис

Слайд 37


Вещественные – представление 1 С фиксированной точкой bn-1 bn-2 … b0 – последовательность битов, n – разрядность, p – размер дробной части bn - знак...
Описание слайда:
Вещественные – представление 1 С фиксированной точкой bn-1 bn-2 … b0 – последовательность битов, n – разрядность, p – размер дробной части bn - знак (1 – отрицательные) Абсолютная величина:

Слайд 38


Вещественные – представление 1 (пример) n=8, p=2 000000 00 = 0 001111 10 = 8+4+2+1+1/2 = 15.5 100001 00 = -(1) = -1 111111 11 = -(16+8+4+2+1+1/2+1/4)...
Описание слайда:
Вещественные – представление 1 (пример) n=8, p=2 000000 00 = 0 001111 10 = 8+4+2+1+1/2 = 15.5 100001 00 = -(1) = -1 111111 11 = -(16+8+4+2+1+1/2+1/4) = 31.75

Слайд 39


Вещественные – представление 2 С плавающей точкой bn-1 bn-2 … bpbp-1…b0 – последовательность битов, n – разрядность, p – размер мантиссы s – смещение...
Описание слайда:
Вещественные – представление 2 С плавающей точкой bn-1 bn-2 … bpbp-1…b0 – последовательность битов, n – разрядность, p – размер мантиссы s – смещение порядка bn-1 - знак (1 – отрицательные) Абсолютная величина: Порядок e =

Слайд 40


Вещественные – представление 2 (пример) n=8, p=2, s=3 0 000 0000 = 0 (особый случай) 0 001 1110 = 21-3 * (1+0.875) = 0.46875 1 000 0100 = -(20-3 *...
Описание слайда:
Вещественные – представление 2 (пример) n=8, p=2, s=3 0 000 0000 = 0 (особый случай) 0 001 1110 = 21-3 * (1+0.875) = 0.46875 1 000 0100 = -(20-3 * (1+0.25)) = - 0.03125 1 111 1111 = -(27-3 * (1+0.9375)) = 31

Слайд 41


Вещественные – синтаксис и диапазон значений
Описание слайда:
Вещественные – синтаксис и диапазон значений

Слайд 42


Вещественные – другие представления Неограниченная точность: неограниченный размер. Рациональные числа: числитель и знаменатель. Символьный:...
Описание слайда:
Вещественные – другие представления Неограниченная точность: неограниченный размер. Рациональные числа: числитель и знаменатель. Символьный: 2*sin(pi/6). Сумма (бесконечного) ряда, непрерывные дроби

Слайд 43


Вещественные – константы (С) 0..9 – десятичная цифра F – short L – Double Неточность: 12L – long int 12.0L – double 12e-5L - double
Описание слайда:
Вещественные – константы (С) 0..9 – десятичная цифра F – short L – Double Неточность: 12L – long int 12.0L – double 12e-5L - double

Слайд 44


Вещественные – потеря точности С фиксированной точкой 122.55 / 2 * 2 = 122.50 C плавающей точкой Большое + маленькое 1.0e+38 + 1.0e-45f = 1.e+38...
Описание слайда:
Вещественные – потеря точности С фиксированной точкой 122.55 / 2 * 2 = 122.50 C плавающей точкой Большое + маленькое 1.0e+38 + 1.0e-45f = 1.e+38 Преобразование системы счисления 1.0e-40 = 9.999946E-41

Слайд 45


Приведение типов Неявное – типы аргументов арифметической операции приводятся к максимальному double float unsigned long long unsigned char int Явное...
Описание слайда:
Приведение типов Неявное – типы аргументов арифметической операции приводятся к максимальному double float unsigned long long unsigned char int Явное int x = 30000; x * 12 - переполнение, больше 32767 (float) x * 12 == 360000f;

Слайд 46


Указатели Описание (простой случай) Т * p; Т x; Операции Взятие адреса p = &x Разыменование – объект, на который указывает p *p Свойства: &(*p)...
Описание слайда:
Указатели Описание (простой случай) Т * p; Т x; Операции Взятие адреса p = &x Разыменование – объект, на который указывает p *p Свойства: &(*p) эквивалентно p, *(&x) эквивалентно x Литеральная константа: NULL – пустой указатель Реализация: адрес (ссылка, номер ячейки) указуемого объекта.

Слайд 47


Указатели - пример int i, j; int * p; p = &i; *p = 2; j = *p + 1; p = &j; *p = *p +1;
Описание слайда:
Указатели - пример int i, j; int * p; p = &i; *p = 2; j = *p + 1; p = &j; *p = *p +1;

Слайд 48


Адресная арифметика Пусть p – указатель на объект типа T p начинается с байта c номером a размер Т равен s тогда p+k - указатель на объект типа T,...
Описание слайда:
Адресная арифметика Пусть p – указатель на объект типа T p начинается с байта c номером a размер Т равен s тогда p+k - указатель на объект типа T, который начинается с адреса a + s*k (Аналогично p-k)

Слайд 49


Адресная арифметика Указатели – (частично-)упорядоченный тип: порядок определён, только для указателей полученных из одного и того же указателя Пусть...
Описание слайда:
Адресная арифметика Указатели – (частично-)упорядоченный тип: порядок определён, только для указателей полученных из одного и того же указателя Пусть p1, p2 – однотипные указатели, k – целое, тогда p1 + k – допустимо k + p1 – недопустимо p1 < p2 – допустимо p1 – p2 – допустимо, результат целое p1 + p2 - недопустимо

Слайд 50


Тип void * Указатель на «нечто» - можно явно привести к любому типу указателя. Пример: extern void * malloc(int c); float * A = (float *)...
Описание слайда:
Тип void * Указатель на «нечто» - можно явно привести к любому типу указателя. Пример: extern void * malloc(int c); float * A = (float *) malloc(1000);

Слайд 51


Массивы (C) Описание: (простой случай) Т-тип размера s, N-константа T A[N] Отведение непрерывного участка памяти размера N*s байт A – константный...
Описание слайда:
Массивы (C) Описание: (простой случай) Т-тип размера s, N-константа T A[N] Отведение непрерывного участка памяти размера N*s байт A – константный указатель на первый элемент Операция: выборка компоненты A[i] эквивалентно *(A+i) Следствия: Все массивы нумеруются с нуля. Индекс последнего элемента равен N-1 Нет контроля границ индексов

Слайд 52


Массивы (С) Литеральные значения (только в инициализации) int A[] = { 5, 4, 3, 2, 1}; float A[2][2] = { {5, 4.0} , {3 , 2+2} };
Описание слайда:
Массивы (С) Литеральные значения (только в инициализации) int A[] = { 5, 4, 3, 2, 1}; float A[2][2] = { {5, 4.0} , {3 , 2+2} };

Слайд 53


Многомерные массивы Pascal: var A : array[1..N, 1..M] of real; A[i,j]
Описание слайда:
Многомерные массивы Pascal: var A : array[1..N, 1..M] of real; A[i,j]

Слайд 54


Динамические массивы Размер определяется в процессе вычислений Algol-60 C
Описание слайда:
Динамические массивы Размер определяется в процессе вычислений Algol-60 C

Слайд 55


Динамические массивы Размер массива – часть его представления Modula-2 C
Описание слайда:
Динамические массивы Размер массива – часть его представления Modula-2 C

Слайд 56


Подвижные массивы Размер может меняться в процессе вычислений Visual Basic C
Описание слайда:
Подвижные массивы Размер может меняться в процессе вычислений Visual Basic C

Слайд 57


Подвижные массивы Размер может меняться в процессе вычислений C# C
Описание слайда:
Подвижные массивы Размер может меняться в процессе вычислений C# C

Слайд 58


Непрямоугольные массивы Пример: треугольная матрица (С)
Описание слайда:
Непрямоугольные массивы Пример: треугольная матрица (С)

Слайд 59


Массивы-дескрипторы (Автокод Эльбрус)
Описание слайда:
Массивы-дескрипторы (Автокод Эльбрус)

Слайд 60


Операции с массивами (Альфа) массив A[1:N,1:M], B[1:M,1:K], X, Y[1:N], Z[1:M] вещественный C
Описание слайда:
Операции с массивами (Альфа) массив A[1:N,1:M], B[1:M,1:K], X, Y[1:N], Z[1:M] вещественный C

Слайд 61


Операции над массивами (Альфа) Больше, чем перегрузка операций (Algol-68, C++) – статическая проверка соответствия границ. Промежуточные массивы...
Описание слайда:
Операции над массивами (Альфа) Больше, чем перегрузка операций (Algol-68, C++) – статическая проверка соответствия границ. Промежуточные массивы размещает сам транслятор (сравните с C) (A * B) * X + (2 * Y) Оптимизация, эффективные (параллельные) алгоритмы

Слайд 62


Операции над массивами (APL) APL – A Programming Language язык, ориентированные на обработку структурных данных Богатый набор операци на массивами:...
Описание слайда:
Операции над массивами (APL) APL – A Programming Language язык, ориентированные на обработку структурных данных Богатый набор операци на массивами: сдвиг, перестановка, сжатие, выбор индексов вхождений, транспонирование, упорядочение, … Распространение всех элементарных операций на массивы Оператор редукции

Слайд 63


Операции над массивами (APL) Пример: вычислить полином степени n от x, заданный массивом коэффициентов A: /+ (A * (x ι (n+1))) /+ (A * (x (0 1 2 …...
Описание слайда:
Операции над массивами (APL) Пример: вычислить полином степени n от x, заданный массивом коэффициентов A: /+ (A * (x ι (n+1))) /+ (A * (x (0 1 2 … n))) /+ (A * (x0 x1 x2 … xn)) /+ (A0*x0 A1*x1 A2*x2 … An*xn) A0*x0 + A1*x1 + A2*x2 + … + An*xn

Слайд 64


Строки (Pascal)
Описание слайда:
Строки (Pascal)

Слайд 65


Строки как массивы (С) Строка – указатель на последовательность символов, заканчивающуюся ‘\0’ unsigned char s[] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};...
Описание слайда:
Строки как массивы (С) Строка – указатель на последовательность символов, заканчивающуюся ‘\0’ unsigned char s[] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}; Литеральное значение: “Hello, \”string\”!\n”

Слайд 66


Строки как массивы (С) Достоинства: Могут иметь произвольную длину Могут использоваться не только в инициализации (в отличии от других массивов) Не...
Описание слайда:
Строки как массивы (С) Достоинства: Могут иметь произвольную длину Могут использоваться не только в инициализации (в отличии от других массивов) Не требуют специальных операций для доступа к содержимому

Слайд 67


Строки как массивы (С) Недостатки: Сложно определить длину (в отличии от Pascal) Все недостатки массивов Нет контроля границ индексов Нет подвижных...
Описание слайда:
Строки как массивы (С) Недостатки: Сложно определить длину (в отличии от Pascal) Все недостатки массивов Нет контроля границ индексов Нет подвижных массивов – память надо выделять «вручную»

Слайд 68


Строки как массивы (С) Операции strlen(s) – длина s strcpy(s1,s2) – копирование строки strcat(s1,s2) – конкатенация строк strchr(s,c) – указатель на...
Описание слайда:
Строки как массивы (С) Операции strlen(s) – длина s strcpy(s1,s2) – копирование строки strcat(s1,s2) – конкатенация строк strchr(s,c) – указатель на первое вхождение с в s …

Слайд 69


Строки как массивы (С) Пример (аналог Copy в Pascal – выборки подстроки) unsigned char * PasCopy(unsigned char *source, int i, int l) { unsigned char...
Описание слайда:
Строки как массивы (С) Пример (аналог Copy в Pascal – выборки подстроки) unsigned char * PasCopy(unsigned char *source, int i, int l) { unsigned char * dest = (unsigned char *) malloc(l+1); unsigned char * d = dest; unsigned char * s = &(source[i]); while ((*d++ = *s++) && l--) ; d[-1] = ‘\0’; return dest; }

Слайд 70


Описания Синтаксис:
Описание слайда:
Описания Синтаксис:

Слайд 71


Описание - примеры Указатель на массив целых int (*x)[100] Массив из указателей на целые int * (x[100]) Указатель на массив из массивов из указателей...
Описание слайда:
Описание - примеры Указатель на массив целых int (*x)[100] Массив из указателей на целые int * (x[100]) Указатель на массив из массивов из указателей на указатели на перечисление WeekDay enum WeekDay ** ((*x)[][100]) Указатель на целое, целое и целое равное 5 long * p, n, m = 5

Слайд 72


Описание типа Синтаксис Пример: C Pascal
Описание слайда:
Описание типа Синтаксис Пример: C Pascal

Слайд 73


Структуры Назначение: объединение разнотипных данных struct – декартовое произведение union – объединение Реализация: struct – последовательное...
Описание слайда:
Структуры Назначение: объединение разнотипных данных struct – декартовое произведение union – объединение Реализация: struct – последовательное выстраивание union – наложение различной разметки на участок памяти.

Слайд 74


Структуры Синтаксис: Операции: . - выборка поля, например, S.code, A[i].re, (*p).next (последнее эквивалентно p->next)
Описание слайда:
Структуры Синтаксис: Операции: . - выборка поля, например, S.code, A[i].re, (*p).next (последнее эквивалентно p->next)

Слайд 75


Структуры Пример struct typedef struct { re, im : float; } complex; complex c1= {-1, 0}, c2 = {3.14,2.78}, c; c.re = c1.re * c2.re – c1.im * c2.im;...
Описание слайда:
Структуры Пример struct typedef struct { re, im : float; } complex; complex c1= {-1, 0}, c2 = {3.14,2.78}, c; c.re = c1.re * c2.re – c1.im * c2.im; c.im = c1.re * c2.im + c1.im * c2.re; Пример union union { unsigned long l; unsigned char c[4];} b4; b4.l = 0xAABBCCDD; b4.c[1] = ‘A’; (результат b4.l == 0xAA41CCDD)

Слайд 76


Структуры - пример
Описание слайда:
Структуры - пример

Слайд 77


Структуры - пример
Описание слайда:
Структуры - пример

Слайд 78


Структуры - выравнивание
Описание слайда:
Структуры - выравнивание

Слайд 79


union – «дыра» в контроле типов
Описание слайда:
union – «дыра» в контроле типов

Слайд 80


sizeof Размер типа данных или переменной Пример char c, * p = “abc”, s[] = “abc”, a[3]={‘a’,’b’,’c’}; struct T{ unsigned char code; struct T * left,...
Описание слайда:
sizeof Размер типа данных или переменной Пример char c, * p = “abc”, s[] = “abc”, a[3]={‘a’,’b’,’c’}; struct T{ unsigned char code; struct T * left, * right; };

Слайд 81


sizeof Псевдооперация Параметр – тип Вычисление не требует вычисления аргумента, а только его типа Использования динамическое размещение данных...
Описание слайда:
sizeof Псевдооперация Параметр – тип Вычисление не требует вычисления аргумента, а только его типа Использования динамическое размещение данных Record * r = (Record*) malloc(sizeof(Record)), * a = (Record *) calloc(sizeof(*a),100); копирование массивов memcpy(dest, source, n * sizeof(*dest))

Слайд 82


Присваивания Выражение с побочным эффектом (изменением состояния памяти) Получатель (левая часть присваивания) – изменяемая переменная Источник...
Описание слайда:
Присваивания Выражение с побочным эффектом (изменением состояния памяти) Получатель (левая часть присваивания) – изменяемая переменная Источник (правая часть присваивания) – присваиваемое значение Значение присваивания = присвоенное значение Приведение типов: тип источника не превосходит типа получателя.

Слайд 83


Присваивание - пример float A[N]; int i, j; A[i+j] = (i=(j=1)+2) + 4 Вычислить 1 Поместить 1 в j К значению j прибавить 2 Поместить 3 в i Вычислить...
Описание слайда:
Присваивание - пример float A[N]; int i, j; A[i+j] = (i=(j=1)+2) + 4 Вычислить 1 Поместить 1 в j К значению j прибавить 2 Поместить 3 в i Вычислить 3+4 (результат 7) Вычислить i+j Вычислить элемент массива A[4] Преобразовать 7 в вещественное 7.0 Поместить 7.0 в A[4] Результат присваивания – 7.0

Слайд 84


Присваивание – побочные эффекты! Если вдруг в предыдущем примере A[i+j] = (i=(j=1)+2) + 4 cначала вычисляется получатель, то изменится A[0], а не...
Описание слайда:
Присваивание – побочные эффекты! Если вдруг в предыдущем примере A[i+j] = (i=(j=1)+2) + 4 cначала вычисляется получатель, то изменится A[0], а не A[4] Не специфицировано в каком порядке вычисляются операнды, например ((i=(j=2) + i) + (j=(i=1) + j) может быть равно как 5, так и 3.

Слайд 85


Совмещенное присваивание M[i+1] = М[i+1] + 2 эквивалентно (при отсутсвии побочных эффектов) M[i+1] += 2 Сокращение записи – наглядность Соответствие...
Описание слайда:
Совмещенное присваивание M[i+1] = М[i+1] + 2 эквивалентно (при отсутсвии побочных эффектов) M[i+1] += 2 Сокращение записи – наглядность Соответствие смыслу – «увеличить M[i+1] на 2» Экономия вычислений – ячейка M[i+1] вычисляется лишь один раз Помимо += может быть -=, *=, /=, %=, &=, |=, ^=, =. (Но не может быть

Слайд 86


Инкремент, декремент Префиксная форма ++ X эквивалентно X += 1 Постфиксная форма X ++ эквивалентно (t = X, X+=1, t) Запомнить X во временной...
Описание слайда:
Инкремент, декремент Префиксная форма ++ X эквивалентно X += 1 Постфиксная форма X ++ эквивалентно (t = X, X+=1, t) Запомнить X во временной переменной Увеличить X на 1 Выдать запомненное значение Аналогично для --

Слайд 87


Совмещённое присваивание (пример) (*p++) += 0x40 Запомнить значение указателя p Извлечь значение символа *p Прибавить к нему 0x40 Поместить...
Описание слайда:
Совмещённое присваивание (пример) (*p++) += 0x40 Запомнить значение указателя p Извлечь значение символа *p Прибавить к нему 0x40 Поместить полученное значение в *p Взять запомненное на шаге 1значение указателя p Увеличить его на 1 Поместить полученный указатель в p (перейти к следующему символу)

Слайд 88


Путаница: = vs ==, & vs && Присваивание встречается значительно чаще, чем сравнение на равенство (?) В системных программах & встречается чаще, чем...
Описание слайда:
Путаница: = vs ==, & vs && Присваивание встречается значительно чаще, чем сравнение на равенство (?) В системных программах & встречается чаще, чем && (?) Пример. Пусть x = 1, y = 2, тогда условие x=2 & x-y>0 Реализуется как x = ( ((2 & x) – y) > 0 ), результат 0, побочно x=0



Похожие презентации
Mypresentation.ru
Загрузить презентацию