SlideShare a Scribd company logo
Курс по програмиране на C#
Занятие №1
Компютърно програмиране. Основи на езика C#

2013
Съдържание 1/2
•
•
•
•
•

Компютърно програмиране
Среда за разработка Microsoft Visual Studio
Език за програмиране C#
Програма „Hello, world!”
Програма „Click me!”
Съдържание 2/2
•
•
•
•
•
•
•
•
•
•

Коментари
Ключови думи
Идентификатори
Типове данни (примитиви, изброими, структури)
Литерали
Променливи
Константи
Стойностни и референтни типове данни
Класове и обекти
Оператори, изрази и съждения
2013
2013
Компютърно програмиране
• Какво е „потребителски интерфейс“?
• Видове потребителски интерфейс
–
–
–
–
–

Command line
GUI (Graphical User Interface)
WUI (Web User Interface)
Touchscreens
Други
Език за програмиране C#
•
•
•
•
•

.NET Framework
Common Language Infrastructure (CLI)
Common Language Runtime (CLR)
Base Class Library (BCL)
Езикът C#. Защо C#?
Среда за разработка Microsoft Visual Studio
•
•
•
•
•

Интегрирана среда за софтуерна разработка
Обща рамка за развой на много езици и технологии
Първа версия – Microsoft Visual Studio 97
Последна версия – Microsoft Visual Studio 2013
Редакции на Microsoft Visual Studio 2013
– Professional (с DreamSpark account)
– Express (безплатен)

• Помощни средства
– Telerik JustCode
– JetBrains ReSharper
– Други
Програма „Hello, world!”
•
•
•
•

Кратко запознаване с Microsoft Visual Studio
Кратко запознаване с MSDN Library
Въвеждане на програмата
Дисекция на програмата
–
–
–
–
–

Основна структура
Начин на работа
Какво означават думичките?
Добро или лошо форматиране
Основни конвенции за кодиране
Програма „Hello, world!”
•
•
•
•

Компилиране на програмата
Изпълнение на програмата
Проследяване на изпълнението
Откриване и отстраняване на грешки
Програма „Hello, world!” - дисекция
using System;

Използване пространство на имената System

namespace HelloWorld
Пространство на имената HelloWorld
{
Дефиниция на клас Program
class Program
{
Дефиниция на метод Main
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
}
Наименование на клас Console

Извикване на метод WriteLine

Текст
Програма „Hello, world!” - демо
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
}
Програма „Click me!”
•
•
•
•

Какво е „визуално програмиране“?
Създаване на потребителски интерфейс
Въвеждане на програмата
Дисекция на програмата
– Какво означават думичките?
– Събития и обработка на събития
– Манипулиране на интерфейса

• Възможности за развитие на програмата
Програма „Click me!” - демо
// Демонстрация
Коментари
• Какво е „коментар“?
– Коментарът е част от изходния код,
която компилаторът не взима предвид,
но подпомага документирането на
програмата

// аз съм едноредов коментар
/* аз съм многоредов коментар
и заемам цели два реда */

• Едноредови коментари – започват /* „многоредов“ коментар-симулант */
с “//“ и завършват с края на реда
• Многоредови коментари – започват
с “/*” и завършват с “*/”
• Машинно четими коментари за
документиране на кода с XML
Ключови думи
• Какво е „ключова дума“?
– Дума със специално значение
за компилатора

• Част от самия език за
програмиране
• Списък в глава “C# Keywords”
на “C# Reference” в MSDN

// някои ключови думи
if sizeof this is long
do try out finally
// ето още няколко
while unsafe lock internal
Идентификатори
• Какво е „идентификатор“?
– Наименование на определена
програмна единица в кода
дадено от програмиста

• Правила
–
–
–
–

Уникални в дадената област
Не съвпадат с ключови думи
Започват с буква или „_“
Съдържат букви, цифри или „_”

• Екраниране с „@”

// идентификатори на променливи
аge // възраст
customerName // име на клиента
_bmi // body mass index
MiddleName // презиме
// идентификатор на структура
StudentInfo
// идентификатор на функция
GetStudentInfoFromDatabase
// екранирани променливи
@string
@алабаланица
Идентификатори
• Наименованията на идентификаторите се определят от
програмиста
• Свободата в избора на програмиста може да доведе до
нечетим програмен код
• Принципите на доброто кодиране и конвенциите
изискват наименованията да носят смисъла на
това, което идентифицират
• Спазването на конвенциите води до по-четим,
по-качествен и по-разбираем програмен код
Типове данни
• Какво е „тип данни“?
– Класификационна система на видовете данни

• Типът данни определя
–
–
–
–

Множеството от възможни стойности
Възможните операциите извършвани с данните
Смисъла на данните
Начина на тяхното съхранение

• Характеристики
– Наименование
– Размер/обем
– Стойност по подразбиране
Типове данни
• Примитивни типове данни
– Стойностите им могат да бъдат задавани с т.нар. литерали
– Могат да бъдат декларирани константи от примитивни типове
– Изразите от примитивни типове се разглеждат като константи

• Разграничават се следните примитивни типове данни
– Числови (целочислени, реални с плаваща запетая и числа с
десетична точност) – int, float, double, decimal
– Булеви – bool
– Дата/час – DateTime
– Символни – char
– Символни низове – string
Типове данни
• Изброими типове данни
– Дават ефикасен начин за групиране на изброимо множество от
константни стойности
– Всяка стойност се задава с нейното име и приема стойност от
целочислен тип

• Примери за изброими типове данни
–
–
–
–
–

Дните от седмицата
Месеците в годината
Състоянията на светофар
Програмите на автоматична пералня
Други
Типове данни
• Какво е „структура“?
– Конструкция даваща възможност за обединяването на характерни
за монолитна логическа единица данни, свойства и функции

• Защо „монолитна“?
– Под „монолитна“ в случая се разбира, че промяната на която и да е
от данните всъщност представлява друга логическа единица
Типове данни
• Примери за структури
– Точка в двумерното пространство
• Данни: вътрешно представяне на точката в двумерното пространство
• Свойства: X- и Y- координати, ъгъл спрямо оста, разстояние до началото на
координатната система, и др.
• Функции: определяне на разстоянието до друга точка, принадлежност към
вътрешността на затворен контур и др

– Цвят
• Данни: вътрешно представяне на цвят
• Свойства: червена, зелена и синя компонента на цвета
• Функции: смесване на цвета с друг цвят за получаване на трети
Литерали
• Какво е „литерал“?
– Запис в изходния код представящ фиксирана стойност от
определен тип

• Обикновено задаваните от литералите стойности са от
примитивен тип
• С литерали могат да се описват и по-сложни структури
• Разграничават се литерали от следните типове
– Числови (целочислени, реални с плаваща запетая и числа с
десетична точност)
– Булеви
– Символи и символни низове
– Нулев литерал (null)
Литерали
• Литералите на символите и символните низове могат да
съдържат специални символи, които се нуждаят от
екраниране
• Съществуват редица начини за екраниране на литерали
– Използване на символа “”
– Използване на символа „@”

Remember
me?!
Литерали - демо
// Демонстрация
Променливи
• Какво е „променлива“?
– Идентификатор с асоциирана с него стойност от определен тип,
която може да бъде променяна по време на изпълнение на
програмата

• Характеристики:
– Наименование (напр. courseName)
– Тип данни (напр. string)
– Текуща стойност (напр. ”Програмиране на C#”)
Променливи
• Обявяване/деклариране:
(тип данни) (идентификатор)

• Присвояване на стойност
(идентификатор) = (израз)

• Използване
(идентификатор)

• Инициализация
– Първоначално задаване на
стойност
– Променливите не могат да бъдат
използвани, преди да им бъде
присвоена стойност

// обявяване
string courseName;
// обявяване на няколко променливи
string firstName, lastName;
// присвояване на стойност
courseName = “Програмиране на C#”;
// използване
Console.WriteLine(courseName);
// инициализация
int duration = 5;
Променливи - демо
// Демонстрация
Константи
• Какво е „константа“?
– Идентификатор с асоциирана с него стойност от определен тип,
която не може да бъде променяна по време на изпълнение на
програмата

• Характеристики:
– Наименование (напр. Pi)
– Тип данни (напр. double)
– Стойност (напр. 3.14159265359d)
Константи
• Обявяване/деклариране:
const (тип данни) (идентификатор)
= (константен израз)

• Използване
(идентификатор)

// обявяване
const double Pi = 3.14159265359d;
// използване
Console.WriteLine(Pi);
Константи - демо
// Демонстрация
Стойностни и референтни типове данни
• Какво е “stack”?
– Област от паметта с фиксирана големина за временно
съхранение на по-малки по обем данни, управлението на която е
автоматично

• Какво е “heap”?
– Област от паметта с динамична големина за съхранение на поголеми по обем данни, управлението на която е ръчно
Стойностни и референтни типове данни
• Стойностни типове данни
–
–
–
–

По-малки по обем
Съхраняват се в stack
Предават се по стойност
Примитивни и изброими типове, както и структури

• Референтни типове данни
–
–
–
–

По-големи по обем
Съхраняват се в heap
Предават се по референция
Класове

• Низовете са особен тип данни – референтен с поведение
на стойностен тип. Те са неизменими (immutable).
2013
Стойностни и референтни типове данни
• Стойности по подразбиране
– Числовите типове – нула
– Символен тип – символът „0‟
– Символен низ – null (литерал указващ нулева позиция в паметта,
буквално „нищо“)
– Дата/час – 1 януари 1, 00:00:00;
– Структури – съответства на структурата, чиито всички полета имат
своите подразбиращи се стойности;
– Класовете – null (литерал указващ нулева позиция в паметта,
буквално „нищо“)
Стойностни и референтни типове данни
• Нулируеми типове данни

// брой положени изпити
int numberOfExams = 0;
– Понякога се налага добавянето
// сбор от оценките от изпитите
на стойността null към
double sumOfMarks = 0.0;
множеството от възможни
// null-ев среден успех
стойности
double? averageMark = null;
– Примери:
// среден успех
• Средна аритметична оценка, когато averageMark = 11.0 / 2;
не всички изпити са положени
• Други

– Обявяване на променливи от
нулируем тип
• Добавяне на символа „?” към
наименованието на типа
Класове и обекти
• Какво е „клас“?
– Основа на обектно-ориентираното програмиране
– Подобни на структурите типове данни със значително поразширени възможности
– Подробно изучавани във втората част на курса

• Какво е „обект“?
– Обектът е променлива, типът данни на която е клас
– Обектът е проява на определен клас
– Пример:
• Планетите от Слънчевата система са от клас Планета
Оператори, изрази и съждения
• Какво е „оператор“? Какво е „операнд“?
– Операторите са синтактични конструкции на езика предназначени
за извършване на операции върху определени програмни единици
– операнди.

• Видове оператори според броя на операндите
– Унарни – с един операнд
– Бинарни – с два операнда
– Тернарни – с три операнда
Оператори, изрази и съждения
• Видове оператори според
вида на операциите
–
–
–
–
–

Аритметични операции
Логически операции
Побитови операции
Оператори за сравнение
Оператори за присвоявяне

// някои аритметични операции
p/2 * (p/2-a) * (p/2-b) * (p/2-c);
// някои логически операции
toBe || ! toBe;
// някои побитови операции
drink | 2;
you & me;
strafeLeft << 3;
// сравнение
firstName == “Иванчо“;
lastName != “Калпазанчо“;
// присвоявяне
firstName = “Иванчо“;
lastName = “Калпазанчо“;
Оператори, изрази и съждения
• Други оператори
–
–
–
–
–
–
–
–
–
–

Слепване на низове
Достъпване на член-променливи и член-функции
Достъпване на индексиран елемент
Групиране
Преобразуване на типове
Условен оператор
Създаване на обект/структура
Взимане на тип данни и големина на тип данни
Проверка на тип данни
Null-coalescing
Оператори, изрази и съждения
• Какво е „преобразуване на типовете данни“?
– Превръщане на данни от един тип в друг

• Видове преобразуване на типовете данни
– Неявно преобразуване на типове данни – автоматично без загуба
на информация
– Явно преобразуване на типове данни – ръчно с възможна загуба на
информация
– Преобразуване на типове данни с функции
Оператори, изрази и съждения
• Какво е „израз“?
– Поредица от оператори, литерали и променливи даващи като
резултат определена стойност
– Изразите се изчисляват на базата на определени правила за
приоритет и асоциативност

• Приоритет на операциите
– Определя реда, в който се изпълняват операциите при изчисляване
на даден израз

• Асоциативност на операциите
– Набор от правила определящ реда на изпълнение на две
операции с един и същи приоритет около един и същи операнд
Оператори, изрази и съждения
• Какво е „съждение“?
– Съждението в езиците за програмиране е аналог на изречението –
то дава смисъл на „казаното“ и инструктира компютъра да
извърши определена дейност.
– В езика C# съжденията се отделят със символа “;”.

• Какво е „блок“?
– Блокът е поредица от едно или повече съждения.
– В езика C# блоковете се оформят със затваряне на съжденията
между символите “{“ и “}”.
Оператори, изрази и съждения - демо
// Демонстрация
Задачи за упражнение
• Създайте програма, в която променливите a, b и c се
инициализират с десетични числа – коефициенти в
квадратно уравнение. Нека програмата изчисли
дискриминантата, запише резултата в променлива
discriminant и го покаже на екрана.
• Създайте програма, която инициализира променливата
studentName с имената на ученик и променливата
courseName – с наименованието на курс. Нека програмата
запише в променлива message текста „Здравейте [име на
ученик] и добре дошли в [наименование на курс]!” и
покаже съобщението на екрана.
Задачи за упражнение
• Създайте интерфейса на визуално
приложение – калкулатор. Използвайте различни
визуални компоненти (бутони, текстови полета,
менюта и др.) с подходящите наименования и
текстове
Въпроси?
Благодаря!
• Валери Дачев
–
–
–
–

valery@david.bg
http://vdachev.net/
@vdachev
https://facebook.com/vdachev

• ДАВИД академия
–
–
–
–

acad@david.bg
http://acad.david.bg/
@david_academy
https://facebook.com/DavidAcademy

More Related Content

Viewers also liked

Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - Упражнения
DAVID Academy
 
Курс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - УпражненияКурс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - Упражнения
DAVID Academy
 
Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...
Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...
Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...
DAVID Academy
 
Курс по програмиране на C# (2013) - Помагало
Курс по програмиране на C# (2013) - ПомагалоКурс по програмиране на C# (2013) - Помагало
Курс по програмиране на C# (2013) - Помагало
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3
DAVID Academy
 
08. Numeral Systems
08. Numeral Systems08. Numeral Systems
08. Numeral Systems
Intro C# Book
 

Viewers also liked (6)

Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - Упражнения
 
Курс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - УпражненияКурс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - Упражнения
 
Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...
Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...
Курс по програмиране за напреднали (2012) - 8. Софтуерни проекти. Софтуерни и...
 
Курс по програмиране на C# (2013) - Помагало
Курс по програмиране на C# (2013) - ПомагалоКурс по програмиране на C# (2013) - Помагало
Курс по програмиране на C# (2013) - Помагало
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3
 
08. Numeral Systems
08. Numeral Systems08. Numeral Systems
08. Numeral Systems
 

Similar to Училищен курс по програмиране на C# (2013/2014), занятие №1

Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7
DAVID Academy
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
DAVID Academy
 
Въведение в Python
Въведение в PythonВъведение в Python
Въведение в Python
Atelier for robotics
 
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. РекурсияКурс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13
DAVID Academy
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code IntroductionSvetlin Nakov
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality CodeSvetlin Nakov
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12
DAVID Academy
 
C++ datatypes
C++ datatypesC++ datatypes
C++ datatypes
Atelier for robotics
 
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkКурс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
DAVID Academy
 
5. vb promenlivi
5. vb promenlivi5. vb promenlivi
5. vb promenlividnaidenowa
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
DAVID Academy
 
Introduction to-RDBMS-systems
Introduction to-RDBMS-systemsIntroduction to-RDBMS-systems
Introduction to-RDBMS-systems
BG Java EE Course
 
Introduction to-rdbms-systems
Introduction to-rdbms-systemsIntroduction to-rdbms-systems
Introduction to-rdbms-systemsRosen Spasov
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroSvetlin Nakov
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov
 
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
DAVID Academy
 
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
DAVID Academy
 

Similar to Училищен курс по програмиране на C# (2013/2014), занятие №1 (20)

Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
 
Въведение в Python
Въведение в PythonВъведение в Python
Въведение в Python
 
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. РекурсияКурс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
 
Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code Introduction
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12
 
C++ datatypes
C++ datatypesC++ datatypes
C++ datatypes
 
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkКурс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
 
5. vb promenlivi
5. vb promenlivi5. vb promenlivi
5. vb promenlivi
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
 
Introduction to-RDBMS-systems
Introduction to-RDBMS-systemsIntroduction to-RDBMS-systems
Introduction to-RDBMS-systems
 
Introduction to-rdbms-systems
Introduction to-rdbms-systemsIntroduction to-rdbms-systems
Introduction to-rdbms-systems
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - Intro
 
Tema13
Tema13Tema13
Tema13
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
 
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
 
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
 

More from DAVID Academy

Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14
DAVID Academy
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - Помагало
DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4
DAVID Academy
 
Курс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesКурс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web Services
DAVID Academy
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
DAVID Academy
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
DAVID Academy
 
Курс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеКурс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. Представяне
DAVID Academy
 
Курс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоКурс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - Помагало
DAVID Academy
 
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииКурс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
DAVID Academy
 
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
DAVID Academy
 

More from DAVID Academy (15)

Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
 
Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
 
Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - Помагало
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4
 
Курс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesКурс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web Services
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
 
Курс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеКурс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. Представяне
 
Курс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоКурс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - Помагало
 
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииКурс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
 
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
 

Училищен курс по програмиране на C# (2013/2014), занятие №1

  • 1. Курс по програмиране на C# Занятие №1 Компютърно програмиране. Основи на езика C# 2013
  • 2. Съдържание 1/2 • • • • • Компютърно програмиране Среда за разработка Microsoft Visual Studio Език за програмиране C# Програма „Hello, world!” Програма „Click me!”
  • 3. Съдържание 2/2 • • • • • • • • • • Коментари Ключови думи Идентификатори Типове данни (примитиви, изброими, структури) Литерали Променливи Константи Стойностни и референтни типове данни Класове и обекти Оператори, изрази и съждения
  • 6. Компютърно програмиране • Какво е „потребителски интерфейс“? • Видове потребителски интерфейс – – – – – Command line GUI (Graphical User Interface) WUI (Web User Interface) Touchscreens Други
  • 7. Език за програмиране C# • • • • • .NET Framework Common Language Infrastructure (CLI) Common Language Runtime (CLR) Base Class Library (BCL) Езикът C#. Защо C#?
  • 8. Среда за разработка Microsoft Visual Studio • • • • • Интегрирана среда за софтуерна разработка Обща рамка за развой на много езици и технологии Първа версия – Microsoft Visual Studio 97 Последна версия – Microsoft Visual Studio 2013 Редакции на Microsoft Visual Studio 2013 – Professional (с DreamSpark account) – Express (безплатен) • Помощни средства – Telerik JustCode – JetBrains ReSharper – Други
  • 9. Програма „Hello, world!” • • • • Кратко запознаване с Microsoft Visual Studio Кратко запознаване с MSDN Library Въвеждане на програмата Дисекция на програмата – – – – – Основна структура Начин на работа Какво означават думичките? Добро или лошо форматиране Основни конвенции за кодиране
  • 10. Програма „Hello, world!” • • • • Компилиране на програмата Изпълнение на програмата Проследяване на изпълнението Откриване и отстраняване на грешки
  • 11. Програма „Hello, world!” - дисекция using System; Използване пространство на имената System namespace HelloWorld Пространство на имената HelloWorld { Дефиниция на клас Program class Program { Дефиниция на метод Main static void Main(string[] args) { Console.WriteLine("Hello, world!"); } } } Наименование на клас Console Извикване на метод WriteLine Текст
  • 12. Програма „Hello, world!” - демо using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello, world!"); } } }
  • 13. Програма „Click me!” • • • • Какво е „визуално програмиране“? Създаване на потребителски интерфейс Въвеждане на програмата Дисекция на програмата – Какво означават думичките? – Събития и обработка на събития – Манипулиране на интерфейса • Възможности за развитие на програмата
  • 14. Програма „Click me!” - демо // Демонстрация
  • 15. Коментари • Какво е „коментар“? – Коментарът е част от изходния код, която компилаторът не взима предвид, но подпомага документирането на програмата // аз съм едноредов коментар /* аз съм многоредов коментар и заемам цели два реда */ • Едноредови коментари – започват /* „многоредов“ коментар-симулант */ с “//“ и завършват с края на реда • Многоредови коментари – започват с “/*” и завършват с “*/” • Машинно четими коментари за документиране на кода с XML
  • 16. Ключови думи • Какво е „ключова дума“? – Дума със специално значение за компилатора • Част от самия език за програмиране • Списък в глава “C# Keywords” на “C# Reference” в MSDN // някои ключови думи if sizeof this is long do try out finally // ето още няколко while unsafe lock internal
  • 17. Идентификатори • Какво е „идентификатор“? – Наименование на определена програмна единица в кода дадено от програмиста • Правила – – – – Уникални в дадената област Не съвпадат с ключови думи Започват с буква или „_“ Съдържат букви, цифри или „_” • Екраниране с „@” // идентификатори на променливи аge // възраст customerName // име на клиента _bmi // body mass index MiddleName // презиме // идентификатор на структура StudentInfo // идентификатор на функция GetStudentInfoFromDatabase // екранирани променливи @string @алабаланица
  • 18. Идентификатори • Наименованията на идентификаторите се определят от програмиста • Свободата в избора на програмиста може да доведе до нечетим програмен код • Принципите на доброто кодиране и конвенциите изискват наименованията да носят смисъла на това, което идентифицират • Спазването на конвенциите води до по-четим, по-качествен и по-разбираем програмен код
  • 19. Типове данни • Какво е „тип данни“? – Класификационна система на видовете данни • Типът данни определя – – – – Множеството от възможни стойности Възможните операциите извършвани с данните Смисъла на данните Начина на тяхното съхранение • Характеристики – Наименование – Размер/обем – Стойност по подразбиране
  • 20. Типове данни • Примитивни типове данни – Стойностите им могат да бъдат задавани с т.нар. литерали – Могат да бъдат декларирани константи от примитивни типове – Изразите от примитивни типове се разглеждат като константи • Разграничават се следните примитивни типове данни – Числови (целочислени, реални с плаваща запетая и числа с десетична точност) – int, float, double, decimal – Булеви – bool – Дата/час – DateTime – Символни – char – Символни низове – string
  • 21. Типове данни • Изброими типове данни – Дават ефикасен начин за групиране на изброимо множество от константни стойности – Всяка стойност се задава с нейното име и приема стойност от целочислен тип • Примери за изброими типове данни – – – – – Дните от седмицата Месеците в годината Състоянията на светофар Програмите на автоматична пералня Други
  • 22. Типове данни • Какво е „структура“? – Конструкция даваща възможност за обединяването на характерни за монолитна логическа единица данни, свойства и функции • Защо „монолитна“? – Под „монолитна“ в случая се разбира, че промяната на която и да е от данните всъщност представлява друга логическа единица
  • 23. Типове данни • Примери за структури – Точка в двумерното пространство • Данни: вътрешно представяне на точката в двумерното пространство • Свойства: X- и Y- координати, ъгъл спрямо оста, разстояние до началото на координатната система, и др. • Функции: определяне на разстоянието до друга точка, принадлежност към вътрешността на затворен контур и др – Цвят • Данни: вътрешно представяне на цвят • Свойства: червена, зелена и синя компонента на цвета • Функции: смесване на цвета с друг цвят за получаване на трети
  • 24. Литерали • Какво е „литерал“? – Запис в изходния код представящ фиксирана стойност от определен тип • Обикновено задаваните от литералите стойности са от примитивен тип • С литерали могат да се описват и по-сложни структури • Разграничават се литерали от следните типове – Числови (целочислени, реални с плаваща запетая и числа с десетична точност) – Булеви – Символи и символни низове – Нулев литерал (null)
  • 25. Литерали • Литералите на символите и символните низове могат да съдържат специални символи, които се нуждаят от екраниране • Съществуват редица начини за екраниране на литерали – Използване на символа “” – Използване на символа „@” Remember me?!
  • 26. Литерали - демо // Демонстрация
  • 27. Променливи • Какво е „променлива“? – Идентификатор с асоциирана с него стойност от определен тип, която може да бъде променяна по време на изпълнение на програмата • Характеристики: – Наименование (напр. courseName) – Тип данни (напр. string) – Текуща стойност (напр. ”Програмиране на C#”)
  • 28. Променливи • Обявяване/деклариране: (тип данни) (идентификатор) • Присвояване на стойност (идентификатор) = (израз) • Използване (идентификатор) • Инициализация – Първоначално задаване на стойност – Променливите не могат да бъдат използвани, преди да им бъде присвоена стойност // обявяване string courseName; // обявяване на няколко променливи string firstName, lastName; // присвояване на стойност courseName = “Програмиране на C#”; // използване Console.WriteLine(courseName); // инициализация int duration = 5;
  • 29. Променливи - демо // Демонстрация
  • 30. Константи • Какво е „константа“? – Идентификатор с асоциирана с него стойност от определен тип, която не може да бъде променяна по време на изпълнение на програмата • Характеристики: – Наименование (напр. Pi) – Тип данни (напр. double) – Стойност (напр. 3.14159265359d)
  • 31. Константи • Обявяване/деклариране: const (тип данни) (идентификатор) = (константен израз) • Използване (идентификатор) // обявяване const double Pi = 3.14159265359d; // използване Console.WriteLine(Pi);
  • 32. Константи - демо // Демонстрация
  • 33. Стойностни и референтни типове данни • Какво е “stack”? – Област от паметта с фиксирана големина за временно съхранение на по-малки по обем данни, управлението на която е автоматично • Какво е “heap”? – Област от паметта с динамична големина за съхранение на поголеми по обем данни, управлението на която е ръчно
  • 34. Стойностни и референтни типове данни • Стойностни типове данни – – – – По-малки по обем Съхраняват се в stack Предават се по стойност Примитивни и изброими типове, както и структури • Референтни типове данни – – – – По-големи по обем Съхраняват се в heap Предават се по референция Класове • Низовете са особен тип данни – референтен с поведение на стойностен тип. Те са неизменими (immutable).
  • 35. 2013
  • 36. Стойностни и референтни типове данни • Стойности по подразбиране – Числовите типове – нула – Символен тип – символът „0‟ – Символен низ – null (литерал указващ нулева позиция в паметта, буквално „нищо“) – Дата/час – 1 януари 1, 00:00:00; – Структури – съответства на структурата, чиито всички полета имат своите подразбиращи се стойности; – Класовете – null (литерал указващ нулева позиция в паметта, буквално „нищо“)
  • 37. Стойностни и референтни типове данни • Нулируеми типове данни // брой положени изпити int numberOfExams = 0; – Понякога се налага добавянето // сбор от оценките от изпитите на стойността null към double sumOfMarks = 0.0; множеството от възможни // null-ев среден успех стойности double? averageMark = null; – Примери: // среден успех • Средна аритметична оценка, когато averageMark = 11.0 / 2; не всички изпити са положени • Други – Обявяване на променливи от нулируем тип • Добавяне на символа „?” към наименованието на типа
  • 38. Класове и обекти • Какво е „клас“? – Основа на обектно-ориентираното програмиране – Подобни на структурите типове данни със значително поразширени възможности – Подробно изучавани във втората част на курса • Какво е „обект“? – Обектът е променлива, типът данни на която е клас – Обектът е проява на определен клас – Пример: • Планетите от Слънчевата система са от клас Планета
  • 39. Оператори, изрази и съждения • Какво е „оператор“? Какво е „операнд“? – Операторите са синтактични конструкции на езика предназначени за извършване на операции върху определени програмни единици – операнди. • Видове оператори според броя на операндите – Унарни – с един операнд – Бинарни – с два операнда – Тернарни – с три операнда
  • 40. Оператори, изрази и съждения • Видове оператори според вида на операциите – – – – – Аритметични операции Логически операции Побитови операции Оператори за сравнение Оператори за присвоявяне // някои аритметични операции p/2 * (p/2-a) * (p/2-b) * (p/2-c); // някои логически операции toBe || ! toBe; // някои побитови операции drink | 2; you & me; strafeLeft << 3; // сравнение firstName == “Иванчо“; lastName != “Калпазанчо“; // присвоявяне firstName = “Иванчо“; lastName = “Калпазанчо“;
  • 41. Оператори, изрази и съждения • Други оператори – – – – – – – – – – Слепване на низове Достъпване на член-променливи и член-функции Достъпване на индексиран елемент Групиране Преобразуване на типове Условен оператор Създаване на обект/структура Взимане на тип данни и големина на тип данни Проверка на тип данни Null-coalescing
  • 42. Оператори, изрази и съждения • Какво е „преобразуване на типовете данни“? – Превръщане на данни от един тип в друг • Видове преобразуване на типовете данни – Неявно преобразуване на типове данни – автоматично без загуба на информация – Явно преобразуване на типове данни – ръчно с възможна загуба на информация – Преобразуване на типове данни с функции
  • 43. Оператори, изрази и съждения • Какво е „израз“? – Поредица от оператори, литерали и променливи даващи като резултат определена стойност – Изразите се изчисляват на базата на определени правила за приоритет и асоциативност • Приоритет на операциите – Определя реда, в който се изпълняват операциите при изчисляване на даден израз • Асоциативност на операциите – Набор от правила определящ реда на изпълнение на две операции с един и същи приоритет около един и същи операнд
  • 44. Оператори, изрази и съждения • Какво е „съждение“? – Съждението в езиците за програмиране е аналог на изречението – то дава смисъл на „казаното“ и инструктира компютъра да извърши определена дейност. – В езика C# съжденията се отделят със символа “;”. • Какво е „блок“? – Блокът е поредица от едно или повече съждения. – В езика C# блоковете се оформят със затваряне на съжденията между символите “{“ и “}”.
  • 45. Оператори, изрази и съждения - демо // Демонстрация
  • 46. Задачи за упражнение • Създайте програма, в която променливите a, b и c се инициализират с десетични числа – коефициенти в квадратно уравнение. Нека програмата изчисли дискриминантата, запише резултата в променлива discriminant и го покаже на екрана. • Създайте програма, която инициализира променливата studentName с имената на ученик и променливата courseName – с наименованието на курс. Нека програмата запише в променлива message текста „Здравейте [име на ученик] и добре дошли в [наименование на курс]!” и покаже съобщението на екрана.
  • 47. Задачи за упражнение • Създайте интерфейса на визуално приложение – калкулатор. Използвайте различни визуални компоненти (бутони, текстови полета, менюта и др.) с подходящите наименования и текстове
  • 49. Благодаря! • Валери Дачев – – – – valery@david.bg http://vdachev.net/ @vdachev https://facebook.com/vdachev • ДАВИД академия – – – – acad@david.bg http://acad.david.bg/ @david_academy https://facebook.com/DavidAcademy