Компютър - техническо средство за изпълнение на алгоритми
Алгоритъм - разглежда най-общо представлява списък от краен брой правила за извършване на дадени действия в определен ред, чрез които се решава всяка една задача от даден тип, клас
Пример:
Списък с числа: a1, a2, a3, a4 .... ak ... an-1, an
Търсим: alpha - минималното число; beta - максималното число
Съставяме алгоритъм:
- Въвеждаме n. Въвеждаме n числа a1, a2 ... an. Изпълни правило 2.
- Под alpha запомни a1 . Изпълни правило 3
- Под beta запомни a2 . Изпълни правило 4
- Под k запомни 2. Изпълни правило 5.
- Ако ak < alpha изпълни правило 6. иначе изпълни правило 7.
- Под alpha запомни ak. изпълни правило 9.
- Ако ak > beta изпълни правило 8 иначе изпълни правило правило 9
- Под beta запомни ak. Изпълни правило 9.
- Увеличи k с едно. изпълни правило 10.
- Ако k <= n изпълни правило 5. иначе правило 11.
- Изведи alpha и beta. Изпълни правило 12.
- Прекрати изпълнението на алгоритъма.
Пример: n = 5 a1 = 17 a2 = 58 a3 = 3 a4 = 12 a5 = 27
Конкретна задача се определя от набор от допустими данни.
Правило - има си номер, действие, което се изпълнява, и наследник, който посочва как се продължава алгоритъма.
Действията могат да бъдат:
- Условни
- имат 2 наследника ( ако условнието е изпълнено и ако не ).
- Безусловни
Изпълнение на 1 правило се нарича стъпка от работата на алгоритъма.
Свойства на алгоритмите:
- определеност
- описанието на алгоритъма е ясно, разбираемо и определя еднозначно действията, които трябва да се извършат
- масовост
- клас задачи, обработка на съвкупоност от набор от допустими данни
- резултатност
- всяко изпълнение завършва за крайно време, крайното време е следствие от удовлетворението на две условия:
- всяко изпълнение се състои от краен брой стъпки
- всяка стъпка се изпълнява за крайно време
- Забележка: от големината на крайното време зависи дали алгоритъмът е практически приложим
- цикличност
- алгоритмите могат да се описват така, че групи от правила да се изпълняват многократно
Начини за изразяване:
- чрез блоксхеми
- описание на машинен език
- последователност от команди
- алгоритмични ( програмни ) езици
- C/C++ , C# , Java , VisualBasic
- Python, Perl, Clojure
- и други
#include <iostream.h>
void main()
{
int n,k,i;
float alpha, beta, a[101];
cin>>n;
for( i=1; i<=n; i++)
cin>>a[i];
alpha = a[1];
beta = a[1];
for(k=2; k<=n; k++)
if ( a[k] < alpha )
alpha = a[k];
else if ( a[k] > beta )
beta = a[k];
cout<<alpha<<" "<<beta<<endl;
}