Программирование (Презентации)
Описание файла
Файл "Программирование" внутри архива находится в папке "Презентации". PDF-файл из архива "Презентации", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
ÏðîãðàììèðîâàíèåÂñïîìîãàòåëüíûå àëãîðèòìûÈç àëãîðèòìà, ðåàëèçóþùåãî ñëîæíóþ çàäà÷ó,çà÷àñòóþ ìîæíî âûäåëèòü íåñêîëüêî áîëåå ïðîñòûõ¾âñïîìîãàòåëüíûõ¿ àëãîðèòìîâ. Òîãäà îñíîâíîé àëãîðèòì ìîæíî ðåàëèçîâàòü êàê êîìáèíàöèþ íåñêîëüêèõ âñïîìîãàòåëüíûõ àëãîðèòìîâ.Ìåòîä êàê ñïîñîá ðåàëèçàöèèâñïîìîãàòåëüíîãî àëãîðèòìàÌåòîäû, íàðÿäó ñ ïåðåìåííûìè è îïåðàòîðàìè,ÿâëÿþòñÿ îñíîâíûìè ñòðîèòåëüíûìè áëîêàìè â Ruby.Âñïîìîãàòåëüíûå ìåòîäû íàçûâàþò òàêæå ôóíêöèÿìè èëè ïîäïðîãðàììàìè..Êàæäûé ìåòîä äîëæåíáûòü îïðåäåëåí äî ñâîåãî èñïîëüçîâàíèÿÈìÿ ìåòîäàÈìÿ ìåòîäà äîëæíî íà÷èíàòüñÿ ñî ñòðî÷íîé ëàòèíñêîé áóêâû (îò a äî z).
Ðåêîìåíäóåòñÿ èñïîëüçîâàòü îñìûñëåííûå (¾ãîâîðÿùèå¿) èìåíà. Åñëèèìÿ ñîñòîèò èç íåñêîëüêèõ ñëîâ, òî äëÿ èõ ðàçäåëåíèÿ ðåêîìåíäóåòñÿ èñïîëüçîâàòü ñèìâîë ïîä÷åðêèâàíèÿ, ëèáî êàæäîå ñëîâî, íà÷èíàÿ ñî âòîðîãî,âûäåëÿòü çàãëàâíîé áóêâîé.Ìåòîä áåç àðãóìåíòîâdef èìÿ_ìåòîäà...òåëî_ìåòîäà...endÏðèìåðdef helloWorldputs "Hello, World!"endhelloWorldhelloWorldÌåòîä ñ ïàðàìåòðàìèdef èìÿ_ìåòîäà(àðã1, àðã2, ...)...òåëî_ìåòîäà...endÏðèìåðdef saySomething(text)puts textendsaySomething("Hello, World!")saySomething("Ïðèâåò, ìèð!")Ïàðàìåòðû ìåòîäàÏàðàìåòðû ìåòîäà ÿâëÿþòñÿ ëîêàëüíûìè ïåðåìåííûìè. Ýòî îçíà÷àåò, ÷òî ìåòîä îïåðèðóåòïåðåìåííûõ, ïåðåäàííûõ åìó (÷àñòî ãîâîðÿò,÷òî ïàðàìåòðû ïåðåäàþòñÿ ïî çíà÷åíèþ). Äðóãèìèñëîâàìè, ïåðåä òåì êàê ïåðåäàòü ìåòêè è ñîçäàòüìåòîä, Ruby ñîçäàåò êîïèè âñåõ ýòèõ îáúåêòîâ, èâðåìåííî, òîëüêî íà âðåìÿ âûïîëíåíèÿ ìåòîäà, ïîìåùàåò èìåíà ïàðàìåòðîâ íà íèõ.êîïè-ÿìèÏðèìåðdef printOneMoreThan(x)x += 1puts "Âî âðåìÿ âûïîëíåíèÿ: #{x}"endx = 1puts "Äî: #{x}"printOneMoreThan(x)puts "Ïîñëå: #{x}"# => 1# => 2# => 1Ïàðàìåòðû ïî óìîë÷àíèþÏàðàìåòðû ïî óìîë÷àíèþ, äàþò âîçìîæíîñòü âûçîâà ìåòîäà áåç îáÿçàòåëüíîãî óêàçàíèÿ çíà÷åíèÿïàðàìåòðîâ.âñåõÌåòîä ñ ïàðàìåòðàìè, çàäàííûìè ïîóìîë÷àíèþdef èìÿ_ìåòîäà(àðã1=çíà÷1, àðã2=çíà÷2, ...)...òåëî_ìåòîäà...endÏðèìåðdef saySomething(text = 'Hello, World!')puts textendsaySomethingsaySomething()saySomething "Ïðîáåë ìåæäó ìåòîäîì è àðã-ìè"saySomething(" èëè èñïîëüçîâàíèå ñêîáîê")Âûçîâ ìåòîäà ñ àðãóìåíòàìèÐåêîìåíäóåòñÿ âñåãäà çàêëþ÷àòü àðãóìåíòû ìåòîäà â êðóãëûå ñêîáêè.
Ýòî ïîçâîëèò èçáåæàòü íåêîòîðûõ îøèáîê è íåäîðàçóìåíèé. Îáùåïðèíÿòûìèèñêëþ÷åíèÿìè ÿâëÿþòñÿ ìåòîäû ïå÷àòè puts,print è ò. ä., õîòÿ è ïðè èõ âûçîâå àðãóìåíòû òàêæåìîæíî çàêëþ÷àòü â ñêîáêè:puts(2 + 3)Ïîðÿäîê îáðàáîòêè àðãóìåíòîâÇíà÷åíèÿìè ïî óìîë÷àíèþ ìîãóò áûòü ëþáûåâûðàæåíèÿ Ruby. Îíè âû÷èñëÿþòñÿâ ìîìåíò âû-çîâà ìåòîäà, ïðè÷åì âû÷èñëåíèå ïðîèñõîäèò ñëåâà.
 ýòèõ âûðàæåíèÿõ ìîãóò èñïîëüçîâàòüñÿ è äðóãèå ïàðàìåòðû. Ñëåäóþùèé ïðèìåð äåìîíñòðèðóåò ïîâåäåíèå ìåòîäà â çàâèñèìîñòè îò êîëè÷åñòâà àðãóìåíòîâ ïðè âûçîâå.íàïðàâîÏðèìåðdef putsOptions(a=99,puts a+bendputsOptions#putsOptions(1)#putsOptions(2, 4) #b=a+1)=> 199=> 3=> 6Âîçâðàùàåìûå çíà÷åíèÿÎ÷åíü ÷àñòî îò ìåòîäà òðåáóåòñÿ âîçâðàùåíèåçíà÷åíèÿ, ïîëó÷åííîãî â ðåçóëüòàòå åãî âûïîëíåíèÿ. Äëÿ ýòîãî èñïîëüçóåòñÿ êîíñòðóêöèÿreturn âûðàæåíèå(åñëè âû îïóñòèòå âûðàæåíèå, îñòàâèâ òîëüêîreturn, òî âîçâðàùàåìûì çíà÷åíèåì áóäåò nil).Åñëè íå èñïîëüçîâàòü îïåðàòîð return, òî çíà÷åíèå, âîçâðàùàåìîå ìåòîäîì, áóäåò.çíà÷åíèåì ïî-ñëåäíåãî âûðàæåíèÿ, âû÷èñëåííîãî â ìåòîäåÌåòîä, âîçâðàùàþùèé çíà÷åíèådef èìÿ_ìåòîäà(àðãóìåíòû)...return âûðàæåíèåendÏðèìåð# ìåòîä, âîçâðàùàþùèé ìàññèâdef mixed(a, b=a+1)return [a, b]enda = mixed(10)p a.reverse# => [11, 10]p mixed(1, 20)# => [1, 20]Ïðèìåð# ìåòîä, âîçâðàùàþùèé ñóììódef sum2(a, b)a + bendputs sum2(10, 20) # => 30puts sum2(2)# => wrong # of arguments(1 for 2)Ïðèìåð# ìåòîä äëÿ ââîäà ñòðîêèdef input(string)print string, ": "return getsendnum = input("Ââåäèòå öåëîå ÷èñëî").to_iprint num**2Äîáàâëåíèå áèáëèîòåêRuby ñ ïîìîùüþ ìåòîäà require ïîçâîëÿåò ïðîãðàììèñòó ¾ïîäêëþ÷àòü¿ ñâîè ñîáñòâåííûå áèáëèîòåêè ìåòîäîâ (ò.
å. ôàéëû, ñîäåðæàùèå ÷àñòîèñïîëüçóåìûå ôóíêöèè).Ñîõðàíèì ìåòîä input èç ïðåäûäóùåãî ïðèìåðàâ ôàéëå MyLib.rb. Åñëè ïðè ïîäêëþ÷åíèè áèáëèîòåêè íå óêàçûâàòü ðàñøèðåíèå ôàéëà, òî èùåòñÿôàéë ñ óêàçàííûì èìåíåì è ðàñøèðåíèåì rb.Ïðèìåðrequire "MyLib"num1putsnum2puts= input("Ââåäèòå öåëîå ÷èñëî").to_inum1**2= input("Ââåäèòå ÷èñëî").to_fnum2Ðàáîòà ñ ôàéëàìèÇàïðîñèòü ñ êëàâèàòóðû èëè ïåðåäàòü êàê ïàðàìåòð ïðè ñòàðòå ïðîãðàììû ìîæíî òîëüêî íåáîëüøîå êîëè÷åñòâî âõîäíûõ äàííûõ.
Åñëè çàäà÷à òðåáóåò çíà÷èòåëüíîãî îáúåìà èíôîðìàöèè, òî äëÿ ååõðàíåíèÿ èñïîëüçóþò.  Ruby äëÿ ðàáîòû ñòåì èëè èíûì ôàéëîì åãî ïðåäâàðèòåëüíî àññîöèèðóþò ñ ýêçåìïëÿðîì êëàññà File.ôàéëû×òåíèå äàííûõ èç òåêñòîâîãî ôàéëà# îòêðûòü ôàéë ñ èìåíåì test.txtf_in = File.new("test.txt")# ñ÷èòàòü âñå ñòðîêè èç ôàéëà â ìàññèâarray = f_in.readlinesÇàïèñü ñòðîê â òåêñòîâûé ôàéë# îòêðûòü ôàéë ñ èìåíåì rezult.txt íà çàïèñüf_out = File.new("rezult.txt", "w")# çàïèñü ñòðîêè â ôàéëf_out.write("Hello, world")# çàêðûòèå ôàéëàf_out.closeÇàäà÷à ôàéëå data.txtõðàíèòñÿ êâàäðàòíàÿ ìàòðèöà öåëûõ÷èñåë.
Íàïèñàòüïðîãðàììó,âû÷èñëÿþùóþ ñóììóýëåìåíòîâ, ñòîÿùèõ íà ãëàâíîéäèàãîíàëè ìàòðèöû.16111621271217223813182349141924510152025Ðåøåíèåf = File.new("data.txt")a, b, sum = f.readlines, [], 0for i in 0 ... a.sizeb[i] = a[i].split.map{|x| x.to_i}sum += b[i][i]endputs sum.