Инфоурок Информатика ПрезентацииОбъекты и типы

Объекты и типы

Скачать материал
Скачать материал "Объекты и типы"

Получите профессию

Технолог-калькулятор общественного питания

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Инструктор по волейболу

Описание презентации по отдельным слайдам:

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

    1 слайд

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

  • Области видимостиБлочная структура – иерархия областей, содержащих определени...

    2 слайд

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

  • БлокиПример:
	int power(float x, int n){    int s = 0;    for (int k = 0; k

    3 слайд

    Блоки
    Пример:
    int power(float x, int n)
    {
    int s = 0;
    for (int k = 0; k <n; k++)
    {
    int ss = s;
    s *= x;
    printf(“%f * %f = %f\n”, ss, x, s);
    }
    }

  • Области видимостиПрисоединяющий оператор with S: блок, определяющий множество...

    4 слайд

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

  • Области видимости - исключенияБиблиотеки
Конфликты возникают только в момент...

    5 слайд

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

  • Области видимостиX: Lib1:X:
Y:Lib2:
                 




Prog:X:Y:X
Lib1.X
w...

    6 слайд

    Области видимости
    X:
    Lib1:
    X:
    Y:
    Lib2:







    Prog:
    X:
    Y:
    X
    Lib1.X
    with Y

    Proc P1:
    Y
    Lib2.Y

    Proc P2:
    Y.X
    P2
    Proc P1:
    X

  • Анонимные объектыОбъекты, не имеющие собственного имени, доступ к которым осу...

    7 слайд

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

  • Типы данныхМоделируемая категория (например, неотрицательные целые числа)
Син...

    8 слайд

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

  • Анализ типовСтатический – тип всех выражений можно выполнить во время трансля...

    9 слайд

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

  • Статический анализ типовСтрогая типизация
Для каждой переменной, параметра, п...

    10 слайд

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

  • Динамическая типизацияПример:
	Input x
	If x &gt; 0
		y = 2
	Else
		y = “2”
	End...

    11 слайд

    Динамическая типизация
    Пример:
    Input x
    If x > 0
    y = 2
    Else
    y = “2”
    End If
    Print x + y
    Введено “5"
    - напечатано “7”

    Введено “-1"
    - напечатано “-12”

    Введено “Привет!"
    - ошибка при
    “If x > 0”

  • ПолиморфизмПерегрузка операций: разные реализации в зависимости от типов аргу...

    12 слайд

    Полиморфизм
    Перегрузка операций: разные реализации в зависимости от типов аргументов и результатов. Например,

    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 SortedList <KeyType,ElementType>
    {
    public void Insert(KeyType k, ElementType e)
    { … }
    }
    Пример (C#):
    SortedList <string,Person> Persons;
    SortedList <float,Matrix<float>> Matrices;
    Persons.Insert(“Mike”, Me);
    Matrices.Insert(A.Determinant(), A);

  • Типы данныхКлассификация
Предопределённые – предоставляемые языком
Определяем...

    14 слайд

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

  • Логические (Pascal)

    15 слайд

    Логические (Pascal)

  • Символы (Pascal)

    16 слайд

    Символы (Pascal)

  • 256 символов – много или мало?10 цифр + 26 букв + ().,;+-*/ - достаточно
С др...

    17 слайд

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

  • Многобайтные кодировкиShift-JIS – специально для японского
Двуязыковая кодиро...

    18 слайд

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

  • Целые числа (Pascal)

    19 слайд

    Целые числа (Pascal)

  • Множества (Pascal)

    20 слайд

    Множества (Pascal)

  • Перечисления (Pascal)

    21 слайд

    Перечисления (Pascal)

  • Целые – представление 1Неотрицательные 
bn-1 bn-2 … b0 – последовательность б...

    22 слайд

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




    Диапазон: 0..2n-1

  • Целые – представление 1 (пример)n=8
00000000 = 0
00111110 = 32+16+8+4+2 = 62...

    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

  • Целые – представление 2Cо знаком - дополнительный код
bn-1 bn-2 … b0 – послед...

    24 слайд

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

    Неположительные:

    Диапазон: -2n-1-1 .. 2n-1-1

  • Целые - представление 2 (пример)n=8
0 0000000 = 0
0 0111110 = 32+16+8+4+2 = 6...

    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

  • Целые – представление 3Со знаком - двойное дополнение
bn-1 bn-2 … b0 – послед...

    26 слайд

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



    Диапазон: -2n .. 2n-1

  • Целые - представление 3 (пример)n=8
0 0000000 = 0
0 0111110 = 32+16+8+4+2 = 6...

    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


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

    28 слайд

    Целые – синтаксис и диапазон значений (C)

    Algol-68: long long long int

  • Целые – константы (С)0..9 – десятичная цифра
0..7 – восьмиричная цифра
0..9A....

    29 слайд

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

  • Символы-коды (С)0..7 – восьмиричная цифра

0..9A..F – шестнадцатеричная цифракод

    30 слайд

    Символы-коды (С)
    0..7 – восьмиричная цифра

    0..9A..F – шестнадцатеричная цифра
    код

  • Символы, как целые (C)Символ – изображение своего кода:
‘\123’ == 0123

Приме...

    31 слайд

    Символы, как целые (C)
    Символ – изображение своего кода:
    ‘\123’ == 0123

    Пример: i-aя буква
    Pascal: chr(ord(‘A’) + i – 1)
    C:‘A’ + i -1

  • Целые, как логические (С)0 – ложь
Не ноль – истина
Операции
&amp;&amp; - конъюнкция (...

    32 слайд

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

  • Целые, как битовые шкалы (С)&amp; - побитовая конъюнкция
| - побитовая дизъюнкция...

    33 слайд

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

  • Целые, как битовые шкалы (С)Реализация операций над множествами 
set of 1..32...

    34 слайд

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

  • Перечисление как целыеОпределение констант
#define red 0
#define green 1
#def...

    35 слайд

    Перечисление как целые
    Определение констант
    #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

  • ПеречислениеСинтаксисПример: 
enum StreetColor (red, green, blue)
enum WeekDa...

    36 слайд

    Перечисление
    Синтаксис
    Пример:
    enum StreetColor (red, green, blue)
    enum WeekDay (
    Mon=1, Tue, Wed, Thu, Fri, Sat, Sun
    )

  • Вещественные – представление 1С фиксированной точкой
bn-1 bn-2 … b0 – последо...

    37 слайд

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


  • Вещественные – представление 1 (пример)n=8, p=2
000000 00 = 0
001111 10 = 8+4...

    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) = 31.75

  • Вещественные – представление 2С плавающей точкой
bn-1 bn-2 … bpbp-1…b0 – посл...

    39 слайд

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

    Порядок e =

  • Вещественные – представление 2 (пример)n=8, p=2, s=3
0 000 0000 = 0 (особый с...

    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 * (1+0.25)) = - 0.03125
    1 111 1111 = -(27-3 * (1+0.9375)) = 31

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

    41 слайд

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

  • Вещественные – другие представленияНеограниченная точность: неограниченный ра...

    42 слайд

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

  • Вещественные – константы (С)0..9 – десятичная цифра
F – short
L – Double
Нето...

    43 слайд

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

  • Вещественные – потеря точностиС фиксированной точкой
122.55 / 2 * 2 = 122.50...

    44 слайд

    Вещественные – потеря точности
    С фиксированной точкой
    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
    Явное
    int x = 30000;
    x * 12 - переполнение, больше 32767
    (float) x * 12 == 360000f;

  • УказателиОписание (простой случай)
Т * p;
Т x;
Операции
Взятие адреса 
	p = &amp;...

    46 слайд

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

  • Указатели - примерint i, j;
int * p;

p = &amp;i;
*p =  2;
j = *p + 1; 
p = &amp;j;...

    47 слайд

    Указатели - пример

    int i, j;
    int * p;

    p = &i;
    *p = 2;
    j = *p + 1;
    p = &j;
    *p = *p +1;
    p
    j
    i
    2
    4
    3

  • Адресная арифметикаПусть 
p – указатель на объект типа T 
p начинается с байт...

    48 слайд

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

  • Адресная арифметикаУказатели – (частично-)упорядоченный тип: порядок определё...

    49 слайд

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

  • Тип void *Указатель на «нечто» - можно явно привести к любому типу указателя....

    50 слайд

    Тип void *
    Указатель на «нечто» - можно явно привести к любому типу указателя.

    Пример:
    extern void * malloc(int c);
    float * A = (float *) malloc(1000);

  • Массивы (C)Описание: (простой случай) Т-тип размера s, N-константа
		T A[N]
О...

    51 слайд

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

  • Массивы (С)Литеральные значения (только в инициализации)
int A[] = { 5, 4, 3,...

    52 слайд

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

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

    53 слайд

    Многомерные массивы
    Pascal:
    var A :
    array[1..N, 1..M] of real;
    A[i,j]
    C
    float A[N][M];
    A[i-1][j-1]
    float A[N*M];
    A[(i-1) * M + (j-1)]
    float A[N,M];
    A[i,j]
    – типичная ошибка

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

    54 слайд

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

    integer N;
    Read Int(N);
    begin
    real array Data[1:N];

    end
    int N;
    scanf(“%d”,&N);
    {
    float * Data =
    (float *)
    calloc(N,sizeof(float));

    free(Data);
    }

  • Динамические массивыРазмер массива – часть его представления
Modula-2				CPRO...

    55 слайд

    Динамические массивы
    Размер массива – часть его представления
    Modula-2C
    PROCEDURE
    Sum(A : ARRAY OF CARDINAL)
    : CARDINAL;

    BEGIN …
    FOR i := 0 TO HIGH(A) DO
    S := S + A[i];
    END;
    RETURN S;
    END Sum;
    unsigned long
    Sum(unsigned long A[],
    int N)


    {
    for (i=0; i<N; i++)
    S = S + A[i];

    return S;
    }

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

    56 слайд

    Подвижные массивы
    Размер может меняться в процессе вычислений
    Visual Basic C
    Input x
    Cnt = Cnt + 1
    If UBound(A) < Cnt Then
    Redim Preserve _
    A(0 To UBound(A) + 1000) As Single
    End If
    A(Cnt) = x;
    scanf(“%f”, &x);
    Cnt = Cnt + 1;
    If (SizeA < Cnt)
    {
    SizeA = SizeA + 1000;
    A = (float*) realloc(A,
    SizeA * sizeof(float));
    }
    A[Cnt] = x;
    List <float> A;
    float x = float.Parse(
    Console.ReadLine());
    A.Add(x);
    C#

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

    57 слайд

    Подвижные массивы
    Размер может меняться в процессе вычислений
    C#C
    Memcpy(
    &(A[i]),
    &(A[i+1]),
    (SizeA - i -1) * sizeof(float));
    Cnt = Cnt - 1;
    A.RemoveAt(i);

  • Непрямоугольные массивыПример: треугольная матрица (С)float * A[N];
for (i=0; i

    58 слайд

    Непрямоугольные массивы
    Пример: треугольная матрица (С)
    float * A[N];
    for (i=0; i<N; i++)
    A = (float*) malloc(
    (i+1) * sizeof(float));

    A[k][m]
    A[1]
    A[0]
    A[2]
    A[3]
    ……

  • Массивы-дескрипторы (Автокод Эльбрус)Подмассив базового массива М2:
Транспон...

    59 слайд

    Массивы-дескрипторы
    (Автокод Эльбрус)
    Подмассив базового массива М2:
    Транспонированная матрица
    КОНСТ М2Т = ФОРМАВМ ([i,j] = M2[j,i])
    Первая строка матрицы
    КОНСТ М1СТР = ФОРМАВМ ([j] = M2[1,j])
    Минор
    КОНСТ МИНОР = ФОРМАВМ ([i,j] = M2[i=0:K,j=:L])
    Диагонали
    КОНСТ ДМК = ФОРМАВМ ([i] = M2[i,i])
    КОНСТ ПМК = ФОРМАВМ ([i] = M2[i,ЧИТАТР(М2,1,ДЛИНИЗМ) - 1 - i])

  • Операции с массивами (Альфа)массив A[1:N,1:M], B[1:M,1:K], X, Y[1:N], Z[1:M]...

    60 слайд

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

  • Операции над массивами (Альфа)Больше, чем перегрузка операций (Algol-68, C++)...

    61 слайд

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

  • Операции над массивами (APL)APL – A Programming Language язык, ориентированны...

    62 слайд

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

  • Операции над массивами (APL)Пример: вычислить полином степени n от x, заданны...

    63 слайд

    Операции над массивами (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

  • Строки (Pascal)

    64 слайд

    Строки (Pascal)

  • Строки как массивы (С)Строка – указатель на последовательность символов, зака...

    65 слайд

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

    Литеральное значение: “Hello, \”string\”!\n”

  • Строки как массивы (С)Достоинства:
Могут иметь произвольную длину
Могут испол...

    66 слайд

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

  • Строки как массивы (С)Недостатки:
Сложно определить длину (в отличии от Pasca...

    67 слайд

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

  • Строки как массивы (С)Операции 
strlen(s) – длина s
strcpy(s1,s2) – копирован...

    68 слайд

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

  • Строки как массивы (С)Пример (аналог Copy в Pascal – выборки подстроки)

unsi...

    69 слайд

    Строки как массивы (С)
    Пример (аналог 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;
    }

  • ОписанияСинтаксис:mип:описание:описатель:

    70 слайд

    Описания
    Синтаксис:
    mип:
    описание:
    описатель:

  • Описание - примерыУказатель на массив целых
int (*x)[100]
Массив из указателе...

    71 слайд

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

  • Описание типаСинтаксис

Пример:
C						Pascaltypedef float Matrix[N][N];
Matr...

    72 слайд

    Описание типа
    Синтаксис

    Пример:
    CPascal
    typedef float Matrix[N][N];
    Matrix A, *p;
    type Matrix =
    array[0..N-1]
    array [0..N-1]
    of real;
    var A : Matrix;
    p : ^ Matrix;

  • СтруктурыНазначение: объединение разнотипных данных
struct – декартовое произ...

    73 слайд

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

  • СтруктурыСинтаксис:




Операции: .  - выборка поля, например,
S.code, A[i].r...

    74 слайд

    Структуры
    Синтаксис:




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

  • СтруктурыПример struct
typedef struct { re, im : float; } complex;
complex c1...

    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;
    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)

  • Структуры - примерstruct expr {
  unsigned char code;
  int tag;
  union {...

    76 слайд

    Структуры - пример
    struct expr {
    unsigned char code;
    int tag;
    union {
    float value;
    unsigned char name[8];
    struct {
    unsigned char op;
    struct expr * arg;
    } unop;
    struct {
    unsigned char op;
    struct expr * left, * right;
    } binop;
    } var;
    } E;
    op
    value



    name



    tag
    left



    op
    arg



    right



    code

  • Структуры - примерstruct expr {
  int tag;
  unsigned char code;
  union {...

    77 слайд

    Структуры - пример
    struct expr {
    int tag;
    unsigned char code;
    union {
    float value;
    unsigned char name[8];
    struct {
    unsigned char op;
    struct expr * arg;
    } unop;
    struct {
    unsigned char op;
    struct expr * left, * right;
    } binop;
    } var;
    } * E;
    type expr = ^ Sexpr;
    Sexpr = record
    tag : integer;
    case code : char of
    ‘v’ : (value : real);
    ‘n’ : (name :
    array[0..7] of char;)
    ‘u’ : (unop : char;
    arg : expr; )
    ‘b’ : (binop : char;
    left, right : expr;)
    end;
    var E : expr;

  • Структуры - выравниваниеstruct expr {
  int tag;
  unsigned char code;
  unio...

    78 слайд

    Структуры - выравнивание
    struct expr {
    int tag;
    unsigned char code;
    union {
    float value;
    unsigned char name[8];
    struct {
    unsigned char op;
    struct expr * arg;
    } unop;
    struct {
    unsigned char op;
    struct expr * left, * right;
    } binop;
    } var;
    } E;
    op
    value



    name



    tag
    left



    op
    arg



    right



    code

  • union – «дыра» в контроле типовmode node = union         (real, int, compl,...

    79 слайд

    union – «дыра» в контроле типов
    mode node = union
    (real, int, compl, string);
    node n := "1234";
    case n in
    (real r): print(("real:", r)),
    (int i): print(("int:", i)),
    (compl c): print(("compl:", c)),
    (string s): print(("string:", s))
    out print(("?:", n))
    esac
    Algol-68:
    typedef union
    {
    float r;
    int i;
    complex c;
    char * s
    } node;
    node n;
    n.s = "1234";
    printf(“(%f,%f)”, n.c.re, n.c.im);

  • sizeofРазмер типа данных или переменной
Пример
char c, * p = “abc”, s[] = “a...

    80 слайд

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

  • sizeofПсевдооперация
Параметр – тип
Вычисление не требует вычисления аргумент...

    81 слайд

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

  • ПрисваиванияВыражение с побочным эффектом (изменением состояния памяти)
Получ...

    82 слайд

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

  • Присваивание - примерfloat A[N]; int  i, j;
A[i+j] = (i=(j=1)+2) + 4
Вычислит...

    83 слайд

    Присваивание - пример
    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

  • Присваивание – побочные эффекты!Если вдруг в предыдущем примере	A[i+j] = (i=...

    84 слайд

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

  • Совмещенное присваивание	 M[i+1] = М[i+1] + 2
		эквивалентно 	(при отсутсвии...

    85 слайд

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

  • Инкремент, декрементПрефиксная форма
++ X эквивалентно X += 1
Постфиксная фор...

    86 слайд

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

  • Совмещённое присваивание (пример)(*p++) += 0x40
Запомнить значение указателя...

    87 слайд

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

  • Путаница: = vs ==, &amp; vs &amp;&amp;Присваивание встречается значительно чаще, чем срав...

    88 слайд

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

Получите профессию

Технолог-калькулятор общественного питания

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 625 797 материалов в базе

Скачать материал

Другие материалы

РАБОЧАЯ ПРОГРАММА Учебной дисциплины «ОП.09 Информационные технологии в профессиональной деятельности»
  • Учебник: «Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
  • Тема: Глава 1. Информационные системы и базы данных
  • 02.01.2021
  • 587
  • 8
«Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 28.07.2020 131
    • PPTX 459.5 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Полякова Наталья Викторовна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Полякова Наталья Викторовна
    Полякова Наталья Викторовна
    • На сайте: 3 года и 3 месяца
    • Подписчики: 0
    • Всего просмотров: 71726
    • Всего материалов: 215

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Фитнес-тренер

Фитнес-тренер

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Информационные системы и технологии: теория и методика преподавания в профессиональном образовании

Преподаватель информационных систем и технологий

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе

Курс профессиональной переподготовки

Математика и информатика: теория и методика преподавания в образовательной организации

Учитель математики и информатики

500/1000 ч.

от 8900 руб. от 4450 руб.
Подать заявку О курсе
  • Сейчас обучается 680 человек из 79 регионов

Курс профессиональной переподготовки

Информатика: теория и методика преподавания с применением дистанционных технологий

Учитель информатики

300 ч. — 1200 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе

Мини-курс

Продвинутые техники нарративного подхода в психологии

5 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Искусство и техника: совершенствование в художественной гимнастике

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Психология общения: от многоплановости до эффективности

10 ч.

1180 руб. 590 руб.
Подать заявку О курсе
  • Сейчас обучается 42 человека из 27 регионов