270 likes | 1.02k Views
АЛГОРИТМИЗАЦИЯ И ОСНОВИ НА ПРОГРАМИРАНЕТО. Доц. д-р Юлиана Георгиева. Основни цели: Създаване на фундаментални понятия за процеса на алгоритмизация . Формира не на основни знания за същността на програмните езици и техните възможности за представяне на алгоритмите .
E N D
АЛГОРИТМИЗАЦИЯ И ОСНОВИ НА ПРОГРАМИРАНЕТО Доц. д-р Юлиана Георгиева
Основни цели: • Създаване на фундаментални понятия за процеса на алгоритмизация. • Формиранена основни знания за същността на програмните езици и техните възможности за представяне на алгоритмите. • Разглеждат се основни групи алгоритми за обработка на различно представени данни. • Разглеждат се въпроси за оценка на сложността на алгоритмите. • Разглежданията се правят на базата на конкретен програмен език (С).
Литература: • Робърт Седжуик, Алгоритми на С, СофтПрес, София, 2002. • П. Наков, П. Добриков, Програмиране=++Алгоритми;, TopTeamCo, София, 2002. • Юл. Георгиева, М. Горанова, Ив. Йорданов, Ст. Малешков, Р. Павлова, Ръководство по Програмиране и използване на компютри – част I, Издателска къща „СИЕЛА“, 2001. • Хърбърт Шилдт, C практически самоучител, СофтПрес ООД, 2001. • Ив. Момчев, К. Чакъров, Програмиране III (С и С++), ТУ – София, 2000. • П. Наков, Основи на компютърните алгоритми, TopTeamCo, София, 1998. • Т. М. Смит, Програмиране с PASCAL. Принципи и методи, Техника, 1996. • Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, Prentice-Hall, Englewood Cliffs, 1988.
Въведение в алгоритмизацията на задачите • Етапи при решаване на задачи с компютър • Постановка на задачата • Математическо описание • Избор на числен метод • Алгоритмизация • Кодиране на програмата • Настройка на програмата • Изпълнение • Анализ на резултатите
Алгоритъм – понятие, свойства, видове, представяне • Понятие за алгоритъм • Свойства на алгоритмите • определеност; • дискретност; • крайност; • наличие на входни данни; • резултатност; • масовост. • Представяне • словесно; • блокови схеми;
проектантски език; • логически схеми; • теоретични алгоритмични системи. • Видове алгоритми • линейни; • разклонени; • циклични.
Блокова схема за решаване на задачи на С
Създаване на алгоритми • Какво е алгоритъм? • Разлика между алгоритъм и метод, рецепта • Алгоритъмът е математическа единица , независима от компютър, компилатор, програмен език. Защо е необходимо изучаването на алгоритмизацията като процес? • Добрият алгоритъм е основа за добра програма. • Програмният проект на макро и микро ниво • Дизайнът на алгоритъма и ефикасната програма • Алгоритъм и структури данни. (примерът за Боинг 777)
Езици за програмиране • С език за програмиране се кодират алгоритмите и структурите от данни в програмата. • Класификация на програмните езици • езици от ниско ниво – машинен и асемблерен • езици от високо ниво: • Императивни езици (изразяващи команда) – BASIC, FORTRAN, Pascal, C/C++, Ada, Modula-2; • Приложни езици – специализирани за решаване на един вид проблем - езици за бази данни (SQL), за моделиране (VHDL), мултимедийни приложения (HTML).
Интегрирани среди за създаване и настройка на програми. • Езикът C има следните предимства: • Съвременен език – включва всички управляващи структури в програмирането; използва принципа на низходящото програмиране (top-downdesign), структурното и модулното програмиране. • Ефективен език – получава се компактна и бърза за изпълнение програма; напълно използва възможностите на компютъра. • Преносим (мобилен) език. • Мощен и гъвкав език – използва се за написване на операционни системи, компилатори и интерпретатори. • Притежава конструкции за управление, тясно свързани с асемблер, затова програмите на C са с максимална ефективност. • Удобен език – структуриран език, поддържа добър стил на програмиране.
Елементи на езика • Множество от символи: букви, цифри, _ • Служебни символи: .,:;?!<>()[]+-*/\=%&|~”{}#$ • Резервирани думи • Идентификатор (име) е комбинация от букви (латински), цифри и знак за подчертаване (_). • Коментари: //текст или /*текст*/ Структура на програма на C • описание на действията – чрез оператори; • описание на данните, върху които се извършват действията - чрез описание и определение.
Директиви на препроцесора: include; define; ifdef…endif • Декларации на прототипи на функции • Дефиниция на главна функция main() • Дефиниции на потребителски функции Стандартен вход/изход • Функции за вход и изход, разположени в заглавния файл stdio.h. • Стандартно входно устройство stdin(клавиатура) и стандартното изходно устройство stdout(екран). intscanf("форматиращи параметри", списък от адреси на аргументи); int printf("форматиращи параметри", списък от аргументи); форматиращи параметри (спецификации) % [ модификатор ] тип
Модификаторът определя подравняване, брой позиции и точност. • Основни типове
Основни обекти • Константи – именовани и неименовани • Променливи – име, тип, стойност • Израз • съдържа операнди и операции; • стойността зависи от зададените стойности на операндите и операциите над тях; • типът зависи от типа на операндите и вида на операциите. Основни (базови) типове данни int float double char • Целочислен тип int - положителни и отрицателните цели числа (без дробна част). Представят чрез фиксирана запетая след младшия разряд.
Представяне на отрицателните числа – допълнителен код, обратен код • Реален тип • float и double • Числа, представени с цяла и дробна част с фиксирано място на десетичната точка или с мантиса и порядък в експоненциален вид. • Съхраняват се с две части: двоична дроб и двоичен порядък (представяне с плаваща точка). • Реалните числа се представят по два начина: • десетичен [-]dddd.dddи експоненциален запис [-]d.ddde[+/-]ddd.
Символен тип char • Символният тип се определя като цяло число. • В компютъра се използва специален код ASCII • (AmericanStandardCodeforInformationInterchange) за • преобразуването на числата в символи и обратното. • Символни константи – 3 вида • Макроси: • int getchar(void); • intputchar(intсимвол); • Функции • int fgetc(FILE *файл); • int fputc(char символ, FILE *файл);
Някои правила при изпълнение на операциите • Унарни операции ++ и – • Логически операции и изчисление на логически изрази • Стойност 1 и стойност о при изчисление на изрази • Операции за присвояване (просто, верижно, съставно) • Операция запетая • Условна операция: израз1?израз2;израз3 • Операция за размер на обект: sizeof Типът voidсе използва за деклариране на функция, която не връща стойност или функция без параметри, а така също и за деклариране на указател, който сочи към обект от произволен тип.
Преобразуване на типовете • Неявно и явно преобразуване • Преобразуване при присвояване и изчисление на израз • При наличие на операнди с различен тип в един израз преобразуването се осъществява към по-старшия тип. • Типът char се преобразува в int. • При операцията присвояване резултатът се преобразува до типа на обекта отляво на знака =, т.е. може преобразуването на стане от по-старшия към по-младшия тип. • long c = 2000 * 100; // препълване • long c = (long)2000 * 100;