I. Цел на настоящия документ


Изрази и правилната работа с тях



страница4/7
Дата08.06.2017
Размер385.9 Kb.
#23135
1   2   3   4   5   6   7

2.3.Изрази и правилната работа с тях


      • Какви изрази се срещат в програмирането?

      • Трябва ли да се избягват сложни изрази в програмата? Как могат да се опростяват сложните изрази? Подобрява ли се качеството на кода, когато се опростяват изразите в програмата? Какви са препоръките за правилно използване на изрази в програмата? Кога трябва да се използват скоби? Как стои въпросът с приоритетите на изчисление на изразите? Как стои въпросът с преобразуването на типовете?

      • Какви са препоръките за работа с целочислени изрази, с изрази с реални числа, с изрази с масиви, с изрази, в които участват функции, с ирази, в които участват процедури? Какви са препоръките за работа с тях? Как могат да се опростяват такива изрази?

      • Какви са препоръките за работа с булеви изрази? Как могат да се опростяват булеви изрази и сложни условия?

      • Какви са типичните грешки при използване на изрази? Какви проблеми може да възникнат заради автоматичното преобразуване на всички типове данни към стринг в езици като Java и C#? Защо, противно на очакванията, в програмирането грешки в изразите се срещат по-често, отколкото грешките в циклите?

2.4.Конструкции за управление в програмата

2.4.1.Организиране на праволинейния код. Условни конструкции за управление


        • Какво е праволинеен код? Какви са препоръките за организация на праволинейния програмен код?

        • Как трябва да се организират изрази, които зависят един от друг?

        • Как трябва да се организират изрази, които не зависят един от друг? Има ли значение тяхната подредба? Какво е отношението на променливите, които участват в изразите, към подреждането на праволинейния код? Защо трябва да се минимизира периода на използване на променливите? Защо трябва да се групират изразите, които имат отношение един към друг?

        • Какви са препоръките за организация на условните конструкции за управление?

        • Какви са препоръките за организация на if-then-else конструкциите и веригите от такива инструкции?

        • Какви са препоръките за организация на switch конструкциите?

2.4.2.Цикли


        • Какво е цикъл? Какви видове цикли има? Какви са препоръките при организирането на цикли?

        • Кога се използват условни цикли с проверка на условието в началото (while-цикли)? Кога се използват цикли с проверка за изход в края (do-while-цикли)? Кога се използват цикли с изход? Кога се използват for-цикли?

        • Кога и как трябва да се инициализират променливите, участващи в цикъла? Какво трябва да се случва в началото на цикъла? Какво трябва да се случва в тялото на цикъла? Как трябва да приключва работата на цикъла? Може ли да се използват break и continue и ако може, кога се препоръчва?

        • Как се проверява коректността на един цикъл?

        • Какво се препоръчва за променливите в циклите?

        • Колко дълъг може да бъде един цикъл? Какво е допустимото ниво на вложеност на циклите в рамките на една подпрограма?

2.4.3.Необичайни конструкции за управление. Блокове. Вложеност на структурите за управление. Рекурсия


        • Какви необичайни конструкции за управление се срещат в езиците за програмиране от високо ниво?

        • Вредно ли е използването на оператора за безусловен преход goto? Какви аргументи има “за” и “против” използването на goto? Ако goto все пак се използва, как може това да става “безопасно”? Кога се налага да се използва goto? Какви техники за избягване на оператора goto има? Заместват ли тези техники действието на goto? Трябва ли goto да се премахне от езиците за програмиране от високо ниво?

        • Как трябва да се използва операторът за изход от подпрограма return? Трябва ли една функция да съдържа само един оператор return? Прави ли прекомерната употреба на return по-нечетлив кода?

        • Вредни ли са операторите за изход от цикъл break и преход към края на цикъла continue?

        • Какво е структурно програмиране и какво общо има то със спора дали операторът goto е вреден?

        • Какви са препоръките за използване на блокове в програмата? Опасно ли е дълбокото влагане на конструкции за управление и блокове? Как трябва да се използват празните оператори и блокове?

        • Какво е рекурсия? Кога трябва да се използва? Кога не трябва да се използва? Какви са препоръките при писане на рекурсивни подпрограми? Какви са рисковете при използване на рекурсия? Какви са типичните грешки? Как да ги избягваме?

        • Вярно ли е твърдението на Никлаус Вирт, създателят на езика Паскал, че “рекурсивните структури от данни се обработват с рекурсивни алгоритми”? Винаги ли трябва да се прибягва до използването на рекурсия при обработката на рекурсивни структури данни?

2.5.Многонишково програмиране и синхронизация


      • Какво е конкуретно програмиране? Какво е многонишково програмиране (multithreading) и защо е необходимо? Кога трябва да се използва многонишково програмиране и кога трябва да се избягва? Какви са препоръките за правилно конструиране на многонишкови програми?

      • Как се работи с нишки? Защо трябва да се избягва насилственото прекратяване на работата на нишка? Как може да се избягва?

      • Какви конфликти възникват при конкуретния достъп до общи ресурси? Какво е синхронизация? За какво е необходима тя? Как се реализира? Какви средства за синхронизация предлагат различните езици за програмиране и различните платформи? Какво е мъртва хватка (dead-lock)? Какви са препоръките за правилна синхронизация и избягване на мъртвата хватка?

      • Какво представляват синхронизационните обекти семафори и монитори? Как се използват те? Какви други видовe синхронизационни обекти има? Какво се препоръчва при тяхното използване?

      • Какви средства за многонишково програмиране и синхронизация дават различните платформи (UNIX, Windows, Java, .NET)?


Сподели с приятели:
1   2   3   4   5   6   7




©obuch.info 2024
отнасят до администрацията

    Начална страница