Допълнение 2 алгоритми
Информацията, предоставена в настоящото заявление не принадлежи на всеки конкретен език за програмиране. Въпреки това, те са важни за всеки създател на програмата и са особено важни за начинаещи, тъй като всички компютърни програми са предназначени за решаване на конкретни проблеми с компютъра, и всеки проблем във всяка област на човешката дейност се определя въз основа на алгоритъм. Следователно, има са систематизирани основните понятия, методи за представяне и видовете алгоритми, и дава примери за някои стандартни алгоритми.
A.2.1. Етапи на решаване на проблеми
Решаване на проблеми във всяка област на човешката дейност, включително и в ежедневието, се извършва в определена последователност, и решаване на проблеми с помощта на компютър не е изключение. Различаваме четири основни стъпки за решаване на проблеми:
Избор на метод на решение.
и разгледа спецификата на всеки от тях.
Проблемът може да бъде предложен за решаване или формулирани самостоятелно.
В първия случай е налице състояние на проблем, което показва, първоначалните данни и резултатите от които се нуждаете ( "Дано" и "необходими").
В правилно формулиране на изложението на проблемите ясно разбран от всички присъстващи, а само най-необходимите факти, представени под формата на числа, условия, ситуации и изисквания. За успешното решаване на този проблем, всички компоненти на първоначалните данни е необходимо, за да изберете, включително тези, посочени в смисъл на, например, комбинация от думите "нагоре по веригата", което е еквивалентно на "срещу течението". Някои от първоначалните данни и изисквания, могат да бъдат определени по подразбиране. Например, да знаете колко багери, извършват работа, или колко части произведени, трябва да се търси отговор сред множеството на естествените числа, ако това е необходимо за решаване на уравнение х = а / (х-1), на стойност х не може да бъде 1, а за уравнение х =
стойността на х не може да бъде отрицателен.В правилно формулиране на условията или не разполагате с достатъчно сурови данни, или че са прекомерни, или има възможност за двусмислено разбиране на условията на елементи. В такива ситуации е необходимо да се постигне точния текст за дадена задача или група от задачи, произтичащи от общите условия. Например, в случай на излишни данни трябва да се настрои, ако те не са в пълно противоречие, а след това не е решение на всички, като "колко високо слънцето се намира над хоризонта в два часа на екватора?". Ако данните са недостатъчни, или те са противоречиви частично, резултатът може да е двусмислен. Например, "колко високо се намира слънцето над хоризонта на екватора?" (В резултат на двете съществува, и след това в зависимост от времето на деня, или отсъства, когато слънцето изчезва зад хоризонта), или "колко високо се намира слънцето над хоризонта в два часа? "(резултат зависи от географската ширина и време на годината). И накрая, неяснотата на разбиране на условията може да се докаже чрез примера: "колко високо слънцето се намира над хоризонта на екватора в два часа", от което следва, че "две час" може да се разбира в 24-часов или 12-часов представяне време формат. По отношение на проблема с помощта на компютър, често не се уточнява кой режим, текстова или графична, и какъв режим параметър представлява резултатите на екрана. В тези ситуации, за решаване на проблема е свобода на избора на липсващите данни на.
Случаи на самостоятелно формулиране на проблема обикновено са ограничени до ситуации на неправилни условия, особено когато става дума за всекидневния живот. Така че, задачата на "жаден. Необходимо е да го задоволи ", когато се опитва да изясни формулировката би могла да доведе до положение на" всички течности "(оцет?)," Всяка подходяща течност "(лед, сняг, изключени мента?)," Вода "(по-точно казано, сок, мляко и много други напитки не попадат в това състояние). В ситуации от този вид следва да се редува опити за решаване на проблема с изясняване на формулировката на задачата да се постигне приемливо или желания резултат.
Избор на метод на решение включва търсене на набор от инструменти, за да донесе на този проблем на този, за който вече е известен на разтвора, което означава, че стандартната задачата. Колкото по-човешки активи, разрешаването на проблеми, задачи, толкова по-лесно и по-бързо ще се намери решение на нова задача. Като пример, помисли за избор на метод за решаване на уравнение х =
. Намерете стойността на х обръщане това уравнение в една идентичност, това е възможно, от една страна, изборът: Очевидно е, че изискваните стойности - 0 и 1. На второ място, на желаните стойности могат да бъдат намерени чрез изграждане на графики на функции, съхранявани в двете страни на уравнението, както и определяне на координатите диаграми контролно-пропускателни пунктове. Трето, повдигане двете страни на квадрат (от дясната страна е неотрицателно, уравнението ще бъде еквивалентна на оригинала) и преместване на дясно на ляво, ние получи квадратно уравнение за които решения са стандартните методи. Остава да избере един от тях: цялостно решение на квадратното уравнение от известен формула или частично разтвор на квадратно уравнение разлагане лявата страна на множители и се равнява на нула всеки от тяхПредишния етап, по принцип може да се счита първия етап в създаването на алгоритъм - последователност от действия, които водят до постигане на желания резултат. Въпреки това, тази дефиниция на алгоритъма е непълна. Ако обсъдено по-горе проблем е решен от лице, запознати с алгебра в рамките на учебната година, че ще бъде достатъчно на гореизложеното, и тя ще бъде алгоритъма за него. Ако този проблем е решен чрез седмата първолак, но методът на подбор (и вероятно факторинг метод разлагане) ще бъде на алгоритъма, тъй като тя все още не е собственост за него (в учебната програма) метод за решаване на квадратно уравнение, както и необходимостта да се изяснят действието му, на която тази този метод се базира. Ето защо, при създаването на един алгоритъм е необходимо, е необходимо да се разгледа кой или какво ще се предоставя за извършване на алгоритъм на действия, които се, алгоритъмът трябва да се фокусира върху определен изпълнител. Всеки изпълнител е в състояние да изпълняват определен набор от действия (с други думи - набор от инструкции), и никой никога не би си помислил да направи кулокран, способен въртене по един или друг начин, да се увеличи или намали куката и да се премести по релси насам-натам, за да добавите две номер. Следователно алгоритъм - последователност от действия (команди), които са разбираеми за изпълнителната и водят до постигане на желания резултат. Тази последователност се определя по някакъв начин и в този случай се нарича програма.
В решаването на проблемите с компютър в алгоритъма може да включва само тези команди, които компютърът може да изпълни. И това е в състояние да изпълнява само прости (машина) команди представят като числа (машинен код). За удобство на програмисти са създали множество програмни езици, всеки от които осигурява специфичен набор от команди (оператори), които често съдържат големи групи от машинни инструкции, и се записва в един набор от знаци (текст). За да се превърне тези команди в машинен код, създаден от съставителите на програмата и тълкуватели на програмата, които се изпълняват от компютъра. Трябва само да кажете на компютъра какъв език представени изпълнима програма. И, разбира се, програмистът трябва да знае набора от налични команди и правила за писане на езика. Трябва да се разбира, че определени действия, като вход, изход, придържане, разклоняване се повтарят и са универсални в една или друга форма са налични във всички езици за програмиране.
Ако алгоритъм мандат лице или устройството е постоянно контролиран от човек, той е човек, който да гарантира стриктното спазване на установените програми и постигане на желания резултат. Той е в състояние да коригира грешки, се промъкнали в алгоритъма, по време на изпълнение на програмата, тя е в състояние да оцени линия и получават желаните резултати.
Положението е различно, ако програмата е възложено на машина, като например компютър. В този случай, след създаването на алгоритъма и програмата изисква повече два етапа преди същинското изпълнение на програмата - отстраняване на грешки на програмата и го тества.
В рамките на програмата за отстраняване на грешки означава проверка дали машината разбира всички налични в програмата команди и ги изпълнява, ако е така, как си го представяли програмист. На този етап на програмиста правят програмата компилатор за идентифициране на тези екипи, които не могат да бъдат превърнати в машинен код. Такива грешки се наричат синтаксис.
Все пак, има алгоритмични грешки, свързани с неправилна или правилната последователност от команди, или недоразумение с програмист действия, извършени от тази команда. Като първа стъпка, помислете за ситуация, при изчисляването на средната аритметична стойност стойностите на променливите А и Б в програмата е настроена да се изчисли стойността на изразяване А + В / 2 компютъра е в състояние да извърши конкретно действие, при който общото липсва скоби, но резултатът ще съответства на желаната стойност Тя не е на всички стойности на а и б. Като втори пример, помислете за ситуация, в която собственикът на разходка вместо командата "Донеси!" Дава кучето си командата "Донеси!" С, може би, един много тъжен последици за случаен минувач, а самия собственик.
Алгоритмичните грешки понякога толкова прикрито, които се намират много трудно. Тук непременно изисква тест определя първоначалните данни и правилни резултати. Несъответствието между получените и резултатите от изпитване на даден набор от входни данни, показва наличието на най-малко една грешка, която може да бъде достатъчно за намиране и премахване на всички съществуващи грешки.
В сложни случаи, грешката на локализация да се прибегне до софтуер дебъгерите услуги, предоставяни от следа програма - или поетапно или ос, мултикадър програмата с издаването на междинните резултати от изчисленията. По този начин е възможно да се локализират грешката до оператора. Намери и премахване на алгоритмична грешката може да бъде само един човек.
програмист изкуство е да се намери компромисно решение - минимален набор тест на данни, което изисква не е твърде много работа по програмата за тестване, но гарантира най-голяма вероятност за откриване на грешки. В компютърния свят, има случаи, в които да се бърза, неизбежно в конкурса, довели до появата на пазара на хардуер и софтуер, съдържащи грешни решения.
Трябва да се отбележи, че използването на компютър, за да решават проблеми не освобождава човек от необходимостта да имат достатъчни познания по отношение на твърди, силни умения и определен дял от талант и отговорност.