Скачать презентацию Занятие 7 Курс Основы программирования План занятия Скачать презентацию Занятие 7 Курс Основы программирования План занятия

7 Отладка программ, объекты.pptx

  • Количество слайдов: 21

Занятие 7 Курс Занятие 7 Курс "Основы программирования"

План занятия 1. Отладка / Debug 2. Особенности отладки в С и JS 3. План занятия 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 – “жук”) • Место отладки в Отладка / Debug • Причём здесь жуки? (bug – “жук”) • Место отладки в программировании • Зачем нужна отладка программ?

Особенности отладки в С • С – компилируемый язык • Наличие сторонних библиотек • Особенности отладки в С • С – компилируемый язык • Наличие сторонних библиотек • Особенности поведения памяти

Отладка в Visual Studio Конфигурация построения Запуск отладки F 5 Точка останова Позиция управления Отладка в Visual Studio Конфигурация построения Запуск отладки F 5 Точка останова Позиция управления Локальные переменные Стек вызовов Прервать отладку Shift+F 5 Простой шаг F 10 Шаг внутрь F 11 Шаг наружу Shift+F 11

Пошаговая отладка F 11 – перейти к коду подпрограммы, если возможно F 10 – Пошаговая отладка F 11 – перейти к коду подпрограммы, если возможно F 10 – перейти к следующей строке Shift+F 11 – к концу подпрограммы Шаг внутрь F 11 Простой шаг F 10 Шаг наружу Shift+F 11

Отладка по точкам останова F 5 – продолжить выполнение программы до следующей точки останова Отладка по точкам останова F 5 – продолжить выполнение программы до следующей точки останова (breakpoint) Продолжить F 5

Особенности отладки в JS • JS – интерпретируемый язык • Сжатие сторонних библиотек • Особенности отладки в JS • JS – интерпретируемый язык • Сжатие сторонних библиотек • Утилиты отладки – часть интерпретатора

Отладка в Chrome F 12 – консоль браузера Sources – исходные коды Простой шаг Отладка в Chrome F 12 – консоль браузера Sources – исходные коды Простой шаг F 10 Шаг внутрь F 11 Шаг наружу Shift+F 11 Продолжить F 8 Точка останова Позиция управления

debugger, стек вызовов Call Stack – история вызова функций до текущего момента Scope Variables debugger, стек вызовов Call Stack – история вызова функций до текущего момента Scope Variables – переменные контекста debugger – специальная команда останова

Объекты Несколько переменных под одним именем, как и массив, НО. . . • Array Объекты Несколько переменных под одним именем, как и массив, НО. . . • 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 Запись в коде С C использует понятие «структура» : struct int 2 { int x, y; } Теперь int 2 – это созданный нами ТИП данных. Можно объявлять такие переменные: int 2 a; a. x = 42;

Запись в коде JS В JS объекты записываются подобно массивам, но имена внутренних элементов Запись в коде JS В JS объекты записываются подобно массивам, но имена внутренних элементов должны быть указаны: var a = { x: 0, y: 0 } Теперь a – это созданный нами ОБЪЕКТ. Им уже можно пользоваться: a. x = 42; Но как же получить многоразовый КОНСТРУКТОР, чтобы не прописывать особенности объекта каждый раз?

Конструктор объекта в JS Чтобы получить многоразовый КОНСТРУКТОР, просто воспользуемся функцией! function int 2( Конструктор объекта в JS Чтобы получить многоразовый КОНСТРУКТОР, просто воспользуемся функцией! function int 2( ) { return { x: 0, y: 0 }; } var a = int 2(); var b = int 2();

Действия объектов – методы function vec 2( ) { var v = { x: Действия объектов – методы 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 Методы в С (не С++) 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 Методы в С++ 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 возможностью нормализовывать хранимый вектор. Нормализация вектора состоит из Задача Дополнить объекты типа vec 2 возможностью нормализовывать хранимый вектор. Нормализация вектора состоит из 2 шагов: 1. Найти длину вектора. 2. Поделить каждую компоненту на длину. * *Делить на 0 не желательно.

Домашнее задание Ха-ха, вы всё равно ничего не сделаете. Но если кто-то хочет выделиться, Домашнее задание Ха-ха, вы всё равно ничего не сделаете. Но если кто-то хочет выделиться, давайте напишем простую игру. Типа тетриса или арканоида. Подробности в личных сообщениях через ВКонтакте.