7 Отладка программ, объекты.pptx
- Количество слайдов: 21
Занятие 7 Курс "Основы программирования"
План занятия 1. Отладка / Debug 2. Особенности отладки в С и JS 3. Объекты в С и JS 4. struct Name { int a, b, с; }; Name x; x. a = 3; 5. var x = { }; x. a = 3; x[‘b’] = 1;
Отладка / Debug • Причём здесь жуки? (bug – “жук”) • Место отладки в программировании • Зачем нужна отладка программ?
Особенности отладки в С • С – компилируемый язык • Наличие сторонних библиотек • Особенности поведения памяти
Отладка в Visual Studio Конфигурация построения Запуск отладки F 5 Точка останова Позиция управления Локальные переменные Стек вызовов Прервать отладку Shift+F 5 Простой шаг F 10 Шаг внутрь F 11 Шаг наружу Shift+F 11
Пошаговая отладка F 11 – перейти к коду подпрограммы, если возможно F 10 – перейти к следующей строке Shift+F 11 – к концу подпрограммы Шаг внутрь F 11 Простой шаг F 10 Шаг наружу Shift+F 11
Отладка по точкам останова F 5 – продолжить выполнение программы до следующей точки останова (breakpoint) Продолжить F 5
Особенности отладки в JS • JS – интерпретируемый язык • Сжатие сторонних библиотек • Утилиты отладки – часть интерпретатора
Отладка в Chrome F 12 – консоль браузера Sources – исходные коды Простой шаг F 10 Шаг внутрь F 11 Шаг наружу Shift+F 11 Продолжить F 8 Точка останова Позиция управления
debugger, стек вызовов Call Stack – история вызова функций до текущего момента Scope Variables – переменные контекста debugger – специальная команда останова
Объекты Несколько переменных под одним именем, как и массив, НО. . . • Array – англ. «массив, множество» • Объект (Object) – сущность обладающая свойствами 12 Обычная переменная: int x = 12; / var x = 12; X Объект С: struct { int x; int y; } v 2 = { 3, 7 }; Объект JS: var v 2 = { x: 3, y: 7 }; 3 x v 2 7 y
Зачем нужны объекты? Пользовательские типы данных: • Можно перечислить все важные свойства • Можно указать, что объект умеет Например: Объект – карандаш, Свойства: толщина, цвет Что умеет: рисовать линию от точки а к точке b JS: var pencil = { width: 1, color: ‘red’, draw: function(a, b) { … } };
Доступ к элементам Для доступа обычно используется оператор точка (. ) При желании можно воспользоваться [ ]. В С это делать трудно и ненужно. В JS бывают ситуации когда только так. var o = { a: 4, ‘ 1 -й’: false, 73: ‘да’ }; o. ‘ 1 -й’ = true; // так не получится o. 73 = ‘нет’; // так тоже o[‘ 1 -й’] = true; // OK o[73] = ‘нет’; // OK
Запись в коде С C использует понятие «структура» : struct int 2 { int x, y; } Теперь int 2 – это созданный нами ТИП данных. Можно объявлять такие переменные: int 2 a; a. x = 42;
Запись в коде JS В JS объекты записываются подобно массивам, но имена внутренних элементов должны быть указаны: var a = { x: 0, y: 0 } Теперь a – это созданный нами ОБЪЕКТ. Им уже можно пользоваться: a. x = 42; Но как же получить многоразовый КОНСТРУКТОР, чтобы не прописывать особенности объекта каждый раз?
Конструктор объекта в JS Чтобы получить многоразовый КОНСТРУКТОР, просто воспользуемся функцией! function int 2( ) { return { x: 0, y: 0 }; } var a = int 2(); var b = int 2();
Действия объектов – методы function vec 2( ) { var v = { x: 0, y: 0, length: function(){ return Math. sqrt(v. x*v. x + v. y*v. y); }, }; return v; } var a. x var a = l = vec 2(); 8; a. y = 6; = a. length(); // 10
Методы в С (не С++) struct vec 2 { float x, y; }; float vec 2_length(const vec 2 &v){ return sqrt(v. x*v. x + v. y*v. y); } … vec 2 a; a. x = 8; a. y = 6; float l = vec 2_length(a); // 10
Методы в С++ struct vec 2 { float x, y; float length(){ return sqrt(x*x + y*y); } }; … vec 2 a; a. x = 8; a. y = 6; float l = a. length(); // 10
Задача Дополнить объекты типа vec 2 возможностью нормализовывать хранимый вектор. Нормализация вектора состоит из 2 шагов: 1. Найти длину вектора. 2. Поделить каждую компоненту на длину. * *Делить на 0 не желательно.
Домашнее задание Ха-ха, вы всё равно ничего не сделаете. Но если кто-то хочет выделиться, давайте напишем простую игру. Типа тетриса или арканоида. Подробности в личных сообщениях через ВКонтакте.


