close

Вход

Забыли?

вход по аккаунту

код для вставкиСкачать
Программирование
(структурное, процедурное,
объектно-ориентированное)
с использованием C++/C#
Полевой Дмитрий Валерьевич
к.т.н., доцент КиК
e-mail: [email protected]
Для чего «мы» здесь
• обеспечить условия для обучения
– информация
– живой пример
– обратная связь
– пряники
– кнут
12.02.2014
2
Кроме того, полезно помнить
• вы являетесь студентом
– добровольно выбрали
институт и специальность
– имеете права и обязанности
• программирование
– инструмент
– способ мышления
12.02.2014
3
Правила поведения
• занятия – мое время для вас
• преподаватель может ошибаться
– только ваша практика и ваши знания
дают вам какие-то гарантии
• цените и берегите чужое время
12.02.2014
4
Как беречь время
• не отвлекайте других
– будьте пунктуальны
– усыпляйте ваших «тамагочи»
• правильно спрашивайте
12.02.2014
5
Посещение
• опоздал
– не надо спрашивать разрешения
– тихо присоединился к занятию
– начал заниматься
• надо выйти или уйти совсем
– не надо спрашивать разрешения
– тихо вышел, тихо вернулся
12.02.2014
6
Лекции
• я читаю в удобном мне темпе
• записывайте, что успеваете
– просьбы подождать часто игнорирую
• задавать вопросы можно и нужно
12.02.2014
7
Семинары
• для консультаций
– демонстрации
– разбор
– ответы на вопросы
• для сдачи заданий
12.02.2014
8
Задавая вопрос
• задавайте вопрос
– опускайте присказку «можно задать вопрос?»
– «я ничего не понял» - утверждение
– постарайтесь сформулировать вопрос
• привлекайте внимание
– на лекции по поднятой руке
• используйте шанс получить ответ
• будьте готовы получить ответ позже (напомнить)
12.02.2014
9
ваши
вопросы
12.02.2014
10
Что такое программа?
• исполнитель – тот, кто решает задачу
– устройство, система
– человек
• алгоритм – конечная последовательность
команд конкретного исполнителя, для
достижения конкретного результата
• программа – формализованное описание
реализации алгоритма
12.02.2014
11
Язык программирования
• язык программирования (ЯП)
– определяется некоторым документом
(стандарт, спецификация)
– существуют «диалекты» (версии, расширения)
• инструментальные средства
– компилятор, среда исполнения
– инструменты разработки
12.02.2014
12
Примеры языков и сред
• язык: C++ (стандарты 98, 2003, 2011)
• компилятор: Microsoft, gcc, Intel, и т.д.
• IDE: MS Visual С++, Qt Creator, Eclipse
• язык: C#
• инструментарий : Microsoft, Mono
• IDE: MS Visual Studio, MonoDevelop
12.02.2014
13
Integrated Development Environment
(IDE)
• интегрированная
среда разработки
– текстовый редактор
– управление
файлами
– автоматизация
сборки
– отладчик
– и т.д. …
12.02.2014
14
Зачем нужна программа?
• компьютер
– «большой калькулятор»
– оснащен «пищалками и звенелками»
• исполняется машинный код
– данные и код (инструкции процессору) в памяти
– писать трудно, неудобно и медленно
• программа преобразуется в исполняемый код
• программа – удобный для человека способ
управления компьютером (текстовое описание
алгоритма преобразуются в машинный код)
12.02.2014
15
Исходный код
• необходим для сборки программы
• исходные тексты
– .h, .cpp (для C++)
– .cs (для C#)
• файлы проектов
(зависит от системы сборки, IDE)
– .vcproj, .sln
– .csproj
12.02.2014
16
Ключевые слова ЯП
• список определяется стандартом ЯП
• не могут быть идентификаторами
• подсвечиваются в текстовом редакторе
• их надо знать (узнавать)
12.02.2014
17
Ключевые слова С#
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
12.02.2014
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while
add
alias
ascending
async
await
descending
dynamic
from
get
global
group
into
join
let
orderby
partial
remove
select
set
value
var
where
yield
18
Базовые термины
оператор (operator, operation)
– определятся языком
– имеет операнды и результат некоторого типа
пример: +, -, +=, ? : , <<, :: и т.д.
инструкция (statement)
– выражение, заканчивающееся ‘;’
– for, while, do, if, else,
case, break, continue, и т.д.
12.02.2014
19
Составная инструкция
составная инструкция, блок
(composite statement, block)
– последовательность инструкций, заключенных
в фигурные скобки
пример:
{
int a(0);
go(a);
}
12.02.2014
20
Составная инструкция (пример)
if (a < b)
{
a += 1;
}
12.02.2014
if (a < b)
a += 1;
21
Идентификатор (имя)
• начинается с буквы
• содержит буквы, цифры и подчеркивания
• длинна ограничена реализацией
• отличается от ключевого слова
• чувствителен к регистру
12.02.2014
22
Идентификатор (примеры)
// имя переменной
Int32 count = 0;
// имя типа
Int32 count = 0;
// имя функции
public static void Main()
12.02.2014
23
Функция
• изолированный фрагмент кода
• решает некоторую задачу
• предназначен для повторного
использования
– оформлен по правилам языка
– может принимать параметры (вход)
– может возвращать некоторое значение (выход)
12.02.2014
24
Функция (примеры)
• вызов функции
Console.Write(“a[{0}]={1}”, i, arr[i]);
s = Math.Sin(x);
• функция в исходном коде
public static void Main()
{
…
}
12.02.2014
25
Модель памяти
• непрерывная память
• адрес
• байт – единица адресации
12.02.2014
26
Объект
• непрерывная область памяти
• именованный или неименованный
пример:
int num(1);
*(p + 15)
12.02.2014
27
Переменная
• именованный объект
• некоторого типа
• расположенный где-то в памяти
• всегда имеет значение
(но не всегда определенное)
12.02.2014
28
Тип (как языковое явление)
• способ хранения данных в памяти
• способ интерпретации этих данных
• допустимые операции (над экземплярами)
12.02.2014
29
Типы
• встроенные
(фундаментальные, базовые и т.д.)
например: int, double, char
• пользовательские
– перечисления
– структуры
– классы
–…
12.02.2014
30
Абстрактный тип данных
(АТД)
• описывает набор операций
(логика использования)
– создание/уничтожение
– изменение
– получение описания
примеры АТД: целое число, строка,
динамический массив, стек, очередь
12.02.2014
31
Структура данных
• способ организации и манипуляции
данными (в памяти)
• реализация АТД (в исходном коде)
примеры структур данных: массив, список,
дерево
12.02.2014
32
Интерфейс
• спецификация услуг
– семантический уровень (проектирование)
– синтаксический уровень (исходный код)
• в узком смысле – набор всех функций
– для типа
– для модуля
– для подсистемы
12.02.2014
33
Объявление (definition)
• указывает компилятору, на сущность какого
типа ссылается имя
• имя должно быть объявлено до первого
использования
• часто совмещается с определением
12.02.2014
34
Определение (declaration)
• единственное для каждой сущности
• любое объявление с инициализацией
является определением
• для всего, кроме функций и пространства
имен заканчивается точкой с запятой
12.02.2014
35
Объектный подход
• программа = модель
• все описывается в терминах «объектов»
• объекты могут быть в отношениях
– часть-целое, являться
• объекты «живут» и «взаимодействуют», т.е.
обладают
– состоянием
– поведением
12.02.2014
36
Терминология объектного подхода
(применительно к ЯП)
• структура – пользовательский тип
• класс – пользовательский тип (∃ инвариант)
• экземпляр – объект типа, переменная
• поле – данные, переменные типа/экземпляра
• метод – функция типа
• член – поле и метод
12.02.2014
37
Инвариант типа
• состояние экземпляра
– значения всех переменных
– может изменяться методами
– может изменяться прямым изменением полей
• определяется типом (логика использования)
• должен выполняться в начале и конце
каждого метода
12.02.2014
38
Комплексное число (пример)
=< ,
>, где
∈ - целая часть
im ∈ - мнимая часть
целая и мнимая часть могут принимать
любые значения, т.е. инварианта нет
12.02.2014
39
Динамический массив (пример)
• размер массива
• элементы массива
• инвариант
– число доступных для доступа по индексу
элементов массива должно соответствовать
размеру массива
12.02.2014
40
Управление доступом
• public
– открытые члены, имена доступны везде
• private
– закрытые члены, имена доступны только в
собственных методах
• protected
– защищенные члены, имена доступны только в
собственных методах и методах производных
классов
12.02.2014
41
Рекомендация
• public - открытые методы
• protected - защищенные члены
• private - закрытые члены
12.02.2014
42
1/--страниц
Пожаловаться на содержимое документа