SlideShare a Scribd company logo
1 of 67
Въведение в Python
Съдържание
Python
Променливи, Типове данни и оператори
Структури от данни
Контролни структури– if, while, for, and range method
Функции
Модули
Класове
Python
Python е скриптов, интерпретативен и обектно-ориентиран
език за програмиране. Създаден е в началото на 90-те години
от Гуидо ван Росум. Python предлага голямо бързодействие за
разработка, тъй като се интерпретира и няма необходимост от
компилиране.
Python
Предимства:
Използване на динамични типове данни
Платформо-независим език
Опростен и лесен синтаксис
Вградени структури от данни като – низове, списъци, tuple и речник.
Автоматично управление на паметта
Разнообразни библиотеки
Скалируемост
Динамични типове данни
Динамично типизиран (dynamic typing)
език - Типовете на данните се определят
по време на изпълнението. Работи на
принципа duck typing - Оценява типа на
обектите според техните свойства.
В Python променливите са от динамичен
тип, т.е. може на една променлива да се
присвои целочислена стойност, а след
това да й присвоим някакъв низ от
символи.
Предимството на динамичните данни е
създаването на генерализиран код.
Платформо-независим език
Python работи на повечето операционни системи, включително Linux,
Unix, Windows, и Mac OS.
Опростен и лесен синтаксис
За разлика от други езици, Python не разделя отделни блокове код
като използва { } за начало и край. Python използва
индентация/отстъп/ за разделянето на отделни блокове. Като
разграничител между програмните фрагменти се използва нов ред.
Това улеснява прочитането и разбирането на кода. Python съдържа
прости конструкции, характерни за функционалния стил на
програмиране, които му придават допълнителна гъвкавост.
Вградени структури от данни
Основните структури от данни предоставени от Python включват
низове, списъци, tuple/комплект – списък, който може да бъде
променян/ и речник.
Пример за списък с Python
Автоматично управление на паметта
Python използва Garbage Collector като Java т.е. вътрешната
реализация на езика се грижи за управлението на паметта.
Потребителят не трябва да се притеснявате за динамичното
разпределение на паметта и деразпределнето й. Ако е необходимо,
Python автоматично разпределя паметта и автоматично я
деразпределя, когато се приключи с използването й. Също така може
да се увеличи или намали размера на й, в зависимост от това какво е
необходимо.
Разнообразни библиотеки
Стандартната библиотека на Python е много обширна и може да се
използва за най-различни области, включително в Internet, в
математиката и в обработката на низове. Също така има и библиотека
за работа с низове и изпращане/получаване на електронна поща.
Освен основната библиотека, може да се използват и други
библиотеки, достъпни в интернет.
Скалируемост
Python е съвместим с други езици. Предоставя по-добра структура и
поддръжка за големи програми, отколкото за shell програмирането.
Типове данни и оператори
Променлива
Име на променлива
Типове данни
Оператори
Структури от данни - Списъци, tuple, речник
Променлива
Променливите са нищо повече от запазено място в паметта, в което се
съхраняват стойности. Когато се създава променлива това означава, че се
резервира място в паметта. Спрямо типа на променливата интерпретатора
разпределя памет и решава какво може да се съхрани в нея.
В Python променливите не се декларират, това става автоматично, когато
присвоим някаква стойност към променлива. Например number = 5. В
паметта се създава обект от целочислен тип, а променливата сочи към това
място в паметта.
Име на променлива
Python може да използва текст, числа, и (_) за имена на
променливите.
Не може да се започне с число като първи знак в името на
променливата.
Всички имена на променливи са case-sensitive /чувствителни към
използването на главни и малки букви/.
Примери: my_variable, abcd, My_variable.
Съществуват т.нар. запазени думи, които не могат да бъдат използвани като имена
на променливи.
Оператори, цифрово и низово
представянеИнформацията складирана в променливите може да бъде от
различен тип.
Типовете данни в Python:
Numbers
Strings
Boolen
None
Всяка стойност има тип. Можем да проверим типа на дадена
стойност с функцията type().
•int – целочислен тип, цили числа.
•long – целочислен тип с неограничен размер.
•float – реални числа с плаваща запетая.
•complex – комплексни числа. Не се използват често в програмирането
с Python.
Numbers – числови типове данни:
Данните се запазват като числови стойности. В Python се
поддържат четири числови типа:
Strings – низове/стрингове
Низ-ът представлява масив от символи. Текстовите низове имат произволна
дължина. Отделят се с единични (‘) , с двоини (“) или тройни кавички (“““).
Стринговете поддържат специални символи:
Boolean
Типа bool има две стойности – True/истина/ или
False/лъжа/. Изписват се винаги с главна буква.
None
Типа None е еквивалент на типа null в други езици. Когато
една функция не върне нищо, то тя връща None.
Оператори
Аритметични оператори
Оператори за сравнение
Оператори за присвояване
Логически оператори
Побитови оператори
Аритметични оператори
+ Събиране
– Изваждане
* Умножение
/ Деление
% Остатък
** Степен
// Целочислено делене
Оператора за степен (**) е
оператор с по-висок приоритет
от останалите аритмитични
оператори.
Оператор за степенуване Оператор за целочислено деление
Оператора за събиране (+) се използва за сливане
на низове, а оператора за умножение (*) се
използва за повторение на низове. Операторът ([ ])
може да се използва за извикване на всеки от
елементите на стринга. Първия елемент винаги
започва от 0. Също така може да се използва и за
четене на елементи, без те да могат да бъдат
променяни.
Настъпва грешка, когато низ
оператори и елементи се променят.
Оператори за сравнение
== равно
!= не равно/различно
> по-голямо
< по-малко
>= по-голямо или равно
<= по-малко или равно
Оператори за присвояване
= присвояване
+= събиране и присвояване
-= изваждане и присвояване
*= умножение и присвояване
/= деление и присвояване
%= присвояване на остатък от деление
**= повдигане на степен и присвояване
//= целочислено деление и присвояване
Логически оператори
and и
or или
not инверсия
Побитови оператори
& двоично И
| двоично ИЛИ
^ двоично изключващо ИЛИ
~ двоично инвертиране (NOT)
<< преместване вляво (left shift)
>> преместване вдясно (right shift)
Lists - Списъци
Списъците имат структура от данни, подобна на масив. Списъците
съдържат в себе си елементи, които са разделени със запетая (,) и
са разположени в правоъгълни скоби ([ ]). Имат предимството, че в
тях може да се вмъква и изтрива с голяма гъвкавост. Python не
поддържа масиви. В списъци могат да се запишат данни, които са от
различен тип дори в рамките на един списък.
Основни методи са append, insert, remove, index, count, sort и т.н.
Създаване на списък.
В примера е показан списък от низове, отговарящи на дните от
седмицата, всеки един от елементите на списъка може да бъда достъпен
чрез slice оператора [ ] и с индекси започващи от 0 от началото на
списъка.
Метод append. Използва се да прибавяне на елементи към
списъка. Чрез този метод, добавеният елемент се
позиционира в края на списъка.
Метод insert. Също се използва за прибавяне на елементи към
списъка. Чрез този метод се избира конкретната позиция към,
която искаме да добавим елемент.
Метод remove. Използва се за премахване на елемент от списъка.
Метод index. Този метод връща позицията, на която отговаря
елемента.
Метод count. Този метод съобщава колко пъти елемента се
среща в списъка.
Метод sort. При използване на метода за сортиране,
елементите на списъка се подреждат във възходящ азбучен
ред, а при излозването на reverse метод се подреждат в
низходящ ред.
tuple
Tuple или комплект, същото като списък, но е read-only, т.е. можем
само да четем от него, без да променяме стойностите му. Можем да
създаваме tuple чрез оператора ( ).
Dictionary - Речник
Речниците са аналогични на асосиетивните масиви. Речника е
структура от данни, която се състои от двойка ключ:стойност. Може
да се достъпи стойността само чрез използването на ключ. Ще
настъпи грешка, ако се използва ключ, който не съществува.
Речниците се ограждат с къдрави скоби { }, за да се достъпят се
използват правоъгълни скоби [ ] .
Контролни структури
If
While
For
Range method
Контролни структури
Циклите се използват за извършване на едни и същи или подобни
задачи няколко пъти, докато условните оператори се използват за
определяне дали да се изпълни задачата в съответствие със
зададените условията. Най-често срещаните цикли са “for" и "while "
структурите, а условията имат “if“ структура.
if, else, elif
Най-често използвания условен оператор е if.
Той служи за проверка дали дадено условие е
True (вярно), ако е така се прлеминава в
изпълнение на някакво действие. В противен
случай, когато резултата е False (грешен) се
изпълнява друго условие. С други думи, оценява
се условието и според получения резултат се
решава дали да се изпълни.
Ако условието (condition) е вярно се изпълнява Processing
Syntax 1, в противен случай ще се изпълни Processing
Syntax 2 .
if, else, elif
За разлика от други езици Python не отделя
условието в блок т.е. не е обходимо
използването на скоби ( ) за отделяне на
условията. Важно е да се внимава с точното
използване на индентация. Всеки вложен блок
код се определя с идентация спрямо
предходния. Не е нужно и използването на
скоби { }. Всеки блок започва само след
двуеточие :, което се поставя в края на
предишния ред.
Блокът завършва тогава, когато се върнем към
предходната идентация.
Възможно е да се тестват повече на брой
условия. Това става с if ... elif и else.
В някои случаи, когато if-условието не е
изпълнено и искаме да изпълним друг код
използваме else или elif.
С elif можем да проверим допълнителни
условия, ако if-условието не е изпълнено.
Else се изпълнява винаги, когато нито едно от
условията не е изпълнено.
if, else, elif
while
Цикъл while. While многократно
изпълнява вътрешния блок код.
Това продължава толкова дълго,
колкото условието води до True
резултат. При резултат False,
вътрешният блок код ще бъде
подминат, без да бъде изпълнен.
Използваме while, когато искаме
даден код да се изпълнява докато
условието е вярно. С помоща на
while можем да създадем
безкрайни цикли.
for
Цикъл for. Използваме for, когато искаме да изпълним даден
код определен брой пъти. Структурата на for е подобна на
while и е типична структура за повторения. Използва се най-
често за обхождане на списъци. For е като foreach в другите
езици. Не увеличава индекси, а обхожда структури от данни.
Break & continue.
От даден цикъл можем да излезнем по всяко време с
помоща на оператора break.
Операторът continue прекъсва текущата итерация и
продължава изпълнението на цикъла от следващия
елемент.
Range method
Това е универсална функция за
създаване на функции с аритметични
прогресии. Аргументите на функцията
трябва да бъдат цели числа.
Обикновено, когато работим с числа и
обхождаме нещо според номер,
използваме функцията range().
Съществува и xrange() функция , която
черпи по-малко ресурси тъй като
генерира числата на етапи, докато
range() функцията генерира всички
числа наведнъж.
Най-често range() се използва с цикъла
for.
Функции
Функции в програмирането
Дефиниране на функции
Return
Pass
Функции в програмирането
Функциите са основните структурни единици, от които се изграждат
програмите. Всяка функция се състои от множество оператори /може
и 0/, които се изпълняват като една обобщена операция или
действие. След като дадена функция бъде създадена, което се
осъществява чрез нейното дефиниране, тя може да бъде
изпълнявана многократно. Всяко изпълнение на дадена функция
може да бъде с различни данни, тъй като конкретните данни се
задават при извикване /активиране/ на функцията. В резултат на
изпълнението си функциите могат да връщат стойност, която се
нарича върната стойност - Return value , но могат и да не връщат.
Функции
Функциите осигуряват по-добра възможност за приспособяване на
приложението, което се прави и висока степен на преизползваемост
на кода.
До този момент познаваме функциите:
print
type
range
Те са част от многото вградени в Python функции. Освен вградените
функции, потребителят може да създава свои собствени. Те се
наричат потребителски дефинирани функции.
Дефиниране на функции
Ключовата дума def въвежда дефиниция на функция. Тя трябва да
бъде последвана от името на фукнцията и списък на формалните
параметри в скоби. Операторите, образуващи тялото на функцията,
започват от следващия ред и трябва да бъдат с отстъп.
Параметрите на функцията се наричат аргументи. Функциите могат да
приемат произволен брой аргументи.
Операторът return връща изпълнението от функцията, предавайки
стойност.
Return value - Връщаща стойност
Връщането на стойност е възможно
да се осъществи чрез return.
Функцията ще приключи, ако return
не е използвано. Връща се None.
Return може да върне само един
обект. Възможно е да се върнат
повече обекти, като се поставят в
tuple.
Параметри
Python използва препратки/референции/, за да
достави параметри на функциите.
За числови стойности, ако данните се променят в
рамките на функцията, това не се отразява на
самата функция.
Въпреки това, за някои параметри, формирани от
списъци, ако се порменят данните в рамките
функцията ще се види, че промененото
съдържание е отразено извън функцията.
Глобални и локални променливи
Глобалните променливи са променливи, които са декларирани извън
пределите на функцията.
Локалните променливи са променливи, декларирани в самата
функция.
pass
pass се използва за създаването на код, който няма да изпълни
никакъв вид действие. Код, който не прави нищо, но дори и да прави
няма да се получи никакъв резултат.
Използва се често. Например, когато се създава постоянна функция,
клас или модул при разработката на проект. Може да се присвои име,
но не и съдържание.
Модули
Какво е модул?
Изплзване на модули
Създаване на модули
Модули
Модул – колекция от функции със специфични цели, които могат да
се преизползват в много различни случаи. В Python съществуват
около 200 модула, които от своя страна могат и да се комбинират.
Всеки модул може да вкара в себе си друг модул.
Използване на модули
Модулите се извикват с ключовата дума import, след което следва
името на модула, който искаме.
Можем да извикаме функцията, която ни трябва. Например math.sqrt.
Освен функции, могат да се използват и константи, които са
дефинирани с конкретно име.
Инструкцията from
Инструкцията from e подходяща за импортирване само на определени
идентификатори. Например from math import pi.
Създаване на модули
Пример за създаване на модул calculate.
Създаване на модули
Класове
Клас
Деклариране на класове
Връзка между Клас и Инстанция
Конструктор и Деструктор
Сатичен метод
Презареждане на оператори
Наследяване
Класове
Класът е една от характеристиките на обектно-ориентираното
програмиране. Това е съвкупност от променливи и функции, които са
обвързани в логическа структура и работят заедно. Класът служи
като модел за представяне на реални обекти и софтуерни обекти,
описвайки атрибути (свойства) и методи (поведение) на обектите.
Класовте са проектирани да създават и обработват обекти. Те са
един вид описание на обектите.
Класовете са един от най-полезните инструменти, които предоставя
Python.
Класове
Обектите се създават чрез дефиниране на класове. Всичко, което
искаме да създдем в програмите си са реални обекти, чийто атрибути
представляват тяхната характеристика, а методите са всъщност
начинът по който се държат. Методите са нещата, които обекта може
да прави.
Класовете всъщност са планове за създаването на обекти. Един клас
не е обект, а е дизайн за него.
Дефиниране на класове
Създаването на класове започва с ключовата дума class, следва името
на класа и две точки :. След това се разполага тялото на класа.
Може да се създада обикновен клас без никакво съдържание като се
използва ‘pass’.
Дефиниране на класове
Създаването на класове започва с ключовата дума class,
следва името на класа и две точки :. След това се
разполага тялото на класа.
Дефинираните функции в тялото на класа са методи на
класа. Методът е подобно на функция нещо, което се
съдържа в класа и или променя самия клас, или
извършва някакво действие, в зависимост от класа.
Първият аргумент self е reference към обекта, на който се
извиква.
Променливите, дефинирани в този блок са статични за
класа.
Инстанция
Клас инстанцията сочи към място в паметта, използвано за
съхранение и запазване на действителното съдържание на класа.
Връзка между клас и инстанция
isinstance метода може да се използва, за да се научи за връзката
между клас и инстанция. Инстанцията е поставена за първи
аргумент, а името на класа ще се използва като втори аргумент.
Това може да се използва, за да се разбере дали инстанция е
създадена за конкретния клас.
Конструктор и Деконструктор
Конструктора е метод, който се извиква автоматично от
интерпретатора при инициализацията на класа. В Python този метод
се нарича __init__(). Използва се за инициализация на обектите на
класа.
Аналогично, за да бъде унищожен обектът се използва деконструктор
__del__().
Конструктора и деконструктора са методи в клас, така че първият
аргумент трябва да сочи към тяхната инстанция.
Сатичен метод
В класа може да бъде създаден метод, който да е достъпен, без да е
необходимо създаването на инстанция на класа. За дефиниране на
този статичен метод се използва staticmethod.
Наследяване
Една от най-важните техники в ООП е наследяването.
Чрез него можем да създадем клас, в който да бъдат достъпни
всички атрибути и методи на родителския(базовия) клас, както и
някои нови методи и атрибути.
class DerivedClassName(BaseClassName):
<statement-1>
.
.
.
<statement-N>
Презареждане на оператори
Презареждането на обикновенните оператори позволява на
инстанциите на класовете да участват в прости действия като
например събиране и изваждане. Ако желаете да съберете два
обекта, за тях трябва да бъде дефиниран методът __add__.
Презареждане
на оператори

More Related Content

What's hot

свойства на алгоритмите
свойства на алгоритмитесвойства на алгоритмите
свойства на алгоритмитеmtrad
 
тип камшичести
тип камшичеститип камшичести
тип камшичестиRumiana Tarpova
 
Алкохолът-клетъчна отрова
Алкохолът-клетъчна отрова Алкохолът-клетъчна отрова
Алкохолът-клетъчна отрова University of Economics
 
0тчет за дейността на методическо обединение,,природни науки 51 СОУ
0тчет за дейността на методическо обединение,,природни науки 51 СОУ0тчет за дейността на методическо обединение,,природни науки 51 СОУ
0тчет за дейността на методическо обединение,,природни науки 51 СОУасен александров
 
Народни будители - ЧО, 3 клас, Булвест
Народни будители - ЧО, 3 клас, БулвестНародни будители - ЧО, 3 клас, Булвест
Народни будители - ЧО, 3 клас, БулвестVeska Petrova
 
цели изрази преговор
цели изрази  преговорцели изрази  преговор
цели изрази преговорliageorg
 
Измерване на информацията - 6 клас
Измерване на информацията - 6 класИзмерване на информацията - 6 клас
Измерване на информацията - 6 класnad_and
 
как да напишем писмо
как да напишем писмокак да напишем писмо
как да напишем писмоAni Petkova
 
съчинение на повествователен текст по дадена пословица
съчинение на повествователен текст по дадена пословицасъчинение на повествователен текст по дадена пословица
съчинение на повествователен текст по дадена пословицаDani Parvanova
 
история на цифрите
история на цифритеистория на цифрите
история на цифритеDani Parvanova
 
полупроводникови диоди
полупроводникови диодиполупроводникови диоди
полупроводникови диодиmtrad
 
детската агресия
детската агресиядетската агресия
детската агресияVorfax Am-am
 
моята родина българия
моята родина българиямоята родина българия
моята родина българияDani Parvanova
 
ТЮТЮНОПУШЕНЕТО
ТЮТЮНОПУШЕНЕТОТЮТЮНОПУШЕНЕТО
ТЮТЮНОПУШЕНЕТОsouhs
 

What's hot (20)

свойства на алгоритмите
свойства на алгоритмитесвойства на алгоритмите
свойства на алгоритмите
 
тип камшичести
тип камшичеститип камшичести
тип камшичести
 
Алкохолът-клетъчна отрова
Алкохолът-клетъчна отрова Алкохолът-клетъчна отрова
Алкохолът-клетъчна отрова
 
Bela Griva
Bela GrivaBela Griva
Bela Griva
 
0тчет за дейността на методическо обединение,,природни науки 51 СОУ
0тчет за дейността на методическо обединение,,природни науки 51 СОУ0тчет за дейността на методическо обединение,,природни науки 51 СОУ
0тчет за дейността на методическо обединение,,природни науки 51 СОУ
 
Народни будители - ЧО, 3 клас, Булвест
Народни будители - ЧО, 3 клас, БулвестНародни будители - ЧО, 3 клас, Булвест
Народни будители - ЧО, 3 клас, Булвест
 
цели изрази преговор
цели изрази  преговорцели изрази  преговор
цели изрази преговор
 
Merenje mase
Merenje maseMerenje mase
Merenje mase
 
Power Point
Power PointPower Point
Power Point
 
Измерване на информацията - 6 клас
Измерване на информацията - 6 класИзмерване на информацията - 6 клас
Измерване на информацията - 6 клас
 
бройни системи
бройни системибройни системи
бройни системи
 
ВНИМАНИЕ! ОПАСНОСТ!_ 2
ВНИМАНИЕ! ОПАСНОСТ!_ 2ВНИМАНИЕ! ОПАСНОСТ!_ 2
ВНИМАНИЕ! ОПАСНОСТ!_ 2
 
как да напишем писмо
как да напишем писмокак да напишем писмо
как да напишем писмо
 
съчинение на повествователен текст по дадена пословица
съчинение на повествователен текст по дадена пословицасъчинение на повествователен текст по дадена пословица
съчинение на повествователен текст по дадена пословица
 
история на цифрите
история на цифритеистория на цифрите
история на цифрите
 
полупроводникови диоди
полупроводникови диодиполупроводникови диоди
полупроводникови диоди
 
ъгъл урок №45
ъгъл урок №45ъгъл урок №45
ъгъл урок №45
 
детската агресия
детската агресиядетската агресия
детската агресия
 
моята родина българия
моята родина българиямоята родина българия
моята родина българия
 
ТЮТЮНОПУШЕНЕТО
ТЮТЮНОПУШЕНЕТОТЮТЮНОПУШЕНЕТО
ТЮТЮНОПУШЕНЕТО
 

Similar to Въведение в Python

Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1DAVID Academy
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...DAVID Academy
 
5. vb promenlivi
5. vb promenlivi5. vb promenlivi
5. vb promenlividnaidenowa
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkciiIvan Peev
 
текстови контроли
текстови контролитекстови контроли
текстови контролиdnaidenowa
 
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
 
Основни структури за управление на изчислителния процес
Основни структури за управление на изчислителния процесОсновни структури за управление на изчислителния процес
Основни структури за управление на изчислителния процесAtelier for robotics
 
Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11DAVID Academy
 
Introduction to-rdbms-systems
Introduction to-rdbms-systemsIntroduction to-rdbms-systems
Introduction to-rdbms-systemsRosen Spasov
 
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...DAVID Academy
 
Computer fonts
Computer fontsComputer fonts
Computer fontssavs20
 

Similar to Въведение в Python (15)

Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
 
Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
 
5. vb promenlivi
5. vb promenlivi5. vb promenlivi
5. vb promenlivi
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
текстови контроли
текстови контролитекстови контроли
текстови контроли
 
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), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11
 
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
 
C++ datatypes
C++ datatypesC++ datatypes
C++ datatypes
 
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
Курс по програмиране за напреднали (2012) - 3. Бази данни. Системи за управле...
 
Computer fonts
Computer fontsComputer fonts
Computer fonts
 

More from Atelier for robotics

More from Atelier for robotics (6)

Учебник по роботика
Учебник по роботикаУчебник по роботика
Учебник по роботика
 
Using NAOqi
Using NAOqiUsing NAOqi
Using NAOqi
 
Python choreographe NAOqi Framework
Python choreographe NAOqi FrameworkPython choreographe NAOqi Framework
Python choreographe NAOqi Framework
 
NAOqi framework
NAOqi frameworkNAOqi framework
NAOqi framework
 
DCM
DCMDCM
DCM
 
Cross compiling
Cross compilingCross compiling
Cross compiling
 

Въведение в Python

  • 2. Съдържание Python Променливи, Типове данни и оператори Структури от данни Контролни структури– if, while, for, and range method Функции Модули Класове
  • 3. Python Python е скриптов, интерпретативен и обектно-ориентиран език за програмиране. Създаден е в началото на 90-те години от Гуидо ван Росум. Python предлага голямо бързодействие за разработка, тъй като се интерпретира и няма необходимост от компилиране.
  • 4. Python Предимства: Използване на динамични типове данни Платформо-независим език Опростен и лесен синтаксис Вградени структури от данни като – низове, списъци, tuple и речник. Автоматично управление на паметта Разнообразни библиотеки Скалируемост
  • 5. Динамични типове данни Динамично типизиран (dynamic typing) език - Типовете на данните се определят по време на изпълнението. Работи на принципа duck typing - Оценява типа на обектите според техните свойства. В Python променливите са от динамичен тип, т.е. може на една променлива да се присвои целочислена стойност, а след това да й присвоим някакъв низ от символи. Предимството на динамичните данни е създаването на генерализиран код.
  • 6. Платформо-независим език Python работи на повечето операционни системи, включително Linux, Unix, Windows, и Mac OS.
  • 7. Опростен и лесен синтаксис За разлика от други езици, Python не разделя отделни блокове код като използва { } за начало и край. Python използва индентация/отстъп/ за разделянето на отделни блокове. Като разграничител между програмните фрагменти се използва нов ред. Това улеснява прочитането и разбирането на кода. Python съдържа прости конструкции, характерни за функционалния стил на програмиране, които му придават допълнителна гъвкавост.
  • 8. Вградени структури от данни Основните структури от данни предоставени от Python включват низове, списъци, tuple/комплект – списък, който може да бъде променян/ и речник. Пример за списък с Python
  • 9. Автоматично управление на паметта Python използва Garbage Collector като Java т.е. вътрешната реализация на езика се грижи за управлението на паметта. Потребителят не трябва да се притеснявате за динамичното разпределение на паметта и деразпределнето й. Ако е необходимо, Python автоматично разпределя паметта и автоматично я деразпределя, когато се приключи с използването й. Също така може да се увеличи или намали размера на й, в зависимост от това какво е необходимо.
  • 10. Разнообразни библиотеки Стандартната библиотека на Python е много обширна и може да се използва за най-различни области, включително в Internet, в математиката и в обработката на низове. Също така има и библиотека за работа с низове и изпращане/получаване на електронна поща. Освен основната библиотека, може да се използват и други библиотеки, достъпни в интернет.
  • 11. Скалируемост Python е съвместим с други езици. Предоставя по-добра структура и поддръжка за големи програми, отколкото за shell програмирането.
  • 12. Типове данни и оператори Променлива Име на променлива Типове данни Оператори Структури от данни - Списъци, tuple, речник
  • 13. Променлива Променливите са нищо повече от запазено място в паметта, в което се съхраняват стойности. Когато се създава променлива това означава, че се резервира място в паметта. Спрямо типа на променливата интерпретатора разпределя памет и решава какво може да се съхрани в нея. В Python променливите не се декларират, това става автоматично, когато присвоим някаква стойност към променлива. Например number = 5. В паметта се създава обект от целочислен тип, а променливата сочи към това място в паметта.
  • 14. Име на променлива Python може да използва текст, числа, и (_) за имена на променливите. Не може да се започне с число като първи знак в името на променливата. Всички имена на променливи са case-sensitive /чувствителни към използването на главни и малки букви/. Примери: my_variable, abcd, My_variable.
  • 15. Съществуват т.нар. запазени думи, които не могат да бъдат използвани като имена на променливи.
  • 16. Оператори, цифрово и низово представянеИнформацията складирана в променливите може да бъде от различен тип. Типовете данни в Python: Numbers Strings Boolen None Всяка стойност има тип. Можем да проверим типа на дадена стойност с функцията type().
  • 17. •int – целочислен тип, цили числа. •long – целочислен тип с неограничен размер. •float – реални числа с плаваща запетая. •complex – комплексни числа. Не се използват често в програмирането с Python. Numbers – числови типове данни: Данните се запазват като числови стойности. В Python се поддържат четири числови типа:
  • 18. Strings – низове/стрингове Низ-ът представлява масив от символи. Текстовите низове имат произволна дължина. Отделят се с единични (‘) , с двоини (“) или тройни кавички (“““). Стринговете поддържат специални символи:
  • 19. Boolean Типа bool има две стойности – True/истина/ или False/лъжа/. Изписват се винаги с главна буква.
  • 20. None Типа None е еквивалент на типа null в други езици. Когато една функция не върне нищо, то тя връща None.
  • 21. Оператори Аритметични оператори Оператори за сравнение Оператори за присвояване Логически оператори Побитови оператори
  • 22. Аритметични оператори + Събиране – Изваждане * Умножение / Деление % Остатък ** Степен // Целочислено делене Оператора за степен (**) е оператор с по-висок приоритет от останалите аритмитични оператори. Оператор за степенуване Оператор за целочислено деление
  • 23. Оператора за събиране (+) се използва за сливане на низове, а оператора за умножение (*) се използва за повторение на низове. Операторът ([ ]) може да се използва за извикване на всеки от елементите на стринга. Първия елемент винаги започва от 0. Също така може да се използва и за четене на елементи, без те да могат да бъдат променяни. Настъпва грешка, когато низ оператори и елементи се променят.
  • 24. Оператори за сравнение == равно != не равно/различно > по-голямо < по-малко >= по-голямо или равно <= по-малко или равно
  • 25. Оператори за присвояване = присвояване += събиране и присвояване -= изваждане и присвояване *= умножение и присвояване /= деление и присвояване %= присвояване на остатък от деление **= повдигане на степен и присвояване //= целочислено деление и присвояване
  • 26. Логически оператори and и or или not инверсия Побитови оператори & двоично И | двоично ИЛИ ^ двоично изключващо ИЛИ ~ двоично инвертиране (NOT) << преместване вляво (left shift) >> преместване вдясно (right shift)
  • 27. Lists - Списъци Списъците имат структура от данни, подобна на масив. Списъците съдържат в себе си елементи, които са разделени със запетая (,) и са разположени в правоъгълни скоби ([ ]). Имат предимството, че в тях може да се вмъква и изтрива с голяма гъвкавост. Python не поддържа масиви. В списъци могат да се запишат данни, които са от различен тип дори в рамките на един списък. Основни методи са append, insert, remove, index, count, sort и т.н.
  • 28. Създаване на списък. В примера е показан списък от низове, отговарящи на дните от седмицата, всеки един от елементите на списъка може да бъда достъпен чрез slice оператора [ ] и с индекси започващи от 0 от началото на списъка.
  • 29. Метод append. Използва се да прибавяне на елементи към списъка. Чрез този метод, добавеният елемент се позиционира в края на списъка. Метод insert. Също се използва за прибавяне на елементи към списъка. Чрез този метод се избира конкретната позиция към, която искаме да добавим елемент. Метод remove. Използва се за премахване на елемент от списъка.
  • 30. Метод index. Този метод връща позицията, на която отговаря елемента. Метод count. Този метод съобщава колко пъти елемента се среща в списъка. Метод sort. При използване на метода за сортиране, елементите на списъка се подреждат във възходящ азбучен ред, а при излозването на reverse метод се подреждат в низходящ ред.
  • 31. tuple Tuple или комплект, същото като списък, но е read-only, т.е. можем само да четем от него, без да променяме стойностите му. Можем да създаваме tuple чрез оператора ( ).
  • 32. Dictionary - Речник Речниците са аналогични на асосиетивните масиви. Речника е структура от данни, която се състои от двойка ключ:стойност. Може да се достъпи стойността само чрез използването на ключ. Ще настъпи грешка, ако се използва ключ, който не съществува. Речниците се ограждат с къдрави скоби { }, за да се достъпят се използват правоъгълни скоби [ ] .
  • 34. Контролни структури Циклите се използват за извършване на едни и същи или подобни задачи няколко пъти, докато условните оператори се използват за определяне дали да се изпълни задачата в съответствие със зададените условията. Най-често срещаните цикли са “for" и "while " структурите, а условията имат “if“ структура.
  • 35. if, else, elif Най-често използвания условен оператор е if. Той служи за проверка дали дадено условие е True (вярно), ако е така се прлеминава в изпълнение на някакво действие. В противен случай, когато резултата е False (грешен) се изпълнява друго условие. С други думи, оценява се условието и според получения резултат се решава дали да се изпълни. Ако условието (condition) е вярно се изпълнява Processing Syntax 1, в противен случай ще се изпълни Processing Syntax 2 .
  • 36. if, else, elif За разлика от други езици Python не отделя условието в блок т.е. не е обходимо използването на скоби ( ) за отделяне на условията. Важно е да се внимава с точното използване на индентация. Всеки вложен блок код се определя с идентация спрямо предходния. Не е нужно и използването на скоби { }. Всеки блок започва само след двуеточие :, което се поставя в края на предишния ред. Блокът завършва тогава, когато се върнем към предходната идентация.
  • 37. Възможно е да се тестват повече на брой условия. Това става с if ... elif и else. В някои случаи, когато if-условието не е изпълнено и искаме да изпълним друг код използваме else или elif. С elif можем да проверим допълнителни условия, ако if-условието не е изпълнено. Else се изпълнява винаги, когато нито едно от условията не е изпълнено. if, else, elif
  • 38. while Цикъл while. While многократно изпълнява вътрешния блок код. Това продължава толкова дълго, колкото условието води до True резултат. При резултат False, вътрешният блок код ще бъде подминат, без да бъде изпълнен. Използваме while, когато искаме даден код да се изпълнява докато условието е вярно. С помоща на while можем да създадем безкрайни цикли.
  • 39. for Цикъл for. Използваме for, когато искаме да изпълним даден код определен брой пъти. Структурата на for е подобна на while и е типична структура за повторения. Използва се най- често за обхождане на списъци. For е като foreach в другите езици. Не увеличава индекси, а обхожда структури от данни.
  • 40. Break & continue. От даден цикъл можем да излезнем по всяко време с помоща на оператора break. Операторът continue прекъсва текущата итерация и продължава изпълнението на цикъла от следващия елемент.
  • 41. Range method Това е универсална функция за създаване на функции с аритметични прогресии. Аргументите на функцията трябва да бъдат цели числа. Обикновено, когато работим с числа и обхождаме нещо според номер, използваме функцията range(). Съществува и xrange() функция , която черпи по-малко ресурси тъй като генерира числата на етапи, докато range() функцията генерира всички числа наведнъж. Най-често range() се използва с цикъла for.
  • 43. Функции в програмирането Функциите са основните структурни единици, от които се изграждат програмите. Всяка функция се състои от множество оператори /може и 0/, които се изпълняват като една обобщена операция или действие. След като дадена функция бъде създадена, което се осъществява чрез нейното дефиниране, тя може да бъде изпълнявана многократно. Всяко изпълнение на дадена функция може да бъде с различни данни, тъй като конкретните данни се задават при извикване /активиране/ на функцията. В резултат на изпълнението си функциите могат да връщат стойност, която се нарича върната стойност - Return value , но могат и да не връщат.
  • 44. Функции Функциите осигуряват по-добра възможност за приспособяване на приложението, което се прави и висока степен на преизползваемост на кода. До този момент познаваме функциите: print type range Те са част от многото вградени в Python функции. Освен вградените функции, потребителят може да създава свои собствени. Те се наричат потребителски дефинирани функции.
  • 45. Дефиниране на функции Ключовата дума def въвежда дефиниция на функция. Тя трябва да бъде последвана от името на фукнцията и списък на формалните параметри в скоби. Операторите, образуващи тялото на функцията, започват от следващия ред и трябва да бъдат с отстъп. Параметрите на функцията се наричат аргументи. Функциите могат да приемат произволен брой аргументи. Операторът return връща изпълнението от функцията, предавайки стойност.
  • 46. Return value - Връщаща стойност Връщането на стойност е възможно да се осъществи чрез return. Функцията ще приключи, ако return не е използвано. Връща се None. Return може да върне само един обект. Възможно е да се върнат повече обекти, като се поставят в tuple.
  • 47. Параметри Python използва препратки/референции/, за да достави параметри на функциите. За числови стойности, ако данните се променят в рамките на функцията, това не се отразява на самата функция. Въпреки това, за някои параметри, формирани от списъци, ако се порменят данните в рамките функцията ще се види, че промененото съдържание е отразено извън функцията.
  • 48. Глобални и локални променливи Глобалните променливи са променливи, които са декларирани извън пределите на функцията. Локалните променливи са променливи, декларирани в самата функция.
  • 49. pass pass се използва за създаването на код, който няма да изпълни никакъв вид действие. Код, който не прави нищо, но дори и да прави няма да се получи никакъв резултат. Използва се често. Например, когато се създава постоянна функция, клас или модул при разработката на проект. Може да се присвои име, но не и съдържание.
  • 50. Модули Какво е модул? Изплзване на модули Създаване на модули
  • 51. Модули Модул – колекция от функции със специфични цели, които могат да се преизползват в много различни случаи. В Python съществуват около 200 модула, които от своя страна могат и да се комбинират. Всеки модул може да вкара в себе си друг модул.
  • 52. Използване на модули Модулите се извикват с ключовата дума import, след което следва името на модула, който искаме. Можем да извикаме функцията, която ни трябва. Например math.sqrt. Освен функции, могат да се използват и константи, които са дефинирани с конкретно име.
  • 53. Инструкцията from Инструкцията from e подходяща за импортирване само на определени идентификатори. Например from math import pi.
  • 54. Създаване на модули Пример за създаване на модул calculate.
  • 56. Класове Клас Деклариране на класове Връзка между Клас и Инстанция Конструктор и Деструктор Сатичен метод Презареждане на оператори Наследяване
  • 57. Класове Класът е една от характеристиките на обектно-ориентираното програмиране. Това е съвкупност от променливи и функции, които са обвързани в логическа структура и работят заедно. Класът служи като модел за представяне на реални обекти и софтуерни обекти, описвайки атрибути (свойства) и методи (поведение) на обектите. Класовте са проектирани да създават и обработват обекти. Те са един вид описание на обектите. Класовете са един от най-полезните инструменти, които предоставя Python.
  • 58. Класове Обектите се създават чрез дефиниране на класове. Всичко, което искаме да създдем в програмите си са реални обекти, чийто атрибути представляват тяхната характеристика, а методите са всъщност начинът по който се държат. Методите са нещата, които обекта може да прави. Класовете всъщност са планове за създаването на обекти. Един клас не е обект, а е дизайн за него.
  • 59. Дефиниране на класове Създаването на класове започва с ключовата дума class, следва името на класа и две точки :. След това се разполага тялото на класа. Може да се създада обикновен клас без никакво съдържание като се използва ‘pass’.
  • 60. Дефиниране на класове Създаването на класове започва с ключовата дума class, следва името на класа и две точки :. След това се разполага тялото на класа. Дефинираните функции в тялото на класа са методи на класа. Методът е подобно на функция нещо, което се съдържа в класа и или променя самия клас, или извършва някакво действие, в зависимост от класа. Първият аргумент self е reference към обекта, на който се извиква. Променливите, дефинирани в този блок са статични за класа.
  • 61. Инстанция Клас инстанцията сочи към място в паметта, използвано за съхранение и запазване на действителното съдържание на класа.
  • 62. Връзка между клас и инстанция isinstance метода може да се използва, за да се научи за връзката между клас и инстанция. Инстанцията е поставена за първи аргумент, а името на класа ще се използва като втори аргумент. Това може да се използва, за да се разбере дали инстанция е създадена за конкретния клас.
  • 63. Конструктор и Деконструктор Конструктора е метод, който се извиква автоматично от интерпретатора при инициализацията на класа. В Python този метод се нарича __init__(). Използва се за инициализация на обектите на класа. Аналогично, за да бъде унищожен обектът се използва деконструктор __del__(). Конструктора и деконструктора са методи в клас, така че първият аргумент трябва да сочи към тяхната инстанция.
  • 64. Сатичен метод В класа може да бъде създаден метод, който да е достъпен, без да е необходимо създаването на инстанция на класа. За дефиниране на този статичен метод се използва staticmethod.
  • 65. Наследяване Една от най-важните техники в ООП е наследяването. Чрез него можем да създадем клас, в който да бъдат достъпни всички атрибути и методи на родителския(базовия) клас, както и някои нови методи и атрибути. class DerivedClassName(BaseClassName): <statement-1> . . . <statement-N>
  • 66. Презареждане на оператори Презареждането на обикновенните оператори позволява на инстанциите на класовете да участват в прости действия като например събиране и изваждане. Ако желаете да съберете два обекта, за тях трябва да бъде дефиниран методът __add__.