25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Глава 23. Как да решаваме задачи по програмиране? 949<br />

лесно и безпроблемно да напишем програма, която реализира нашата идея<br />

за решаване на задачата?<br />

Това, което изпуснахме, е да си представим как нашата идея (която<br />

видяхме как работи на хартия) ще бъде имплементирана като<br />

компютърна програма. Това не винаги е елементарно и понякога изисква<br />

доста време и допълнителни идеи. Това е важна стъпка от решаването на<br />

задачи: да помислим за идеите си в термините на компютърното<br />

програмиране. Това означава да разсъждаваме с конкретни структури от<br />

данни, а не с абстракции като "карта" и "тесте карти". Трябва да подберем<br />

подходящи структури от данни, с които да реализираме идеите си.<br />

Преди да преминете към имплементация на вашата идея<br />

помислете за структурите от данни. Може да се окаже, че<br />

вашата идея не е толкова добра, колкото изглежда. Може<br />

да се окаже, че е трудна за реализация или неефективна.<br />

По-добре да откриете това преди да сте написали кода на<br />

програмата!<br />

В нашия случай говорихме за "размяна на случайна карта с друга", а в<br />

програмирането това означава да разместим два елемента в някаква<br />

структура от данни (например масив, списък или нещо друго). Стигнахме<br />

до момента, в който трябва да изберем структурите от данни и ще ви<br />

покажем как се прави това.<br />

В каква структура да пазим тестето карти?<br />

Първият въпрос, който възниква, е в каква структура от данни да съхраняваме<br />

тестето карти. Могат да ни хрумнат всякакви идеи, но не всички<br />

структури от данни са подходящи. Нека разсъждаваме малко по въпроса.<br />

Имаме съвкупност от карти и наредбата на картите в тази структура е от<br />

значение. Следователно трябва да използваме структура, която съхранява<br />

съвкупност от елементи и запазва наредбата им.<br />

Можем ли да ползваме масив?<br />

Първото, което можем да се сетим, е да използваме "масив". Това е найпростата<br />

структура за съхранение на съвкупност от елементи. Масивът<br />

може да съхранява съвкупност от елементи, в него елементите имат<br />

наредба (първи, втори трети и т.н.) и са достъпни по индекс. Масивът не<br />

може да променя първоначално определения му размер.<br />

Подходяща структура ли е масивът? За да си отговорим на този въпрос,<br />

трябва да помислим какво трябва да правим с тестето карти, записано в<br />

масив и да проверим дали всяка от необходимите ни операции може да се<br />

реализира ефективно с масив.<br />

Кои са операциите с тестето карти, които ще ни се наложи да реализираме<br />

за нашия алгоритъм? Нека ги изброим:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!