Түркістан облысы,Созақ ауданы , Шолаққорған ауылы
«№14 Т.Әлімқұлов мектеп-интернат лицей» коммуналдық мемлекеттік мекемесі, информатика пәні мұғалімі:
Байкөбекова Айгерім Қанатбекқызы
Р11 «Python тілінде бағдарламалау» авторлық бағдарлама
Мазмұны
-
Түсінікхат ...................................................................................................
-
Бағдарлама мазмұны ..................................
-
Қысқа мерзімді сабақ жоспарлары ..............................
-
Пайдаланылған әдебиеттер тізімі ........................................................
Түсінікхат
Қазіргі заманда жастарға ақпараттық технологиямен байланысты әлемдік стандартқа сай мүдделі жаңа білім беру өте қажет. Н.Ә.Назарбаев.
Әлемдік білім беру кеңістігіне бағытталған білім берудің негізгі мақсаты – білімді меңгеріп қана қоймай, білік пен дағды арқылы дербестік, ізденімпаздық, дені сау, өзгермелі жағдайда білімді де білікті жасөспірімдерді жан-жақты жеке тұлға ретінде даярлау. Осы мақсаттарды іске асыруда бүгінгі мектеп оқушыларына қойылып отырған мәселелер күн сайын талаптануда. Өйткені келешек қоғамымыздың басты тұлғасы бүгінгі мектеп оқушылары. Жаңа ғасырдың жан - жақты зерделі, талантты адамын қалыптастыру бағытындағы білім беру мәселесі мемлекетіміздің басты назарында. Егеменді ел болып, «ел межесі - елулікке ену» басты мақсатымыз болған соң, білім мен ғылым саласы дүниежүзілік деңгейге сай болуы керек.
Мұғалім иннотехник инновациялық технологияларды жетік меңгерген педагог дәрежесіне көтерілу үшін инновациялық технологияларды меңгеру керек, содан кейін пән бойын ша қандай тарауға, не тақырыпқа пайдалану тиімді деген зерттеу жүреді. Яғни, әрбір инновациялық технологияларды меңгереді, содан кейін меңгерген технологияларды апробациядан сабақ барысында қолдану өткізеді, мұғалім талдау жасай отырып, қандай тарауға немесе тақырыпқа сай қарап тиімді технологияны таңдайды. Бір сабақтың барысында бірнеше технологияны кезекпен, тиімді, оқушыны жалықтырмай жүргізуге болады. Информатика сабағында инновациялық технологияларды пайдалану арқылы оқушылардың ақпараттық құзіреттілігін қалыптастыру, қазіргі заман талабына сай ақпараттық технологияларды, электрондық оқулықтарды және Интернет ресурстарды пайдалану оқушының білім беру үрдісінде шығармашылық қабілетін дамытуға мүмкіндік береді. Осы мәселелер бағдарламаның өзектілігін айқындайды.
Информатикадан «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 тіліне басқа тілдердің ықпалы. Python тілінің кешірек шыққандықтан оған көптеген тілдердің ықпалы болды. Мысалы келесі тілдердің:
Python тілінің басым бөлігі (мысалы, бастапқы кодтың байт-компиляциясы) бұрынырақта басқа бағдарламалау тілдерінде іске асырылатын.
Python тілінің мүмкіндіктері
Python тілін бағдарламалауда қолданудың қажеттігін дәлелдейтін көптеген мүмкіндіктері бар. Олар келесілер:
Соған орай 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 тілінің синтаксисі. Негізгі ережелері:
Инструкцияның ендірілген блогы Инструкцияның жазылуының бейнесіБірнеше арнайы жағдайлар бар. Олар:
a=1;b=2;print(a,b)
Бірнеше инструкцияны бір жолға жазуБұндайды көп қолдануға болмайды, әрқашан да оқылым туралы есте сақтау керек.
if(a==1andb==2and c==3andd==4):# Не забываем про двоеточие print('spam'*3)
Бір инструкцияны бірнеше жолға бөліп жазу коды
ifx>y:print(x)
Құрамдас және негізгі инчтрукцияның денесінің бір жолға жазылуы
Бағдарламалау тілінің толық синтаксисін түсіну үшін көптеген мысалдарды қарастыру керек. Бірнеше есептердің шығарылуын қарастырып барып түсінуге болады. |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Негізгі Стандартты Python модульдері |
||||
|
Сабақтың мақсаты |
Негізгі Стандартты Python модульдерін қарастыру. |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Оқушылар зерттеуі
Стандартты кітапхананың модульдерін зерттеуге кіріспес бұрын, 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 тіліндегі жолдар туралы түсінік беру |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Жолдар. Жолдағы бос орындарды немесе бірнеше бос орындарды «*» таңбасымен алмастыруды қарастырайық. Бұндай есепті шығару үшін бірінші алгоритмін құрып алу керек. Егер жолда бірнеше бос орын кездессе оны бір «*» таңбасымен алмастырып, ал жолдың басы мен соңындағы бос орындарды ою керек. Есепті шығару алгоритмі: Жолды басынан бастап әр таңбасын қарап шығу. Бірінші тұрған бос орындық емес таңбаның нөмірін есте сақтау қажет. Жолдың босорындық емес бірінші таңбасынан соңына дейін бір бөлікті алу. Жолды соңынан бастап қарап шығу. Жолдың соңынан бастағандағы босорындық емес таңбаның нөмірін есте сақтау. Жолдың басынан бастап соңынан санағандағы бірінші босорындық емес таңбаға дейінгі жолдың бір бөлігін алу. Жаңа жолға ескі жолдың бірінші таңбасын меншіктеу (ол барлық жағдайда бос орын емес). Ескі жолдың әр таңбасын қарап шығу. Егер келесі таңба бос орын болмаса, онда жаңа жолды осы таңбаны қосу арқылы форматтау керек. 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 тіліндегі жолдар туралы түсінік беру |
||||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||||
|
Сабақтың барысы |
|||||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|||
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|||
|
Сабақтың ортасы |
Оқушылар зерттеуі Жолдардан санды таңдап алу. Натурал сандар мен сөздерден тұратын жолдар берілген. Бұл жолдардағы сандардантізім құрау керек. Ол үшін жолдарды әрбір таңбасы бойынша қарап шығу керек. Егер келесі таңба сан болса оны жаңа жолға қосу керек. Ары қарай одан кейінгі таңбаларды қарап шығу керек. Егер олар да сандар болса, оларды да жолдың соңына тіркеп отыру қажет. Келесі таңба сан емес болып шыққан жағдайда немесе жолдың соңына жетсек цифрларландан тұрған жолды сандарға айналдырып тізімне қосу керек. Осы бағдарламаның листингі келесі суретте бейнеленген:
Жолдардан санды таңдап алу бағдарламасының листингі
Нөмірі бойынша сөзді табу. Мәтіннен арнайы нөмірі бойынша сөзді табу (мысалы, реттік нөмірі бесінші сөзді табу). Экранға ол сөздің бірінші әрпін шығару керек. Сөзді санау үшін төмендегі программада 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 тіліндегі есептің қысқаша жазылу кестесі
Бұндағы split() әдісі аргументсіз болған жағдайда, жолды бос орындары бойынша сөздерге бөледі. s[n][0] өрнегі тізімнен n- элементті алып тастап, содан соң жолдан бірінші таңбаны алады.
|
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация,
|
|||
|
Аяқталуы
Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|||
|
Педагогтің аты – жөні |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Күні |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың тақырыбы |
Python тіліндегі сандар. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың мақсаты |
Python тіліндегі сандар түрлерін қарастыру |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың барысы |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың ортасы |
Оқушылар зерттеуі . Python тіліндегі сандар.
Python тілінде сандар келесі түрлері бар: бүтін, нақты, комплексті. Бүтін сандар (int). Python тіліндегі сандардың қарапайым сандардан еш айырмашылығы жоқ. Олар қарапайым математикалық операцияларды қолдайды және 5-кестеде көрсетілген.
Математикалық операциялар
2-кестенің жалғасы
Тағы бір айта кететіні, 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 Бүтін сандарға қолданылған операциялар Биттік операциялар. Бүтін сандармен де биттік операцияларды орындауға болады.
Биттік операциялар тізімі
Қосымша әдістер. int.bit_length() - белгісі мен жетекші нөлдерін алып тастағандағы екілік жүйеде санды беру үшін қажетті биттер саны. Төменде көрсетілгендей:>>> >>>n=-37 >>>bin(n) '-0b100101' >>>n.bit_length() 6 int.to_bytes(length, byteorder, *, signed=False) – осы санды беретін байттар жолын қайтарады. Ол келесі 23-суретте көрсетілді.
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 тілі бірнеше функцияларды ұсынады:
Келесі 20-суретте мысалдар көрсетілген.
Санау жүйесіне арналған мысалдар листингі Нақты сандар (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 Қосымша әдістері:
>>>(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 циклықолданғанжөн. Тізімдердің функциялары мен әдістері. Тізімді құрып алған соң олармен жұмыс істеуге болады. Тізімдер үшін негізгі ендірілген функциялар мен әдістер бар.
Тізімдер әдістері
Айта кету керек, тізімдер әдісі жолдың әдісіне қарағанда, тізімнің өзін өзгертеді, сондықтан орындаудың нәтижесін осы айнымалыға жазбауға болады. >>>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 бағдарламалау тілінде функциялар және файлдармен жұмыс жасауды қарастыру. |
|||||||||||||||||||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
|||||||||||||||||||||
|
Сабақтың барысы |
||||||||||||||||||||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
||||||||||||||||||
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
||||||||||||||||||
|
Сабақтың ортасы |
Теориялық материал
Оқушылар
зерттеуі
|
|||||||||||||||||||||
|
Режім |
Белгіленуі |
|
'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 үшін құралы бар:
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. Басқару ағыны туралы. Қазіргі заманғы операциялық жүйеде, тіпті ерекше ештеңе орындамайтын, бір мезгілде бірнеше процесс (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) құру графикалық интерфейс компоненттерінің тиісті кітапханаларының көмегімен немесе кальканы ағылшын тілінен, виджет кітапханаларын пайдалана отырып болады.
Келесі тізім толық емес, бірақ бар шешімдердің алуан түрлілігін көрсетеді:
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 кітапханасында графикалық интерфейсті құру үшін виджеттердің келесі сыныптары таңдалып алынды (алфавиттік ретпен):
Бұл сыныптардың барлығы бір - бірімен мұрагерлік қатынастары жоқ-олар тең. Бұл жинақ көптеген жағдайларда интерфейсті құру үшін жеткілікті.
Оқиғалар.
Қазіргі заманғы графикалық интерфейс жүйесінде пернетақта мен тінтуірмен байланысты және қандай да бір виджеттің" аумағында" болып жатқан түрлі оқиғаларды бақылау мүмкіндігі бар. Оқиға елінде мәтіндік жол - үш элементтен (модификаторлар, оқиғаның түрі және оқиғаның детализациясы) тұратын оқиға үлгісі түрінде сипатталады.
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],
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 тілінің барлық кірістірілген мүмкіндіктері бар (қажет болса, бұл мәселені құжаттама бойынша егжей-тегжейлі зерттеуге болады):
Ескертпе. Бұл жерде хаттама деп өз даналарымен операцияларды ұйымдастыру үшін қандай да бір сыныпты қолдауы тиіс әдістер жиынтығы түсініледі. Бұл әдістер тек Python (мысалы, len(A) тізбектің ұзындығын береді) ғана емес, сонымен қатар C кодынан ( Sequence_Length () қол жетімді.
Жұмыс жоспары Тапсырма 2. А нақты саны беріледі, егер f (x) = x2 + 4x + 5 болса, онда f (A)
Тапсырма 3. Патшаныңжолы Шахмат патшасыкөлденең, тігіненжәнедиагональменжүреді, бірақ тек 1 шаршы. Шахмат тақтасыныңекітүрліжасушасынескереотырып, корольдіңбіріншікезектенекіншіайналымғабірретауысаалатынынанықтаңыз. Бағдарламаәрқайсысы 1-ден 8-ге дейінгітөртнөмірдіқабылдайды, ал біріншіұяшықүшінбағанныңнөмірі мен жолдыңнөмірінкөрсетіп, екіншіұяшықүшін. Егербағдарламаныңбіріншіұяшығынанекіншісіненемесе '' NO '' депжазылса, бағдарлама «YES» Жұмыстыңнәтижесі: тестілеунәтижелерібойынша 1-3 тапсырмалардыңбағдарламасытуралыесеп.
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 () әдісін қолданудың негізгі әдісі келесідей: Ішінде таңбалары бар жақшалар (олар аталады) өрістерді пішімдеу (өрістерді пішімдеу)) форматтау әдісіне өткен нысандармен алмастырылады. Жақшадағы сан пішім әдісіне өткен параметрлер тізіміндегі объектінің орнын көрсетеді. Егер пішімдеу әдісі аталған параметрлерді қолданса, сіз тиісті аргументтің атын қолдана отырып олардың мәндеріне сілтеме жасай аласыз.
Бақылау
сұрақтары 2. Қандай мәліметтер логикалық айнымалыларға жазылады? 3. Python тіліндегі айнымалылардың ерекшеліктері туралы айтыңыз. 4. Амалдардыңбасымдылықтарыдегеніміз не? Ол не үшінқажет? 5. Амалдарқандайретпенорындалады, егеролардыңбасымдылықтарыбірдейболса? 6. Жақшалар не үшінқолданылады? 7. Егерөрнектіңқұрамындаәртүрлісандықтиптердіңайнымалыларыболса, не болады? 8. // және % амалдарынсипаттаңыз. 9. Қандайстандарттыфункциялардыбілесіз? Тригонометриялықфункциялардыңаргументіқандайбірлікпенберіледі? 10. Нақтысандыбүтінсанғажуықтапдөңгелектеудіқалайорындауғаболады? |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Массивті өңдеу алгоритмі |
||||
|
Сабақтың мақсаты |
Тақырып бойынша білімдерін нығайту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқашатеориялықмәлімет ifшарт:
else:
Шартты оператор келесі алгоритм бойыншажұмысістейді: Алдымен IF қызметтіксөзіненкейінорналасқанлогикалықөрнектің (шарттың) мәніесептеледі. Егероныңнәтижесіақиқатболса, жаңақатарда 4 бос орынменбасталатын 1 нұсқауларблогыорындалады, егернәтижесіжалғанболса, онда ELSE сөзіненкейінорналасқан 2 нұсқауларблогыорындалады. Нұсқауларблогықажеттіоператорларсанынантұруымүмкін, бірақолардыңбарлығыміндеттітүрде 4 бос орыннанкейінжазылуыкерек.
x= int(input('Введите первое число')) y= int(input('Введите второе число')) if x > y: print('Большеечисло', x) else:
Шарттынұсқауда else сөзіменкелесіблокболмауыдамүмкін. Мұндайнұсқаутолықеместармақталудепаталады. Мысалы, егер:
x = int(input()) if x < 0: x = -x
Бұлмысалдахайнымалыға –x мәніменшіктеледі, бірақтек x<0 болғандағана. Ал print(x) нұсқауытексерілетіншартқатәуелсіз, әрқашандаорындалады.
n=int(input('Введите номер класса')) if n<4: print('Младшиеклассы')
if n<9:
else:
Әдетте, тексерілетіншартретіндетөмендегісалыстыруоператорларыныңбірінесептеунәтижесіқолданылады:
Мысалы, (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:
print('Средняяшкола') else: print('Старшиеклассы')
Математикада sign(x) (санныңбелгісі) функциясытөмендегідейанықталған:
sign(x) =
1, егер x > 0, Берілгенхсаныүшін sign(x) мәні. Бұлесепті if... elif... else нұсқауларынқолдануарқылышешукерек. </n |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Жиындар |
||||
|
Сабақтың мақсаты |
Тақырып бойынша білімдерін нығайту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқаша теориялық
мәлімет Питон тіліндестандарттылогикалықоператорлар бар:
Логикалық НЕМЕСЕ бинарлық оператор болыптабыладыжәнееңболмағанда тек бір операнд TrueтеңболғандағанаTrueмәнінқайтарады. «Логикалық НЕМЕСЕ» операторы or түрінеие.
Логикалық ЕМЕС (терістеу) унарлық
(яғнибірғанаоперандпен) оператор болыптабыладыжәнежалғыз операнды
бар notтүріндеболады. Логикалық ЕМЕС егер операнд
Falseтеңболсажәнекерісіншеболса, Trueқайтарады. a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO') Тапсырма 2. А нақты саны беріледі, егер f (x) = x2 + 4x + 5 болса, онда f (A)
Тапсырма 3. Патшаныңжолы Шахмат патшасыкөлденең, тігіненжәнедиагональменжүреді, бірақ тек 1 шаршы. Шахмат тақтасыныңекітүрліжасушасынескереотырып, корольдіңбіріншікезектенекіншіайналымғабірретауысаалатынынанықтаңыз. Бағдарламаәрқайсысы 1-ден 8-ге дейінгітөртнөмірдіқабылдайды, ал біріншіұяшықүшінбағанныңнөмірі мен жолдыңнөмірінкөрсетіп, екіншіұяшықүшін. Егербағдарламаныңбіріншіұяшығынанекіншісіненемесе '' NO '' депжазылса, бағдарлама «YES» Жұмыстыңнәтижесі: тестілеунәтижелерібойынша 1-3 тапсырмалардыңбағдарламасытуралыесеп. |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Арифметикалық өрнектерді есептеу |
||||
|
Сабақтың мақсаты |
Кірістірілген жағдайларды, бағдарламалау тіліндегі каскадты шартты операторларды қолдану арқылы күрделі алгоритмдерді жазуды үйрену. |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқаша теориялық
мәлімет y = int(input()) if x > 0 and y > 0: print("Первая четверть") elif x > 0 and y < 0: print("Четвертая четверть") elif y > 0: print("Вторая четверть") else: print("Третья четверть")
Мысал 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("""К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:
else:
Тапсырма 2. Пайдаланушынөмірінболжайтынбағдарламаныжазыңыз. Бағдарламахабарлардыкөрсетеді: Guessed!, Кішкентай, көптегенадамдар.
Тапсырма 3 .. А нақты саны A беріледі f
(A) f (x) = 0 егер x <= 0; 2. Неге барлықтапсырмалардыжелілікалгоритмдерарқылышешугеболадыдепойлайсыз? 3. Сізқандай да бірбағдарламаныәзірлеуүшінсызықтықалгоритмдер мен филиалдаржеткіліктіболадыдепойлайсыз ба? 4. Неге екіайнымалыныңмәндерінекікезеңменалмастырумүмкінемес: a = b; b = a?
5.
Шарттыоператорлардыңтолықжәнетолықемеснысандардағыайырмашылығықандай?
Сізқалайойлайсыз? 6. Сізқандайқарым-қатынасбілесіз? Қандайқатынастар «тең» және «теңемес» дегендібілдіреді? 7. Таңдаудыбірнешенұсқаданқалайұйымдастырукерек? 8. Қандайқиынжағдай? 9. Есептеупроцедурасыкүрделіжағдайдақалайанықталады? |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Программалау стилі |
||||
|
Сабақтың мақсаты |
Тақырып бойынша білімдерін нығайту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқаша теориялық
мәлімет Міне, мәнерлер жиынтығы ретінде пайдаланылатын циклды пайдаланудың ең қарапайым мысалы: i = 1 for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet':
i += 1
for i in 1, 2, 3, 'one', 'two', 'three': print(i) Алғашқыүштіктіңитерациясыүшін i айнымалы i int типініңмәніналады, алкелесіүшеуі - 'str' типі.
Әдетте, циклүшінпайдаланыладынемесеәрекеттертізбегібірнешереталдыналаанықталғансанықайталау, немесефиналғакейбірбастапқықұнынанциклдеайнымалымәнінөзгертуүшін. циклуақытыналдыналабелгілібірсанынқайталау N біргефункциясымен, циклауқымыүшінпайдалануғаболады: 0, 1, 2, 3 I үшін # баламанұсқаулар: диапазоны (4) Мен: # Мұндациклдікәрекеттердіорындауғаболады басыпшығару (i) басыпшығару (i ** 2) # циклаяқталды, себебішегінісібарблокаяқталды басыпшығару («Циклдыңсоңы») сандықтұрақтыретінде N, айнымалынынемесееріктіарифметикалықөрнекті (** 10 мысалы, 2) пайдаланылуымүмкін. N құнынөлдікнемесетерісболса, циклтіптібірреторындалмайды. Ауқымфункциясыбіремес, екіпараметрдіқабылдайалады. Call диапазоны (а, б) индекстікайнымалыбамндердіөтедідегендібілдіреді - 1 екіпараметрлерімендепаталатын, яғнибіріншіпараметрауқымыфункциясын, индексіайнымалыбастапқымәні, екіншіпараметрі-орнатады - индекстікайнымалыболыптабыладыбіріншімәнқабылданбайды. Егер a'b болса, циклбірреторындалмайды. Мысалы, 1-денбастап n-ғадейінгімәндердіесептеуүшінкелесібағдарламанықолдануғаболады: sum = 0 n = 5
sum += i
Бұлмысалдаайнымалы 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туралы аз білеотырып, осы мақаланыоқып, сіз осы бағдарламаныңмақсатықандайекенінайтааласыз.
|
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Практикалық тапсырмалар |
||||
|
Сабақтың мақсаты |
Білімдерін практикада қолдану дағдысын дамыту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Тапсырмалар
Нұсқау: x және y сандарыпернетақтаданенгізіледі.
Есептеүшбағдарламаның блок-схемасынжәнетестілеунәтижелерінбасыпшығарыңыз. Бақылаусұрақтары 1. Pythonтіліндеайнымалылардыңатауларынтұрғызуережелерінсипаттаңыз.
|
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
Пайдаланылған әдебиеттер тізімі
-
Ресурсы сайта Л. Шапошниковой (http://younglinux.info) , содержащие
авторские программы
-
http://younglinux.info/python.php (http://window.edu.ru/resource/825/76825)
-
учебные пособия
http://younglinux.info/sites/default/files/python_structured_programming.pdf
-
Сайт Д.П.Кириенко. Московский институт открытого образования. Школа №179
-
Ресурсы сайта профессора, доктора технических наук, учителя информатики высшей категории, автора учебников по информатике К.Ю. Полякова:
-
Сайт дистанционная подготовка по информатике
http://informatics.mccme.ru/ -
Изучаем Python Автор: Марк Лутц Издательство: Символ-Плюс ISBN 978-5-93286-159-2, 978-0-596-15806-4; 2011 г. Переводчик: А. Киселев
-
He
ad First
Python. Автор: Paul
Barry. Bздательство: O'Reilly, год: 2010, Язык:
Английский, страниц: 494, формат: pdf, размер: 33 МБ
(http://forcoder.ru/python/head-first-python-1191) -
Hello World!
Computer Programming for Kids and Other Beginners
Second edition, Warren D. Sande and Carter Sande
http://helloworldbookblog.com/ -
Python for Kids. A Playful Introduction to Programming
by Jason R. Briggs
жүктеу мүмкіндігіне ие боласыз
Бұл материал сайт қолданушысы жариялаған. Материалдың ішінде жазылған барлық ақпаратқа жауапкершілікті жариялаған қолданушы жауап береді. Ұстаз тілегі тек ақпаратты таратуға қолдау көрсетеді. Егер материал сіздің авторлық құқығыңызды бұзған болса немесе басқа да себептермен сайттан өшіру керек деп ойласаңыз осында жазыңыз
Авторлық бағдарлама
Авторлық бағдарлама
Түркістан облысы,Созақ ауданы , Шолаққорған ауылы
«№14 Т.Әлімқұлов мектеп-интернат лицей» коммуналдық мемлекеттік мекемесі, информатика пәні мұғалімі:
Байкөбекова Айгерім Қанатбекқызы
Р11 «Python тілінде бағдарламалау» авторлық бағдарлама
Мазмұны
-
Түсінікхат ...................................................................................................
-
Бағдарлама мазмұны ..................................
-
Қысқа мерзімді сабақ жоспарлары ..............................
-
Пайдаланылған әдебиеттер тізімі ........................................................
Түсінікхат
Қазіргі заманда жастарға ақпараттық технологиямен байланысты әлемдік стандартқа сай мүдделі жаңа білім беру өте қажет. Н.Ә.Назарбаев.
Әлемдік білім беру кеңістігіне бағытталған білім берудің негізгі мақсаты – білімді меңгеріп қана қоймай, білік пен дағды арқылы дербестік, ізденімпаздық, дені сау, өзгермелі жағдайда білімді де білікті жасөспірімдерді жан-жақты жеке тұлға ретінде даярлау. Осы мақсаттарды іске асыруда бүгінгі мектеп оқушыларына қойылып отырған мәселелер күн сайын талаптануда. Өйткені келешек қоғамымыздың басты тұлғасы бүгінгі мектеп оқушылары. Жаңа ғасырдың жан - жақты зерделі, талантты адамын қалыптастыру бағытындағы білім беру мәселесі мемлекетіміздің басты назарында. Егеменді ел болып, «ел межесі - елулікке ену» басты мақсатымыз болған соң, білім мен ғылым саласы дүниежүзілік деңгейге сай болуы керек.
Мұғалім иннотехник инновациялық технологияларды жетік меңгерген педагог дәрежесіне көтерілу үшін инновациялық технологияларды меңгеру керек, содан кейін пән бойын ша қандай тарауға, не тақырыпқа пайдалану тиімді деген зерттеу жүреді. Яғни, әрбір инновациялық технологияларды меңгереді, содан кейін меңгерген технологияларды апробациядан сабақ барысында қолдану өткізеді, мұғалім талдау жасай отырып, қандай тарауға немесе тақырыпқа сай қарап тиімді технологияны таңдайды. Бір сабақтың барысында бірнеше технологияны кезекпен, тиімді, оқушыны жалықтырмай жүргізуге болады. Информатика сабағында инновациялық технологияларды пайдалану арқылы оқушылардың ақпараттық құзіреттілігін қалыптастыру, қазіргі заман талабына сай ақпараттық технологияларды, электрондық оқулықтарды және Интернет ресурстарды пайдалану оқушының білім беру үрдісінде шығармашылық қабілетін дамытуға мүмкіндік береді. Осы мәселелер бағдарламаның өзектілігін айқындайды.
Информатикадан «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 тіліне басқа тілдердің ықпалы. Python тілінің кешірек шыққандықтан оған көптеген тілдердің ықпалы болды. Мысалы келесі тілдердің:
Python тілінің басым бөлігі (мысалы, бастапқы кодтың байт-компиляциясы) бұрынырақта басқа бағдарламалау тілдерінде іске асырылатын.
Python тілінің мүмкіндіктері
Python тілін бағдарламалауда қолданудың қажеттігін дәлелдейтін көптеген мүмкіндіктері бар. Олар келесілер:
Соған орай 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 тілінің синтаксисі. Негізгі ережелері:
Инструкцияның ендірілген блогы Инструкцияның жазылуының бейнесіБірнеше арнайы жағдайлар бар. Олар:
a=1;b=2;print(a,b)
Бірнеше инструкцияны бір жолға жазуБұндайды көп қолдануға болмайды, әрқашан да оқылым туралы есте сақтау керек.
if(a==1andb==2and c==3andd==4):# Не забываем про двоеточие print('spam'*3)
Бір инструкцияны бірнеше жолға бөліп жазу коды
ifx>y:print(x)
Құрамдас және негізгі инчтрукцияның денесінің бір жолға жазылуы
Бағдарламалау тілінің толық синтаксисін түсіну үшін көптеген мысалдарды қарастыру керек. Бірнеше есептердің шығарылуын қарастырып барып түсінуге болады. |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Негізгі Стандартты Python модульдері |
||||
|
Сабақтың мақсаты |
Негізгі Стандартты Python модульдерін қарастыру. |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Оқушылар зерттеуі
Стандартты кітапхананың модульдерін зерттеуге кіріспес бұрын, 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 тіліндегі жолдар туралы түсінік беру |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Жолдар. Жолдағы бос орындарды немесе бірнеше бос орындарды «*» таңбасымен алмастыруды қарастырайық. Бұндай есепті шығару үшін бірінші алгоритмін құрып алу керек. Егер жолда бірнеше бос орын кездессе оны бір «*» таңбасымен алмастырып, ал жолдың басы мен соңындағы бос орындарды ою керек. Есепті шығару алгоритмі: Жолды басынан бастап әр таңбасын қарап шығу. Бірінші тұрған бос орындық емес таңбаның нөмірін есте сақтау қажет. Жолдың босорындық емес бірінші таңбасынан соңына дейін бір бөлікті алу. Жолды соңынан бастап қарап шығу. Жолдың соңынан бастағандағы босорындық емес таңбаның нөмірін есте сақтау. Жолдың басынан бастап соңынан санағандағы бірінші босорындық емес таңбаға дейінгі жолдың бір бөлігін алу. Жаңа жолға ескі жолдың бірінші таңбасын меншіктеу (ол барлық жағдайда бос орын емес). Ескі жолдың әр таңбасын қарап шығу. Егер келесі таңба бос орын болмаса, онда жаңа жолды осы таңбаны қосу арқылы форматтау керек. 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 тіліндегі жолдар туралы түсінік беру |
||||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||||
|
Сабақтың барысы |
|||||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|||
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|||
|
Сабақтың ортасы |
Оқушылар зерттеуі Жолдардан санды таңдап алу. Натурал сандар мен сөздерден тұратын жолдар берілген. Бұл жолдардағы сандардантізім құрау керек. Ол үшін жолдарды әрбір таңбасы бойынша қарап шығу керек. Егер келесі таңба сан болса оны жаңа жолға қосу керек. Ары қарай одан кейінгі таңбаларды қарап шығу керек. Егер олар да сандар болса, оларды да жолдың соңына тіркеп отыру қажет. Келесі таңба сан емес болып шыққан жағдайда немесе жолдың соңына жетсек цифрларландан тұрған жолды сандарға айналдырып тізімне қосу керек. Осы бағдарламаның листингі келесі суретте бейнеленген:
Жолдардан санды таңдап алу бағдарламасының листингі
Нөмірі бойынша сөзді табу. Мәтіннен арнайы нөмірі бойынша сөзді табу (мысалы, реттік нөмірі бесінші сөзді табу). Экранға ол сөздің бірінші әрпін шығару керек. Сөзді санау үшін төмендегі программада 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 тіліндегі есептің қысқаша жазылу кестесі
Бұндағы split() әдісі аргументсіз болған жағдайда, жолды бос орындары бойынша сөздерге бөледі. s[n][0] өрнегі тізімнен n- элементті алып тастап, содан соң жолдан бірінші таңбаны алады.
|
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация,
|
|||
|
Аяқталуы
Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|||
|
Педагогтің аты – жөні |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Күні |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың тақырыбы |
Python тіліндегі сандар. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың мақсаты |
Python тіліндегі сандар түрлерін қарастыру |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың барысы |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сабақтың ортасы |
Оқушылар зерттеуі . Python тіліндегі сандар.
Python тілінде сандар келесі түрлері бар: бүтін, нақты, комплексті. Бүтін сандар (int). Python тіліндегі сандардың қарапайым сандардан еш айырмашылығы жоқ. Олар қарапайым математикалық операцияларды қолдайды және 5-кестеде көрсетілген.
Математикалық операциялар
2-кестенің жалғасы
Тағы бір айта кететіні, 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 Бүтін сандарға қолданылған операциялар Биттік операциялар. Бүтін сандармен де биттік операцияларды орындауға болады.
Биттік операциялар тізімі
Қосымша әдістер. int.bit_length() - белгісі мен жетекші нөлдерін алып тастағандағы екілік жүйеде санды беру үшін қажетті биттер саны. Төменде көрсетілгендей:>>> >>>n=-37 >>>bin(n) '-0b100101' >>>n.bit_length() 6 int.to_bytes(length, byteorder, *, signed=False) – осы санды беретін байттар жолын қайтарады. Ол келесі 23-суретте көрсетілді.
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 тілі бірнеше функцияларды ұсынады:
Келесі 20-суретте мысалдар көрсетілген.
Санау жүйесіне арналған мысалдар листингі Нақты сандар (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 Қосымша әдістері:
>>>(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 циклықолданғанжөн. Тізімдердің функциялары мен әдістері. Тізімді құрып алған соң олармен жұмыс істеуге болады. Тізімдер үшін негізгі ендірілген функциялар мен әдістер бар.
Тізімдер әдістері
Айта кету керек, тізімдер әдісі жолдың әдісіне қарағанда, тізімнің өзін өзгертеді, сондықтан орындаудың нәтижесін осы айнымалыға жазбауға болады. >>>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 бағдарламалау тілінде функциялар және файлдармен жұмыс жасауды қарастыру. |
|||||||||||||||||||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
|||||||||||||||||||||
|
Сабақтың барысы |
||||||||||||||||||||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
||||||||||||||||||
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
||||||||||||||||||
|
Сабақтың ортасы |
Теориялық материал
Оқушылар
зерттеуі
|
|||||||||||||||||||||
|
Режім |
Белгіленуі |
|
'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 үшін құралы бар:
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. Басқару ағыны туралы. Қазіргі заманғы операциялық жүйеде, тіпті ерекше ештеңе орындамайтын, бір мезгілде бірнеше процесс (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) құру графикалық интерфейс компоненттерінің тиісті кітапханаларының көмегімен немесе кальканы ағылшын тілінен, виджет кітапханаларын пайдалана отырып болады.
Келесі тізім толық емес, бірақ бар шешімдердің алуан түрлілігін көрсетеді:
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 кітапханасында графикалық интерфейсті құру үшін виджеттердің келесі сыныптары таңдалып алынды (алфавиттік ретпен):
Бұл сыныптардың барлығы бір - бірімен мұрагерлік қатынастары жоқ-олар тең. Бұл жинақ көптеген жағдайларда интерфейсті құру үшін жеткілікті.
Оқиғалар.
Қазіргі заманғы графикалық интерфейс жүйесінде пернетақта мен тінтуірмен байланысты және қандай да бір виджеттің" аумағында" болып жатқан түрлі оқиғаларды бақылау мүмкіндігі бар. Оқиға елінде мәтіндік жол - үш элементтен (модификаторлар, оқиғаның түрі және оқиғаның детализациясы) тұратын оқиға үлгісі түрінде сипатталады.
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],
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 тілінің барлық кірістірілген мүмкіндіктері бар (қажет болса, бұл мәселені құжаттама бойынша егжей-тегжейлі зерттеуге болады):
Ескертпе. Бұл жерде хаттама деп өз даналарымен операцияларды ұйымдастыру үшін қандай да бір сыныпты қолдауы тиіс әдістер жиынтығы түсініледі. Бұл әдістер тек Python (мысалы, len(A) тізбектің ұзындығын береді) ғана емес, сонымен қатар C кодынан ( Sequence_Length () қол жетімді.
Жұмыс жоспары Тапсырма 2. А нақты саны беріледі, егер f (x) = x2 + 4x + 5 болса, онда f (A)
Тапсырма 3. Патшаныңжолы Шахмат патшасыкөлденең, тігіненжәнедиагональменжүреді, бірақ тек 1 шаршы. Шахмат тақтасыныңекітүрліжасушасынескереотырып, корольдіңбіріншікезектенекіншіайналымғабірретауысаалатынынанықтаңыз. Бағдарламаәрқайсысы 1-ден 8-ге дейінгітөртнөмірдіқабылдайды, ал біріншіұяшықүшінбағанныңнөмірі мен жолдыңнөмірінкөрсетіп, екіншіұяшықүшін. Егербағдарламаныңбіріншіұяшығынанекіншісіненемесе '' NO '' депжазылса, бағдарлама «YES» Жұмыстыңнәтижесі: тестілеунәтижелерібойынша 1-3 тапсырмалардыңбағдарламасытуралыесеп.
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 () әдісін қолданудың негізгі әдісі келесідей: Ішінде таңбалары бар жақшалар (олар аталады) өрістерді пішімдеу (өрістерді пішімдеу)) форматтау әдісіне өткен нысандармен алмастырылады. Жақшадағы сан пішім әдісіне өткен параметрлер тізіміндегі объектінің орнын көрсетеді. Егер пішімдеу әдісі аталған параметрлерді қолданса, сіз тиісті аргументтің атын қолдана отырып олардың мәндеріне сілтеме жасай аласыз.
Бақылау
сұрақтары 2. Қандай мәліметтер логикалық айнымалыларға жазылады? 3. Python тіліндегі айнымалылардың ерекшеліктері туралы айтыңыз. 4. Амалдардыңбасымдылықтарыдегеніміз не? Ол не үшінқажет? 5. Амалдарқандайретпенорындалады, егеролардыңбасымдылықтарыбірдейболса? 6. Жақшалар не үшінқолданылады? 7. Егерөрнектіңқұрамындаәртүрлісандықтиптердіңайнымалыларыболса, не болады? 8. // және % амалдарынсипаттаңыз. 9. Қандайстандарттыфункциялардыбілесіз? Тригонометриялықфункциялардыңаргументіқандайбірлікпенберіледі? 10. Нақтысандыбүтінсанғажуықтапдөңгелектеудіқалайорындауғаболады? |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Массивті өңдеу алгоритмі |
||||
|
Сабақтың мақсаты |
Тақырып бойынша білімдерін нығайту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқашатеориялықмәлімет ifшарт:
else:
Шартты оператор келесі алгоритм бойыншажұмысістейді: Алдымен IF қызметтіксөзіненкейінорналасқанлогикалықөрнектің (шарттың) мәніесептеледі. Егероныңнәтижесіақиқатболса, жаңақатарда 4 бос орынменбасталатын 1 нұсқауларблогыорындалады, егернәтижесіжалғанболса, онда ELSE сөзіненкейінорналасқан 2 нұсқауларблогыорындалады. Нұсқауларблогықажеттіоператорларсанынантұруымүмкін, бірақолардыңбарлығыміндеттітүрде 4 бос орыннанкейінжазылуыкерек.
x= int(input('Введите первое число')) y= int(input('Введите второе число')) if x > y: print('Большеечисло', x) else:
Шарттынұсқауда else сөзіменкелесіблокболмауыдамүмкін. Мұндайнұсқаутолықеместармақталудепаталады. Мысалы, егер:
x = int(input()) if x < 0: x = -x
Бұлмысалдахайнымалыға –x мәніменшіктеледі, бірақтек x<0 болғандағана. Ал print(x) нұсқауытексерілетіншартқатәуелсіз, әрқашандаорындалады.
n=int(input('Введите номер класса')) if n<4: print('Младшиеклассы')
if n<9:
else:
Әдетте, тексерілетіншартретіндетөмендегісалыстыруоператорларыныңбірінесептеунәтижесіқолданылады:
Мысалы, (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:
print('Средняяшкола') else: print('Старшиеклассы')
Математикада sign(x) (санныңбелгісі) функциясытөмендегідейанықталған:
sign(x) =
1, егер x > 0, Берілгенхсаныүшін sign(x) мәні. Бұлесепті if... elif... else нұсқауларынқолдануарқылышешукерек. </n |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Жиындар |
||||
|
Сабақтың мақсаты |
Тақырып бойынша білімдерін нығайту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқаша теориялық
мәлімет Питон тіліндестандарттылогикалықоператорлар бар:
Логикалық НЕМЕСЕ бинарлық оператор болыптабыладыжәнееңболмағанда тек бір операнд TrueтеңболғандағанаTrueмәнінқайтарады. «Логикалық НЕМЕСЕ» операторы or түрінеие.
Логикалық ЕМЕС (терістеу) унарлық
(яғнибірғанаоперандпен) оператор болыптабыладыжәнежалғыз операнды
бар notтүріндеболады. Логикалық ЕМЕС егер операнд
Falseтеңболсажәнекерісіншеболса, Trueқайтарады. a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO') Тапсырма 2. А нақты саны беріледі, егер f (x) = x2 + 4x + 5 болса, онда f (A)
Тапсырма 3. Патшаныңжолы Шахмат патшасыкөлденең, тігіненжәнедиагональменжүреді, бірақ тек 1 шаршы. Шахмат тақтасыныңекітүрліжасушасынескереотырып, корольдіңбіріншікезектенекіншіайналымғабірретауысаалатынынанықтаңыз. Бағдарламаәрқайсысы 1-ден 8-ге дейінгітөртнөмірдіқабылдайды, ал біріншіұяшықүшінбағанныңнөмірі мен жолдыңнөмірінкөрсетіп, екіншіұяшықүшін. Егербағдарламаныңбіріншіұяшығынанекіншісіненемесе '' NO '' депжазылса, бағдарлама «YES» Жұмыстыңнәтижесі: тестілеунәтижелерібойынша 1-3 тапсырмалардыңбағдарламасытуралыесеп. |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Арифметикалық өрнектерді есептеу |
||||
|
Сабақтың мақсаты |
Кірістірілген жағдайларды, бағдарламалау тіліндегі каскадты шартты операторларды қолдану арқылы күрделі алгоритмдерді жазуды үйрену. |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқаша теориялық
мәлімет y = int(input()) if x > 0 and y > 0: print("Первая четверть") elif x > 0 and y < 0: print("Четвертая четверть") elif y > 0: print("Вторая четверть") else: print("Третья четверть")
Мысал 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("""К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:
else:
Тапсырма 2. Пайдаланушынөмірінболжайтынбағдарламаныжазыңыз. Бағдарламахабарлардыкөрсетеді: Guessed!, Кішкентай, көптегенадамдар.
Тапсырма 3 .. А нақты саны A беріледі f
(A) f (x) = 0 егер x <= 0; 2. Неге барлықтапсырмалардыжелілікалгоритмдерарқылышешугеболадыдепойлайсыз? 3. Сізқандай да бірбағдарламаныәзірлеуүшінсызықтықалгоритмдер мен филиалдаржеткіліктіболадыдепойлайсыз ба? 4. Неге екіайнымалыныңмәндерінекікезеңменалмастырумүмкінемес: a = b; b = a?
5.
Шарттыоператорлардыңтолықжәнетолықемеснысандардағыайырмашылығықандай?
Сізқалайойлайсыз? 6. Сізқандайқарым-қатынасбілесіз? Қандайқатынастар «тең» және «теңемес» дегендібілдіреді? 7. Таңдаудыбірнешенұсқаданқалайұйымдастырукерек? 8. Қандайқиынжағдай? 9. Есептеупроцедурасыкүрделіжағдайдақалайанықталады? |
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Программалау стилі |
||||
|
Сабақтың мақсаты |
Тақырып бойынша білімдерін нығайту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Қысқаша теориялық
мәлімет Міне, мәнерлер жиынтығы ретінде пайдаланылатын циклды пайдаланудың ең қарапайым мысалы: i = 1 for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet':
i += 1
for i in 1, 2, 3, 'one', 'two', 'three': print(i) Алғашқыүштіктіңитерациясыүшін i айнымалы i int типініңмәніналады, алкелесіүшеуі - 'str' типі.
Әдетте, циклүшінпайдаланыладынемесеәрекеттертізбегібірнешереталдыналаанықталғансанықайталау, немесефиналғакейбірбастапқықұнынанциклдеайнымалымәнінөзгертуүшін. циклуақытыналдыналабелгілібірсанынқайталау N біргефункциясымен, циклауқымыүшінпайдалануғаболады: 0, 1, 2, 3 I үшін # баламанұсқаулар: диапазоны (4) Мен: # Мұндациклдікәрекеттердіорындауғаболады басыпшығару (i) басыпшығару (i ** 2) # циклаяқталды, себебішегінісібарблокаяқталды басыпшығару («Циклдыңсоңы») сандықтұрақтыретінде N, айнымалынынемесееріктіарифметикалықөрнекті (** 10 мысалы, 2) пайдаланылуымүмкін. N құнынөлдікнемесетерісболса, циклтіптібірреторындалмайды. Ауқымфункциясыбіремес, екіпараметрдіқабылдайалады. Call диапазоны (а, б) индекстікайнымалыбамндердіөтедідегендібілдіреді - 1 екіпараметрлерімендепаталатын, яғнибіріншіпараметрауқымыфункциясын, индексіайнымалыбастапқымәні, екіншіпараметрі-орнатады - индекстікайнымалыболыптабыладыбіріншімәнқабылданбайды. Егер a'b болса, циклбірреторындалмайды. Мысалы, 1-денбастап n-ғадейінгімәндердіесептеуүшінкелесібағдарламанықолдануғаболады: sum = 0 n = 5
sum += i
Бұлмысалдаайнымалы 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туралы аз білеотырып, осы мақаланыоқып, сіз осы бағдарламаныңмақсатықандайекенінайтааласыз.
|
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
|
Педагогтің аты – жөні |
|
||||
|
Күні |
|
||||
|
Сынып: |
Қатысушылар саны: Қатыспағандар саны: |
||||
|
Сабақтың тақырыбы |
Практикалық тапсырмалар |
||||
|
Сабақтың мақсаты |
Білімдерін практикада қолдану дағдысын дамыту |
||||
|
Құндылықтарды дарыту |
Оқушыларды бір-біріне деген құрмет көрсетуіне тәрбиелеу. |
||||
|
Сабақтың барысы |
|||||
|
Сабақтың кезеңі |
Педагогтың әрекеті |
Оқушының әрекеті |
Бағалау |
Ресурстар |
|
|
Сабақтың басы |
Оқушылармен сәлемдесу, түгелдеу Жаңа сабақтың тақырыбы мен мақсатын анықтау.
|
Зейіндерін сабаққа аударады, жауап береді. |
Мадақтау, толықтыру |
Оқулық, видео, слайдтар |
|
|
Сабақтың ортасы |
Тапсырмалар
Нұсқау: x және y сандарыпернетақтаданенгізіледі.
Есептеүшбағдарламаның блок-схемасынжәнетестілеунәтижелерінбасыпшығарыңыз. Бақылаусұрақтары 1. Pythonтіліндеайнымалылардыңатауларынтұрғызуережелерінсипаттаңыз.
|
Жауап береді
|
Тапсырманы орындаған оқушыны мадақтау, толықтыру жасау, |
Электрондыоқулық, презентация, |
|
|
Аяқталуы Кері байланыс |
Қорытындылау |
Жауап береді |
Тиімді кері байланыс орнату |
|
|
Пайдаланылған әдебиеттер тізімі
-
Ресурсы сайта Л. Шапошниковой (http://younglinux.info) , содержащие
авторские программы
-
http://younglinux.info/python.php (http://window.edu.ru/resource/825/76825)
-
учебные пособия
http://younglinux.info/sites/default/files/python_structured_programming.pdf
-
Сайт Д.П.Кириенко. Московский институт открытого образования. Школа №179
-
Ресурсы сайта профессора, доктора технических наук, учителя информатики высшей категории, автора учебников по информатике К.Ю. Полякова:
-
Сайт дистанционная подготовка по информатике
http://informatics.mccme.ru/ -
Изучаем Python Автор: Марк Лутц Издательство: Символ-Плюс ISBN 978-5-93286-159-2, 978-0-596-15806-4; 2011 г. Переводчик: А. Киселев
-
He
ad First
Python. Автор: Paul
Barry. Bздательство: O'Reilly, год: 2010, Язык:
Английский, страниц: 494, формат: pdf, размер: 33 МБ
(http://forcoder.ru/python/head-first-python-1191) -
Hello World!
Computer Programming for Kids and Other Beginners
Second edition, Warren D. Sande and Carter Sande
http://helloworldbookblog.com/ -
Python for Kids. A Playful Introduction to Programming
by Jason R. Briggs
шағым қалдыра аласыз




























