Содержание
-
Занятие 7
Курс "Основы программирования"
-
План занятия
Отладка / Debug Особенности отладки в Си JS Объекты в С и JS struct Name { int a, b, с;}; Name x; x.a= 3; var x = { }; x.a = 3; x[‘b’] = 1;
-
Отладка / Debug
Причём здесь жуки?(bug – “жук”) Место отладки в программировании Зачем нужна отладка программ?
-
Особенности отладки в С
С – компилируемый язык Наличие сторонних библиотек Особенности поведения памяти
-
Отладка в Visual Studio
Конфигурация построения Точка останова Позиция управления Локальные переменные Стек вызовов Запуск отладки F5 Прервать отладку Shift+F5 Простой шаг F10 Шаг внутрь F11 Шаг наружу Shift+F11
-
Пошаговая отладка
Шаг внутрь F11 Простой шаг F10 Шаг наружу Shift+F11 F11 – перейти к коду подпрограммы, если возможно F10 – перейти к следующей строке Shift+F11 – к концу подпрограммы
-
Отладка по точкам останова
Продолжить F5 F5 – продолжить выполнение программы до следующей точки останова (breakpoint)
-
Особенности отладки в JS
JS – интерпретируемый язык Сжатие сторонних библиотек Утилиты отладки – часть интерпретатора
-
Отладка в Chrome
Точка останова Позиция управления F12 – консоль браузера Sources – исходные коды Простой шаг F10 Шаг внутрь F11 Шаг наружу Shift+F11 Продолжить F8
-
debugger, стек вызовов
Call Stack – история вызова функций до текущего момента Scope Variables – переменные контекста debugger – специальная команда останова
-
Объекты
Несколько переменных под одним именем, как и массив, НО... Array – англ. «массив, множество» Объект (Object) – сущность обладающая свойствами X 12 x 3 y 7 v2 Обычная переменная: int x = 12; / var x = 12; ОбъектС: struct {int x; int y; } v2 = { 3, 7 }; Объект JS: var v2 = { x: 3, y: 7 };
-
Зачем нужны объекты?
Пользовательские типы данных: Можно перечислить все важные свойства Можно указать, что объект умеет Например: Объект – карандаш, Свойства: толщина, цвет Что умеет: рисовать линию от точки а к точке 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 использует понятие «структура»: structint2 { int x, y; } Теперь int2 – это созданный нами ТИП данных. Можно объявлять такие переменные: int2a; a.x = 42;
-
Запись в коде JS
В JS объекты записываются подобно массивам, но имена внутренних элементов должны быть указаны: var a = { x: 0, y: 0 } Теперь a – это созданный нами ОБЪЕКТ. Им уже можно пользоваться: a.x = 42; Но как же получить многоразовый КОНСТРУКТОР, чтобы не прописывать особенности объекта каждый раз?
-
Конструктор объекта в JS
Чтобы получить многоразовый КОНСТРУКТОР, просто воспользуемся функцией! function int2( ) { return { x: 0, y: 0 }; } var a = int2(); var b = int2();
-
Действия объектов – методы
function vec2( ) { var v = { x: 0, y: 0, length: function(){ return Math.sqrt(v.x*v.x + v.y*v.y); }, }; return v; } var a = vec2(); a.x = 8; a.y = 6; var l = a.length(); // 10
-
Методы в С (не С++)
structvec2 { float x, y; }; float vec2_length(const vec2 &v){ return sqrt(v.x*v.x + v.y*v.y); } … vec2a; a.x = 8; a.y = 6; float l = vec2_length(a); // 10
-
Методы в С++
structvec2 { float x, y; floatlength(){ return sqrt(x*x + y*y); } }; … vec2a; a.x = 8; a.y = 6; float l = a.length(); // 10
-
Задача
Дополнить объекты типа vec2 возможностью нормализовывать хранимый вектор. Нормализация вектора состоит из 2 шагов: Найти длину вектора. Поделить каждую компоненту на длину.* *Делить на 0 не желательно.
-
Домашнее задание
Ха-ха, вы всё равно ничего не сделаете. Но если кто-то хочет выделиться, давайте напишем простую игру. Типа тетриса или арканоида. Подробности в личных сообщениях через ВКонтакте.
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.