Авиационно инженерство Административно право Административно право Беларус Алгебра Архитектура Безопасност на живота Въведение в професията „психолог” Въведение в икономиката на културата Висша математика Геология Геоморфология Хидрология и хидрометрия Хидросистеми и хидравлични машини Културология Медицина Психология икономика дескриптивна геометрия Основи на икономически т Oria професионална безопасност Пожарна тактика процеси и структури на мисълта, Професионална психология Психология Психология на управлението на съвременната фундаментални и приложни изследвания в апаратура социалната психология социални и философски проблеми Социология Статистика теоретичните основи на компютъра автоматично управление теория на вероятностите транспорт Закон Turoperator Наказателно право Наказателно-процесуалния управление модерна производствена Физика Физични феномени Философски хладилни инсталации и екология Икономика История на икономиката Основи на икономиката Икономика на предприятията Икономическа история Икономическа теория Икономически анализ Развитие на икономиката на ЕС Спешни ситуации ВКонтакте Однокласници Моят свят Facebook LiveJournal Instagram
border=0

Струнен вербален алгоритъм

В съответствие с методите, описани по-горе за описване на формалните езици, в представянето на алгоритмите могат да се разграничат две основни форми: символична (вербална) и графична.

Вписването на ред, както подсказва името, е поредица от низове, всяка от които съдържа описание на едно или повече елементарни действия. Тези струни могат да имат етикети под формата на букви или поредни номера. Логиката на алгоритъма, т.е. Редът на предприетите действия се посочва изрично, като се посочва етикетът на следващия ред, или имплицитно - по подразбиране контролът се прехвърля към реда, следващ завършения. "Елементарно" действие се определя от възможностите на изпълнителя.

Този начин на представяне на алгоритъма трябва да се разглежда като основен, тъй като алгоритмичната нотация за всеки изпълнител, както човешки, така и технически, може да бъде записана като последователност от линии. За дадено лице, алгоритмичното писане може да бъде възможно най-близко до естествения език. За техническо устройство записът се извършва на специализиран формализиран език.

Недостатъкът на линейното представяне на алгоритъма е неудобството на холистичното възприемане на неговата логическа структура. Указание за промяна в естествената последователност на действия в даден низ изглежда като връзка към низ с етикет. В случай на доста сложен алгоритъм, такива връзки затрудняват разбирането на логиката и последователността на действията, което е необходимо при проверка и отстраняване на грешки в алгоритъма.

Помислете за няколко примера за алгоритми за запис на различни артисти.

Постепенната форма е номерирана последователност от редове, всяка от които съдържа описания на конкретни действия на естествен език. Този формуляр се използва, ако изпълнителят е лице. Обикновено като примери за алгоритми, представени в тази форма, се дават рецепти, инструкции за използване на всякакви устройства, инструкции за засаждане на дървета и др. Тези примери обаче не могат да се считат за правилни, тъй като не се говори за обработка на информация, а за управление на действия, насочени към получаване на някакъв материален резултат. Примери за тази форма на представяне могат да служат като алгоритми за математически изчисления на крайни числа. Разгледайте добре познатия евклидов алгоритъм от училището за намиране на най-голям общ делител на две естествени числа ( а и б ); Неговото поетапно описание изглежда така:

1. Ако a = b, считайте резултата за a; завърши изчисленията.

2. Ако a> b, намери разликата a - b; нова стойност и прочетете стойността на разликата; преминете към стъпка 1;

3. Ако b> a, намери разликата b - a; нова стойност b, за да прочете стойността на разликата; преминете към стъпка 1;

Удобството на стъпково-словесната форма е в неговата универсалност (по отношение на класовете на описаните алгоритми), използването на естествения национален език за записване на структури, липсата на строга формализация. Формата е широко използвана за представяне на различни образователни алгоритми.

Формулата е низ от записи за действия, които обработват цифрови, символни или логически данни. Формулите, предназначени за изпълнителя „човек”, не е задължително да са с малък размер - това води до някаква неяснота в реда на действията, който обаче не засяга резултата от изчисленията, дължащи се на разпределителни и комбинирани закони.

например:

Ако формулата е написана за изчисление чрез компютър, тя се представя строго в линейна форма, а за уникалността на действията се задават приоритети на операциите. Например, на езика PASCAL се вземат следните приоритети за математически и логически операции:

· Операции в скоби;

· Експониране, изчисляване на стойността на стандартните функции и функционални процедури;

· Логическо отрицание НЕ;

· Умножение, деление, целочислено деление (div), остатък от целочислено деление (mod), логическо AND (AND);

· Добавяне, изваждане, логическо OR (OR);

· Релационни операции (>, <, =,> =, <=, <>).

В допълнение към тези приоритети се приема и допълнително правило:

· Ако има операции с еднакъв приоритет, те се изпълняват по ред отляво надясно.

Горната формула, написана в съответствие с приоритетите и правилото, ще изглежда така:

Обработката на символна информация се извършва чрез специални функции и процедури.

Псевдокодът е ориентиран към личността, "лице", частично формализиран език, който позволява писането на алгоритми във форма, която е много близка до езиците за програмиране, подобни на Алгол. Терминът „частично формализиран“ в този случай означава, че в псевдокода са само правилата за писане на контролни структури строго определени и описанието на самите действия остава естествено. Псевдокодът е базиран на руски език и се използва главно в преподаването на основите на програмирането.

Алгоритъмът, представен с помощта на автокод, е последователност от линии, всяка от които съдържа описание на действията или за обработка на данни, или за контролиране на процеса на обработка. Следните обозначения се използват за записване на структури за управление:

· Външен дизайн: ALG - началото на алгоритъма, PROC - началото на процедурата, KSC; - прекратяване на процедурата, KSC. - края на алгоритъма;

· Разклоняване: АКО ... ТО ... ДРУГО ... ВСИЧКО; след като има описание на логическото състояние, при което се появява разклонението, след ТО - описание на действия (може да има няколко), които се изпълняват, когато условието е ИСТИНС, ако клонът е завършен - алтернативно се описват алтернативни действия, във всеки случай думата ALL се поставя в края, което е знак за края на тази структура;

· Цикъл: YET ... REPEAT ... KC; след BYE се задава описание на логическото условие за изпълнение на командите на цикъла, след REPEAT - описание на действията (тялото на цикъла), CC е знак за края на цикличната конструкция.

Често, когато пишете алгоритъм, отделните действия завършват с разделител (например “;”) - това ви позволява да избягвате грешки, ако описанието на действието отнеме повече от един ред. В допълнение, за четливост и яснота се използва т.нар. „Структурно въвеждане“, при което отделни елементи от конструкции не се записват от началото на линията, а с вдлъбнатина, показваща гнезденето и подчиняването на тези елементи.

Като пример за алгоритъм, написан с псевдокод, ние даваме евклидовия алгоритъм за намиране на GCD на две цели числа ( а и б ), разгледани по-горе.

Удобството за използване на псевдокода е в съчетание с относителна тежест на синтактичните структури и тяхната руско-езикова основа. Близостта на псевдокода към езиците за програмиране улеснява преминаването от един към друг. Липсата на формални правила за регистриране на действия обаче не позволява използването на псевдокод за съставяне на алгоритми, изпълнявани от технически устройства.

Езикът за програмиране е изкуствен формализиран език, предназначен да записва алгоритъм за „компютърния” художник, чийто метаезик е естествен език. Езикът на програмиране стриктно фиксира (т.е. определя) както образа на управляващите структури, описанието на допустимите действия, така и синтактичните правила за изграждане на сложни структури.

Има ниско ниво (машинно-ориентирано) и високо ниво (машинно-независими) езици. Езиците от първия тип включват:

· Машинен език ( език на машинен код) - набор от команди, интерпретирани и изпълнявани от компютър; всеки програмен оператор на този език е машинна команда и всички данни се търсят по абсолютните стойности на адресите, в които се намират в RAM;

· Асемблер (макроасемблер) - език на символично кодиране - операторите на езика са машинни инструкции, на които са приписани мнемонични символи, а операндите не са специфични адреси в RAM, а техните символни имена.

Примерни команди за асемблери:

CLA - изчистете един от регистрите на суматора (батерията);

ADD - добавянето на съдържанието на клетката, чийто номер е записан след командата, със съдържанието на батерията; резултатът остава в батерията;

MOV - съдържанието на батерията се изпраща към клетката с номера, записан след командата;

HLT - стоп.

Разбира се, монтажниците съдържат и други команди.

Да вземем един прост пример за добавянето на числата a , b и c. Резултатът трябва да бъде присвоен на променливата d.

Алгоритъмът е написан в ASC-кодиран текстов редактор. Ясно е, че е необходима друга междинна програма за преобразуване на текст в поредица от машинни инструкции - нарича се компилатор. На етапа на компилиране данните се разпространяват и в RAM; в същото време вместо имена на променливи се заменят относителните адреси на клетките, в които се намират данните. Операционната система присвоява абсолютни адреси на данните, когато програмата е поставена в RAM на компютъра, преди да се използва.

Асемблерът е машинно-зависим език, т.е. Програмата, написана върху нея, може да бъде изпълнена само на тази техника, по-точно от типа процесор, чийто асемблер е бил използван.

Общо за всички езици на високо ниво те не са фокусирани върху командната система на дадена машина, а върху система от оператори, характерни за писане на определен клас алгоритми. Примери за такива твърдения, съдържащи се във всички езици за програмиране, са оператори на присвояване, условни оператори и оператори на цикли - причината за това ще бъде обсъдена по-късно; В допълнение, има непременно входно-изходни отчети за организиране на взаимодействието на програмата с потребителя.

По функция, езиците за програмиране на високо ниво могат да бъдат разграничени като проблемно-ориентирани и универсални. От имената на класовете е ясно, че първите са предназначени да решават някои специфични проблеми от дадена област на знанието.

Примери са FORTRAN език (FORmula TRANslator) - език за решаване на сложни научни и инженерни проблеми (между другото това е първият език за програмиране на високо ниво); COBOL (общ бизнес ориентиран език) - език за решаване на икономически и търговски проблеми; LISP (> език, използван при решаване на проблеми на изкуствения интелект. Универсалните езици включват PASCAL (Philips Automatic Sequence CALculator), BASIC (Символичен код за начинаещи ALL-назначение), C (C ++), Jawa, както и модерни среди за визуално програмиране DELPHI, VISUAL BASIC и др. , всяка задача, въпреки че сложността на решаването на конкретна задача на различни езици ще варира.

Друга особеност, според която класификацията на езиците за програмиране е възможна, е програмната парадигма, т.е. набор от фундаментални идеи и подходи, които определят модела на представяне и обработка на данни, както и методология за програмиране. Основните различия в парадигмите са представени в таблица. 8.1.

Таблица 8.1

Програмираща парадигма Представяне на програми и данни Изпълнение на програмата Комуникация между програмните части
процесуално Програмата и данните са отделни, несвързани елементи. Последователно изпълнение на отчети Възможно е само чрез споделени данни
Обектно ориентирани Данните и методите за тяхната обработка са капсулирани в един обект. Поредица от събития и реакции на обекти към тези събития Отделните части на програмата могат да наследяват методи и елементи от данни един от друг.
логичен Данните и правилата за тяхното обработване са комбинирани в една логическа структурна формация. Трансформация на логическото образование в съответствие с логическите правила Разделянето на програмата на отделни независими части е трудно.

Понастоящем програмистът разполага с много широк набор от езикови инструменти, от които за всяка конкретна задача може да се избере онова, което ще позволи да се реши най-оптимално.

Отново стигаме до мисълта, изразена по-рано: компютърът по отношение на потребителя не е единственият изпълнител, а се осигурява от различни изпълнители, от които човек трябва да избере най-подходящия за задачата.





Вижте също:

Всеки алгоритъм може да бъде дефиниран с помощта на функционална схема, изпълнена в съответната машина на Тюринг.

Пример 4.9

Ентропия и информация

В отсъствието на интерференция винаги е възможен вариант на кодиране на съобщение, при който излишъкът на кода ще бъде произволно близо до нула.

Формална граматика

Връщане към съдържанието: Теоретични основи на компютърните науки

2019 @ ailback.ru