Авторлық бағдарлама

Тақырып бойынша 31 материал табылды

Авторлық бағдарлама

Материал туралы қысқаша түсінік
Бағдарламаның мақсаты: құрылымдық бағдарламалау туралы негізгі түсініктерді қалыптастыру, Python тілінде бағдарламалау дағдыларын қалыптастыру.
Материалдың қысқаша нұсқасы

Түркістан облысы,Созақ ауданы , Шолаққорған ауылы

«№14 Т.Әлімқұлов мектеп-интернат лицей» коммуналдық мемлекеттік мекемесі, информатика пәні мұғалімі:





















Байкөбекова Айгерім Қанатбекқызы














Р11 «Python тілінде бағдарламалау» авторлық бағдарлама



















2024 оқу жылы





























Мазмұны

  1. Түсінікхат ...................................................................................................

  2. Бағдарлама мазмұны ..................................

  3. Қысқа мерзімді сабақ жоспарлары ..............................

  4. Пайдаланылған әдебиеттер тізімі ........................................................















Түсінікхат

Қазіргі заманда жастарға ақпараттық технологиямен байланысты әлемдік стандартқа сай мүдделі жаңа білім беру өте қажет.    Н.Ә.Назарбаев.

Әлемдік білім беру кеңістігіне бағытталған білім берудің негізгі мақсаты – білімді меңгеріп қана қоймай, білік пен дағды арқылы дербестік, ізденімпаздық, дені сау, өзгермелі жағдайда білімді де білікті жасөспірімдерді жан-жақты жеке тұлға ретінде даярлау. Осы мақсаттарды іске асыруда бүгінгі мектеп оқушыларына қойылып отырған мәселелер күн сайын талаптануда. Өйткені келешек қоғамымыздың басты тұлғасы бүгінгі мектеп оқушылары. Жаңа ғасырдың жан - жақты зерделі, талантты адамын қалыптастыру бағытындағы білім беру мәселесі мемлекетіміздің басты      назарында. Егеменді ел болып, «ел межесі - елулікке ену» басты мақсатымыз болған соң, білім мен ғылым саласы дүниежүзілік деңгейге сай болуы керек.

Мұғалім иннотехник инновациялық технологияларды жетік меңгерген педагог дәрежесіне көтерілу үшін инновациялық технологияларды меңгеру керек, содан кейін пән бойын ша қандай тарауға, не тақырыпқа пайдалану тиімді деген зерттеу жүреді. Яғни, әрбір инновациялық технологияларды меңгереді, содан кейін меңгерген технологияларды апробациядан сабақ барысында қолдану өткізеді, мұғалім талдау жасай отырып, қандай тарауға немесе тақырыпқа сай қарап тиімді технологияны таңдайды. Бір сабақтың барысында бірнеше технологияны кезекпен, тиімді, оқушыны жалықтырмай жүргізуге болады. Информатика сабағында инновациялық технологияларды пайдалану арқылы оқушылардың ақпараттық құзіреттілігін қалыптастыру, қазіргі заман талабына сай  ақпараттық технологияларды, электрондық оқулықтарды және Интернет ресурстарды пайдалану оқушының білім беру үрдісінде шығармашылық қабілетін дамытуға мүмкіндік береді. Осы мәселелер бағдарламаның өзектілігін айқындайды.

Информатикадан «Python тілі: бағдарламалау негіздері» бағдарламасы белгілі алгоритмдерін енгізу – бұл құрылымдық бағдарламалаудың негізгі ұғымдарына (мәліметтер, операциялар, айнымалылар, бағдарлама тармақтары, циклдар мен функциялар, массивтер, файлдар) түсінік беретін бағдарламалаудың курсы. Python бағдарламасының ерекшелігі: кодтың анықтығы, іске асу жылдамдығы сияқты басқа тілдерге қарағанда бірқатар артықшылықтары бар . Бағдарламалау көптеген белгілі алгоритмдерді жүзеге асырады:

  • Евклидтің алгоритмі (ең үлкен ортақ бөлгішті табу)

  • Python бағдарламалау тілінде факториалды есептеу

  • Массивтегі элементті екілік (екілік) іздеу

  • Тізімдегі элементтерді ауыстыру

  • Сандарды ондық жүйеден екілік жүйеге ауыстыру

  • Эратосфен елегі - жай сандарды анықтау алгоритмі

  • Таңдау бойынша сұрыптау (минималды іздеу және ауыстыру)

  • Көпіршікті әдіс бойынша сұрыптау

  • Санның цифрларының қосындысы және көбейтіндісі

  • Бөлгіштердің үстінен қайталау арқылы санның басымдылығын тексеру

  • Фибоначчи сандары (біраз цикл және рекурсия көмегімен есептеу)

Бағдарламаның мақсаты: құрылымдық бағдарламалау туралы негізгі түсініктерді қалыптастыру, Python тілінде бағдарламалау дағдыларын қалыптастыру.

Бағдарламаның міндеттері:

  • информатикаға қызығушылық тудыру;

  • оқушылардың алгоритмдеу және бағдарламалау дағдыларын қажет ететін мамандықтарға қызығушылығын қалыптастыру;

  • алгоритмдік ойлау мәдениетін дамыту;

  • мектеп оқушыларына құрылымдық бағдарламалауды түсінікті бағдарламалар құруды көздейтін әдіс ретінде үйрету;

  • оқушылардың Python тілінде іске асырылатын мәселелерді шешудің барлық әдістерін дамытуға ықпал ету;

  • мектеп оқушыларын еңбек нарығында табысты жылжыту үшін білім беру нәтижелеріне жетуге бағыттау.

Университеттердегі 39 ірі бағдарламалау бөлімдерінің 27-сі (69%) Python-да курстар ұсынады. Соңғы үш жылда жағдай өзгерді. Атап айтқанда, MIT және Берклидегі Калифорния университеті жақында бағдарламалаудың кіріспе курстарын Python-ға аударды. Java танымалдылығы бойынша екінші орында (39-дан 22), одан кейін MATLAB (8), C ++ (6), C (6), схема (4), Scratch (3) тұр. ACM журналындағы зерттеудің авторы барлық университеттердегі бағдарламалау курстарының атауымен ақпарат жинауда жақсы жұмыс жасады. Тізім біртіндеп жаңартылады, өйткені оқырмандар өздерінің университеттерінен жаңартылған ақпаратты жібереді.

Бағдарламалау тілін таңдаудың басқа критерийлері:

  • Бағдарламалау тілі - бұл мақсат емес, құрал

  • платформаларды ақысыз енгізу

  • Ыңғайлы даму ортасы бейімделген

  • оқу үдерісіне арналған

  • кең таралуы,

  • тілдің сақталуы және дамуы

  • Автоматты тексеру мүмкіндігі

  • оқушылардың тілді түсінуі және жеңіл қабылдауы.

Python тілінің артықшылықтары:

    • кең бағдарламалық жасақтама тілі және үлкен стандартты кітапханасы

    • өндірістік бағдарламалау, «үй» қосымшаларын шешу және оқыту үшін қолданылады

    • кросс-платформа, ақысыз енгізу

    • Жақсы құжатталған (python.org)

    • Барлық Linux дистрибутивтерінде қол жетімді, терезелер үшін де ақысыз.

Python тілінің ерекшеліктері:

  • жақсы түсіндірілген

  • Код блоктары шегініс көлемімен ерекшеленеді: max = A [0] A үшін elem үшін: егер elem> max: max = elem

  • Айнымалыларды динамикалық теру a = 2 + 2 а = «сәлем» Толығымен объектіге бағытталған басып шығару («» .қосылу (карта (str, сұрыпталған (тізім (карта (int, кіріс (). бөлу ())))))

Python - бұл барлық талғамға арналған тіл:

    • Деректердің жоғары деңгейлі құрылымдары: тізімдер, жиынтықтар, ассоциативті массивтер

    • Функционалды бағдарламалау элементтері

    • GUI дамыту

    • Желілік қосымшалар

    • Веб-қосымшалар

    • Дерекқор

Өте қысқа және түсінікті синтаксис:













Python 2 және 3 нұсқалары:

Қазір тілдің екі негізгі нұсқасы бар - 2 және 3, олар толық сәйкес келмейді

2-нұсқаға сәйкес көптеген әзірлемелер

3-нұсқа тілдік дизайн тұрғысынан өте жақсы

Алайда, 2-нұсқасы әзірленбейді, сондықтан 3-нұсқасын қолданған жөн.

Автоматты тексеру:

жүйені бағалауда қолдау және басқалары

http://informatics.mccme.ru сайтында қолдау көрсетіледі

Бағдарламалау бойынша алғашқы дайындықтан жоғары деңгейдегі олимпиадаларға дейінгі дайындық курстарын қолдау

Басқа сайттарда қолдау көрсетіледі: http://neerc.ifmo.ru/school/ http://www.codeforces.ru.

Пәнаралық байланыстар:

математикамен (қайталау, бағдарламалаудың математикалық бағдарламалық жасақтамасының негізгі алгоритмдерін оқып үйрену),

ағылшын тілімен (балаларға арналған танымал кітаптарды Python-да ағылшын тілінде қосымша әдебиет ретінде пайдалану ұсынылады)

Бағдарламаны оқыту үшін Python-ді таңдау – бұл оқушыларға ІТ индустриясын дамытудың заманауи және перспективалы жолдарының бірі бойынша алғашқы қадамдарды жасауға мүмкіндік туғызады.

Жоспарланған нәтижелерге қойылатын талаптар

Бағдарламаны аяқтағаннан кейін оқушылар:

  • Python тілінің жоғары деңгейлі бағдарламалау тілдерінің арасындағы орнын білу;

  • Python тілінде берілген бағдарлама құрылымының ерекшеліктерін білу;

  • Python ортасына кіретін модульдер туралы түсінік бар ма?

  • дайын модульдерді қолдану мүмкіндіктері мен шектеулерін білу;

  • мөлшері, оның сипаттамалары туралы түсінікке ие болу,

  • операцияның, операндтың не екенін және олардың сипаттамаларын білу;

  • құрылымдалған және құрылымдалмаған құндылықтар арасындағы түбегейлі айырмашылықтарды білу;

  • сан, мәтін, кортеж, тізім, сөздік, сияқты мәліметтер құрылымдары туралы түсінікке ие болу - арифметикалық өрнектің құрамы туралы түсінікке ие болу;

  • Python құрамына кіретін математикалық функцияларды білу;

  • логикалық өрнектер және олардың операндары, амалдары мен функциялары туралы түсінікке ие болу;

  • оларға енгізілуі мүмкін барлық атрибуттардың арифметикалық және логикалық өрнектерінің мысалдарын жаза білу;

  • Python тілінің негізгі операторларын, олардың синтаксисін білу;

  • операторлардың әрқайсысының орындалу процесі туралы түсініктері болуы керек;

  • сандық және символдық ақпараттарды өңдеуге арналған бағдарламалар жасай білу;

  • бағдарламалар құра білу (сызықтық, тармақталу және циклдармен),

  • жоғары деңгейлі құрылымдық тіл үшін толыққанды процедуралар мен функциялардың мағынасы туралы түсінікке ие болу;

  • Python-дағы процедуралар мен функцияларды сипаттау және процедуралық шақыруды құру ережелерін білу;

  • формальды, локальді және глобалды айнымалылар арасындағы түбегейлі айырмашылықтарды білу;

  • процедуралар мен функцияларды қалыптастырудың негізгі әдістерін игеру, қалай көмектесуге болатындығын білу.

  • Бағдарламада «массив», «матрица» типін анықтайтын тізімдер - «массив», «матрица» сияқты мәліметтердің қасиеттерін білу - реттелген массивтен іздеу, массивтер мен матрицаларды сұрыптау алгоритмдерін көбейте білу, бұл алгоритмдерді сандық емес массивтерде сұрыптауға және іздеуге дейін кеңейту - берілген форматтағы мәтіндік файлдарды оқи және жаза білу.

  • Python ортасында түсіндірме жазбада келтірілген негізгі алгоритмдік есептерді шешу.

Аптасына 1 сағат, жалпы 34 сағат.

Бағдарлама мазмұны



Күнтізбелік-тақырыптық жоспарлау


Тақырыптар

Сағат саны

Мерзімі

1

Python бағдарламалау тілі туралы жалпы деректер.

1


2

Python бағдарламалау тілінің шығу тарихы

1


3

Негізгі Стандартты Python модульдері

1


4

Python тіліндегі жолдар.

1


5

Python тіліндегі сандар.

1


6

Python тіліндегі сандар.

1


7

Функциялар және файлдармен жұмыс.

1


8

Сандық алгоритмдер.

1


9

Матрицалық есептеулер.

1


10

Web-қосымшаларды әзірлеу.

1


11

Практикалық тапсырма

1


12

Python-ғы желілік қосымшалар.

1


13

Python-ғы желілік қосымшалар.


1


14

Мәліметтер базасымен жұмыс

1


15

Көп ағынды есептеулер

1


16

Пайдаланушының графикалық интерфейсі бар қосымшаларды жасау.

1


17

Пайдаланушының графикалық интерфейсі бар қосымшаларды жасау.

1


18

Python тілінің интерпретаторы құрылғысы.

1


19

Практикалық тапсырмалар

1


20

Басқа бағдарламалау тілдерімен Python интеграциясын қарастыру, талдау.

1


21

Басқа бағдарламалау тілдерімен Python интеграциясын қарастыру, талдау.

1


22

Функция, рекурсия

1


23

Массивті өңдеу алгоритмі

1


24

Массивті өңдеу алгоритмі

1


25

Өзіндік жұмыс

1


26

Шығармашылық жұмыс

1


27

Жиындар

1


28

Жиындарға амалдар қолдану

1


29

Арифметикалық өрнектерді есептеу

1


30

Программалау стилі

1


31

Питон тілін қолдану неге тиімді?


1


32

Практикалық тапсырмалар

1


33

Жоба қорғау

1


34

Қорытындысабақ

1



Барлығы -34 сағ



Қысқа мерзімді сабақ жоспарлары

Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python бағдарламалау тілі туралы жалпы деректер.

Сабақтың мақсаты

Python бағдарламалау тілі туралы жалпы деректер беру, тіл мүмкіндіктерін қарастыру.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Оқушылар зерттеуі

Python - жоғары дәрежелі кодтың оқылуын және әзірлеушінің өнімділігін арттыруға мақсатталған жалпы мақсаттағы бағдарламалау тілі. Python тілі аз синтаксисті талап етеді. Бірақ сол уақытта стандартты кітапханасы үлкен көлемді пайдалы функцияларды қамтиды.

Тілдің кеңейткіштері:.py, .pyw, .pyc, .pyo, .pyd болып келеді.

Python тілін әзірлеу голланд институтының қызметкері Гвидо ван Россуммен 1980 жылдың соңында басталған. Ол оны бос уақытында жаза бастаған. 1991 жылыдың 20 ақпанында алғашқы мәтіндерін жаңалықтар топтамасында жарыққа шығара бастады. Python тілі бастапқыдан объектіге бағытталған бағдарламалау тілі ретінде жобаланды.

Автор бағдарламаны 1970-жылдардағы танымал британ комедиялық «Монти Пайтон Ұшатын циркі» телешоуының құрметіне атаған. Көбі оны жыланның атымен байланыстырады. Бағдарламаның python.org сайтында (2.5 нұсқасына дейін) жыланның басы бейнеленген. Python әзірлеушісінің негізгі мақсаты - оны қолданушыға қызықты етіп жасау болды. Оны атауынан да байқауға болады. Оның бұл мақсаты бағдарламаны үйретуді ойын түрінде ұйымдастырып, ақпараттық материалдармен жабдықтағандығында. Бұл тілге деген қолданушылардың жақсы сын пікірлерінен Гвидоның дизайнерлік құрылымының да ұтымды болғанын дәлелдейді

2008 жылдың 3 желтоқсанында ұзақ тестілеуден кейін Python 3000 (немесе Python 3.0) бірінші нұсқасы шыққан. Python 3000 бағдарламалау тілінде Python ескі нұсқаларымен сәйкестікті максимум сақтауға тырыса отырып, архитектурасы бойынша кемшіліктерді жойған. Қазіргі күні (Python 3.x және 2.x) екі даму бұтақтары да қолданып келе жатыр.

Python тілінің негізгі және аралық нұсқаларының уақыты:

  • Python 1.0-Қаңтар 1994;

  • Python 1.5 - 31 желтоқсан 1997;

  • Python 1.6-5 қыркүйек 2000;

  • Python 2.0 - 16 қазан 2000;

  • Python 2.1 - 17 сәуір 2001;

  • Python 2.2 - 21 желтоқсан 2001;

  • Python 2.3-29 шілде, 2003;

  • Python 2.4 - 30 қараша 2004;

  • Python 2.5-19 қыркүйек, 2006;

  • Python 2.6-1 қазан, 2008;

  • Python 2.7-3 шілде, 2010;

  • Python 3.0-3 желтоқсан, 2008;

  • Python 3.1-27 маусым 2009;

  • Python 3.2-20 ақпан, 2011;

  • Python 3.3-29 қыркүйек, 2012;

  • Python 3.4-16 наурыз, 2014.

Python тіліне басқа тілдердің ықпалы.

Python тілінің кешірек шыққандықтан оған көптеген тілдердің ықпалы болды. Мысалы келесі тілдердің:

  • ABC — операторларды топтаудың шегіністері, жоғары деңгейлі деректер құрылымы. (Python тілі шындығында келегенде, ABC ОББ тілін жобалауда кеткен қателіктерді түзету үшін құрылған тіл болатын);

  • Modula-3 — бумалары, модульдері;

  • СC++ — біршама синтаксистік конструкциялары;

  • Smalltalk — объектіге бағытталған программалау;

  • Lisp — (lambda, map, reduce, filter и другие)

  •  —массивтер, кешенді арифметика;

  • Java — logging, unittest, threading модульдерін,xml.sax стандартты библиотекасын, finally және except-тің ескерпелерді өңдеудегі біріктірілген қолданылуын;

  • Icon — генераторларын.

Python тілінің басым бөлігі (мысалы, бастапқы кодтың байт-компиляциясы) бұрынырақта басқа бағдарламалау тілдерінде іске асырылатын.



Python тілінің мүмкіндіктері


Python тілін бағдарламалауда қолданудың қажеттігін дәлелдейтін көптеген мүмкіндіктері бар. Олар келесілер:

  • xml/html файлдарымен жұмыс жасау;

  • httpсұраныстар жасау;

  • GUI (графикалық интерфейс)

  • Веб-сценарийлер құру;

  • FTP-мен жұмыс жасау;

  • Кескіндермен, аудио және видеомен жұмыс жасау;

  • Робототехникада қолдану;

  • Математикалық және ғылыми есептеулерді бағдарламалау және т.б.

Соған орай pythonбағдарламасы көптеген міндеттерді шешеді: резервті көшіру болсын, электронды поштаны оқу болсын немес қандай да ойынды құру болсын. Python бағдарламалау тілі ештеңемен шектелмегендіктен оны үлкен жобаларды пайдалануға болады. Мысалы ретінде, python тілі IT-дің алыптары болып табылатын, Google және Yandex жобаларында кеңінен қолданылады. Сонымен қатар, оның қарапайымдылығы мен әмбебаптығы бұл тілді ең үздік бағдарламалау тілдері қатарына қосады.

Тілін жүктеу және орнату. Python 3 бағдарламасын өз компьютеріңізге жүктеуді қарастырамыз. Ол тегін және еш тіркелусіз орындалады.

Windows жүйесіне Python тілін орнату

Алдымен оны ресми сайттан жүктеп алу керек. Басқа сайттардан көшіру қауіпті, яғни вирустық программалар болуы мүмкін. Программа тегін. Келесі сайттың адресіне кіру керек: https://python.org/downloads/windows/, ішенен "latest python release" және python 3 таңдау керек.



Сурет 1 Бағдарламаны көшіруге арналған сайттың алғашқы бетінен үзінді


Таңдаған нұсқа бойынша сипаттамалары жазылған терезе пайда болады. Беттің соңына дейін көшіп, "download page" ашамыз.



Жүктеуге болатын файлдар тізімі


Бұл жерден жүктеуге болатын файлдар тізімін байқауға болады. Сіздерге егер жүйе 32- биттік болса, онда Windows x86 MSI installer, егер жүйе 64-биттік болса, онда Windows x86-64 MSI installer файлын таңдау керек.



Жүктеуге арналған файлдар тізімі

Python тілі жүктелгенше күтеміз. Жүктелген файлды ашу керек. Шығарушы қатарында Python Software Foundation жазуын көрсеңіздер, онда дұрыс таңдалды. Басқа жазу тұрса, ондай файлды ашпаған жөн



Хабарлама терезесі


Барлық қолданушыларға немесе тек бір қолданушыға орнатуды орындаймыз (өз қалауларыңызбен орнату керек).


Орнату жағдайын таңдау терезесі


Орнатуға арналған буманы таңдау керек. Дискіден кез келген буманы таңдауға болады.


Орнататын буманы таңдау терезесі


Компонентерін таңдауға болады. Егер таңдау білмеген жағдайда үнсіз келісім бойынша қалдыру керек.



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python бағдарламалау тілінің шығу тарихы

Сабақтың мақсаты

Python бағдарламалау тілі туралы жалпы деректер беру, тіл мүмкіндіктерін қарастыру.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.




Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Оқушылар зерттеуі


Компоненттерді таңдау терезесі


Python бағдарламасының орнатылғанын күту керек.

Finish батырмасын басқан соң бағдарлама орнатылды деп есептеу керек. Бұл нұсқада IDLE «зірлеу ортасы ендірілген. Дәл қазір алғашқы бағдарлама жазуға болады.

Енді алғашқа бағдарламаны кез келген мәтіндік редакторда немесе IDLE әзірлеу ортасында жазуға болады.

IDLE әзірлеу ортасы. Алғашқы бағдарлама

Python бағдарламасын іске қосқан соң IDLE ортасын ашу керек (Python бағдарламалау тіліндегі әзірлеу ортасы).

IDLE ортасын іске қосу терезесі


IDLE ортасы бастапқыда интерактивті режімде ашылады. Кейіннен программаны жазуды бастауға болады. Салт бойынша алғашқы программа "hello world" болады.

Python тілінде "hello world" сөз тіркесін жазу үшін тек бір ғана жолдың жазылуы жеткілікті:


print("Hello world!")


Сурет 8 Python тілінде жазылған код


Бұл кодты IDLE ортасына енгізіп Enter батырмасына шертеміз.Нәтиже келесә суретте бейнеленген:



Интерактивті режім терезесі

Осымен интерактивті режіммен таныс болдық. Келесі кодтарды да жазып тексеріп көруге болады.

print(3 + 4)

print(3 * 5)

print(3 ** 2)

Негізінде интерактивті режім ең негізгісі болып табылмайды, сондықтан көбінде бағдарламалық кодтарды файлға жазып, файлды тексеруге жіберіп отырып жұмыс жаслады. IDLE интерактивті режімінде жаңа файл құру үшін File → New File (немесе Ctrl + N пернелер комбинациясын басу керек)



Жаңа файл құру терезесі


Ашылған терезеде келесі 15-суреттегі код теріледі:


name=input("Атыңыз кім? ")

print("Сәлем,",name)


Сурет 11 Алғашқы бағдарлама коды


Бірінші жол енгізуді талап етеді, яғни пернетақтадан жазған мәліметті енгізіп, Enter пернесін шерткенде енгізілген мәліметті name айнымалысына сақтайды..

Келесі жолда print функциясы қолданылады. Ол экранға Сәлем сөзінен кейін "name" айнымалысында сақталған сөзді шығарады.

Функционалды пернелерден F5 (немесе мәзірден IDLE Run → Run Module командасын таңдап) басу және шыққан нәтиженің дұрыстығын тексеру керек.

Келесі суретте бейнеленген скриншотта оң бағанында нәтиже, сол жақ бағанында жазған бағдарлама көрсетіледі.


Бағдарламаның нәтижесін шығару терезесі


Сонымен қарапайым бағдарламаның құрылуы іске асырылды. Енді тілдің синтаксисін қарастыруға болады.

Python тілінің синтаксисі. Негізгі ережелері:

  • Жолдың соңы интрукцияның соңы болып табылады (нүктелі үір қажет емес);

  • Ендірілген инструкциялар шегіністер өлшемі (көлемі) бойынша блоктарға біріктіріледі. Шегініс кезкелген болуы мүмкін, бастысы бір ендірілген блокқа бірдей шегініс өлшемі қолданылса болғаны. Кодтың оқылымы туралы да ұмытпау керек. 1 бос орын шегініс - ол ешқандай шешім болып табылмайды. Тым болмағанда 4 бос орын шегініс немесе табуляция белгісін қолданған дұрыс болады.

  • Python тілінде әр инструкциялар бір шаблонға сәйкес жазылады, негізгі инструкция қос нүктемен аяқталған соң, оның соңынан инструкцияның ендірілген блогы шегініс арқылы орналасады. Келесі суретте жазылуы бейнеленген:


  • Негізгіинструкция:

Инструкцияның ендірілген блогы


Инструкцияның жазылуының бейнесі


Бірнеше арнайы жағдайлар бар. Олар:

  1. Кейбір жағдайда бірнеше инструкцияны бір жолға нүктелі үтір арқылы жазуға болады:


a=1;b=2;print(a,b)


Бірнеше инструкцияны бір жолға жазу


Бұндайды көп қолдануға болмайды, әрқашан да оқылым туралы есте сақтау керек.

  1. Бір инструкцияны бірнеше жолға да бөліп жазуға болады. Ол үшін бірнеше доғал, квардатты немесе жүйелі жақшаны қолдану керек.


if(a==1andb==2and

c==3andd==4):# Не забываем про двоеточие

print('spam'*3)


Бір инструкцияны бірнеше жолға бөліп жазу коды


  1. Құрамдас интсрукцияның денесі сол негізгі дененің жазылған жолына орналасуы мүмкін, егер негізгі инструкцияның денесі құрамдас денені қамтымаса. Мысалы:


ifx>y:print(x)


Құрамдас және негізгі инчтрукцияның денесінің бір жолға жазылуы


Бағдарламалау тілінің толық синтаксисін түсіну үшін көптеген мысалдарды қарастыру керек. Бірнеше есептердің шығарылуын қарастырып барып түсінуге болады.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Негізгі Стандартты Python модульдері

Сабақтың мақсаты

Негізгі Стандартты Python модульдерін қарастыру.


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Оқушылар зерттеуі

  1. Модуль түсінігі.

Стандартты кітапхананың модульдерін зерттеуге кіріспес бұрын, Python-да модуль деп аталады.


Модульдік тәсілге сәйкес бағдарламалау үлкен міндет бірнеше ұсақ болып бөлінеді, олардың әрқайсысын (Идеалда) жеке модуль шешеді. Әр түрлі әдістемелерде модуль өлшеміне әртүрлі шектеулер беріледі, алайда бағдарламаның модульдік құрылымын құру кезінде модульдердің композициясын құру маңызды, ол олардың арасындағы байланысты барынша азайтуға мүмкіндік береді. Өз элементтері арасында көптеген байланыстары бар сыныптар мен функциялар жиынтығы бір модульде қисынды орналастыру болар еді. Тағы бір пайдалы ескерту бар: модульдерді қайта жазудан гөрі пайдалану оңай болуы керек. Бұл дегеніміз, модуль ыңғайлы интерфейс болуы керек: функциялар жиынтығы, сыныптар және тұрақты, ол өз пайдаланушыларына ұсынады.


Python тілінде бір мәселеге арналған модульдер жиынтығын пакетке қоюға болады. Мұндай пакеттің жақсы мысалы-XML пакеті, онда XML өңдеудің әр түрлі аспектілеріне арналған модульдер жинақталған.


Python бағдарламасында модуль Модуль-нысан-модуль, Оның атрибуттары модульде анықталған атаулар болып табылады:

>>> import datetime

>>> d1 = datetime.date(2004, 11, 20)

Бұл мысалда datetime модулі импортталады. Import операторының жұмысы нәтижесінде ағымдағы атау кеңістігінде datetime атымен объект пайда болады.


Python тіліндегі бағдарламаларда қолдану үшін модульдер өзінің шығу тегі бойынша кәдімгі (Python-да жазылған) және басқа бағдарламалау тілінде жазылған кеңейту модульдеріне (әдетте C-да) бөлінеді. Пайдаланушы тұрғысынан олар жылдам әрекетпен ерекшеленуі мүмкін. Стандартты кітапханада модульдің екі нұсқасы бар: Python және C.бұл, мысалы, pickle және cPickle модульдері. Әдетте Python модульдері кеңейту модулдеріне қарағанда икемді.


Python модульдері

Модуль бастапқы коды бар жеке файл түрінде ресімделеді. СтандарттыМодульдертілдіңтиістіинтерпретаторынтабаалатынкаталогтаболады. Pythonмодульдердііздейтінкаталогтарғажолдыsysайнымалысымәніненкөругеболады.path:

>>> sys.path

['', '/usr/local/lib/python23.zip', '/usr/local/lib/python2.3',

'/usr/local/lib/python2.3/plat-linux2', '/usr/local/lib/python2.3/lib-tk',

'/usr/local/lib/python2.3/lib-dynload',

'/usr/local/lib/python2.3/site-packages']

Соңғы Python нұсқаларында модульдерді жинақы сақтау үшін zip-мұрағатына (Java-дағы jar-мұрағаттарға ұқсас) орналастыруға болады.


Модульдерді іздеу бағдарламасын іске қосқан кезде, ағымдағы каталогта жүреді. (Стандартты немесе қосымша орнатылған модульдермен аттар қақтығысы болмас үшін өз модульдерін Мұқият атауыңыз керек.)


Python бағдарламасына модульді қосу import операторының көмегімен жүзеге асырылады . Оның екі нысаны бар : import және from-import:

import os

import pre as re

from sys import argv, environ

from string import *

Бірінші пішін көмегімен ағымдағы көріну аймағымен тек модуль объектісіне сілтеме жасайтын атау ғана байланысады, ал екіншісін пайдаланған кезде модуль объектілерінің көрсетілген аттары (немесе қолданылса, барлық аттары * ) ағымдағы көріну аймағымен байланысады. Импорттау кезінде, as арқылы элементтің атын өзгертуге болады. Бірінші жағдайда модуль атаулары кеңістігі бөлек атауда қалады және модульден нақты атауына кіру үшін нүктені қолдану қажет. Екінші жағдайда аттар ағымдағы модульде анықталғандай қолданылады:

os.system("dir")

digits = re.compile("\d+")

print argv[0], environ

Модульді қайта импорттау әлдеқайда жылдам жүреді , себебі Модульдер интерпретатормен кэштеледі. Жүктелген модульді reload функциясы арқылы тағы да жүктеуге болады (мысалы, модуль дискіде өзгерсе)():

import mymodule

. . .

reload(mymodule)

Бірақ бұл жағдайда модульдің ескі нұсқасынан сыныптардың даналары болып табылатын барлық объектілер өз мінез-құлқын өзгертпейді.


Модульдерменжұмысістеукезіндебасқа да қырлары бар . Мысалы, модульдіимпорттаупроцесінқайтаанықтауғаболады. Бұлтуралытолығырақтүпнұсқақұжаттамаданбілугеболады.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату






Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python тіліндегі жолдар.

Сабақтың мақсаты

Python тіліндегі жолдар туралы түсінік беру

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы


  1. Python тіліндегі жолдар



Жолдар. Жолдағы бос орындарды немесе бірнеше бос орындарды «*» таңбасымен алмастыруды қарастырайық.

Бұндай есепті шығару үшін бірінші алгоритмін құрып алу керек. Егер жолда бірнеше бос орын кездессе оны бір «*» таңбасымен алмастырып, ал жолдың басы мен соңындағы бос орындарды ою керек.

Есепті шығару алгоритмі:

Жолды басынан бастап әр таңбасын қарап шығу. Бірінші тұрған бос орындық емес таңбаның нөмірін есте сақтау қажет. Жолдың босорындық емес бірінші таңбасынан соңына дейін бір бөлікті алу.

Жолды соңынан бастап қарап шығу. Жолдың соңынан бастағандағы босорындық емес таңбаның нөмірін есте сақтау. Жолдың басынан бастап соңынан санағандағы бірінші босорындық емес таңбаға дейінгі жолдың бір бөлігін алу.

Жаңа жолға ескі жолдың бірінші таңбасын меншіктеу (ол барлық жағдайда бос орын емес).

Ескі жолдың әр таңбасын қарап шығу. Егер келесі таңба бос орын болмаса, онда жаңа жолды осы таңбаны қосу арқылы форматтау керек. elif  бұтасына бос орын таңбалары орналасады, бірақ бұл кезде бұрынғы таңба бос орынға тең болды ма сол тексеріледі. Егер олай болмаса, онда тек қана сонда жаң жолға "*" қосылады. Артық бос орындар жаңа жолға қосылмай алып тасталады.

Мысалы:

s =input()

 i =0

while s[i]==' ': i+=1

s = s[i:]

i =len(s)

while s[i-1]==' ': i-=1

s = s[:i]

s1 = s[0]

i =1

while i <len(s):

if s[i]!=' ':

s1 += s[i]

elif s[i-1]!=' ':

s1 +='*'

i +=1

print(s1+'!')

Скриптің орындалу мысалы:

one two three four f*ve six seven

one*two*three*four*f*ve*six*seven!

Бірақ Python бағдарламалау тілінде жолды тізімге айналдыру арқылы есепті шешу немесе тұрақты өрнектер арқылы шығару оңайға түседі.

Бұндағы split() әдісі арқылы жолдар бос орындар бойынша сөздерге бөлінеді. Бұл жерде олардың саны маңызды емес. Ары қарай тек сөздерді қайта жолға "*" таңбасы арқылы жинақтау қалады:

s =input()

l = s.split()

s1 =''

for i in l:

s1 += i + '*'

s1 = s1[:-1]# соңғысын жоямыз "*"

print(s1)


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python тіліндегі жолдар.

Сабақтың мақсаты

Python тіліндегі жолдар туралы түсінік беру

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Оқушылар зерттеуі


Жолдардан санды таңдап алу. Натурал сандар мен сөздерден тұратын жолдар берілген. Бұл жолдардағы сандардантізім құрау керек. Ол үшін жолдарды әрбір таңбасы бойынша қарап шығу керек. Егер келесі таңба сан болса оны жаңа жолға қосу керек. Ары қарай одан кейінгі таңбаларды қарап шығу керек. Егер олар да сандар болса, оларды да жолдың соңына тіркеп отыру қажет. Келесі таңба сан емес болып шыққан жағдайда немесе жолдың соңына жетсек цифрларландан тұрған жолды сандарға айналдырып тізімне қосу керек.

Осы бағдарламаның листингі келесі суретте бейнеленген:


s =input()

l =len(s)

integ =[]

i =0

while i < l:

s_int =''

a = s[i]

while'0'<= a <='9':

s_int += a

i +=1

if i < l:

a = s[i]

else:

break

i +=1

if s_int !='':

integ.append(int(s_int))

 

print(integ)

5 dkfj78df 9 8 dkfj8

Жауабы: [5, 78, 9, 8, 8]

Жолдардан санды таңдап алу бағдарламасының листингі


Нөмірі бойынша сөзді табу. Мәтіннен арнайы нөмірі бойынша сөзді табу (мысалы, реттік нөмірі бесінші сөзді табу). Экранға ол сөздің бірінші әрпін шығару керек.

Сөзді санау үшін төмендегі программада count айнымалысы қолданылады, ал f – біздің сол сөзде тұрымыз ба, әлде келесі жаң сөз басталып кетті ме соны анықтайды.

Егер жаңа сөз басталса, сөздер есептегіші арта түседі, ал егер есептегіш ізделінудегі сөздің нөміріне тең болса цикл аяқталады.

s =input()

l =len(s)

n =int(input("Номерслова: "))

count =0

f =0

i =0

while i < l:

if s[i]!=' 'and f ==0:

count +=1

f =1

if count == n:

break

elif s[i]==' ':

f =0

i +=1

print(s[i])

Кодтың орындалу мысалы:

Келесі мәндер енгізіледі: один два три четы пять шесть

Сөздің нөмірі: 4

Жауабы: ч

Алайда бұл есепті Pythonтілінің көмегімен шығару әлдеқайда ауқымды емес, яғни төмендегі кестеде көрсетілгендей жазып шығуға болады.


Кесте 1

Python тіліндегі есептің қысқаша жазылу кестесі

s =input()

l =len(s)

n =int(input("Номерслова: "))

s = s.split()

print(s[n][0])


Бұндағы split() әдісі аргументсіз болған жағдайда, жолды бос орындары бойынша сөздерге бөледі. s[n][0] өрнегі тізімнен n- элементті алып тастап, содан соң жолдан бірінші таңбаны алады.



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,



Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату





Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python тіліндегі сандар.

Сабақтың мақсаты

Python тіліндегі сандар түрлерін қарастыру

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Оқушылар зерттеуі

. Python тіліндегі сандар.



Python тілінде сандар келесі түрлері бар: бүтін, нақты, комплексті. Бүтін сандар (int). Python тіліндегі сандардың қарапайым сандардан еш айырмашылығы жоқ. Олар қарапайым математикалық операцияларды қолдайды және 5-кестеде көрсетілген.


Математикалық операциялар

x + y

Қосу

x – y

Айырма

x * y

Көбейту

x / y

Бөлу

x // y

Бөлгендегі бүтін бөлік


2-кестенің жалғасы

x % y

Бөлгендегі қалдық

-x

Санның белгісін ауыстыру

abs(x)

Сан модулі

divmod(x, y)

(x // y, x % y) жұп

x ** y

Дәрежеге шығару

pow(x, y[, z])

xy модулі бойынша (егер модулі берілсе)


Тағы бір айта кететіні, Python тіліндегі бүтін сандар, басқа бағдарламалау тілдеріне қарағанда ұзақ арифметиканы қолдайды (бірақ ол жадыдан көп орын талап етеді). Мысалы келесі 22-суретте бағдарламаның бөлігінің листингі көрсетілген.


>>>255+34

289

>>>5*2

10

>>>20/3

6.666666666666667

>>>20//3

6

>>>20%3

2

>>>3**4

81

>>>pow(3,4)

81

>>>pow(3,4,27)

0

>>>3**150

369988485035126972924700782451696644186473100389722973815184405301748249

Бүтін сандарға қолданылған операциялар


Биттік операциялар. Бүтін сандармен де биттік операцияларды орындауға болады.


Биттік операциялар тізімі

x | y

Биттік не
есе

x ^ y

Биттік «алып тастағыш» немесе

x & y

Биттік и

x << n

Солға биттік жылжу

x >> y

Оңға биттік жылжу

~x

Биттер инверсиясы


Қосымша әдістер. int.bit_length() - белгісі мен жетекші нөлдерін алып тастағандағы екілік жүйеде санды беру үшін қажетті биттер саны. Төменде көрсетілгендей:

>>>

>>>n=-37

>>>bin(n)

'-0b100101'

>>>n.bit_length()

6

int.to_bytes(length, byteorder, *, signed=False) – осы санды беретін байттар жолын қайтарады. Ол келесі 23-суретте көрсетілді.


>>> (1024).to_bytes(2, byteorder='big')

b'\x04\x00'

>>> (1024).to_bytes(10, byteorder='big')

b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'

>>> (-1024).to_bytes(10, byteorder='big', signed=True)

b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'

>>> x = 1000

>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little')

b'\xe8\x03'


Int.to_bytes әдісі


Келесі classmethod  int.from_bytes(bytes, byteorder, *, signed=False) әдісі аталған байттар жолынан сандарды қайтарады.

>>>int.from_bytes(b'\x00\x10',byteorder='big')

16

>>>int.from_bytes(b'\x00\x10',byteorder='little')

4096

>>>int.from_bytes(b'\xfc\x00',byteorder='big',signed=True)

-1024

>>>int.from_bytes(b'\xfc\x00',byteorder='big',signed=False)

64512

>>>int.from_bytes([255,0,0],byteorder='big')

16711680

Санау жүйелері. Сандар тек ғана ондық санау жүйесінде ғана емес сонымен қатар, басқа да санау жүйелерінде беріледі. Мысалы, компьютерде екілік санау жүйесі қолданылады. 19 саны екілік санау жүйесінде 10011 деп бейнеленеді. Кейбір жағдайда бір санау жүйесінен екіншіге көшу қажет болады. Оны орындауға Python тілі бірнеше функцияларды ұсынады:

  • int([object], [санау жүйесінің негізі]) – ондық санау жүйесіндегі бүтінге айналдыру. Бұл жерде үнсіз келісім бойынша ондық санау жүйесі қолданылады, бірақ негізін 2-ден 36-ға дейін таңдай отырып кез келген санау жүйесінде беруге болады.

  • bin(x) – бүтін санды екілік жолға айналдыру.

  • hex(х) - бүтін санды он алтылық жолға айналдыру.

  • oct(х) - бүтін санды сегіздік жолға айналдыру.

Келесі 20-суретте мысалдар көрсетілген.


>>> a = int('19') # жодысанағаайналдыру

>>> b = int('19.5') # жолбүтін сан болыптабылмайды

Traceback (most recent call last):

File "", line 1, in

ValueError: invalid literal for int() with base 10: '19.5'

>>> c = int(19.5) # жылжымалынүктесібарсанғақолданылғандабөлшекбөлігіналыптастайды

>>> print(a, c)

19 19

>>> bin(19)

'0b10011'

>>> oct(19)

'0o23'

>>> hex(19)

'0x13'

>>> 0b10011 # сандықтұрақтылықардыослайдажазуғаболады.

19

>>> int('10011', 2)

19

>>> int('0b10011', 2)

19


Санау жүйесіне арналған мысалдар листингі


Нақты сандар (float). Нақты сандар да бүтін сандардағы сиқты операцияларды қолдайды, бірақ сандарды компьютерде бергендіктен нақты сандар нақты болмауы және қателіктерге соқтыруы мүмкін және оның өзі қателіктерге әкелуі мүмкін.

>>>0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1

0.9999999999999999

Жоғары нақтылыққа қол жеткізу үшін басқа да объектілерді (Мысалы: Decimal және Fraction) қолдануға болады.

Сонымен қатар, нақты типтер ұзақ арифметиканы қолдамайды.

>>>

>>>a=3**1000

>>>a+0.1

Traceback (most recent call last):

File "", line 1, in

OverflowError: int too large to convert to float

Сандармен қарапайым мысалдар:

>>>

>>>c = 150

>>>d = 12.9

>>>c + d

162.9

>>>p = abs(d - c) # сан модулі

>>>print(p)

137.1

>>> round(p) # Дөңгелектеу

137

Қосымша әдістері:

  • float.as_integer_ratio() - қатынасыосысанғатеңболатынжұпсандар.

  • float.is_integer() - мәнбүтінсанбола ма.

  • float.hex() – float-ты hex-кетүрлендіреді(оналтылық жүйеде).

  • classmethod float.fromhex(s) - оналтылық жолдағы float.

>>>(10.5).hex()

'0x1.5000000000000p+3'

>>>float.fromhex('0x1.5000000000000p+3')

10.5

Python тілінде сандармен жұмысқа қатысты стандартты өрнектерден басқа бірнеше қажетті модульдер бар. Келесі math модулі күрделі математикалық функцияларды қамтамасыз етеді. Оның қолданылуы төмендегідей.

>>>importmath

>>>math.pi

3.141592653589793

>>>math.sqrt(85)

9.219544457292887

Келесі random модулі  - кездейсоқ сандар генераторы мен кездейсоқ функцияны таңдауды жүзеге асырады.

>>>importrandom

>>>random.random()

0.15651968855132303

Комплексті сандар (complex). Python тіліне сонымен қатар, комплекті сандар енгізілген.

21-суретте комплекс сандардың программада қолданылуы көрсетілген.


>>>x=complex(1,2)

>>>print(x)

(1+2j)

>>>y=complex(3,4)

>>>print(y)

(3+4j)

>>>z=x+y

>>>print(x)

(1+2j)

>>>print(z)

(4+6j)

>>>z=x*y

>>>print(z)

(-5+10j)

>>>z=x/y

>>>print(z)

(0.44+0.08j)

>>>print(x.conjugate())# түйіндес сан

(1-2j)

>>>print(x.imag)# жорамал бөлігі

2.0

>>>print(x.real)# нақты бөлігі

1.0

>>>print(x>y)# Комплексті санды салыстыруға болмайды

Traceback (most recent call last):

File "", line 1, in

TypeError: unorderable types: complex() > complex()

>>>print(x==y)# бірақ теңдікке тексеруге болады

False

>>>abs(3+4j)# комплексті сан модулі

5.0

>>>pow(3+4j,2)# санның дәрежесін шығару

(-7+24j)


Комплексті сандар


Комплексті сандармен жұмыс жасау үшін сонымен қатар, cmath модулі де қолданылады. 

Тізімдер (list). Тізімдердің функциялары мен әдістері. Тізімдер деген типке, олармен орындалатын операциялар және әдістерге, тізімдер генераторы және тізімдерді қолдануға тоқталайық.

Тізім дегеніміз не? Python-дағы тізім – ерікті түрдегі нысандардың (объектілердің) реттелген өзгертілетін топтамасы (массив сияқты, бірақ типтері әр басқа болуы мүмкін). Тізімдерді қолдану үшін оларды құрып алу керек. Тізімді бірнеше жолмен құруға болады. Мысалы, кез келген қайталанатын нысанды өңдеуге болады (мысалы, жолды list ендірілген функциясымен):

>>>list('тізім')

['с', 'п', 'и', 'с', 'о', 'к']

Тізімді литералдардың да көмегімен құруға болады:

>>>s=[]# Боссписок

>>>l=['s','p',['isok'],2]

>>>s

[]

>>>l

['s', 'p', ['isok'], 2]

Мысалда көрсетілгендей, тізімкез-келгеннысанның (кірістірілгентізімдердіқосаалғанда) кезкелгенсанынқамтуынемесеештеңені қамтымауы да мүмкін.

Тізімдіқұрудыңтағыбіржолы - тізімдергенераторы. тізімдергенераторы тізбектегі элементтің әрқайсысына өрнекті қолдана отырып жаңа тізімді құру тәсілі. Тізімдер генераторы for цикліне өте ұқсайды.

>>>c=[c*3forcin'list']

>>>c

['lll', 'iii', 'sss', 'ttt']

Тізімдер генераторының бұдан да күрделі конструкциясы болуы мүмкін.

>>>c=[c*3forcin'list'ifc!='i']

>>>c

['lll', 'sss', 'ttt']

>>>c=[c+dforcin'list'ifc!='i'fordin'spam'ifd!='a']

>>>c

['ls', 'lp', 'lm', 'ss', 'sp', 'sm', 'ts', 'tp', 'tm']

Бірақкүрделіжағдайлардатізімдердіжасауүшінәдеттегіfor циклықолданғанжөн.

Тізімдердің функциялары мен әдістері. Тізімді құрып алған соң олармен жұмыс істеуге болады. Тізімдер үшін негізгі ендірілген функциялар мен әдістер бар.


Тізімдер әдістері

Әдіс

Атқаратын қызметі

list.append(x)

Тізімнің соңына элемент қосады

list.extend(L)

L тізімінің барлық элементтерін соңына қосып list тізімін кеңейтеді

list.insert(i, x)

i-нші элементке x мәнін қояды

list.remove(x)

Х мәні бар тізімдегі бірінші элементті жояды. Егер ондай элемент жоқ болса ValueError деп шығады

list.pop([i])

i-ый элементті жояды және оны қайтарады. Егер индекс көрсетілмесе, соңғы элементті жояды

list.index(x, [start [, end]])

x мәні бар бірінші элементтің жағдайын қайтарады (бұнда іздеу start-тан end-қа дейін жүргізіледі)

list.count(x)

X мәні бар элементтердің санын қайтарады.

list.sort([key=функция])

Функциялар негізінде тізімді сұрыптайды

list.reverse()

Тізімді кеңейтеді (ашып жазады)

list.copy()

Тізімніңүстіңгікөшірмесі

list.clear()

Тізімді тазартады


Айта кету керек, тізімдер әдісі жолдың әдісіне қарағанда, тізімнің өзін өзгертеді, сондықтан орындаудың нәтижесін осы айнымалыға жазбауға болады.

>>>l=[1,2,3,5,7]

>>>l.sort()

>>>l

[1, 2, 3, 5, 7]

>>>l=l.sort()

>>>print(l)

None

Тізімдермен жұмыстардың мысалдары::

>>>a=[66.25,333,333,1,1234.5]

>>>print(a.count(333),a.count(66.25),a.count('x'))

2 1 0

>>>a.insert(2,-1)

>>>a.append(333)

>>>a

[66.25, 333, -1, 333, 1, 1234.5, 333]

>>>a.index(333)

1

>>>a.remove(333)

>>>a

[66.25, -1, 333, 1, 1234.5, 333]

>>>a.reverse()

>>>a

[333, 1234.5, 1, 333, -1, 66.25]

>>>a.sort()

>>>a

[-1, 1, 66.25, 333, 333, 1234.5]

Кейбір кезде өнімділікті арттыру үшін тізімдерді әлдеқайда икемді массивтермен алмастырады (бұндай жағдайда әдетте ендірілген кітапханаларды қолданады. Мысалы NumPy).

Кортеждер (tuple). Келесі деректер типі кортеждер (tuple) деп аталады. Олар негізінен өзгертілмейтін тізімдер болып табылады.

Олар не үшін қажет?

  • Қорғау үшін. Кортеж әдейі және кездейсоқ өзгертулерден қорғалған.

  • Өлшемі аз. Негізі болмас үшін:

>>>a=(1,2,3,4,5,6)

>>>b=[1,2,3,4,5,6]

>>>a.__sizeof__()

36

>>>b.__sizeof__()

44

Кортеждерді сөздіктердің кілттері ретінде қолдану мүмкіндігі:

>>>d={(1,1,1):1}

>>>d

{(1, 1, 1): 1}

>>>d={[1,1,1]:1}

Traceback (most recent call last):

File "", line 1, in

d = {[1, 1, 1] : 1}

TypeError: unhashable type: 'list'

Кортеждармен қалай жұмыс істеу керек? Кортеждермен жұмыс тізімдермен сияқты жүзеге асырылады. Бос кортеж құру:

>>>a=tuple()# tuple() ендірілген функциясы арқылы

>>>a

()

>>>a=()# кортеждің литералы арқылы

>>>a

()

>>>

Бір элементтен кортеж құрамыз:

>>>a=('s')

>>>a

's'

Бұл жерде жол пайда болды. Енді кортежді алу үшін келесі өзгерісті енгіземіз:

>>>a=('s',)

>>>a

('s',)

Байқағандай барлық мәселе үтірде болды. Өз-өзімен жақшалар ештеңені бермейді. Кортежді келесі түрде де құруға болады.

>>>a='s',

>>>a

('s',)

Әдетте жақша қою міндетті болады.

Қайталанатын объектісі бар кортежді де tuple() функциясы көмегімен қуруға болады.

>>>a=tuple('hello, world!')

>>>a

('h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!')

Кортеждермен операциялар. Тізімдермен орындалатын барлық операциялар, өзгертілмейтін тізімдер(қосу, санға көбейту, index() және count() әдістері және бірнеше басқа да операциялар) орындалады.

Сонымен бірге, элементтердің орнын әр түрлі түрде ауыстыруға және т.с.с. атқаруға болады.

Мысалы: Python-да екі айнымалының мәнінің орнын ауыстыру :

a,b=b,a



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,



Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату





Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Функциялар және файлдармен жұмыс.

Сабақтың мақсаты

Python бағдарламалау тілінде функциялар және файлдармен жұмыс жасауды қарастыру.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Теориялық материал

Оқушылар зерттеуі
Функциялар және файлдармен жұмыс.

Бұнда атаулы мен анонимді функциялар және def, return және lambda интрукциялары қарастырылады. Сонымен қатар, функцияның міндетті және міндетті емес аргументтері, еркін санды аргументтері бар функциялар қарастырылады.

Атаулы функциялар, def инструкциясы. Python тіліндегі функция аргументтер қабылдайтын және мәнді қайтаратын нысан болып табылады. Әдетте функция def инструкциясы көмегімен анықталады.

Қарапайым функцияны анықтайық:

defadd(x,y):

returnx+y

return Инструкция мәнді қайтаруды талап етеді. Ал аталған жағдайда функция x пен y қосындысын қайтарады. Енді оны шақыруға болады

>>>add(1,10)

11

>>>add('abc','def')

'abcdef'

Функция кез-келген күрделілікте болуы және барлық нысандарды (тізімдер, кортеждерді және тіпті функцияларды) қайтаруы мүмкін:

>>>defnewfunc(n):

... defmyfunc(x):

... returnx+n

... returnmyfunc

...

>>>new=newfunc(100)# new - бұлфункция

>>>new(200)

300

Функцияreturn инструкциясыменаяқталмауыдамүмкін, бірақ соның өзінде функцияNone мәнін қайтарады:

>>>deffunc():

... pass

...

>>>print(func())

None

Функцияаргументтері. Функция кез келген сандағы аргументтерді қабылдауы мүмкін немесе мүлдем қабылдамауы да мүмкін. Сондай-ақ, аргументтер саны кез келген, позициялық және атаулы аргументтері бар функциялар, міндетті және міндетті емес функциялар кең таралған.

>>>deffunc(a,b,c=2):# c – мінддетті емес аргумент

... returna+b+c

...

>>>func(1,2)# a = 1, b = 2, c = 2 (үнсіз жағдайда)

5

>>>func(1,2,3)# a = 1, b = 2, c = 3

6

>>>func(a=1,b=3)# a = 1, b = 3, c = 2

6

>>>func(a=3,c=6)# a = 3, c = 6, b анықталмаған

Traceback (most recent call last):

File "", line 1, in

func(a=3, c=6)

TypeError: func() takes at least 2 arguments (2 given)

Функция позициялық аргументтердің айнымалы санын қабылдауы мүмкін, ондай жағдайда оның атауының алдына * қойылады:

>>>deffunc(*args):

... returnargs

...

>>>func(1,2,3,'abc')

(1, 2, 3, 'abc')

>>>func()

()

>>>func(1)

(1,)

Мысалдан көргендей, функцияның барлық берілген аргументтерінің ішінен args – бұл  кортеж, сонымен қатар айнымалының өзімен де кортежбен сияқты жұмыс істеуге болады.

Функция атаулы аргументтердің кез келген санын қабылдай алады, онда атудың алдына ** белгісі қойылады:

>>>deffunc(**kwargs):

... returnkwargs

...

>>>func(a=1,b=2,c=3)

{'a': 1, 'c': 3, 'b': 2}

>>>func()

{}

>>>func(a='python')

{'a': 'python'}

Kwargs айнымалысында барлық әрекеттерді атқаруға болатын сөздік сақталады.

Анонимді функциялар, lambda инструкциясы. Анонимді функциялар тек бір ғана өрнекті қамтығандықтан тез орындалады. Анонимді функциялар lambda инструкциясының көмегімен құрылады. Сонымен қатар, оларды def func() инструкциясындағы сияқты міндетті түрде айнымалыларға меншіктеудің қажеті жоқ:

>>>func=lambdax,y:x+y

>>>func(1,2)

3

>>>func('a','b')

'ab'

>>>(lambdax,y:x+y)(1,2)

3

>>>(lambdax,y:x+y)('a','b')

'ab'

lambda функциясы басқа функцияларға қарағанда return инструкциясын қажет етпейді, ал басқа жағынан еш айырмашылығы жоқ:

>>>

>>>func=lambda*args:args

>>>func(1,2,3,4)

(1, 2, 3, 4)

Файлдар. Файлдармен жұмыс. Төмендеpython тілінің файлдармен әрекет жасауға арналған ендірілген құралдары қарастырылады: ашу / жабу, оқу және жазу.

Файлмен жұмыс жасау үшін алдымен оны ашып алу керек. Ол үшін open ендірілген функциясы қолданылады:

f=open('text.txt','r')

Open функциясының көптеген өлшемдері бар, бірақ олардың ішінде ең қажетті 3 аргументі бар. Олардың біріншісі файлдың аты, файлға баратын жолдың өзі салыстырмалы немесе абсолютті болуы мүмкін. Екінші аргумент –ол файлды ашу режімі.


Файлды ашу режімдері

Режім

Белгіленуі

'r'

Оқу үшін ашу (әдепкі мән болып табылады)

'w'

Жазу үшін ашу, файлдың ішіндегі мәні жойылады, файл жоқ болса, онда жаңадан құрылады

'x'

Жазу үшін ашу, егер файл жоқ болса, ондаерекше жағдай деп саналады

'a'

қосымшажазуүшінашу, ақпаратфайлдыңсоңынақосылады

'b'

Екілік режимде ашу

't'

мәтіндік режимде ашу (әдепкімәнболыптабылады)

'+'

оқужәнежазуүшінашу


Режимдер біріктірілген болуы мүмкін, яғни, мысалы, 'rb' – екілік режімде оқу. Әдепкі жағдайда мәні 'rt' болады.

Соңғы аргумент encoding, ол тек мәтіндік режімде файлды оқу кезінде қажет. Бұл аргумент кодтауды анықтайды.

Файлдан оқу. Файлды ашқан соң одан ақпаратты оқуымыз керек. Ол үшін оның бірнеше тәсілі бар, бірақ соның ішінде екеуі ғана қажет болады.

Бірінші – егер аргументсіз болса файлды тұтастай, егер n (бүтін санмен) аргументімен шақырылса, онда n символымен оқылатын read әдісі.

>>>f=open('text.txt')

>>>f.read(1)

'H'

>>>f.read()

'ello world!\nThe end.\n\n'

Тағы бір тәсілі – файлды - for циклін қолдану арқылы файлды жол жолымен оқу:

>>>f=open('text.txt')

>>>forlineinf:

... line

...

'Hello world!\n'

'\n'

'The end.\n'

'\n'

Файлға жазу. Файлға келесі тізімді жазуды орындап көрейік:

>>>l=[str(i)+str(i-1)foriinrange(20)]

>>>l

['0-1', '10', '21', '32', '43', '54', '65', '76', '87', '98', '109', '1110', '1211', '1312', '1413', '1514', '1615', '1716', '1817', '1918']

Файлды жазу үшін ашу:

>>>f=open('text.txt','w')

Файлға жазу write әдісі арқылы жүзеге асырылады. Ол келесі 26-суретте көрсетілген:


>>>forindexinl:

... f.write(index+'\n')

...

4

3

3

3

3



Write әдісі арқылы файлға жазу


Жоғарыда көрсетілген жазбалардан: write әдісі жазылған символдардың санын қайтарады

Файлмен жұмыс жасап болған соң оны міндетті түрде close әдісі арқылы жабу керек:

>>>f.close()

Енді осы тізімді құрылған файлдан қайта жасауға тырысайық. Ол үшін файлды оқу үшін ашып жолдарын оқу керек.

>>>f=open('text.txt','r')

>>>l=[line.strip()forlineinf]

>>>l

['0-1', '10', '21', '32', '43', '54', '65', '76', '87', '98', '109', '1110', '1211', '1312', '1413', '1514', '1615', '1716', '1817', '1918']

>>>f.close()

Жоғарыда көрсетілгендей қайта сол тізім алынды. Күрделірек жағдайда жазу алгоритмін ойлап табу қиынға соғады. Сондықтан Python тілінде ондай жағдайлар үшін баяғыдан pickle немесе json сияқты құралдары ойлап табылған. Олар файлда анағұрлым күрделі құрылымдарды сақтауға мүмкіндік береді



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,



Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату





Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Сандық алгоритмдер.

Сабақтың мақсаты

Сандық алгоритмдерді қарастыру

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Теориялық материал


1. Numeric Python.


Бұл бөлім жеткілікті дәрежеде ескірген. Қазір модуль numpy деп аталады. Жалпы, Numeric-те болған барлық numpy-да қол жетімді, бірақ аттар сәйкес келмеуі мүмкін. Numeric NumPy/oldnumeric сияқты қол жетімді. Сіздің құжаттама.

Numeric Python - көптеген сандық қосымшалар үшін қажетті көп өлшемді массивтерді есептеу үшін бірнеше модуль. Numeric модулі MatLab, Octave (MATLAB аналогы), APL, J, S+, ID сияқты пакеттер мен жүйелердің Python мүмкіндіктерін енгізеді. Пайдаланушылар Numeric-ті оңай және ыңғайлы табады. Кейбір Python синтаксистік мүмкіндіктері (кесіктерді пайдаланумен байланысты) Numeric үшін арнайы әзірленген.


Numeric Python үшін құралы бар:

  • матрицалық есептеулер;

  • FFT Фурье жылдам түрлендіру;

  • жетіспейтін ma эксперименталдық деректермен жұмыс істеу;

  • RNG статистикалық модельдеу;

  • MatLab бағдарламасының негізгі функцияларының эмуляциясы.


Numeric Модулі.

Numeric модулі толымды түрді анықтайды-массив және массив операцияларына арналған функциялардың көп санын қамтиды. Массив-бұл индекстер бойынша қолжетімді біртекті элементтер жиынтығы. Numeric Модулінің массивтері көп өлшемді, яғни бір мөлшерден артық болуы мүмкін.




Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Матрицалық есептеулер.

Сабақтың мақсаты

Матрицалық есептеулерді қарастыру.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Массивті құру.

Массивті жасау үшін, массивтің мазмұнын (ішкі тізімдер түрінде) және түрін көрсете отырып, array () функциясын пайдалануға болады. Array() функциясы дәлел - массив болса, көшірмесін жасайды. As array() функциясы ұқсас жұмыс істейді, бірақ оның аргументі массиві болған кезде жаңа массив жасамайды:


>>> from Numeric import *

>>> print array([[1, 2], [3, 4], [5, 6]])

[[1 2]

[3 4]

[5 6]]

>>> print array([[1, 2, 3], [4, 5, 6]], float)

[[ 1. 2. 3.]

[ 4. 5. 6.]]

>>> print array([78, 85, 77, 69, 82, 73, 67], 'c')

[N U M E R I C]

Массив элементтері ретінде келесі түрлерді пайдалануға болады: Int8-Int32, Unsigned Int 8-Unsigned Int32, Float 8-Float64, Complex8-Complex64 және PyObject. 8, 16, 32 және 64 сандар шаманы сақтауға арналған биттердің санын көрсетеді. Int, Unsigned Integer, Float және Complex түрлері осы платформада қабылданған мәндерге сәйкес келеді . Массивте сондай-ақ еркін нысандарға сілтемелерді сақтауға болады .


Әрбір ось бойынша массив мөлшері мен ұзындығы массив формасы (shape) деп аталады . Массив пішініне қол жеткізу shape атрибуты арқылы жүзеге асырылады:

>>> from Numeric import *

>>> a = array(range(15), int)

>>> print a.shape

(15,)

>>> print a

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]

>>> a.shape = (3, 5)

>>> print a.shape

(3, 5)

>>> print a

[[ 0 1 2 3 4]

[ 5 6 7 8 9]


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Web-қосымшаларды әзірлеу.


Сабақтың мақсаты

Web-қосымшаларды әзірлеуді қарастыру.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы


Www-браузерде HTML және XML-құжаттарды басқаратын негізгі интерфейсі жұмыс істейтін бағдарлама web-қосымша деп түсініледі. Сапасын жақсарту үшін пайдаланушы интерфейсінің жиі қолданады JavaScript, алайда бұл бірнеше төмендетеді әмбебаптығы интерфейс. Айта кету керек, интерфейс құруға болады Java - немесе Flash-апплетах, алайда, мұндай қосымшалар қиын деп атауға web-қосымшаларда, себебі Java немесе Flash пайдалана алады өз хаттамалар қарым-қатынас жасау үшін, сервер, ал стандартты емес үшін WWW хаттама HTTP.


Web-қосымшаларды құру кезінде пішін (сыртқы түрі, стилі), мазмұны мен деректерді өңдеу логикасын бөлуге тырысады. Web-сайттарды құрудың заманауи технологиялары осы идеалға өте жақын болуға мүмкіндік береді. Дегенмен, көп деңгейлі қосымшаларды қолданбай да, басқаларды қозғамай (немесе қозғамай), осы аспектілердің кез келгенін өзгертуге мүмкіндік беретін стильді ұстануға болады. Бұл тақырыпты талқылау әзірлеу ортасына арналған бөлімде жалғасатын болады.


1. CGI сценарийлері.

Www үшін қосымшаларды жасаудың классикалық жолы-CGI сценарийлерін жазу (кейде скрипттер айтады). CGI ( Common Gateway Interface, жалпы шлюздік интерфейс) - бұл сервердің сыртқы қосымшалармен өзара әрекеттесуін регламенттейтін стандарт. WWW болған жағдайда, web-сервер белгілі бір сценарий бойынша бетті генерациялау сұрауын жібере алады. Бұл сценарий web-серверден (сол, өз кезегінде, оларды пайдаланушыдан ала алады) кіріс деректерді алып, дайын нысанды (сурет, аудиодер, стильдер кестесі және т.б.) генерациялайды.


Сценарийді шақырған кезде Web-сервер оған ақпаратты стандартты енгізу, орта айнымалылары арқылы және ISINDEX үшін командалық жолдың аргументтері арқылы (олар sys арқылы қол жетімді.argv ).


Web-серверге (және CGI-сценарийге) - GET және POST браузерде толтырылған формадан деректерді берудің екі негізгі әдісі. Әдісіне байланысты деректер әртүрлі беріледі. Бірінші жағдайда олар кодталады және тікелей URL-ге орналастырылады, мысалы: http://example.com/cgi-bin/a.cgi?a=1&b=3. Сценарий оларды QUERY_STRING атымен айнымалыға алады. POST әдісі жағдайында олар стандартты енгізуге беріледі.


Ол үшін, егер бұл сервердің конфигурациясы рұқсат етілсе, HTML құжаттары арасында кез-келген орында. Сценарий орындалуының белгісі болуы тиіс. Unix жүйесінде оны chmod a+x пәрменімен орнатуға болады.


Келесі қарапайым сценарий os сөздігінен мәндерді шығарады.environ және оған не берілгенін көруге мүмкіндік береді:


#!/usr/bin/python


import os

print """Content-Type: text/plain


%s""" % os.environ


Оның көмегімен Web-сервермен орнатылған орта айнымалыларын көруге болады. Web-сервердің CGI сценарийімен берілетін файл метаақпараттық өрістер (мазмұн түрі, құжаттың соңғы жаңартылу уақыты, кодтау және т.б .) көрсетілген тақырып бөлігін қамтиды.


Сценарийлерді жасау үшін жеткілікті негізгі орта айнымалылары:


QUERY_STRING

Сұраныс жолы.


REMOTE_ADDR

Клиенттің IP-мекенжайы.


REMOTE_USER

Клиенттің аты (егер ол сәйкестендірілсе).


SCRIPT_NAME

Сценарий атауы.


SCRIPT_FILENAME

Сценарийі бар Файл атауы.


SERVER_NAME

Сервер аты.


HTTP_USER_AGENT

Клиент браузерінің атауы.


REQUEST_URI

Сұрау жолы (URI).


HTTP_ACCEPT_LANGUAGE

Құжаттың қажетті тілі.


Мұнда os сөздігі болуы мүмкін.environ CGI сценарийінде:

{

'DOCUMENT_ROOT': '/var/www/html',

'SERVER_ADDR': '127.0.0.1',

'SERVER_PORT': '80',

'GATEWAY_INTERFACE': 'CGI/1.1',

'HTTP_ACCEPT_LANGUAGE': 'en-us, en;q=0.50',

'REMOTE_ADDR': '127.0.0.1',

'SERVER_NAME': 'rnd.onego.ru',

'HTTP_CONNECTION': 'close',

'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; U; Linux i586; en-US;

rv:1.0.1) Gecko/20021003',

'HTTP_ACCEPT_CHARSET': 'ISO-8859-1, utf-8;q=0.66, *;q=0.66',

'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml+xml,

text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,

image/gif;q=0.2,text/css,*/*;q=0.1',

'REQUEST_URI': '/cgi-bin/test.py?a=1',

'PATH': '/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin',

'QUERY_STRING': 'a=1&b=2',

'SCRIPT_FILENAME': '/var/www/cgi-bin/test.py',

'HTTP_KEEP_ALIVE': '300',

'HTTP_HOST': 'localhost',

'REQUEST_METHOD': 'GET',

'SERVER_SIGNATURE': 'Apache/1.3.23 Server at rnd.onego.ru Port 80',

'SCRIPT_NAME': '/cgi-bin/test.py',

'SERVER_ADMIN': 'root@localhost',

'SERVER_SOFTWARE': 'Apache/1.3.23 (Unix) (Red-Hat/Linux)

mod_python/2.7.8 Python/1.5.2 PHP/4.1.2',

'SERVER_PROTOCOL': 'HTTP/1.0',

'REMOTE_PORT': '39251'

}

Келесі CGI-сценарий қара квадрат береді (онда суреттерді өңдеу үшін Image модулі қолданылады):

#!/usr/bin/python


import sys

print """Content-Type: image/jpeg

"""


import Image

i = Image.new("RGB", (10,10))

i.im.draw_rectangle((0,0,10,10), 1)

i.save(sys.stdout, "jpeg")


2. CGI модулі.


Python CGI модулі түрінде CGI қолдауы бар. Келесі мысал оның кейбір мүмкіндіктерін көрсетеді:


#!/usr/bin/python

# -*- coding: cp1251 -*-

import cgi, os


# анализзапроса

f = cgi.FieldStorage()

if f.has_key("a"):

a = f["a"].value

else:

a = "0"


# обработка запроса

b = str(int(a)+1)

mytext = open(os.environ["SCRIPT_FILENAME"]).read()

mytext_html = cgi.escape(mytext)


# формированиеответа

print """Content-Type: text/html


<html><head><title>Решениепримера: %(b)s = %(a)s + 1</title></head>

<body>

%(b)s

<table width="80%%"><tr><td>

<form action="me.cgi" method="GET">

<input type="text" name="a" value="0" size="6">

<input type="submit" name="b" value="Обработать">

</form></td></tr></table>

<pre>

%(mytext_html)s

</pre>

</body></html>""" % vars()


Бұл мысал түрінде берілген санға 1 қосылады. Сонымен қатар, сценарийдің бастапқы коды шығады. Таңбаларды экрандау>,<, & cgi функциясы пайдаланылғанын байқағаныңыз жөн. escape(). Web-бетті қалыптастыру үшін пішімдеу операциясы қолданылды. Сөздік ретінде барлық жергілікті айнымалылармен vars () сөздігі қолданылады. Пайыз белгілері пішімдеу командасымен түсіндірілмеуі үшін екі еселенді. Пайдаланушыдан мәні қалай алынғанына назар аудару керек. FieldStorage нысаны "дерлік" сөздік, әдеттегі мәнді алу үшін қосымша мән төлсипатын қарау керек. Сценарийге тек мәтіндік мәндерді ғана емес, сондай-ақ файлдарды да, сондай-ақ сол атауымен көпше мәндерді де бере алады.


CGI сценарийлердің кіріс мәндерін өңдегенде, рұқсат етілген мәндерді мұқият және мұқият тексеру қажет. Клиент кез келген нәрсені кіре алады деп санаған дұрыс. Осының барлығы сценарийді күтетін нәрсені таңдау және тексеру қажет.


Мысалы, пайдаланушыдан алынған деректерді eval() және оған ұқсас функцияларға аргументтер ретінде файл жолына; командалық жолдың параметрлері; деректер базасына SQL-сұранымындағы бөліктер ретінде қоюға болмайды. Сондай-ақ, егер бұл беттер тек URL мекен - жайына тапсырыс берген клиент ғана емес (мысалы, мұндай жағдай web-чаттарда, форумдарда, қонақ кітаптарында әдеттегі), және тіпті осы ақпараттың жалғыз оқырманы-сайт әкімшісі болған жағдайда да, алынған деректерді тікелей қалыптастырылатын беттерге енгізуге болмайды. HTML-коды тексерілмеген, пайдаланушыдан тікелей келіп түскен беттерді қарайтын адам өзінің браузерінде оны қорғауда пайдаланатын зиянды кодты өңдеу қаупі бар.


CGI сценарийін URL-ге сұрау арқылы басқа сценарийлер ғана пайдаланса да, пайдаланушы деректерді енгізгеннен кейін кіріс мәндерін мұқият тексеру қажет. (Өйткені теріс пайдаланушы web-серверге кез келген мәндерді бере алады).


Жоғарыда мысалда int () функциясын шақырған кезде рұқсат етілген тексеру жүргізілді: егер сансыз мән қойылса, сценарий авариялық аяқталды, ал Пайдаланушы Internal Server Error көрді.


Кіріс деректерін талдағаннан кейін оларды өңдеу фазасын бөліп көрсетуге болады. Бұл бөлімде CGI-сценарий одан әрі шығару үшін айнымалылар есептеледі. Бұл жерде берілген айнымалылардың мәндерін ғана емес, сонымен қатар олардың болу немесе болмау фактілерін де ескеру қажет, себебі бұл да сценарий логикасына әсер етуі мүмкін.


Және, соңында, дайын нысанды (мәтін, HTML-құжат, сурет, мультимедиа-объект және т.б.) шығару фазасы. Беттің үлгісін (немесе оның ірі бөліктерін) алдын ала дайындау оңай, содан кейін жай ғана айнымалылардан мазмұнды толтыру.


Келтірілген мысалдарда аттар сұраныс жолында тек бір рет пайда болды. Кейбір нысандар бір атау үшін бірнеше мәндерді тудырады. Барлық мәндерді getlist әдісі арқылы алуға болады():


lst = form.getlist("fld")


Lst тізімі fld атыбарөрістер web-формаданалынған ( берілгенатыбарбірде- бірөрістолтырылмағанболса, олбосболуымүмкін) сияқтымәндердентұрады .


Кейбіржағдайлардасервергефайлдардыжіберукерек (upload жасау). Келесі мысал және оған түсініктеме осы міндетті шешуге көмектеседі:

#!/usr/bin/env python

import cgi


form = cgi.FieldStorage()

file_contents = ""

if form.has_key("filename"):

fileitem = form["filename"]

if fileitem.file:

file_contents = """<P>Содержимое переданного файла:

<PRE>%s</PRE>""" % fileitem.file.read()


print """Content-Type: text/html


<HTML><HEAD><TITLE>Загрузкафайла</TITLE></HEAD>

<BODY><H1>Загрузкафайла</H1>

<P><FORM ENCTYPE="multipart/form-data"

ACTION="getfile.cgi" METHOD="POST">

<br>Файл: <INPUT TYPE="file" NAME="filename">

<br><INPUT TYPE="submit" NAME="button" VALUE="Передатьфайл">

</FORM>

%s

</BODY></HTML>""" % file_contents

Ең басында сценарий соңында келтірілген web-форманы қарастыру керек: ол CGI-сценарий бойынша жүгінген кезде пайдаланушыға шығарылады. Сонымен қатар, web-браузерде енгізу жолағы мен "Browse"батырмасы бар file түрінің өрісі бар. "Browse" батырмасын басу арқылы пайдаланушы компьютерде ОЖ қол жетімді файлды таңдайды. Осыдан кейін ол файлды серверге жіберу үшін "файлды жіберу" батырмасын басуы мүмкін.


CGI сценарийін баптау үшін cgitb модулін пайдалануға болады. Қате пайда болған кезде бұл модуль ерекшелеуді қоздыру орнын көрсете отырып, бояулы HTML-бетті береді. Жөнделген сценарийдің басында қою керек

import cgitb

cgitb.enable(1)


Немесебраузердеқателердікөрсетуқажетболмаса:


import cgitb

cgitb.enable(0, logdir="/tmp")


Сценарий кейінге қалдырылған кезде бұл жолдарды алып тастау керек, өйткені ол сценарий кодының бөлігін береді. Бұл зиянкестер CGI-сценарийде осалдықты табу немесе парольдерді қарау үшін пайдалануы мүмкін (егер ондай сценарийде бар болса).


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python-ғы желілік қосымшалар.

Сабақтың мақсаты

Python-ғы желілік қосымшаларды қарастыру, талдау.


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы


1. Сокеттермен жұмыс.


IP-желілерде қолданылатын архитектура клиент-сервер клиент пен сервер арасындағы байланыс үшін IP-пакеттерді пайдаланады. Клиент сұрауды сол жауап беретін серверге жібереді. TCP / IP болған жағдайда клиент пен сервер арасында байланыс орнатылады (әдетте деректерді екі жақты берумен), ал UDP/IP - клиент пен сервер кепілсіз жеткізумен пакеттермен (дейтаграммалармен) алмасады.

IP-желінің әрбір желілік интерфейсі осы желіде бірегей мекенжайға ( IP-адрес) ие. Интернет желісіндегі әрбір компьютер өзінің IP-адресіне ие. Бұл ретте бір желілік интерфейс аясында бірнеше желілік порттар болуы мүмкін. Желілік қосылымды орнату үшін клиент қолданбасы бос портты таңдап, қашықтағы желілік интерфейстің белгілі бір нөмірімен порт тыңдайтын серверлік қосымшамен (listen) байланыс орнатуы тиіс. IP-адрес және порт сокет (ұя) - желілік коммуникацияның бастапқы (соңғы) нүктесін сипаттайды. TCP / IP байланысын құру үшін екі сокет қажет: біреуі жергілікті машинада, екіншісі - алыстан. Осылайша, әрбір желілік қосылым жергілікті машинада IP-мекен-жайы мен порты, сондай-ақ қашықтағы машинада IP-мекен-жайы мен порты бар.

Socket модулі Python сокеттерімен жұмыс істеуге мүмкіндік береді. Сокеттер OSI (Open Systems Interconnection, ашық жүйелердің өзара әрекеттесуі) жеті деңгейлі моделіне сәйкес көлік деңгейін пайдаланады, яғни осы бөлімде сипатталған хаттамалардың көпшілігіне қарағанда төмен деңгейге жатады.

OSI моделі деңгейлері:

Физикалық

Физикалық сызықпен берілетін биттердің ағыны. Физикалық желі параметрлерін анықтайды.

Арна (Ethernet, PPP, ATM және т. б.).)

Физикалық бірыңғай желі шегінде Физикалық деңгейде туындайтын қателерді жеңе отырып, биттер ағыны түріндегі деректерді кодтайды және кодтайды.

Желілік (IP)

Түйіннен түйінге ақпараттық пакеттерді маршруттайды.

Көлік (TCP, UDP және т. б.).)

Екі байланыс нүктелері арасында деректерді мөлдір беруді қамтамасыз етеді.

Сеанс

Желі қатысушылары арасындағы байланыс сеансын басқарады. Қосылыстарды бастайды, үйлестіреді және аяқтайды.

Ұсыну

Деректер форматтарын түрлендіру арқылы оларды ұсыну формасынан тәуелсіз болуын қамтамасыз етеді. Бұл деңгейде деректерді ашық шифрлеу және шифрлеу орындалуы мүмкін.


(HTTP, FTP, SMTP, NNTP, POP3, IMAP және т. б.).)


Нақты желілік бағдарламаларды қолдайды. Хаттама сервис түріне байланысты.

Әрбір сокет байланыс домендерінің біріне жатады. Socket модулі UNIX және Internet домендерін қолдайды. Әрбір домен өзінің отбасы хаттамалар мен адресацияны білдіреді. Бұл мазмұндама тек Internet доменін ғана қозғайды, атап айтқанда TCP/IP және UDP/IP хаттамалары, сондықтан сокет жасаған кезде коммуникациялық доменді көрсету үшін socket.AF_INET константасы көрсетіледі.

Мысал ретінде қарапайым клиент-серверлік жұпты қарастыру керек. Сервер жолды қабылдап, клиентке жауап береді. Желілік құрылғы кейде хост деп аталады (host), сондықтан бұл термин желілік бағдарлама жұмыс істейтін компьютерге қатысты қолданылады.

Сервер:

import socket, string


def do_something(x):

lst = map(None, x);

lst.reverse();

return string.join(lst, "")


HOST = "" # localhost

PORT = 33333

srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

srv.bind((HOST, PORT))

while 1:

print "Слушаюпорт 33333"

srv.listen(1)

sock, addr = srv.accept()

while 1:

pal = sock.recv(1024)

if not pal:

break

print "Полученоот %s:%s:" % addr, pal

lap = do_something(pal)

print "Отправлено %s:%s:" % addr, lap

sock.send(lap)

sock.close()

Клиент:

importsocket


HOST = "" # удаленный компьютер (localhost)

PORT = 33333 # портнаудаленномкомпьютере

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect((HOST, PORT))

sock.send("ПАЛИНДРОМ")

result = sock.recv(1024)

sock.close()

print "Получено:", result

Ескертпе: Мысалда орыс әріптері қолданылады: кодтауды көрсету қажет.

Ең алдымен, серверді іске қосу керек. Сервер сокетті 33333 портында және 127.0.0.1 адресінде жергілікті машинада ашады. Осыдан кейін ол (listen () портты тыңдайды. Портта деректер пайда болған кезде кіріс байланыс ( accept) қабылданады. Accept әдісі () қосылымды орнататын қашықтан компьютердегі socket нысаны мен мекен - жайын қайтарады(жұп-IP мекен-жайы, қашықтағы машинадағы порт). Осыдан кейін клиентпен сөйлесу үшін recv() және send() әдістерін қолдануға болады. Recv-да () келесі порциядағы байттар саны беріледі. Клиенттен аз деректер келуі мүмкін.


Клиент-бағдарламаның коды анық. Байланыс әдісі() қашықтағы хостпен байланысты орнатады (келтірілген мысалда ол сол машинада орналасқан). Деректер send() әдісімен беріледі және серверде болатынына ұқсас recv () әдісімен қабылданады.


Socket модулі бірнеше қосалқы функцияларға ие. Атап айтқанда, домендік атаулар жүйесімен (DNS ):

>>> import socket

>>> socket.gethostbyname('www.onego.ru')

('www.onego.ru', [], ['195.161.136.4'])

>>> socket.gethostbyaddr('195.161.136.4')

('www.onego.ru', [], ['195.161.136.4'])

>>> socket.gethostname()

'rnd.onego.ru'

Жаңа Python нұсқаларында socket сияқты функция пайда болды .getservbyname (). Ол интернет-сервистердің атауын порттардың жалпы қабылданған нөмірлеріне түрлендіруге мүмкіндік береді:

>>> for srv in 'http', 'ftp', 'imap', 'pop3', 'smtp':

... print socket.getservbyname(srv, 'tcp'), srv

...

80 http

21 ftp

143 imap

110 pop3

25 smtp

Socket Модулінің басқа функцияларын қажет болған жағдайда құжаттама бойынша зерттеуге болады.



2. Smtplib модулі.


Интернеттегі электрондық пошта хабары клиенттен серверге және серверлер арасында негізінен SMTP ( S imple m ail T ransfer P rotocol, қарапайым пошта жіберу ХАТТАМАСЫ) хаттамасы бойынша жіберіледі . SMTP және ESMTP протоколы (SMTP кеңейтілген нұсқасы) RFC 821 және RFC 1869- да сипатталған. Үшін SMTP стандартты кітапхана модульдер бар модуль smtplib. Электрондық пошта серверімен SMTP байланысын бастау үшін алдымен SMTP класты конструкторының көмегімен SMTP сессиясын басқару үшін нысанды жасау қажет:

smtplib.SMTP([host[, port]])

Host және port параметрлері пошта жіберілетін SMTP серверінің мекен-жайы мен портын береді . Әдепкі, port=25. Егер host орнатылса, конструктор өзі қосылымды орнатады, әйтпесе connect () әдісін бөлек шақыруға тура келеді . SMTP класының даналары барлық кең таралған SMTP протоколдары үшін әдістерге ие, бірақ поштаны жіберу үшін sendmail() және quit конструктор шақыру жеткілікті.():

# -*- coding: cp1251 -*-

from smtplib import SMTP

fromaddr = "student@mail.ru" # От кого

toaddr = "rnd@onego.ru" # Кому

message = """From: Student <%(fromaddr)s>

To: Lecturer <%(toaddr)s>

Subject: From Python course student

MIME-Version: 1.0

Content-Type: text/plain; charset=Windows-1251

Content-Transfer-Encoding: 8bit


Здравствуйте! Я изучаю курс по языку Python и

отправляю письмо его автору.

"""

connect = SMTP('mail.onego.ru')

connect.set_debuglevel(1)

connect.sendmail(fromaddr, toaddr, message % vars())

connect.quit()

Toaddr хабарламасында (To өрісінде ) және жіберу кезінде сәйкес келмеуі мүмкін екенін байқаған жөн . SMTP-сессия барысында алушы мен жөнелтуші SMTP-хаттама командаларымен беріледі. Жоғарыда көрсетілген мысалдарды іске қосқан кезде экранда жөнге келтіру ақпараты пайда болады (себебі жөндеу деңгейі 1-ге тең):

send: 'ehlo rnd.onego.ru\r\n'

reply: '250-mail.onego.ru Hello as3-042.dialup.onego.ru [195.161.147.4], pleased to meet you\r\n'

send: 'mail FROM:<student@mail.ru> size=270\r\n'

reply: '250 2.1.0 <student@mail.ru>... Sender ok\r\n'

send: 'rcpt TO:<rnd@onego.ru>\r\n'

reply: '250 2.1.5 <rnd@onego.ru>... Recipient ok\r\n'

send: 'data\r\n'

reply: '354 Enter mail, end with "." on a line by itself\r\n'

send: 'From: Student <student@mail.ru>\r\n . . . '

reply: '250 2.0.0 iBPFgQ7q028433 Message accepted for delivery\r\n'

send: 'quit\r\n'

reply: '221 2.0.0 mail.onego.ru closing connection\r\n'


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python-ғы желілік қосымшалар.

Сабақтың мақсаты

Python-ғы желілік қосымшаларды қарастыру, талдау.


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы



Бұл (бірнеше қысқартылған) жөндеу ақпаратынан клиент SMTP-серверіне (EHLO, MAIL FROM, RCPT TO, DATA, QUIT) командаларды жіберетінін көруге болады, ал ол командаларды орындайды және қайтару кодын қайтару арқылы жауап береді (reply).


Бір SMTP-сессия барысында quit () шақырмаса, қатарынан бірнеше хат жіберуге болады.


Ол үшін-қосылыстар ( helo(), ehlo(), esmtp(), helo(), mail(), rcpt(), vrfy(), send(), noop(), data (), SMTP-протоколының аттас командаларына сәйкес келетін әдістер бар.


DOCMD () әдісі арқылы SMTP серверіне еркін пәрменді де орнатуға болады. Келесі мысалда кейбір домен үшін хабарламалар кезегі сақталатын пошта серверінен SMTP протоколы бойынша өз серверіне поштаны уақыт өте келе қабылдайтын адамдар пайдалана алатын қарапайым сценарий көрсетілген:

from smtplib import SMTP

connect = SMTP('mx.abcde.ru')

connect.set_debuglevel(1)

connect.docmd("ETRN rnd.abcde.ru")

connect.quit()

Бұл қарапайым сценарий серверге ұсынады mx.abcde.ru негізгі домен пошта серверімен байланысуға тырысу rnd.abcde.ru және оған жиналған барлық поштаны жіберіңіз.


Smtplib сыныбымен жұмыс істеу кезінде.SMTP әртүрлі ерекшеліктер қозғалуы мүмкін. Кейбір тағайындау төменде келтірілген:


smtplib.SMTPException

Модульдің барлық ерекшеліктеріне арналған базалық сынып.


smtplib.SMTPServerDisconnected

Сервер кенеттен байланыс үзілді (немесе сервермен байланыс орнатылмаған).


smtplib.SMTP Response Exception

SMTP-сервер жауап коды бар барлық ерекшеліктер үшін базалық класс.


smtplib.SMTP Sender Refused

Жіберуші қабылдамады


smtplib.SMTPRecipientsRefused

Барлық алушылар сервермен қабылданбайды.


smtplib.SMTPDataError

Сервер осы хабарға белгісіз кодпен жауап берді.


smtplib.SMTP Connect Error

Байланыс орнату қатесі.


smtplib.SMTP Helo Error

Сервер HELO командасына дұрыс жауап бермеді немесе оны қабылдамады.



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Мәліметтер базасымен жұмыс

Сабақтың мақсаты

Мәліметтер базасымен жұмыс жасауды қарастыру, талдау.


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы



1. Реляциялық ДҚБЖ негізгі ұғымдары.


Реляциялық деректер қоры-бұл деректер кестесі.

Кесте-жолдар мен бағандардан тұратын тікбұрышты матрица. Кесте (relation) қатынасын көрсетеді.

Жол-баған жолдарынан тұратын жазба. Әрбір өрісте кейбір мән немесе арнайы NULL (бос) мәні болуы мүмкін. Кестеде еркін жолдар саны болуы мүмкін. Реляциялық модель үшін жолдардың орналасу тәртібі анықталмаған және маңызды емес.

Кестедегі әр бағанның өз аты мен түрі бар.

DB-API 2 дегеніміз не.

Атауына енгізілген аббревиатуралар екі ұғымды біріктіреді: DB (Database, деректер қоры) және API (Application Program Interface, қолданбалы бағдарламаның интерфейсі).

Осылайша, DB-API деректер базасымен қолданбалы бағдарламаның интерфейсін анықтайды. Бұл интерфейс төменде сипатталған, Python-бағдарламалардың деректер базасымен байланысы үшін қызмет ететін барлық кеңею модульдерін іске асыруы тиіс. Бірыңғай API (қазіргі уақытта оның екінші нұсқасы) пайдаланылатын деректер базасының маркасынан абстракциялауға мүмкіндік береді, Қажет болған жағдайда функциялар мен әдістердің бір жиынтығын зерттей отырып, бір ДББЖ-ны екіншісіне оңай ауыстыруға мүмкіндік береді.

DB-API 2.0 PEP 249-да сипатталған (сайт http://www.python.org/dev/peps/pep-0249/) және төменде берілген сипаттама оған негізделген.

Сипаттамасы DB API 2.0

DB API 2.0 деректер базасымен жұмыс істеу үшін кеңейту Модулінің интерфейстерін, объект-базамен қосылу әдістерін, ағымдағы өңделетін жазбаның объект-курсорын, деректер типтері мен олардың конструкторларына арналған әр түрлі объектілерді регламенттейді, сондай-ақ модульдерді іске асыру бойынша әзірлеушілерге арналған ұсынымдарды қамтиды. Бүгінгі күні Python көптеген белгілі деректер базасын кеңейту модульдері арқылы қолдайды (мекен-жай бойынша web-бетте нақтылауға болады) http://www.python.org/topics/database/). төменде жаңа модульдерді әзірлеушілерге арналған ұсынымдарды қоспағанда, DB-API-дің барлық дерлік ережелері қарастырылады.



2. Модуль интерфейсі.


Мұнда DB-API 2.0 талаптарын қанағаттандыру үшін модульді ұсыну керек.


Деректер қорына кіру қосылым объектісі (connection object) арқылы жүзеге асырылады. DB-API-үйлесімді модуль қосылымдар класы үшін connect() конструктор функциясын ұсынуы тиіс. Конструкторда келесі атаулы параметрлер болуы керек:

  • dsn деректер көзінің атауы

  • user пайдаланушы аты

  • Password Пароль

  • host ДББЖ жұмыс істейтін хост Мекен-жайы

  • database деректер қорының атауы.

  • Нысан әдістері-қосылыстар кейінірек қарастырылады.


Модуль оның негізгі сипаттамалары бар константаларды анықтайды:


  • apilevel нұсқасы DB-API ("1.0" немесе "2.0").

  • threadsafety басқару ағындарын пайдалану кезінде модуль мүмкіндіктерін сипаттайтын бүтін тұрақты:

  • 0 Модуль ағындарды қолдамайды.

  • 1 ағындар модульді бірге пайдалана алады, бірақ қосылыстар емес.

  • 2 ағындар модуль мен қосылыстарды бірлесіп пайдалана алады.

  • 3 ағындар модульді, қосылымдарды және меңзерлерді бірлесіп пайдалана алады. (Бірлесіп пайдалану деп аталған ресурстарды семафорларды қолданбай пайдалану мүмкіндігі түсініледі).

  • paramstyle параметрлерді қойған кезде қолданылатын белгі түрі. Осы константаның келесі мәндері мүмкін:

  • "format" ANSI C стилінде пішімдеу (мысалы, "% s", "% i").

  • "pyformat "Python ("%(item)s стилінде пішімде аталған спецификаторларды пайдалану" )

  • "qmark" белгілерді пайдалану "?"параметрлерді орнату орындарын белгілеу үшін.

  • "numeric" позициялар нөмірлерін пайдалану ( ": 1").

  • "named "орнатылған параметрлердің атын пайдалану (": name").


Модуль типтік ерекше жағдайларды белгілеу үшін бірқатар ерекшеліктерді анықтауы тиіс: Warning (ескерту), Error (Қате), InterfaceError (интерфейс қатесі), DatabaseError (деректер базасына қатысты қате). Сондай-ақ, осы соңғы ерекшеліктің Ішкі сыныбы: DataError (деректерді өңдеу қатесі), OperationalError (жұмыс қатесі немесе деректер қоры қатесі), IntegrityError (деректер қоры тұтастығының қатесі), InternalError (деректер қорының ішкі қатесі), ProgrammingError (бағдарламалық қате, мысалы, SQL-сұранымның синтаксисіндегі қате), NotSupportedError (сұралған сипаттың қолдауы болмаған жағдайда).


Нысан-қосылым

Объект-connect () функциясын сәтті шақыру нәтижесінде алынған қосылым келесі әдістерге ие болуы тиіс:

  • close () деректер базасымен байланысты жабады.

  • commit () транзакцияны аяқтайды.

  • rollback () басталған транзакция (бастапқы күйін қалпына келтіреді). Аяқталмаған транзакция кезінде байланысты жабу транзакцияны автоматты түрде қайтарады.

  • cursor () осы қосылымды пайдаланатын курсорды қайтарады. Егер деректер базасы меңзерді қолдамаса, жұптастыру модулі оларды имитациялауы тиіс.

Транзакция деп Деректер базасын өзгертетін бір немесе бірнеше операциялардан тұратын топ түсініледі. Транзакция деректер қорына логикалық бөлінбейтін операцияларға сәйкес келеді, ал транзакцияны ішінара орындау ДБ тұтастығын бұзуға әкеледі. Мысалы, бірінші шотты азайту және екіншісін ұлғайту бойынша бір шоттан басқа операцияларға ақша аудару кезінде транзакция болып табылады. Commit() және rollback() әдістері транзакцияның басталуы мен аяқталуын айқын көрсетеді. Айтпақшы, барлық деректер қоры транзакция механизмін қолдамайды.

Модульдің DB-API 2.0 іске асырылуына байланысты осы қосылыс курсорларының жұмысын жалғастыратын объект-қосылысқа сілтемені сақтау қажет. Атап айтқанда, бұл нысан-курсорды бірден алуға болмайтынын білдіреді. Сондай-ақ, элементті-қосылымды жергілікті айнымалы функциядан немесе нысан-меңзерден қайтару арқылы қалдыруға болмайды.


Объект-курсор

Курсор (ағылш . cursor-current Set Of Records, ағымдағы жазбалар жиынтығы) сұрау нәтижесімен жұмыс істеу үшін қызмет етеді. Сұраныс нәтижесі әдетте бір немесе бірнеше тікбұрышты кестелер-өрістер және жол-жазбалары бар. Қолданба алынған кестелер мен жазбаларды бір кестеден оқи және өңдей алады, сондықтан курсорда ағымдағы кесте мен жазбалар туралы ақпарат сақталады. Кез келген уақытта белгілі бір курсор бір SQL-нұсқаулықты орындауға байланысты.


Курсордың атрибуттары да DB-API анықталған:


arraysize Fetchmany () әдісімен қайтарылатын жазбалар санына тең Атрибут. Әдепкі бойынша 1 тең.

callproc (procname[, params]) сақталатын procname процедурасын params тізбегінің өзгермелі параметрлерімен шақырады. Сақталған рәсім кейбір реттілік параметрлерінің мәнін өзгерте алады. Әдіс fetch-әдістері арқылы қол жеткізу нәтижесін қайтаруы мүмкін.

close () курсорды жабады.

description бұл тек оқу үшін қол жетімді атрибут-семиэлементтік тізбектерден тізбектілік. Осы тізбектердің әрқайсысы нәтиженің бір бағанын сипаттайтын ақпаратты қамтиды:

(name, type_code, display_size, internal_size, precision, scale, null_ok)

Алғашқы екі элемент (аты және түрі) міндетті, ал қалғандарының орнына (шығару өлшемі, ішкі өлшемі, дәлдігі, масштабы, бос мәнді орындау мүмкіндігі) None мәні болуы мүмкін. Бұл атрибут мәндерді қайтармайтын операциялар үшін None тең болуы мүмкін.

execute (operation[, parameters]) деректер базасына немесе ДББЖ командасын сұранымды орындайды. Параметрлер (parameters ) деректер базасында жоғарыда сипатталған paramstyle атрибуттарына сәйкес ұсынылуы мүмкін.

executemany (operation, seq_of_parameters) берілген үлгіге параметрлерді орната отырып, сұраулар немесе командалар сериясын орындайды. Seq_of_parameters параметрі параметрлер жиынтықтарының ретін анықтайды.

fetchall () сұрау нәтижесінің барлық (немесе барлық қалған) жазбаларын қайтарады.

fetchmany ([size]) сұрау нәтижесінен келесі бірнеше жазбаларды кезектілік ретімен қайтарады. Бос бірізділік деректер жоқ дегенді білдіреді. Қосымша size параметрі қайтарылатын жазбалар санын көрсетеді (нақты қайтарылатын жазбалар аз болуы мүмкін). Әдепкі size курсордың arraysize атрибутына тең.

fetchone () деректер болмаған кезде сұрау нәтижесінен немесе None келесі жазбаны (ретпен) қайтарады.

nextset () курсорды сұрау нәтижесінде алынған келесі деректер жиынтығының басына ауыстырады (бұл ретте алдыңғы жиынтықтағы жазбалардың бөлігі оқылмаған күйінде қалуы мүмкін). Егер жиынтық болмаса, None қайтарады. Барлық деректер қоры бір операция үшін бірнеше нәтиже жиынтығын қайтаруды қолдамайды.

rowcount соңғы сұрау нәтижесінде алынған немесе қозғалған жазбалар саны. Execute сұраулары болмаған немесе жазбалардың санын көрсету мүмкін болмаған жағдайда -1 тең.

setinputsizes (sizes) операцияларда пайдаланылатын параметрлер үшін жад аймағын алдын ала анықтайды. Sizes аргументі әрбір элемент бір кіріс параметріне сәйкес келетін тізбекті анықтайды. Элемент тиісті параметрдің түрі немесе жолдың ұзындығын білдіретін бүтін сан болуы мүмкін. Егер кіріс параметрінің мөлшері туралы ештеңе алдын ала айтылмаса немесе ол өте үлкен деп болжанса, ол сондай-ақ None мәні болуы мүмкін. Әдіс execute әдістеріне дейін туындауы тиіс.

setoutputsize (size[, column]) column нөмірі бар бағаннан шығу параметрі үшін буфер өлшемін орнатады. Егер column орнатылмаса, әдіс барлық Үлкен Шығыс параметрлеріне өлшем орнатады. Мысалы, үлкен екілік нысандарды ( B inary L arge O bject, BLOB) алу үшін пайдаланылуы мүмкін.


Нысандар-түрлері

DB-API 2.0 деректер қорының өрістерін сипаттау үшін пайдаланылатын нысандар-типтері үшін атауларды қарастырады:



Әрбір деректер түріне (шын мәнінде бұл - сыныптар) конструктор байланысты. DB-API үйлесімді модуль келесі конструкторларды анықтауы тиіс:

  • Date(год, месяц, день) Дата.

  • Time(час, минута, секунда) Время.

  • Timestamp(год, месяц, день, час, минута, секунда) Дата-время.

  • DateFromTicks(secs) Дата в виде числа секунд secs от начала эпохи (1 января 1970 года).

  • TimeFromTicks(secs) Время, то же.

  • TimestampFromTicks(secs) Дата-время, то же.

Binary(string) Большой бинарный объект на основании строки string

Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Көп ағынды есептеулер

Сабақтың мақсаты

Көп ағымды есептеулерді қарастыру, талдау.


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы


1. Басқару ағыны туралы.

Қазіргі заманғы операциялық жүйеде, тіпті ерекше ештеңе орындамайтын, бір мезгілде бірнеше процесс (processes) жұмыс істей алады. Мысалы, Бағдарламаны іске қосқан кезде жаңа процесс іске қосылады. Процестерді басқару функциялары Python тілінің стандартты os модулінде табуға болады. Мұнда ағындар туралы сөз болады.

Басқару ағындары (threads) бір процесс шеңберінде қалыптасады және жұмыс істейді. Бір ағынды қосымшада (қосымша ағындарды пайдаланбайтын бағдарламада) тек бір ғана басқару ағыны бар. Айтқанда упрощенно, іске қосу кезінде бағдарламаның бұл ағыны дәйекті орындайды встречаемые бағдарламасында операторлар, бағыт ала отыра бірі бойынша баламалы тармақтарының оператордың таңдау арқылы өтеді цикл денесін керегін саны таңдалады орнына өңдеуге алып тастау қозғау кезінде алып тастау. Кез келген уақытта Python интерпретаторы келесі орындау үшін қандай команданы біледі. Команда орындалғаннан кейін қандай командаға басқаруды беретіні белгілі болады. Бұл жіп бағдарламаны орындау барысында үздіксіз және ол аяқталғаннан кейін ғана үзіледі.

Енді бағдарламаның кейбір нүктесінде жіп ажыратылып, әр ағын өз жолымен жүретінін елестете аласыз. Пайда болған ағындардың әрқайсысы одан әрі бірнеше рет үлестірілуі мүмкін. (Бұл ретте ағындардың бірі әрқашан басты болып қалады және оның аяқталуы бүкіл бағдарламаның аяқталуын білдіреді.) Әр уақытта интерпретатор қандай команданы орындау керектігін біледі және әр ағынға уақыт кванттарын бөледі. Мұндай, бағдарламаны орындау тетігінің шамалы күрделенуі іс жүзінде бағдарламада сапалы өзгерістерді талап етеді - өйткені ағындардың қызметі келісілуі тиіс. Ағындарды бір уақытта бір нысанды өзгертіп, осындай өзгерістің нәтижесін, ең алдымен, объектінің тұтастығын бұзуына жол беруге болмайды.

Ағындарды келісудің классикалық құралдарының бірі Семафор деп аталатын объектілер болып табылады. Семафорлар кодтың кейбір бөлігін бірнеше ағындармен бір уақытта орындауға жол бермейді. Ең қарапайым семафор-құлып (lock) немесе mutex (ағылшын тілінен mutually exclusive, өзара ажыратқыш). Ағын кодты орындауды жалғастыру үшін, ол алдымен құлыпты басып алуы керек. Құлыпты басып алғаннан кейін ағын кодтың белгілі бір бөлігін орындайды және содан кейін құлыпты босатады, содан кейін басқа ағынның оны алуы және құлыппен қорғалатын бағдарлама учаскесін одан әрі орындауы үшін. Басқа құлып ағысымен соқтығысқан ағыс, әдетте оның босатылуын күтеді.

Python тілінде көп дәлдікті қолдау бірнеше модульдерді пайдалану арқылы қол жетімді. Threading стандартты модулінде көп ағынды (multithreading) бағдарламаларды әзірлеу үшін қажетті сыныптар анықталған: семафорлардың бірнеше түрі (lock, RLock және semaphore класстары ) және ағындар арасындағы өзара әрекеттесудің басқа механизмдері (Event және Condition класстары ), біраз уақыттан кейін функцияны іске қосу үшін Timer классы. Queue модулі бірден бірнеше ағындарды пайдалана алатын кезекті іске асырады. Thread стандартты модулінде ағындарды құру және (төмен деңгейлі) басқару үшін Thread класы анықталды.

Көп ағынды бағдарламаның үлгісі

Келесі мысалда екі қосымша ағын жасалады, олар әр түрлі стандартты шығаруға шығарылады:

import threading


def proc(n):

print "Процесс", n


p1 = threading.Thread(target=proc, name="t1", args=["1"])

p2 = threading.Thread(target=proc, name="t2", args=["2"])

p1.start()

p2.start()



Алдымен Thread класының екі нысаны алынады, содан кейін түрлі дәлелдермен іске қосылады. Бұл жағдайда ағындарда бір proc () функциясы жұмыс істейді, онда Thread класты конструктордың args атаулы параметрінде берілген бір дәлел беріледі. Start әдісі() жаңа ағысты іске қосу үшін қызмет ететінін болжау қиын емес. Осылайша, келтірілген мысалда үш ағын жұмыс істейді: негізгі және екі қосымша ("t1" және "t2" аттарымен).



2. Threading Модулінің функциялары.

Мұнда қолданылатын threading модулінде ағындар туралы ақпарат алуға мүмкіндік бар:

activeCount () қазіргі уақытта Thread класының белсенді даналарының санын қайтарады. Шын мәнінде, бұл len(threading.enumerate ()).

currentThread () ағымдағы нысанды қайтарады-ағын, яғни осы функцияны тудырған тиісті басқару ағыны. Егер ағын threading модулі арқылы құрылмаса, объект-ағын қысқартылған функциясымен (dummy thread object) қайтарылады.

enumerate () белсенді ағын тізімін қайтарады. Аяқталған және әлі басталған ағындар тізімге кірмейді.



3. Thread Класы.

Threading класының даналары.Thread Python-бағдарламалар ағындарын ұсынады. Ағында орындалатын әрекеттерді екі жолмен орнатуға болады : орындалатын нысанды және оның дәлелдерін сынып конструкторына беру немесе мұрагерлік арқылы run () қайта анықталған әдісімен жаңа класс алу. Бірінші әдіс жоғарыда мысалда қаралды. Класс конструкторы threading.Thread келесі дәлелдерге ие:

Thread(group, target, name, args, kwargs)



Бұл жерде group-ағын тобы (әзірге пайдаланылмайынша, None тең болуы тиіс), target - run () әдісіне байланысты болатын нысан, name - ағын аты, args және kwargs - target параметрінде берілген нысанды шақыру үшін позициялық және атаулы параметрлердің (тиісінше) реті мен сөздігі. Жоғарыда мысалда тек позициялық параметрлер ғана пайдаланылды, бірақ осы параметрлерді қолдану арқылы да орындауға болады:

import threading


def proc(n):

print "Процесс", n


p1 = threading.Thread(target=proc, name="t1", kwargs={"n": "1"})

p2 = threading.Thread(target=proc, name="t2", kwargs={"n": "2"})

p1.start()

p2.start()

Сол сияқты threading класынан мұрагерлік арқылы жасауға болады.Өз конструкторы мен run әдісін анықтау Thread():

import threading


class T(threading.Thread):

def __init__(self, n):

threading.Thread.__init__(self, name="t" + n)

self.n = n

def run(self):

print "Процесс", self.n


p1 = T("1")

p2 = T("2")

p1.start()

p2.start()



3. Таймер.

Threading класы.Timer берілген уақыттан кейін орындалуы тиіс әрекетті білдіреді. Бұл сынып threading Сынып Ішкі сыныбы .Thread, сондықтан start () әдісімен іске қосылады. Стандартты Hello, world тұжырымында басып шығаратын келесі қарапайым мысал! айтқанын түсіндіреді:

def hello():

print "Hello, world!"


t = Timer(30.0, hello)

t.start()



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Пайдаланушының графикалық интерфейсі бар қосымшаларды жасау.

Сабақтың мақсаты

Пайдаланушының графикалық интерфейсі бар қосымшаларды жасауды қарастыру, талдау.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы



1. Графикалық кітапханаларға шолу.


Python тіліндегі бағдарламалар үшін пайдаланушының графикалық интерфейсін (GUI, G raphical U ser I nterface) құру графикалық интерфейс компоненттерінің тиісті кітапханаларының көмегімен немесе кальканы ағылшын тілінен, виджет кітапханаларын пайдалана отырып болады.


Келесі тізім толық емес, бірақ бар шешімдердің алуан түрлілігін көрсетеді:

  • Tkinter көп платформалы пакет компоненттердің орналасуын жақсы басқаруға ие. Интерфейс әртүрлі платформаларда (Unix, Windows, Macintosh) бірдей көрінеді. Python стандартты жеткізіліміне кіреді. Құжаттама ретінде Фредрик Лунд жазған "An Introduction to Tkinter" ("Tkinter-ге кіріспе") нұсқаулығын пайдалануға болады: http://www.pythonware.com/library/tkinter/introduction/

  • wxPython wxwidgets көп ақылы кітапханасында салынған (бұрын wxWindows деп аталды). Барлық платформалар үшін Ана болып көрінеді, белсенді жетілдірілуде, GL қолдауы жүзеге асырылды. Барлық негізгі платформалар үшін бар. Мүмкін, болашақ Python нұсқаларында Tkinter орын алады. Сайт: http://www.wxpython.org/

  • PyGTK gtk+ және Gnome үшін визуалды компоненттер жиынтығы. Тек GTK платформасы үшін.

  • PyQT / PyKDE Qt (UNIX немесе Windows астында) немесе KDE қолданатын адамдар үшін жақсы пакеттер.

  • Pythonwin MFC айналасында салынған, win32all пакетінде қабықпен бірге жеткізіледі; тек Windows үшін.

  • pyFLTK Xforms аналогы, OpenGL қолдауы. Windows және Unix платформалары үшін бар. Сайт: http://pyfltk.sourceforge.net/

  • AWT, JFC, Swing Jython бірге жеткізіледі, ал Jython үшін Java пайдаланатын құралдар қол жетімді. Java платформасын қолдайды.

  • anygui Python бағдарламасына арналған графикалық интерфейсті құру үшін төменгі платформадан тәуелсіз пакет. Сайт: http://anygui.sourceforge.net/

  • Pythoncard HyperCard/MetaCard идеологиясы бойынша ұқсас графикалық интерфейс құрастырушысы. WxPython базасында жасалған. Сайт: http://pythoncard.sourceforge.net/.


Python-дан Қол жетімді түрлі графикалық кітапханаларға арналған өзекті сілтемелер тізімін мына мекен-жай бойынша табуға болады: http://phaseit.net/claird/comp.lang.python/python_GUI.html

Кітапхана банк-клиент. Мысалы, PythonCard Wxpython пайдаланады, мысалы, Linux платформасында wxwindows көп платформалды GUI-кітапханасына негізделген, ол өз кезегінде GTK+ немесе Motif - ға негізделген, ал сол да X Window шығару үшін қолданылады. Айтпақшы, Motif үшін Python-да өз байланыстары бар.

Дәрісте TCL сценарий тілі үшін белгілі графикалық пакет - TCL/Tk үшін орама болып табылатын Tkinter пакеті қарастырылады. Бұл пакеттің мысалында пайдаланушының графикалық интерфейсін құрудың негізгі принциптерін үйрену оңай.


Графикалық интерфейс туралы.


Жалпы мақсаттағы барлық заманауи графикалық интерфейстер WIMP - Window, Icon, Menu, Pointer (терезе, иконка, мәзір, көрсеткіш) моделі бойынша құрылады. Терезелердің ішінде Графикалық интерфейстің элементтері бейнеленеді, олар қысқа виджеттер деп аталады (widget - штучка). Мәзір терезенің әр түрлі бөліктерінде орналасуы мүмкін, бірақ олардың мінез-құлықтары бірдей: олар алдын ала анықталған әрекеттер жиынтығынан әрекетті таңдау үшін қызмет етеді. Графикалық интерфейсті пайдаланушы" түсіндіреді " қажетті әрекеттерді компьютерлік бағдарламаға көрсеткіш көмегімен түсіндіреді. Әдетте көрсеткіш тінтуір меңзері немесе джойстик болып табылады, бірақ басқа да "сілтегіш" құрылғылар бар. Көмегімен иконок графикалық интерфейс иеленеді тәуелсіздігі тілі және кейбір жағдайларда мүмкіндік береді тез бағдарлай интерфейс.

Графикалық интерфейстің негізгі міндеті пайдаланушы мен компьютер арасындағы коммуникацияны жеңілдету болып табылады. Бұл туралы интерфейсті жобалау кезінде үнемі есте сақтау керек. Программисте (немесе дизайнерде) бар құралдарды қолдану графикалық интерфейсті жасау кезінде әрбір нақты жағдайда пайдаланушыға ыңғайлы виджеттерді таңдай отырып, минимумға дейін қою керек. Сонымен қатар, ең аз таң қаларлық принципін ұстану пайдалы: интерфейс формасынан оның мінез-құлқы түсінікті болуы керек. Нашар ойластырылған интерфейс, тіпті интерфейстің қасбетінде тиімді алгоритм жасырылса да, пайдаланушының бағдарламадан сезінуін бұзады. Интерфейс пайдаланушының типтік әрекеттері үшін ыңғайлы болуы керек. Көптеген қолданбалар үшін мұндай әрекеттер "шеберлер" (wizards) деп аталатын экрандардың жеке серияларына бөлінген. Алайда, егер қосымша-пайдаланушы өзіне қажетті шешімдерді құра алатын конструктор болса, типтік әрекет шешімді құру болып табылады. Типтік әрекеттерді анықтау оңай емес, сондықтан компромиссом "шеберлер" бар гибрид болуы мүмкін және өз құрылыстары үшін жақсы мүмкіндіктер. Дегенмен, графикалық интерфейс барлық жағдайларда ең тиімді интерфейс емес. Көптеген пәндік салалар үшін шешімді белгілі бір формальды тілде немесе сценарий тілінде алгоритм арқылы мәлімдеу оңайырақ.



2. Tk Негіздері.


Графикалық интерфейсі бар кез келген бағдарламаның негізгі ерекшелігі-интерактивтілік. Бағдарлама жай ғана бір нәрсе (пакеттік режимде) өзінің іске қосылуынан аяғына дейін санайды: оның әрекеттері пайдаланушының араласуына байланысты. Іс жүзінде, графикалық қосымша оқиғаларды өңдеудің шексіз циклын орындайды. Графикалық интерфейсті іске асыратын бағдарлама оқиғалы-бағытталған. Ол өзінің ішкі жағдайына сәйкес өңделетін оқиғалар интерфейсінен күтеді.


Бұл оқиғалар графикалық интерфейс элементтерінде (виджеттерде) пайда болады және осы виджеттерге бекітілген өңдеушілермен өңделеді. Виджеттердің өздері көптеген қасиеттерге ие( түсі, өлшемі, орналасуы), тиісті иерархияға (бір виджет басқасының иесі болуы мүмкін), жай-күйіне қол жеткізу әдістері бар.


Виджеттердің орналасуы (басқа виджеттердің ішінде) орналасу менеджерлері деп аталады. Виджет орналасу менеджерінің ережелері бойынша орынға орнатылады. Бұл ережелер виджет координаттарын ғана емес, оның өлшемдерін де анықтай алады. Tk-да орналасқан менеджерлердің үш түрі бар: қарапайым ораушы (pack), тор (grid) және еркін орналасуы (place).


Бірақ бұл графикалық бағдарлама үшін жеткіліксіз. Себебі, графикалық бағдарламадағы кейбір виджеттер белгілі бір жолмен өзара байланысты болуы керек. Мысалы, жылжыту жолағы мәтіндік виджетпен өзара байланысты болуы мүмкін: жолақты пайдаланған кезде виджеттегі мәтін қозғалуы тиіс және керісінше, мәтін бойынша жылжыған кезде жолақтың ағымдағы жағдайын көрсетуі тиіс. TK виджеттері арасындағы байланыс үшін виджеттер мен параметрлерді бір-біріне беретін айнымалылар қолданылады.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Пайдаланушының графикалық интерфейсі бар қосымшаларды жасау.

Сабақтың мақсаты

Пайдаланушының графикалық интерфейсі бар қосымшаларды жасауды қарастыру, талдау.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы



3. Виджеттер сыныптары.


Tk кітапханасында графикалық интерфейсті құру үшін виджеттердің келесі сыныптары таңдалып алынды (алфавиттік ретпен):

  • Button (түйме) кейбір әрекеттерді шақыру (белгілі бір пәрменді орындау) үшін қарапайым түйме.

  • Canvas (сурет) графикалық примитивтерді шығару негізі.

  • Checkbutton (құсбелгі) оған басқан кезде екі күй арасында ауыса алатын түйме.

  • Entry (енгізу өрісі) мәтін жолын енгізуге болатын көлденең өріс.

  • Frame (Рамка) басқа көрнекі компоненттерді қамтитын Виджет.

  • Label (жазу) Виджет мәтінді немесе графикалық суретті көрсете алады.

  • Listbox (тізім) пайдаланушы бір немесе бірнеше элементтерді таңдай алатын тізімді тікбұрышты рамка.

  • Menu (мәзір) қалқымалы (popup) және төмен түсетін (pulldown) мәзірлерді жасауға болатын Элемент.

  • Menubutton (мәзір түймесі) төмендеу мәзірі бар түйме.

  • Message (хабар) жазуларға ұқсас, бірақ ұзын жолдарды бұрауға және орналасу менеджерінің талабы бойынша өлшемін өзгертуге мүмкіндік береді.

  • Radiobutton (селекторлы түйме) балама мәндердің бірін ұсынуға арналған түйме. Мұндай түймелер әдетте топта әрекет етеді. Басқан кезде бір түйме тобы таңдалған, бұдан бұрын "секіріп".

  • Scale (Шкала) белгілі бір диапазонда жылжу арқылы сандық мәнді орындау үшін қызмет етеді.

  • Scrollbar (айналдыру жолағы) айналдыру жолағы басқа виджеттерде айналдыру көлемін көрсету үшін қолданылады. Мүмкін тік және көлденең.

  • Text (пішімделген мәтін) бұл тікбұрышты виджет әр түрлі стильдерді пайдаланып мәтінді өңдеуге және пішімдеуге, мәтінге суреттер мен тіпті терезелерді енгізуге мүмкіндік береді.

  • Toplevel (жоғарғы деңгей терезесі) бөлек терезе ретінде көрсетіледі және басқа виджеттер ішінде болады.

Бұл сыныптардың барлығы бір - бірімен мұрагерлік қатынастары жоқ-олар тең. Бұл жинақ көптеген жағдайларда интерфейсті құру үшін жеткілікті.



Оқиғалар.


Қазіргі заманғы графикалық интерфейс жүйесінде пернетақта мен тінтуірмен байланысты және қандай да бір виджеттің" аумағында" болып жатқан түрлі оқиғаларды бақылау мүмкіндігі бар. Оқиға елінде мәтіндік жол - үш элементтен (модификаторлар, оқиғаның түрі және оқиғаның детализациясы) тұратын оқиға үлгісі түрінде сипатталады.




4. Виджетті жасау және конфигурациялау.


Виджетті жасау тиісті сынып конструкторының шақыруы арқылы жүзеге асырылады . Конструктор шақыру келесі синтаксис бар:


Widget([master[, option=value, ...]])


Мұнда widget - виджет класы, masterвиджет-иесі, option және value - конфигурациялық опция және оның мәні (мұндай жұптар бірнеше болуы мүмкін).


Әрбір виджет config () (немесе configure ())) әдістерімен орнатуға және сөздіктермен жұмыс істеу әдістеріне ұқсас әдістермен оқуға болатын қасиеттерге ие. Төменде қасиеттермен жұмыс істеу үшін мүмкін синтаксис:


widget.config(option=value, ...)

widget["option"] = value

value = widget["option"]

widget.keys()

Сипат атауы Python тілінің негізгі сөзімен сәйкес келген жағдайда, атаудан кейін бір астын сызу қолданылады. Сонымен, class қасиетін class_ сияқты, to_ сияқты қою керек.


Виджетконфигурациясынкезкелгенуақыттаөзгертугеболады. Бұлөзгерісоқиғаныөңдеуциклынақайтаоралғанданемесе update_idletasks () айқынқоңырауыкезіндеэкрандасызылады.


Келесі мысал ішінде екі виджеті бар терезені көрсетеді. Айнымалы жазба енгізу өрісімен тікелей байланысты. Бұл мысал конфигурациялау мүмкіндіктерін көрсету үшін көптеген қасиеттерді пайдаланады:


from Tkinter import *

tk = Tk()

tv = StringVar()

Label(tk,

textvariable=tv,

relief="groove",

borderwidth=3,

font=("Courier", 20, "bold"),

justify=LEFT,

width=50,

padx=10,

pady=20,

takefocus=False,

).pack()

Entry(tk,

textvariable=tv,

takefocus=True,

).pack()

tv.set("123")

tk.mainloop()


Нәтижесінде экранда көруге болады:


Виджеттер жасау кезінде теңшеледі. Сонымен қатар, виджеттер аттармен байланыспайды, оларды тек виджет-терезе ішінде орналастырады. Бұл мысалда textvariable (мәтіндік айнымалы), relief (рельеф), borderwidth (шекараның ені), justify (туралау), width (ені, таныстарда), padx және pady (виджет шегі мен мазмұн арасындағы пикселдегі қабат), takefocus (Tab пернесін басқан кезде фокусты қабылдау мүмкіндігі), font (қаріп, оның тапсырмасының бір тәсілі) қасиеттері қолданылған. Бұл қасиеттер көптеген виджеттер үшін өте типтік, бірақ кейде өлшем бірліктері өзгеше болуы мүмкін, мысалы, Canvas виджеті үшін ені танысу емес пикселде беріледі.


Келесі мысалда фонға, алдыңғы жоспарға (мәтінге), виджетті (шекараны жарықтандыру) белсенді күйде және фокус болмаған кезде бөлу мүмкіндіктері көрсетіледі:

from Tkinter import *

tk = Tk()

tv = StringVar()

Entry(tk,

textvariable=tv,

takefocus=True,

borderwidth=10,

).pack()

mycolor1 = "#%02X%02X%02X" % (200, 200, 20)

Entry(tk,

textvariable=tv,

takefocus=True,

borderwidth=10,

foreground=mycolor1, # fg, текствиджета

background="#0000FF", # bg, фонвиджета

highlightcolor='green', # подсветкаприфокусе

highlightbackground='red', # подсветкабезфокуса

).pack()

tv.set("123")

tk.mainloop()



Қаласаңыз, барлық виджеттер үшін мәнерлі опцияларды бірден орнатуға болады: tk_setPalette () әдісі арқылы. Бұл әдіс бойынша жоғарыда пайдаланылған сипаттардан басқа, selectForeground және select Background (алдыңғы жоспар және бөлу фоны), selectColor (таңдалған күйдегі түс, мысалы, Checkbutton), insertBackground (кірістіру нүктесінің түсі) және т.б. пайдалануға болады.


Ескертпе:


Енгізу өрісінен get () әдісі арқылы да мәнді алуға болады. Мысалы, Entry класының нысанын E деп атасаңыз, мәнді келесідей алуға болады: e.get(). Рас, бұл әдіс Text пішімделген мәтін үшін сынып даналарының get() әдісі сияқты икемділікке ие емес: тек барлық мәнді толығымен алуға болады.

Тапсырма 1. Квадраттардыңтізімі. бүтінтуралы N өсутәртібімен, N-денаспайтыноңбүтінсандарбарлықквадратбасыпшығарыңыз.

Тапсырма 2. Таңертеңгіжүгіру. Біріншікүніспортшытуралыхшақырымжүгіріп, соданкейінолалдыңғықұнынан 10% кемкүнсайыніскеарттырады. усанынаіскеспортшыукилометрденкемемес, ондакүнсанынанықтау. Бағдарламакірістегінақтысандарды x және y аладыжәнебіртабиғинөмірдішығарукерек.

Тапсырма 3. Банктіңқызығушылығы. Банккеқосқанүлесі - рубль. Жылсайынбұлкөрсеткішпайызбенөседі, соданкейінценттіңбөлшекбөлігіжойылады. Анықтаңыз, қаншажылданкейінжарнакемдегендерубльболады. өрнексіз 123.4567 рубль, яғниқосулыболсадегендібілдіреді «бөлшекбөлігіценттасталады». Егерсіз 123 рубльжәне 45 копеекалуғадөңгелектеукейінЕ. 123 рубльжәне 45,67 цент, яғни 123.45 рубльболды. Бағдарламаүштабиғисандардыалады: x, p, y жәнебірбүтіндішығарукерек.

Тапсырма 4. Тізбектіңбіркелкіэлементтерініңсаны. Түзэлементтердіңсанын 0 саныменаяқталатынқатардаанықтаңыз.

Тапсырма 5. Фибоначчисандары. Фибоначчиретікелесідейанықталады:

φ0 = 0, φ1 = 1, φn = φn-1 + φn-2.

Берілгенсанға n, n-th Fibonacci санынанықтаңыз.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Python тілінің интерпретаторы құрылғысы.

Сабақтың мақсаты

Python тілінің интерпретаторы құрылғысын қарастыру.


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

1. Лексикалық талдау.


Программалау тілінің лексикалық анализаторы бағдарламаның бастапқы мәтінін (жалғыз таңбадан тұратын) лексемаларға - тілдің бөлінбейтін "сөздеріне" бөледі.


Python лексемасының негізгі категориялары: идентификаторлар және кілт сөздер (NAME), литералдар (STRING, NUMBER және т.б.), операциялар (OP), бөлгіштер, шегіністерді (INDENT, DEDENT) және жолдардың ұштарын (NEWLINE) белгілеу (өзгерту) үшін арнайы лексемалар, сондай-ақ түсініктемелер (COMMENT). Лексикалық анализатор tokenize модулі арқылы қол жетімді, ал лексемалардың кодтарын анықтау Python стандартты кітапханасының token модулінде болады. Келесі мысал лексикалық талдағышты іс-әрекетте көрсетеді:


import StringIO, token, tokenize


prog_example = """

for i in range(100): # comment

if i % 1 == 0: \

print ":", t**2

""".strip()


rl = StringIO.StringIO(prog_example).readline


for t_type, t_str, (br,bc), (er,ec), logl in tokenize.generate_tokens(rl):

print "%3i %10s : %20r" % (t_type, token.tok_name[t_type], t_str)



Бірақ бұл бағдарламаны лексемаға бөліп, мысалдың бастапқы кодын шығарады:


prog_example:


1 NAME : 'for'

1 NAME : 'i'

1 NAME : 'in'

1 NAME : 'range'

50 OP : '('

2 NUMBER : '100'

50 OP : ')'

50 OP : ':'

52 COMMENT : '# comment'

4 NEWLINE : '\n'

5 INDENT : ' '

1 NAME : 'if'

1 NAME : 'i'

50 OP : '%'

2 NUMBER : '1'

50 OP : '=='

2 NUMBER : '0'

50 OP : ':'

1 NAME : 'print'

3 STRING : '":"'

50 OP : ','

1 NAME : 't'

50 OP : '**'

2 NUMBER : '2'

6 DEDENT : ''

0 ENDMARKER : ''


Іс жүзінде әртүрлі мақсаттар үшін пайдаланылуы мүмкін лексемдер ағыны алынды. Мысалы, Python тілінде синтаксистік "бояу" коды үшін. Token.tok_name сөздігі нөмірі бойынша лексема түріне арналған мнемоникалық атауларды алуға мүмкіндік береді.



2. Синтаксистік талдау.


Бағдарламаның бастапқы мәтінін интерпретатордың байт-кодына түрлендірудің екінші сатысы бастапқы мәтінді синтаксистік талдаудан тұрады. Parser модулі бағдарламалар коды мен Python өрнектері үшін сәйкесінше синтаксистік талдау ағаштарын құру үшін suite() және Express() функцияларын қамтиды. Symbol модулі Python грамматикасының символдарының нөмірлерін, Python грамматикасының символының атауын алу үшін сөздікті қамтиды.


Келесі бағдарлама қарапайым Python ( рrg ) кодын талдайды және синтаксистік талдау ағашын (AST-нысан) туындатады, ол бірден кортежге айналуға және pprint функциясымен әдемі шығаруға болады.pprint (). Бұдан әрі символдардың нөмірлерін грамматикада олардың мнемоникалық белгілеріне (аттарына) айналдыру функциясы анықталады:


import pprint, token, parser, symbol


prg = """print 2*2"""


pprint.pprint(parser.suite(prg).totuple())


def pprint_ast(ast, level=0):

if type(ast) == type(()):

for a in ast:

pprint_ast(a, level+1)

elif type(ast) == type(""):

print repr(ast)

else:

print " "*level,

try:

print symbol.sym_name[ast]

except:

print "token."+token.tok_name[ast],


print

pprint_ast(parser.suite(prg).totuple())


Бұл бағдарлама келесілерді шығарады (ағаш құрылымы шегіністермен көрсетілген):


(257,

(264,

(265,

(266,

(269,

(1, 'print'),

(292,

(293,

(294,

(295,

(297,

(298,

(299,

(300,

(301,

(302,

(303, (304, (305, (2, '2')))),

(16, '*'),

(303, (304, (305, (2, '2')))))))))))))))),

(4, ''))),

(0, ''))


file_input

stmt

simple_stmt

small_stmt

print_stmt

token.NAME 'print'

test

and_test

not_test

comparison

expr

xor_expr

and_expr

shift_expr

arith_expr

term

factor

power

atom

token.NUMBER '2'

token.STAR '*'

factor

power

atom

token.NUMBER '2'

token.NEWLINE ''

token.ENDMARKER ''



3. Байт-кодты алу.


Синтаксистік талдау ағашын алғаннан кейін, компилятор оны интерпретатор орындау үшін жарамды байт-кодқа айналдыруы тиіс. Келесі бағдарламада жеке синтаксистік талдау, Python тілінде кодты (және өрнектерді) құрастыру және орындау (есептеу) жүргізіледі:


import parser


prg = """print 2*2"""

ast = parser.suite(prg)

code = ast.compile('filename.py')

exec code


prg = """2*2"""

ast = parser.expr(prg)

code = ast.compile('filename1.py')

print eval(code)


Parser функциясы.suite () (немесе parser.Express () compile () әдісімен Python байт кодына жинақталатын және code кодында сақталатын AST нысанын (синтаксистік талдау ағашы) қайтарады. Енді бұл кодты exec (немесе eval () функциясы) операторының көмегімен орындауға болады.


Мұнда Python-да соңғы кодты талдау және кодты генерациялау үшін модульдерді біріктіретін compiler пакеті жақында пайда болғанын ескеру қажет. Бұл дәрісте ол қарастырылмайды,бірақ осы процестерді тереңірек зерттегісі келетіндер Python бойынша құжаттарға жүгіне алады.


Байт-кодты зерттеу.


Python-бағдарламаның байт-кодын зерттеу үшін dos модулін ("дизассемблерден" қысқару) пайдалануға болады, ол байт-кодты мнемоникалық түрде көруге мүмкіндік береді . Келесі мысал осы мүмкіндікті көрсетеді:


>>> def f():

... print 2*2

...

>>> dis.dis(f)

2 0 LOAD_CONST 1 (2)

3 LOAD_CONST 1 (2)

6 BINARY_MULTIPLY

7 PRINT_ITEM

8 PRINT_NEWLINE

9 LOAD_CONST 0 (None)

12 RETURN_VALUE



2*2 өрнегінің мәнін есептейтін және басып шығаратын f () функциясы анықталады. Dis() функциясы dis () функциясы Python байт коды мнемоникалық аттармен ұсынылған "ассемблер" түрінде f () функциясының кодын шығарады. Бұл жағдайда, егер де, егер де, егер де, егер де, егер де, егер де, егер де, егер де, егер де, егер де, онда, онда, онда, онда, онда, онда, егер де, онда, онда, онда, онда, егер де, егер де, онда, егер де, онда, онда, онда, егер де, онда, онда, онда, мысалы, онда, онда, онда, онда, онда, егер де, онда, егер де, онда, онда, егер де, онда, егер де, онда, егер де, Return операторсыз функциясы None мәнін қайтарады. Микропроцессор үшін кодтар сияқты кейбір байт-кодтар параметрлерді қабылдайды.


Мнемоникалық атауларды dis тізімінен көруге болады.opname (төменде тек іске қосылған атаулар басылады):


>>> import dis

>>> [n for n in dis.opname if n[0] != "<"]

['STOP_CODE', 'POP_TOP', 'ROT_TWO', 'ROT_THREE', 'DUP_TOP', 'ROT_FOUR',

'NOP', 'UNARY_POSITIVE', 'UNARY_NEGATIVE', 'UNARY_NOT', 'UNARY_CONVERT',

'UNARY_INVERT', 'LIST_APPEND', 'BINARY_POWER', 'BINARY_MULTIPLY',

'BINARY_DIVIDE', 'BINARY_MODULO', 'BINARY_ADD', 'BINARY_SUBTRACT',

'BINARY_SUBSCR', 'BINARY_FLOOR_DIVIDE', 'BINARY_TRUE_DIVIDE',

'INPLACE_FLOOR_DIVIDE', 'INPLACE_TRUE_DIVIDE', 'SLICE+0', 'SLICE+1',

'SLICE+2', 'SLICE+3', 'STORE_SLICE+0', 'STORE_SLICE+1', 'STORE_SLICE+2',

'STORE_SLICE+3', 'DELETE_SLICE+0', 'DELETE_SLICE+1', 'DELETE_SLICE+2',

'DELETE_SLICE+3', 'INPLACE_ADD', 'INPLACE_SUBTRACT', 'INPLACE_MULTIPLY',

'INPLACE_DIVIDE', 'INPLACE_MODULO', 'STORE_SUBSCR', 'DELETE_SUBSCR',

'BINARY_LSHIFT', 'BINARY_RSHIFT', 'BINARY_AND', 'BINARY_XOR', 'BINARY_OR',

'INPLACE_POWER', 'GET_ITER', 'PRINT_EXPR', 'PRINT_ITEM', 'PRINT_NEWLINE',

'PRINT_ITEM_TO', 'PRINT_NEWLINE_TO', 'INPLACE_LSHIFT', 'INPLACE_RSHIFT',

'INPLACE_AND', 'INPLACE_XOR', 'INPLACE_OR', 'BREAK_LOOP', 'LOAD_LOCALS',

'RETURN_VALUE', 'IMPORT_STAR', 'EXEC_STMT', 'YIELD_VALUE', 'POP_BLOCK',

'END_FINALLY', 'BUILD_CLASS', 'STORE_NAME', 'DELETE_NAME',

'UNPACK_SEQUENCE', 'FOR_ITER', 'STORE_ATTR', 'DELETE_ATTR', 'STORE_GLOBAL',

'DELETE_GLOBAL', 'DUP_TOPX', 'LOAD_CONST', 'LOAD_NAME', 'BUILD_TUPLE',

'BUILD_LIST', 'BUILD_MAP', 'LOAD_ATTR', 'COMPARE_OP', 'IMPORT_NAME',

'IMPORT_FROM', 'JUMP_FORWARD', 'JUMP_IF_FALSE', 'JUMP_IF_TRUE',

'JUMP_ABSOLUTE', 'LOAD_GLOBAL', 'CONTINUE_LOOP', 'SETUP_LOOP',

'SETUP_EXCEPT', 'SETUP_FINALLY', 'LOAD_FAST', 'STORE_FAST', 'DELETE_FAST',

'RAISE_VARARGS', 'CALL_FUNCTION', 'MAKE_FUNCTION', 'BUILD_SLICE',

'MAKE_CLOSURE', 'LOAD_CLOSURE', 'LOAD_DEREF', 'STORE_DEREF',

'CALL_FUNCTION_VAR', 'CALL_FUNCTION_KW', 'CALL_FUNCTION_VAR_KW',

'EXTENDED_ARG']



LOAD мәндерді стекке жүктеу, STORE - түсіру, PRINT - басып шығару, BINARY - бинарлық операция және т. б. білдіреді.


4. Баптау.


Python тілінің и нтерпретаторында бағдарламаларды жөндеу мүмкіндіктері бар, ал стандартты жеткізуде қарапайым реттеуші - pdb бар. Келесі мысал баптауға жататын бағдарламаны және баптаудың типтік сессиясын көрсетеді:


# File myfun.py

def fun(s):

lst = []

for i in s:

lst.append(ord(i))

return lst


Сондықтан әдеттегі жөндеу процесі көрінуі мүмкін:


>>> import pdb, myfun

>>> pdb.runcall(myfun.fun, "ABCDE")

> /examples/myfun.py(4)fun()

-> lst = []

(Pdb) n

> /examples/myfun.py(5)fun()

-> for i in s:

(Pdb) n

> /examples/myfun.py(6)fun()

-> lst.append(ord(i))

(Pdb) l

1 #!/usr/bin/python

2 # File myfun.py

3 def fun(s):

4 lst = []

5 for i in s:

6 -> lst.append(ord(i))

7 return lst

[EOF]

(Pdb) p lst

[]

(Pdb) p vars()

{'i': 'A', 's': 'ABCDE', 'lst': []}

(Pdb) n

> /examples/myfun.py(5)fun()

-> for i in s:

(Pdb) p vars()

{'i': 'A', 's': 'ABCDE', 'lst': [65]}

(Pdb) n

> /examples/myfun.py(6)fun()

-> lst.append(ord(i))

(Pdb) n

> /examples/myfun.py(5)fun()

-> for i in s:

(Pdb) p vars()

{'i': 'B', 's': 'ABCDE', 'lst': [65, 66]}

(Pdb) r

- Return -

> /examples/myfun.py(7)fun()->[65, 66, 67, 68, 69]

-> return lst

(Pdb) n

[65, 66, 67, 68, 69]

>>>


Интерактивті реттеуші pdb функциясымен туындайды.runcall () және оның шақыруына (Pdb) командаларды енгізу керек. Бұл баптау сессиясының мысалында келесі командалардың кейбірі пайдаланылды: l (кодталған код фрагментін басып шығару), n (келесі жолға дейін бәрін орындау), s (әдіс немесе функцияны шақыруға тереңдей отырып, келесі қадам жасау), p (мәнді басып шығару), r (ағымдағы функциядан қайтарылғанға дейін бәрін орындау).


Әрине, Python үшін кейбір интерактивті әзірлеушінің қабықтары реттеуші функциясын ұсынады. Сонымен қатар, бағдарламаның негізгі жерлерінде print операторлары қызығушылық тудыратын параметрлерді шығару үшін ұйымдастыру оңай. Әдетте бұл мәселені оқшаулау үшін жеткілікті. CGI-сценарийлерде алдыңғы дәрістердің бірінде айтылған cgitb модулін пайдалануға болады.

Тапсырма 1. А және В екібүтінсандарыберілген (мұнда A ≤ B). Барлықнөмірлерді A-дан B-гедейінбасыпшығарыңыз.

Тапсырма 2. А және В екiбүтiн сандарберiледi, A<="" p="">

<="" p="">Тапсырма 3. A және B екібүтінсандарыберілген, A> B. А-дан B-гедейінбарлықтақнөмірлердібасыпшығарыңыз. Бұлтапсырмада if if операторынпайдаланаалмайсыз.

<="" p="" style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

Тапсырма 4. 10 бүтінсандарберіледі. Олардыңсомасынесептеңіз.

Тапсырма 5. Айнымалылардыңеңазсанынқолданатынбағдарламаныжазыңыз.

Тапсырма 6. Факторлық. N саныныңфакторигі - бұл 1 × 2 × ... × n өнім. Белгілеу: n !. N бүтін сан үшін n мәнінесептеңіз. Бұлтапсырмадаматематиканыпайдалануғатыйымсалынады.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Басқа бағдарламалау тілдерімен Python интеграциясы.


Сабақтың мақсаты

Басқа бағдарламалау тілдерімен Python интеграциясын қарастыру, талдау.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы


1. API.


Python тілінен қол жетімді Модульдер кеңейту модульдері (extension modules) есебінен кеңейтіледі. Кеңею модулдерін C немесе C++ тілінде жазуға және Python бағдарламаларынан шақыруға болады. Бұл дәрісте CPython деп аталатын Python жүзеге асыру туралы әңгіме болады (Jython, Java платформасында Python жүзеге асыру қарастырылмайды).

C тілін пайдалану қажеттілігі Python бағдарламаланған алгоритмі баяу жұмыс істесе, пайда болуы мүмкін. Мысалы, Numeric Модулінің массивтерімен жоғары өнімді операциялар (алдыңғы дәрістердің бірінде айтылған) C тілінде жазылған. Python үшін кеңейту модульдерін құру үшін қажетті мәліметтер стандартты құжаттамада, атап айтқанда "Python/C API Reference Manual" құжатында ("Python/C API"анықтамалық нұсқаулығы) толық көлемде берілген. Мұнда API туралы егжей-тегжейлі мәліметтерсіз кеңейту модулін құрудың негізгі принциптері ғана қарастырылады. Python мүмкіндіктері C++-да қол жетімді екенін байқаған жөн, олар C++ - да пайдалануға болатын C-декларацияларында көрсетілген.

Кеңею модулі үшін қажетті барлық анықтамалар Python тақырып файлында.C/C++компиляторының тақырып файлдарының жолында болуы тиіс h. Python құрастырылған кітапханалардың сол нұсқаларын пайдалану керек. Мүмкіндігінше, C/C++компиляторының сол маркасымен.

Python интерпретаторымен C кодынан байланыс Python интерпретаторында анықталған функцияларды шақыру арқылы жүзеге асырылады. Барлық функциялар Py немесе _Py-да басталады, себебі кеңейту модулінде қақтығыстарды болдырмау үшін осындай аттармен функцияларды анықтау қажет емес.

API арқылы Python тілінің барлық кірістірілген мүмкіндіктері бар (қажет болса, бұл мәселені құжаттама бойынша егжей-тегжейлі зерттеуге болады):

  • py_main (), PyRun_String (), PyRun_File (), Py_CompileString (), PyCompilerFlags () және т. б.),

  • py_initialize (), Py_Finalize (), Py_NewInterpreter (), Py_EndInterpreter (), Py_SetProgramName () және басқалар),

  • py_incref(), Py_DECREF(), Py_XINCREF(), Py_XDECREF(), Py_CLEAR (). C/C++кодында Python-нысандарды құру немесе жою кезінде талап етіледі.

  • ерекшеліктер өңдеу (PyErr* - функциялар және pyexc_* -тұрақты, мысалы, PyErr_NoMemory () және PyExc_IOError )

  • операциялық жүйенің процесін басқару және сервистері ( Py_FatalError(), Py_Exit(), Py_AtExit(), PyOS_CheckStack(), және басқа функциялар/pyos макростары* ),

  • модульдерді импорттау (PyImport_Import () және басқалар),

  • сериализацияны қолдау ( PyMarshal_WriteObjectToFile(), PyMarshal_ReadObjectFromFile() және т. б.)

  • аргументтер жолын талдау қолдау ( PyArg_ParseTuple(), PyArg_VaParse(), PyArg_ParseTupleAndKeywords(), PyArg_VaParseTupleAndKeywords(), PyArg_UnpackTuple() және Py_BuildValue (). Бұл функциялардың көмегімен Python функциясын шақырған кезде берілген c кодында параметрлерді алу міндеті жеңілдетіледі. Pyarg_parse * функциялары алынған аргументтер пішімінің жолын дәлел ретінде қабылдайды,

  • абстрактты нысандардың протоколдарын қолдау: + объект ХАТТАМАСЫ ( PyObject_Print(), PyObject_HasAttrString(), PyObject_GetAttrString(), PyObject_HasAttr(), PyObject_GetAttr(), PyObject_RichCompare ()..., PyObject_IsInstance (), Pyobject_call (), PyObject_Dir () және басқалар). Кез келген Python нысан жасау керек нәрсе + Сан ХАТТАМАСЫ ( PyNumber_Check (), PyNumber_Add (),..., PyNumber_And (),..., PyNumber_InPlaceAdd (),..., PyNumber_Coerce (), PyNumber_Int (),...). Кез келген элементті не істеу керек, Саны + бірізділік протоколы ( PySequence_Check (), PySequence_Size (), Pysequence_repeat (), PySequence_InPlaceConcat (),..., PySequence_GetItem (),..., PySequence_GetSlice (), PySequence_Tuple (), PySequence_Count ()...(Мысалы, сөздік көрініс) (функциялар: PyMapping_Check (), PyMapping_Length (), PyMapping_HasKey (), PyMapping_Keys ()..., PyMapping_SetItemString (), PyMapping_GetItemString () және т. б.) + итератордың ХАТТАМАСЫ (PyIter_Check(), Pyiter_next () + буфер ХАТТАМАСЫ (PyObject_AsCharBuffer (), PyObject_AsReadBuffer (), PyObject_AsWriteBuffer (), PyObject_CheckReadBuffer() )

  • кірістірілген деректер түрлерін қолдау. Алдыңғы тармақта сипатталған ұқсас, бірақ нақты енгізілген деректер түрлері үшін. Мысалы: + Булевский объект ( PyBool_Check () - pybool_type, Py_False-false нысаны, Py_True-True нысаны,

  • pymem_malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_New(), PyMem_Resize(), PyMem_Del (). Әрине, C/C++ жады бөлу құралдарын да қолдануға болады, алайда бұл жағдайда Python интерпретаторы жадысын басқару артықшылықтары пайдаланылмайды (қоқыс және т.б. жинау). Сонымен қатар, жадты босату оны таңдау сияқты тәсілмен жүргізілуі керек. Тағы бір рет еске салу керек, бір жад аймағын қайта босату (сонымен қатар оны босатқаннан кейін жад аймағын пайдалану) c компиляторы тануға мүмкіндігі жоқ елеулі қателіктерге ұшырайды.

  • кіріктірме типті объектілерді анықтауға арналған құрылымдар ( PyObject, PyVarObject және басқа да көптеген).


Ескертпе.

Бұл жерде хаттама деп өз даналарымен операцияларды ұйымдастыру үшін қандай да бір сыныпты қолдауы тиіс әдістер жиынтығы түсініледі. Бұл әдістер тек Python (мысалы, len(A) тізбектің ұзындығын береді) ғана емес, сонымен қатар C кодынан ( Sequence_Length () қол жетімді.


Жұмыс жоспары
Тапсырма 1. X нөмірін ескеріңіз. Бұл нөмір осы аралыққа [а, б] сәйкес келетінін анықтаңыз.

Тапсырма 2. А нақты саны беріледі, егер f (x) = x2 + 4x + 5 болса, онда f (A)


x> 2; әйтпесе f (x) = 1 / (x2 + 4x + 5).

Тапсырма 3. Патшаныңжолы

Шахмат патшасыкөлденең, тігіненжәнедиагональменжүреді, бірақ тек 1 шаршы. Шахмат тақтасыныңекітүрліжасушасынескереотырып, корольдіңбіріншікезектенекіншіайналымғабірретауысаалатынынанықтаңыз. Бағдарламаәрқайсысы 1-ден 8-ге дейінгітөртнөмірдіқабылдайды, ал біріншіұяшықүшінбағанныңнөмірі мен жолдыңнөмірінкөрсетіп, екіншіұяшықүшін. Егербағдарламаныңбіріншіұяшығынанекіншісіненемесе '' NO '' депжазылса, бағдарлама «YES»

Жұмыстыңнәтижесі: тестілеунәтижелерібойынша 1-3 тапсырмалардыңбағдарламасытуралыесеп.





Бақылау сұрақтары
1. Сызықтық алгоритмдерден тармақталған алгоритмдер арасындағы айырмашылық қандай?

2. Неге барлық тапсырмаларды желілік алгоритмдер арқылы шешуге болады деп ойлайсыз?

3. Сіз қандай да бір бағдарламаны әзірлеу үшін сызықтық алгоритмдер мен филиалдар жеткілікті болады деп ойлайсыз ба?

4. Неге екі айнымалының мәндерін екі кезеңмен алмастыру мүмкін емес: a = b; b = a?

5. Шартты операторлардың толық және толық емес нысандардағы айырмашылығы қандай? Сіз қалай ойлайсыз?
Сізге толық емес пішін қажет пе?

6. Сіз қандай қарым-қатынас білесіз? Қандай қатынастар «тең» және «тең емес» дегенді білдіреді?

7. Таңдауды бірнеше нұсқадан қалай ұйымдастыру керек?

8. Қандай қиын жағдай?

9. Есептеу процедурасы күрделі жағдайда қалай анықталады?



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Басқа бағдарламалау тілдерімен Python интеграциясы.


Сабақтың мақсаты

Басқа бағдарламалау тілдерімен Python интеграциясын қарастыру, талдау.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Кеңейту модулін жазу.


Егер Python бағдарламасын енгізу қажет болса, онда C/C++ модулін жазу арқылы оның кеңеюі - өте кең таралған тәжірибе. Бастапқыда Python кеңею мүмкіндігін көздеді, сондықтан қазіргі уақытта өте көп C / C++-кітапханалар Python байланысына ие.


Python байланыстыру, бірақ бірнеше автоматтандырылған болуы мүмкін, дегенмен бұл шығармашылық процесс. Өйткені, егер кітапхананы Python-да қарқынды пайдалану ұйғарылса, оны байлау мүмкіндігінше мұқият жасау керек. Мүмкін, байланыстыру барысында кітапхананы пайдалануды жеңілдетуге мүмкіндік беретін объектілі-бағытталған қондырма немесе басқа да сәулеттік өзгерістер жасалады.


Мысал ретінде md5 Модулінің бастапқы кодынан үзінді келтіруге болады, ол md5-дайджесті алу үшін функцияны іске асырады. Модуль иллюстрация мақсатында келтіріледі(яғни қысқартулармен). Модуль өз деректер түрін енгізеді, MD5Type, сондықтан функциялардың жүзеге асырылуын ғана емес, сонымен қатар кірістірілген типті сипаттау әдісін де көруге болады. Осы курс аясында кеңейту модульдерін бағдарламалау барлық қырлылығын оқып, ең бастысы осы сабақтың рухын түсіну. Дәріс курсы авторының пікіріне Қос слэш көрсетеді //:



// заголовочные файлы

#include "Python.h"

#include "md5.h"


// В частности, в заголовочном файле md5.h есть следующие определения:

// typedef unsigned char *POINTER;

// typedef unsigned int UINT4;


// typedef struct {

// UINT4 state[4]; /* state (ABCD) */

// UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */

// unsigned char buffer[64]; /* input buffer */

// } MD5_CTX;


// Структураобъекта MD5type

typedef struct {

PyObject_HEAD

MD5_CTX md5; /* the context holder */

} md5object;


// Определениетипаобъекта MD5type

static PyTypeObject MD5type;


// Макроспроверкитипа MD5type

#define is_md5object(v) ((v)->ob_type == &MD5type)


// Порождение объекта типа MD5type

static md5object *

newmd5object(void)

{

md5object *md5p;

md5p = PyObject_New(md5object, &MD5type);

if (md5p == NULL)

return NULL; // нехватилопамяти

MD5Init(&md5p->md5); // инициализация

return md5p;

}


// Определения методов


// Освобождение памяти из-под объекта

staticvoid

md5_dealloc(md5object *md5p) { PyObject_Del(md5p); }


static PyObject *

md5_update(md5object *self, PyObject *args)

{

unsigned char *cp;

int len;


// разбор строки аргументов. Формат указывает следующее:

// s# - один параметр, строка (заданная указателем и длиной)

// : - разделитель

// update - название метода

if (!PyArg_ParseTuple(args, "s#:update", &cp, &len))

return NULL;


MD5Update(&self->md5, cp, len);


// Даже возврат None требует увеличения счетчика ссылок

Py_INCREF(Py_None);

return Py_None;

}


// Строкадокументацииметода update

PyDoc_STRVAR(update_doc,

"update (arg)\n\

\n\

Update the md5 object with the string arg. Repeated calls are\n\

equivalent to a single call with the concatenation of all the\n\

arguments.");


// Метод digest

static PyObject *

md5_digest(md5object *self)

{

MD5_CTX mdContext;

unsigned char aDigest[16];


/* make a temporary copy, and perform the final */

mdContext = self->md5;

MD5Final(aDigest, &mdContext);


// результатвозвращаетсяввидестроки

return PyString_FromStringAndSize((char *)aDigest, 16);

}


// истрокадокументации

PyDoc_STRVAR(digest_doc, "digest() -> string\n\ ...");



static PyObject *

md5_hexdigest(md5object *self)

{

// Реализацияметодана C

}


PyDoc_STRVAR(hexdigest_doc, "hexdigest() -> string\n...");



// Здесь было определение метода copy()


// Методы объекта в сборе.

// Для каждого метода указывается название, имя метода на C

// (с приведением к типу PyCFunction), способ передачи аргументов:

// METH_VARARGS (переменное кол-во) или METH_NOARGS (нет аргументов)

// В конце массива - метка окончания спиcка аргументов.

static PyMethodDef md5_methods[] = {

{"update", (PyCFunction)md5_update, METH_VARARGS, update_doc},

{"digest", (PyCFunction)md5_digest, METH_NOARGS, digest_doc},

{"hexdigest", (PyCFunction)md5_hexdigest, METH_NOARGS, hexdigest_doc},

{"copy", (PyCFunction)md5_copy, METH_NOARGS, copy_doc},

{NULL, NULL} /* sentinel */

};


// Атрибуты md5-объекта обслуживает эта функция, реализуя метод

// getattr.

static PyObject *

md5_getattr(md5object *self, char *name)

{

// атрибут-данное digest_size

if (strcmp(name, "digest_size") == 0) {

returnPyInt_FromLong(16);

}

// поиск атрибута-метода ведется в списке

return Py_FindMethod(md5_methods, (PyObject *)self, name);

}


// Строкадокументациикмодулю md5

PyDoc_STRVAR(module_doc, "This module implements ...");


// Строкадокументациикклассу md5

PyDoc_STRVAR(md5type_doc, "An md5 represents the object...");


// Структура для объекта MD5type с описаниями для интерпретатора

static PyTypeObject MD5type = {

PyObject_HEAD_INIT(NULL)

0, /*ob_size*/

"md5.md5", /*tp_name*/

sizeof(md5object), /*tp_size*/

0, /*tp_itemsize*/

/* methods */

(destructor)md5_dealloc, /*tp_dealloc*/

0, /*tp_print*/

(getattrfunc)md5_getattr, /*tp_getattr*/

0, /*tp_setattr*/

0, /*tp_compare*/

0, /*tp_repr*/

0, /*tp_as_number*/

0, /*tp_as_sequence*/

0, /*tp_as_mapping*/

0, /*tp_hash*/

0, /*tp_call*/

0, /*tp_str*/

0, /*tp_getattro*/

0, /*tp_setattro*/

0, /*tp_as_buffer*/

0, /*tp_xxx4*/

md5type_doc, /*tp_doc*/

};



// Функции модуля md5:


// Функция new() для получения нового объекта типа md5type

static PyObject *

MD5_new(PyObject *self, PyObject *args)

{

md5object *md5p;

unsigned char *cp = NULL;

intlen = 0;


// Разбор параметров. Здесь вертикальная черта

// в строке формата означает окончание

// списка обязательных параметров.

// Остальное - как и выше: s# - строка, после : - имя

if (!PyArg_ParseTuple(args, "|s#:new", &cp, &len))

return NULL;


if ((md5p = newmd5object()) == NULL)

returnNULL;


// Если был задан параметр cp:

if (cp)

MD5Update(&md5p->md5, cp, len);


return (PyObject *)md5p;

}


// Строка документации для new()

PyDoc_STRVAR(new_doc, "new([arg]) -> md5 object ...");


// Список функций, которые данный модуль экспортирует

static PyMethodDef md5_functions[] = {

{"new", (PyCFunction)MD5_new, METH_VARARGS, new_doc},

{"md5", (PyCFunction)MD5_new, METH_VARARGS, new_doc},

{NULL, NULL} /* Sentinel */

};

// Следует заметить, что md5 - то же самое, что new. Эта функция оставлена для

// обратной совместимости со старым модулем md5


// Инициализация модуля

PyMODINIT_FUNC

initmd5(void)

{

PyObject *m, *d;


MD5type.ob_type = &PyType_Type;

// Инициализируетсямодуль

m = Py_InitModule3("md5", md5_functions, module_doc);

// Получается словарь с именами модуля

d = PyModule_GetDict(m);

// Добавляется атрибут MD5Type (тип md5-объекта) к словарю

PyDict_SetItemString(d, "MD5Type", (PyObject *)&MD5type);

// Добавляется целая константа digest_size к модулю

PyModule_AddIntConstant(m, "digest_size", 16);

}

Осы мысал негізінде C/API бойынша құжаттамамен және Python стандартты жеткізуден "Extending and Embedding" ("кеңейту және кірістіру") құжатымен танысып, өз кеңейту модульдерін құруға болады. Өз модулін құруға кірісер алдында, бұл орынды екеніне көз жеткізу керек: қолайлы модуль әлі құрылмаған және таза Python түрінде іске асыру тиімсіз. Егер шын мәнінде пайдалы модуль жасалса, оны Python жеткізу үшін ұсынуға болады. Ол үшін электрондық пошта арқылы әзірлеушілердің біреуімен немесе "патч" түрінде модульді ұсыну қажет. http://sourceforge.net ескерту.



3. SWIG пайдалану.

SWIG (Simplified Wrapper and Interface Generator, оңайлатылған ораушы және интерфейстер генераторы) - бұл C және C++ жазылған кітапханаларды, сондай-ақ басқа да бағдарламалау тілдерінде, оның ішінде (соңғы емес!) Python. Айта кету керек, SWING C++ барлық мүмкіндіктеріне, соның ішінде алдын ала өңдеу, сыныптар, көрсеткіштер, мұрагерлік және тіпті c++үлгілеріне толық қолдау көрсетеді. Соңғы шаблондар кітапханасына интерфейс жасау қажет болса өте маңызды.

SWIG қолдану компилятор мен компиляторды қолдана білсеңіз жеткілікті (C/C++бағдарламалау кезінде қажет).

SWIG пайдалану қарапайым мысал

Мысалы, кейбір функцияны іске асыратын C бағдарламасы бар (бұл жолда әр түрлі таңбалардың пайда болу жиілігін есептеу болсын):

/* File : freq.c */

#include <stdlib.h>


int * frequency(char s[]) {

int *freq;

char *ptr;

freq = (int*)(calloc(256, sizeof(int)));

if (freq != NULL)

for (ptr = s; *ptr; ptr++)

freq[*ptr] += 1;

return freq;

}



Python функциясын пайдалану үшін интерфейс файлын жазу керек (кеңейту .i) мынадай мазмұндағы шамамен:

/* File : freq.i */

%module freq


%typemap(out) int * {

int i;

$result = PyTuple_New(256);

for(i=0; i<256; i++)

PyTuple_SetItem($result, i, PyLong_FromLong($1[i]));

free($1);

}


extern int * frequency(char s[]);



Интерфейстік файлдарда SWIG нұсқауы және C/C++-кодтың фрагменттері бар, мүмкін, макровключен (мысалы, жоғарыда: $result, $1 ). Long типті элементтердің кортежіне бүтін сандардың массивін түрлендіру үшін жиіліктер есептелген бастапқы массивтен жадыны босату қажет. Енді (gcc компиляторы пайдаланылады), кеңейту модулін жасау шамамен осылай орындалуы мүмкін:

swig -python freq.i

gcc -c -fpic freq_wrap.c freq.c -DHAVE_CONFIG_H

-I/usr/local/include/python2.3 -I/usr/local/lib/python2.3/config

gcc -shared freq.o freq_wrap.o -o _freq.so

Осыдан кейін жұмыс каталогында файл пайда болады _freq .so және freq.py, олар бірге және қажетті функцияға қол жеткізуге мүмкіндік береді:

>>> import freq

>>> freq.frequency("ABCDEF")[60:75]

(0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L)



Сонымен қатар, freq_wrap файлының мазмұнын көруге болады.SWIG туған c: онда SWIG өзіне қажетті басқа да көмекші анықтамалардың арасында md5 Модулінің жоғарыда сипатталған мысалына ұқсас нәрсе көруге болады. Мұнда frequency функциясы үшін орау анықтамасы бар осы файл фрагменті():

extern int *frequency(char []);

static PyObject *_wrap_frequency(PyObject *self, PyObject *args) {

PyObject *resultobj;

char *arg1 ;

int *result;


if(!PyArg_ParseTuple(args,(char *)"s:frequency",&arg1)) goto fail;

result = (int *)frequency(arg1);


{

int i;

resultobj = PyTuple_New(256);

for(i=0; i<256; i++)

PyTuple_SetItem(resultobj, i, PyLong_FromLong(result[i]));

free(result);

}

return resultobj;

fail:

return NULL;

}

Жаттығу ретінде бұл анықтаманы freq файлымен салыстыру ұсынылады.i және_wrap_frequency функциясының ішінде не болып жатқанын түсіну (). Кеңес: сіз md5 Модулінің C-кодына тағы да түсініктеме көре аласыз .

Тағы да еске салу керек, Python қарағанда, C/C++ тілінде жадыны басқару анық түрде болуы тиіс. Сондықтан түрі түрлендірілген кезде free() функциясы қосылды. Егер мұны істемесе, жад ағуы пайда болады . Функцияны бірнеше рет орындаған кезде бұл ағуларды табуға болады:

>>> import freq

>>> for i in xrange(1000000):

... dummy = freq.frequency("ABCDEF")

>>>

Егер freq функциясы болса .frequency () жады ағуы бар, процесс өте тез барлық жадты алады.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Функция, рекурсия

Сабақтың мақсаты


Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Қазіргі уақытта біз мәндерді шығарудың екі әдісін анықтадық: операторлық өрнектер (өрнектер) және басып шығару () функциясы. (Үшінші әдіс - файл нысандарының жазу () әдісін қолдану; сіз стандартты шығыс файлына sys.stdout ретінде сілтеме жасай аласыз. Осы тармақ туралы көбірек ақпарат алу үшін Кітапхана анықтамасын қараңыз.)

Көбінесе бос орындармен бөлінген мәндерді кәдімгі басып шығарудан гөрі шығарылымды пішімдеуді көбірек басқарғысы келеді. Шығарылымды пішімдеудің екі әдісі бар. Бірінші әдіс - барлық жұмыстарды өзіңіз жасау: сызықтарды қысқарту және байланыстыру арқылы сіз өзіңіз қалаған шаблонды жасай аласыз. Стандартты жол модулінде жолдарды белгілі бір баған еніне туралау үшін көптеген пайдалы операциялар бар (біз оларды жақын арада қарастырамыз). Екінші әдіс - str.format () әдісін қолдану.

Жол модулінде Шаблондар класы бар, ол мәндерді жолдарға ауыстырудың басқа жолын ұсынады.

Str () функциясының мақсаты - мәндерді аударылған (немесе балама синтаксис болмаған жағдайда SyntaxError тудыруы мүмкін) нысандарды құру болып табылатын repr () -тен айырмашылығы мәндерді қайтарып алу. Адамның оқи алатын нысаны жоқ нысандар үшін str () функциясы repr () сияқты мәнді қайтарады. Сандар немесе құрылымдар сияқты көптеген мәндер, мысалы тізімдер мен сөздіктер, екі функция үшін де бірдей. Жолдар мен өзгермелі нүкте нөмірлері, атап айтқанда, екі түрлі формада болады.

Квадраттар мен кубтардың кестесін көрсетудің екі әдісі:

(Бірінші мысалда, басып шығару () функциясы бағандар арасындағы жалғыз бос орынға қосылатындығын ескеріңіз: ол әрқашан оның параметрлері арасындағы бос орындарды кірістіреді)

Бұл мысалда жолдың сол жаққа шегіну арқылы жолды ені өрісінде оң жаққа туралайтын rjust () әдісінің жұмысы көрсетілген. Ұқсас әдістерді түзету () және центр () үшін қолдануға болады. Бұл әдістер ештеңе шығармайды, олар тек жаңа жолды қайтарады. Егер кіріс сызығы тым ұзын болса, онда олар оны кесіп тастамайды, бұл әдетте зұлымдықтың кішіреюі болып табылады. (Кесу үшін кесу амалын қосуға болады, мысалы: x.ljust (n) [: n].)

Тағы бір әдіс бар - zfill (), ол сан жолының сол жағындағы бос орындармен толтырылады. Ол плюс және минус белгілерін таниды:

Str.format () әдісін қолданудың негізгі әдісі келесідей:

Ішінде таңбалары бар жақшалар (олар аталады) өрістерді пішімдеу (өрістерді пішімдеу)) форматтау әдісіне өткен нысандармен алмастырылады. Жақшадағы сан пішім әдісіне өткен параметрлер тізіміндегі объектінің орнын көрсетеді.

Егер пішімдеу әдісі аталған параметрлерді қолданса, сіз тиісті аргументтің атын қолдана отырып олардың мәндеріне сілтеме жасай аласыз.

Бақылау сұрақтары
1. Мәліметтердің қандай типтерін білесіз?

2. Қандай мәліметтер логикалық айнымалыларға жазылады?

3. Python тіліндегі айнымалылардың ерекшеліктері туралы айтыңыз.

4. Амалдардыңбасымдылықтарыдегеніміз не? Ол не үшінқажет?

5. Амалдарқандайретпенорындалады, егеролардыңбасымдылықтарыбірдейболса?

6. Жақшалар не үшінқолданылады?

7. Егерөрнектіңқұрамындаәртүрлісандықтиптердіңайнымалыларыболса, не болады?

8. // және % амалдарынсипаттаңыз.

9. Қандайстандарттыфункциялардыбілесіз? Тригонометриялықфункциялардыңаргументіқандайбірлікпенберіледі?

10. Нақтысандыбүтінсанғажуықтапдөңгелектеудіқалайорындауғаболады?

Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Массивті өңдеу алгоритмі

Сабақтың мақсаты

Тақырып бойынша білімдерін нығайту

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Қысқашатеориялықмәлімет
1. 
Шартты оператор:

ifшарт:


1 нұсқауларблогы

else:


2 нұсқауларблогы

Шартты оператор келесі алгоритм бойыншажұмысістейді:

Алдымен IF қызметтіксөзіненкейінорналасқанлогикалықөрнектің (шарттың) мәніесептеледі. Егероныңнәтижесіақиқатболса, жаңақатарда 4 бос орынменбасталатын 1 нұсқауларблогыорындалады, егернәтижесіжалғанболса, онда ELSE сөзіненкейінорналасқан 2 нұсқауларблогыорындалады.

Нұсқауларблогықажеттіоператорларсанынантұруымүмкін, бірақолардыңбарлығыміндеттітүрде 4 бос орыннанкейінжазылуыкерек.



1 мысал. Берілгенекісанныңүлкенінэкранғашығару.

x= int(input('Введите первое число'))

y= int(input('Введите второе число'))

if x > y:

print('Большеечисло', x)

else:


print('
Большеечисло', y)

Шарттынұсқауда else сөзіменкелесіблокболмауыдамүмкін. Мұндайнұсқаутолықеместармақталудепаталады. Мысалы, егер:


2 мысал. Пернетақтадан х саны еншізіледіжәнебіз оны абсолюттікөлшемге, осы санныңмодулінеалмастырғымызкеледіМұныбылайжасауғаболады: егер сан терісболса, «унарлық минус» дегенамалдықолдануымыз, ал егер сан оңболса, ондаештеңеөзгертпестеншығаруымызкерек.

x = int(input())

if x < 0:

x = -x


print(x)

Бұлмысалдахайнымалыға –x мәніменшіктеледі, бірақтек x<0 болғандағана. Ал print(x) нұсқауытексерілетіншартқатәуелсіз, әрқашандаорындалады.



2 мысал: Пайдаланушымектептегісыныпнөміріненгізеді, бағдарламаоныңқайсыныпқажататынытуралыхабарламашығарады.

n=int(input('Введите номер класса'))

if n<4:

print('Младшиеклассы')



else:

if n<9:


print('Средние классы')

else:


print('Старшие классы')

Салыстыру операторлары

Әдетте, тексерілетіншартретіндетөмендегісалыстыруоператорларыныңбірінесептеунәтижесіқолданылады:



кіші — шартдұрыс, егербірінші операнд екіншісіненкішіболса.

үлкен — шартдұрыс, егербірінші операнд екіншісіненүлкенболса.

<= кішінемесетең.

>= үлкеннемесетең.

== теңдік. Шартдұрыс, егерекі операнд теңболса.

!= теңсіздік. Шартдұрыс, егерекі операнд теңболмаса.

Мысалы, (x*x < 1000) шарты «x*x мәні 1000 нанкіші» дегенді, ал (2 * x != y) шарты «х айнымалысыныңмәні у айнымалыныңмәнінетеңемес» дегендібілдіреді.

Питондасалыстыруоператорларынтізбеккебіріктіруге (көптегенбасқа да бағдарламалаутілдерінеқарағанда, мұндаолүшінлогикалықбайланыстардықолданукерек) болады, мысалы, a == b == c немесе 1 <= x <= 10.

Сонда 2 мысалдыдұрысырақжазуғаболатынеді :

n=int(input('Введите номер класса'))

if 1<=n<=4:

print('Младшиеклассы')

else:


if 4<n

print('Средняяшкола')

else:

print('Старшиеклассы')



Салыстыруоператорларыарнайы bool логикалықтипініңмәнінқайтарады. ЛогикалықтиптіңмәндеріекімәндердіңбірінқабылдауымүмкінTrue (ақиқат) немесе False (жалған). Егерлогикалық True мәнін int типінеөзгертсек, онда 1 болады, алегер False болса, онда 0 береді. Керіжағдайда 0 саны False өзгереді, алкезкелгеннөлемессан True өзгередіStr типін bool типінекеріөзгертукезінде, босқатар False, алкезкелгенбосемесқатар True мәнінеөзгереді.

Жұмыстыорындаужоспары

1 тапсырмаПернетақтаданүшсаненгізіледі. Текоңсандардыңғанақосындысынтабукерек.

2 тапсырмаСіздіңенгізгенсаныңызқалдықсыз 3кебөлінетіндігінтексеретінбағдарламақұрыңыз.

3 тапсырмаФункцияныіграфигіөтетіндігіннемесеөтпейтіндігінанықтайтынбағдарламақұрыңыз.

(a,b) координаттарыменберілгеннүктеарқылы y = 5x2 – 7 x + 2. Координаттарпернетақтаданенгізіледі.

4 тапсырмаАдамдыжасыбойыншаталдайтынжәнемектепжасынадейінгі, оқушы, жұмысшы, зейнеткерсияқтытөрттоптардыңбірінежатқызатынбағдарламақұрыңыз. Адамныңжасыпернетақтаданенгізіледі.

5 тапсырма. Санның белгісі

Математикада sign(x) (санныңбелгісі) функциясытөмендегідейанықталған:

sign(x) = 1, егер x > 0,
sign(x) = -1,
егер x < 0,
sign(x) = 0,
егер x = 0.

Берілгенхсаныүшін sign(x) мәні. Бұлесепті if... elif... else нұсқауларынқолдануарқылышешукерек.

</n

Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Жиындар

Сабақтың мақсаты

Тақырып бойынша білімдерін нығайту

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Қысқаша теориялық мәлімет
Кейде бір уақытта бір емес, бірнеше шарттарды тексеру керек болады. Мысалы, берілген санды (n % 2 == 0) (n ді 2ге бөлгенде қалдық 0 тең) шартының көмегімен жұп екендігін/еместігін тексеру керек, ал егер берілген екі n және m бүтін сандардың жұп екендігін тексеру қажет, екі шарттың да әділдігін тексеру керек: n % 2 == 0 және m % 2 == 0, оларды 
and (логикалық ЖӘНЕ) операторының көмегімен біріктіру керек: n % 2 == 0 and m % 2 == 0.

Питон тіліндестандарттылогикалықоператорлар бар:

  • логикалық ЖӘНЕ;

  • логикалық НЕМЕСЕ;

  • логикалықтерістеу.


Логикалық ЖӘНЕ бинарлықоператорлар (яғнисолжәнеоңекі операнды бар оператор) болыптабылады. 
and операторы True мәнінқайтарады, тек екіоперандтыңмәні True болғандағана.

Логикалық НЕМЕСЕ бинарлық оператор болыптабыладыжәнееңболмағанда тек бір операнд TrueтеңболғандағанаTrueмәнінқайтарады. «Логикалық НЕМЕСЕ» операторы or түрінеие.

Логикалық ЕМЕС (терістеу) унарлық (яғнибірғанаоперандпен) оператор болыптабыладыжәнежалғыз операнды бар notтүріндеболады. Логикалық ЕМЕС егер операнд Falseтеңболсажәнекерісіншеболса, Trueқайтарады.

Мысал 1. Кемінде a немесе b сандарыныңбіреуі 0-де аяқталады:

a = int(input())

b = int(input())

if a % 10 == 0 or b % 10 == 0:

print('YES')

else:

print('NO')

Жұмыс жоспары
Тапсырма 1. X нөмірінескеріңіз. Бұлнөміросыаралыққа [а, б] сәйкескелетінінанықтаңыз.

Тапсырма 2. А нақты саны беріледі, егер f (x) = x2 + 4x + 5 болса, онда f (A)


x> 2; әйтпесе f (x) = 1 / (x2 + 4x + 5).

Тапсырма 3. Патшаныңжолы

Шахмат патшасыкөлденең, тігіненжәнедиагональменжүреді, бірақ тек 1 шаршы. Шахмат тақтасыныңекітүрліжасушасынескереотырып, корольдіңбіріншікезектенекіншіайналымғабірретауысаалатынынанықтаңыз. Бағдарламаәрқайсысы 1-ден 8-ге дейінгітөртнөмірдіқабылдайды, ал біріншіұяшықүшінбағанныңнөмірі мен жолдыңнөмірінкөрсетіп, екіншіұяшықүшін. Егербағдарламаныңбіріншіұяшығынанекіншісіненемесе '' NO '' депжазылса, бағдарлама «YES»

Жұмыстыңнәтижесі: тестілеунәтижелерібойынша 1-3 тапсырмалардыңбағдарламасытуралыесеп.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату






Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Арифметикалық өрнектерді есептеу

Сабақтың мақсаты

Кірістірілген жағдайларды, бағдарламалау тіліндегі каскадты шартты операторларды қолдану арқылы күрделі алгоритмдерді жазуды үйрену.

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Қысқаша теориялық мәлімет
1-мысал. X және y нөл емес сандарды ескере отырып, координаталық жазықтықтың квадранттарының нүктесін (x, y) анықтайтын бағдарламаны қарастырыңыз. Бағдарлама операциялардың каскадты реттілігін пайдаланады, егер ... elif ... else:x = int(input())

y = int(input())

if x > 0 and y > 0:

print("Первая четверть")

elif x > 0 and y < 0:

print("Четвертая четверть")

elif y > 0:

print("Вторая четверть")

else:

print("Третья четверть")



Бұлқұрылыста «if», ..., «elif» шарттарыөзкезегіндетексеріледі, шындықтыңбіріншішарттарынасәйкес блок орындалады. Егербарлықшарттаржалғанболса, ондаегербасқаболса, басқа блок орындалады.

Мысал 2. Пайдаланушыенгізгеннөмірүшінамалдықжүйеніанықтау

print("""Кaкoй операционной системой вы пользуетесь?

1 - Windows 7

2 - Windows ХР

3 - Windows Vista

4 -Другая'""')

os = input ( "Введитете число, соответствующее ответу: ")

os = os.rstrip("\r")

if os = "1":

print ("Вывыбрали -Windows 7")

e1if os = "2":

print ("Вы выбрали - Windows ХР")

elif os = "3":

print ("Вывыбрали - Windows Vista")

elifos = "4":

print ("Вы выбрали - Другая")

elifnotos:

print ("Вы не ввели число" )

else:


print ("Мы не смогли определить вашу операционную систему")
Мысал 3. Алдыңғыбағдарламаныпайдаланушыешқандайнөмірдіенгізгенкездеопцияныболдырмауүшінөзгертіңіз

print("""Кaкoй операционной системой вы пользуетесь?

1 - Windows 7

2 - Windows ХР

3 - Windows Vista

4 - Другая:""')

os = input ("Введите число, соответствующее ответу: ")

os = os.rstrip("\r")

if os != "":

if os = "1":

print ("Вывыбрали - Windows 7")

e1if os == "2":

print ("Вывыбрали - Windows ХР")

e1if os == "3":

print("Bывыбрали- Windows Vista")

e1if os == "4":

print ("Вы выбрали- Другая")

e1se:


print ("Мы не смогли определить вашу операционную систему")

else:


print ("Вы не ввели число")
Тапсырма 1. 1-3 мысалдарбағдарламаларыненгізіңіз. Нәтиженіалыңыз

Тапсырма 2. Пайдаланушынөмірінболжайтынбағдарламаныжазыңыз. Бағдарламахабарлардыкөрсетеді: Guessed!, Кішкентай, көптегенадамдар.

Тапсырма 3 .. А нақты саны A беріледі f (A) f (x) = 0 егер x <= 0;
f (x) = x2 - x үшін 0

Бақылаусұрақтары
1. Сызықтықалгоритмдердентармақталғаналгоритмдерарасындағыайырмашылыққандай?

2. Неге барлықтапсырмалардыжелілікалгоритмдерарқылышешугеболадыдепойлайсыз?

3. Сізқандай да бірбағдарламаныәзірлеуүшінсызықтықалгоритмдер мен филиалдаржеткіліктіболадыдепойлайсыз ба?

4. Неге екіайнымалыныңмәндерінекікезеңменалмастырумүмкінемес: a = b; b = a?

5. Шарттыоператорлардыңтолықжәнетолықемеснысандардағыайырмашылығықандай? Сізқалайойлайсыз?
Сізгетолықемеспішінқажетпе?

6. Сізқандайқарым-қатынасбілесіз? Қандайқатынастар «тең» және «теңемес» дегендібілдіреді?

7. Таңдаудыбірнешенұсқаданқалайұйымдастырукерек?

8. Қандайқиынжағдай?

9. Есептеупроцедурасыкүрделіжағдайдақалайанықталады?


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Программалау стилі

Сабақтың мақсаты

Тақырып бойынша білімдерін нығайту

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Қысқаша теориялық мәлімет
Параметрімен бірге цикл деп аталатын цикл үшін Python тіліндегі мүмкіндіктерге бай. For циклында айнымалыны іске қосатын айнымалыны және мәндердің жиынын көрсетесіз. Мәндер жиынтығы тізіммен, жолақпен, жолмен немесе ауқыммен көрсетілуі мүмкін.

Міне, мәнерлер жиынтығы ретінде пайдаланылатын циклды пайдаланудың ең қарапайым мысалы:

i = 1

for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet':



print('#', i, ' color of rainbow is ', color, sep = '')

i += 1


Бұлмысалдаауыспалытүстүсінде 'қызыл', 'апельсин' жәнет.б. мәндердіалады. Циклдіңкорпусындатүстіңатауын, яғниайнымалытүстіңмәнінжәнециклдіңиерархиялықнөмірін, 1-цифрды, соданкейінциклдіңәрөтуіменбіреуіменартаотырып, шығарылады. i = i + 1 (бұлжайғанақысқартылғанжазба) құрылысынатең.
Мәндертізіміндеәртүрліөрнектерболуымүмкін, мысалы:

for i in 1, 2, 3, 'one', 'two', 'three':

print(i)

Алғашқыүштіктіңитерациясыүшін i айнымалы i int типініңмәніналады, алкелесіүшеуі - 'str' типі.


2.
Функция range

Әдетте, циклүшінпайдаланыладынемесеәрекеттертізбегібірнешереталдыналаанықталғансанықайталау, немесефиналғакейбірбастапқықұнынанциклдеайнымалымәнінөзгертуүшін.

циклуақытыналдыналабелгілібірсанынқайталау N біргефункциясымен, циклауқымыүшінпайдалануғаболады:

0, 1, 2, 3 I үшін # баламанұсқаулар: диапазоны (4) Мен: # Мұндациклдікәрекеттердіорындауғаболады

    басыпшығару (i)

    басыпшығару (i ** 2)

# циклаяқталды, себебішегінісібарблокаяқталды

басыпшығару Циклдыңсоңы»)

сандықтұрақтыретінде N, айнымалынынемесееріктіарифметикалықөрнекті (** 10 мысалы, 2) пайдаланылуымүмкін. N құнынөлдікнемесетерісболса, циклтіптібірреторындалмайды.

Ауқымфункциясыбіремес, екіпараметрдіқабылдайалады. Call диапазоны (а, б) индекстікайнымалыбамндердіөтедідегендібілдіреді - 1 екіпараметрлерімендепаталатын, яғнибіріншіпараметрауқымыфункциясын, индексіайнымалыбастапқымәні, екіншіпараметрі-орнатады - индекстікайнымалыболыптабыладыбіріншімәнқабылданбайды. Егер a'b болса, циклбірреторындалмайды. Мысалы, 1-денбастап n-ғадейінгімәндердіесептеуүшінкелесібағдарламанықолдануғаболады:

sum = 0

n = 5


for i in range(1, n + 1):

sum += i


print(sum)

Бұлмысалдаайнымалы i, 1, 2, ..., n мәндерінқабылдайдыжәнеайнымалысоманыңмәнікөрсетілгенмәндербойыншадәйектітүрдеартады.

Ақырында, индекстіңайнымалысытөмендейтінциклдіұйымдастыруүшінауқымдыфункцияныүшпараметрменқолдануқажет. Біріншіпараметриндексайнымалысыныңбастапқымәнінанықтайды, екіншіпараметр - индекстікайнымалыөзгереді (онықоспағанда!), Алүшіншіпараметр - индексайнымалыөзгерісініңсомасы. Мысалы, ауқымды (1, 100, 2) функциясын 1-ден 99-ғадейінгібарлықтақсандарарқылыайналдырааласызжәне 100-ден 1-гедейінбарлықсандарбойыншациклды (100, 0, -1) қолдануғаболады.

I> a, i = a + d, i = a + 2 * d индекстікайнымалымәндерініңмәндерінанықтайдыжәнебарлықмәндерүшін i <б. Егер d <0 болса, айнымалыайнымалы i> b барлықмәндерінқабылдайды.


Жұмыс жоспары

Тапсырма 1. АжәнеВекібүтінсандарыберілген (мұнда A ≤ B). Барлықнөмірлерді A-дан B-гедейінбасыпшығарыңыз.

Тапсырма 2. А және В екiбүтiн сандарберiледi, A<="" p="">

<="" p="">Тапсырма 3. A және B екібүтінсандарыберілген, A> B. А-дан B-гедейінбарлықтақнөмірлердібасыпшығарыңыз. Бұлтапсырмада if if операторынпайдаланаалмайсыз.

<="" p="" style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

Тапсырма 4. 10 бүтінсандарберіледі. Олардыңсомасынесептеңіз.

Тапсырма 5. Айнымалылардыңеңазсанынқолданатынбағдарламаныжазыңыз.

Тапсырма 6. Факторлық. N саныныңфакторигі - бұл 1 × 2 × ... × n өнім. Белгілеу: n !. N бүтін сан үшін n мәнінесептеңіз. Бұлтапсырмадаматематиканыпайдалануғатыйымсалынады.


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Питон тілін қолдану неге тиімді?


Сабақтың мақсаты

Питон бағдарламасының тиімділігін көрсету

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Python-ды түсіну үшін кемінде  ағылшын тілін білу қажет. Есептеу техникасы қауымдастығының зерттеуі бойынша, Python көптеген американдық колледждердің алғашқы бағдарламалау тілі ретінде жетекші орынға ие.

Құрама Штаттарда 39  IT-факультетінің сауалнамасына сәйкес, ол Java-ны ауыстырып, жаңа бағдарламашылар назар аударатын алғашқы жалпыға арналған бағдарламалау тілі болды. 10 IT-факультетінің 8-і (80%) және 39-дан (69%) 27-і мамандықты оқудың бірінші сатысында Python  тұр.

Тілдің өзі 23 жыл бұрын құрылған, бірақ жаңадан келгендерді бағдарламалауға үйрететін тамаша құрал ретінде ол жақында ғана ашылды. Raspberry Pi компаниясы Python-ға әсер етті, бірақ Python әлемнің жетекші компаниялары, атап айтқанда, Google, Yahoo және NASA пайдаланатындығын ұмытпау керек.Қазіргі уақытта Python 2008 жылдан бастап ең танымал бағдарламалау тілдері арасында тұрақты позицияға ие.

Мынасебептердіқарастырыпкөрейік.

Минималдыорнату.

Python-да жұмысістеудібастаудыңқаншалықтыоңайекенінтүсінуүшін, дәлқазір оны жасауғатырысамыз. MacнемесеLinuxжүйесіндежұмысістепжүрсеңіз, компьютердеболса, терминалдыашыңыз, соданкейінPowerShell. Мәтіндікпәрмендердіенгізуүшін бос терезенікөресіз. Енді «python» сөзіненгізіңізжәнеenterпернесінбасыңыз. Сізмынанәрсенікөресіз:

Егербұлболмасажәнесіз «python» ішкібағдарламаемеснемесеұқсаснәрсеболса, Python-ты https://www.python.org/download/ Python-2 орнатыңыз. Қалайболғанда да, Pythonбағдарламасыніскеқосуүшінбірсөздіенгізіңіз.

Pythonсинтаксисіқарапайымағылшыншадантұрады.

Pythonсоншалықтықарапайым. Бізқазіралғашқыбағдарламамыздыжасайаламыз.

Еңқарапайымбағдарламаданбастасақ: бізсіздіңкомпьютеріңізде «HelloWorld!» дегенсөздердікөрсетеміз. БірнешежолдантұратынмәтіннентұратынJavaжәне С-да жазылғанұқсасбағдарламалардысалыстыру. Pythonқұрамында синтаксис пен жасырынайнымалыларжоқ. Кезкелгенадам осы команданықарап, оныңмақсаты не екенінтүсінеді.



Файлды Ғ5 пәрменінпайдаланыпсақтап, іскеқосыңызжәнепәрменіңорындалунәтижесінбірденкөресіз.

Бағдарламаіскеқосылғанкездеқателербірденанықталады.

Қателерәрқашанбіріншіреттәжірбиежасапотырғандапайдаболады. Pythonоларды тез тануғажәнетүзетугемүмкіндікбереді. Сондықтанкөптегенқателержұмыспроцесіндеемес, іскеқосусатысындаанықталады.

Бағдарламаныбастауғатырысқанда, Pythonсізгеқатеніңорналасқанжері мен түрінкөрсетеді.

 Python-дыүйренуөтеоңай.Python-де тақырыптар мен артықкодтаржетіспейді, сондықтанжайқарапайымағылшынтіліндегісөйлемдердіңқұрылымынкөшіруарқылыөтекүрделіұғымдардыигереаласыз. Қазірбізеңқарапайымбағдарламанықұрдық. БірақтіптісізбілетінPythonтуралы аз білеотырып, осы мақаланыоқып, сіз осы бағдарламаныңмақсатықандайекенінайтааласыз.



Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату




Педагогтің аты – жөні


Күні


Сынып:

Қатысушылар саны: Қатыспағандар саны:

Сабақтың тақырыбы


Практикалық тапсырмалар

Сабақтың мақсаты

Білімдерін практикада қолдану дағдысын дамыту

Құндылықтарды дарыту

Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу.

Сабақтың барысы

Сабақтың кезеңі

Педагогтың әрекеті


Оқушының әрекеті


Бағалау

Ресурстар


Сабақтың басы

Оқушылармен сәлемдесу, түгелдеу

Жаңа сабақтың тақырыбы мен мақсатын анықтау.



Зейіндерін сабаққа аударады, жауап береді.

Мадақтау, толықтыру


Оқулық, видео, слайдтар

Сабақтың ортасы

Тапсырмалар


1 тапсырма. x және y сандарыберілген. Олардыңқосындысын, айырмасынжәнекөбейтіндісінесептеңіз.

Нұсқау: x және y сандарыпернетақтаданенгізіледі.



2 тапсырма. Сыныпта N оқушылар бар. Бақылаудансоң: A - бес, B –төрт, C –үшдегенбағалардыалды. Үштің, төрттіңжәнебестіктіңпайыздарынтабыңыз.

3 тапсырма. Екі параллель қосылғанрезисторлардың R1 және R2 кедергілерінентұратын, бөліктегі I күштогыныңмәнінесептейтінбағдарламақұрыңыз, егер осы бөліктегікернеу U теңболса.
Жұмыстыорындаунәтижесі:

Есептеүшбағдарламаның блок-схемасынжәнетестілеунәтижелерінбасыпшығарыңыз.

Бақылаусұрақтары

1. Pythonтіліндеайнымалылардыңатауларынтұрғызуережелерінсипаттаңыз.

  1. Pythonтіліндетүсіндірмесөздерқалайжазылады? Алгоритмдеқателіктііздеукезіндетүсіндірмесөздердіқалайқолдануғаболатынынойлаңыз?

  2. Pythonтіліндешығаруоператорыныңжұмысытуралыайтыңыз.

  3. Айнымалыдегеніміз не? Транспляторайнымалыныңтипінқалайанықтайды?

  4. Айнымалыныңтипі не үшінқажет?

  5. Айнымалыныңмәнінқалайөзгертугеболады?

  6. Меншіктеу операторы дегеніміз не?

  7. Мәліметтердіенгізудіңалдындакөмекшісөздішығару не үшіндұрыс?

  8. Қашандәлшығаруоператорынданәтиженіесептеугеболатынын, ал қашанжекеайнымалыныіскеқосукеректігінойланыңыз.

  9. Форматтықшығарудегеніміз не?


Жауап береді




Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау,

Электрондыоқулық, презентация,


Аяқталуы


Кері байланыс

Қорытындылау

Жауап береді

Тиімді кері байланыс орнату










































Пайдаланылған әдебиеттер тізімі

  1. Ресурсы сайта Л. Шапошниковой (http://younglinux.info) , содержащие

авторские программы

  1. http://younglinux.info/python.php (http://window.edu.ru/resource/825/76825)

  2. http://younglinux.info/algorithm

  3. учебные пособия

 http://younglinux.info/sites/default/files/python_structured_programming.pdf

  1. Сайт Д.П.Кириенко. Московский институт открытого образования. Школа №179

  2. http://www.179.ru/~dk/python.html

  3. Ресурсы сайта профессора, доктора технических наук, учителя информатики высшей категории, автора учебников по информатике К.Ю. Полякова:

    1. http://kpolyakov.spb.ru/loadstat.php?f=/download/ch10-8_python.pdf

    2. http://kpolyakov.spb.ru/loadstat.php?f=/download/slides10-8py.zip

    3. ht tp://kpolyakov.spb.ru/download/progr1011.doc

    4. http://kpolyakov.spb.ru/download/infobr_2013-6.pdf

  4. Сайт дистанционная подготовка по информатике
    http://informatics.mccme.ru/

  5. Изучаем Python Автор: Марк Лутц Издательство: Символ-Плюс ISBN 978-5-93286-159-2, 978-0-596-15806-4; 2011 г. Переводчик: А. Киселев

  6. He ad First Python. Автор: Paul Barry. Bздательство: O'Reilly, год: 2010, Язык: Английский, страниц: 494, формат: pdf, размер: 33 МБ
    (http://forcoder.ru/python/head-first-python-1191)

  7. Hello World!
    Computer Programming for Kids and Other Beginners
    Second edition, Warren D. Sande and Carter Sande
    http://helloworldbookblog.com/

  8. Python for Kids. A Playful Introduction to Programming
    by Jason R. Briggs












Жүктеу
bolisu
Бөлісу
ЖИ арқылы жасау
Файл форматы:
docx
05.02.2025
273
Жүктеу
ЖИ арқылы жасау
Бұл материалды қолданушы жариялаған. Ustaz Tilegi ақпаратты жеткізуші ғана болып табылады. Жарияланған материалдың мазмұны мен авторлық құқық толықтай автордың жауапкершілігінде. Егер материал авторлық құқықты бұзады немесе сайттан алынуы тиіс деп есептесеңіз,
шағым қалдыра аласыз
Қазақстандағы ең үлкен материалдар базасынан іздеу
Сіз үшін 400 000 ұстаздардың еңбегі мен тәжірибесін біріктіріп, ең үлкен материалдар базасын жасадық. Төменде керек материалды іздеп, жүктеп алып сабағыңызға қолдана аласыз
Материал жариялап, аттестацияға 100% жарамды сертификатты тегін алыңыз!
Ustaz tilegi журналы министірліктің тізіміне енген. Qr коды мен тіркеу номері беріледі. Материал жариялаған соң сертификат тегін бірден беріледі.
Оқу-ағарту министірлігінің ресми жауабы
Сайтқа 5 материал жариялап, тегін АЛҒЫС ХАТ алыңыз!
Қазақстан Республикасының білім беру жүйесін дамытуға қосқан жеке үлесі үшін және де Республика деңгейінде «Ustaz tilegi» Республикалық ғылыми – әдістемелік журналының желілік басылымына өз авторлық материалыңызбен бөлісіп, белсенді болғаныңыз үшін алғыс білдіреміз!
Сайтқа 25 материал жариялап, тегін ҚҰРМЕТ ГРОМАТАСЫН алыңыз!
Тәуелсіз Қазақстанның білім беру жүйесін дамытуға және білім беру сапасын арттыру мақсатында Республика деңгейінде «Ustaz tilegi» Республикалық ғылыми – әдістемелік журналының желілік басылымына өз авторлық жұмысын жариялағаны үшін марапатталасыз!
Министірлікпен келісілген курстар тізімі