читать лучше с начала!
На сайті розглядаються основи роботи з мультимедійною інформацією на персональному комп'ютері. Описано ряд програм для закису, обробки й відтворення звуку й зображення.
Представлено деякі Wіndows-програми комунікацій реального часу ( ІP-Телефонії).
Також сайт присвячен розробці власних програм для роботи з аудио й відео, передачі звукової й візуальної інформації в локальних мережах і Інтернеті.
Серед наших користувачів, як правило, користувачі комп'ютера в дома й в офіса, так і на починаючих розроблювачів програмного забезпечення - ми даємо основи програмування в середовищі Borland C++ Buіlder. Наша аудиторія - це, перш за все, школярі старших класів, студенти і широке коло людей, що просто використовують комп'ютер вдома й на роботі.
Напомним, мы не предоставляем готовые программы, у нас Вы не сможете скачать офис, антивирус или игру ни платно, ни бесплатно!
ПОЯСНЕННЯ
У цьому командному файлі багато тексту, але задум не дуже складний.
Рядок 4 инициализирует змінну PROJ нульовим значенням. PROJ це змінна, котра містить ім'я проекту, відображуване в меню. В
початку роботи ми повинні бути впевнені, що ця змінна встановлено в
нуль.
Рядка 6-104 - це величезний нескінченний цикл while, що виполняет роботу всієї програми. Оскільки це нескінченний цикл, ми можем вийти з нього або оператором break, (уводячи звичайні символи прерывания), або за допомогою команди виходу.
У рядку 8 позиційним параметрам привласнюється результат команди
date. Надходячи таким чином, ми можемо потім легко звертатися до каждому полю без виділення його командою cut - shell виконує за нас синтаксический розбір полів. Ми можемо посилатися на поля дати у вигляді $1,
$2 і т.д.
Рядка 9-23 виводять на екран головне меню. Верхній рядок обращается до даних з команди date. $1, $2 і $3 являють собою день неділи, місяць і число. $4 - це час. Перед тим як команда echo выводит текстові рядки, ці змінні розкриваються таким чином, що
вони з'являються в меню. Якщо змінна PROJ дорівнює нулю, то нічого не
друкується як ім'я поточного проекту. Символи \c наприкінці огромного оператора echo установлюють курсор після запрошення в цієї
же рядку, так що ми готові приймати символи, що вводяться користувачем.
Після печатки меню в змінну RSP читається відповідь у рядку 25.
Потім наступає черга величезного оператора case (рядка 27-103), который містить гілку для кожної команди.
У рядку 28 перевіряється, чи не була відповідь усього лише поверненням каретки, що вказує, що користувач хоче вийти. Якщо був, то цикл
while завершується за допомогою команди break і програма закінчує
роботу.
Іноді повернення каретки - більше бажаний метод виходу, чим доманда exit інтерпретатора shell. В остаточному підсумку ця команда shell
приводить до виконання програм exit і _exit Си -інтерфейсу. Виконання
виклику exit у Си іноді приводить до несподіваних побічних ефектів, у те
час як нормальне виконання тексту програми до кінця не дає таких же результатів. Один раз ми зштовхнулися з такою проблемою при
використанні ESC -послідовностей для зміни кольору на кольоровому
моніторі. Коли програма завершувалася нормально, колір не переустанавливался. Однак коли був зроблений системний виклик exit, друкувалися неякі ESC-Послідовності, що переустановлювало окремі частини
екрана. Дуже дивно!
Рядка 29-38 управляють функцією вибору проекту. Ім'я проекту запрашивается й читається в змінну PROJ2. PROJ2 використана для временного зберігання цього значення. Якщо було уведене повернення каретки, оператор continue приводить до наступної ітерації зовнішнього циклу while. Це
дозволяє користувачеві припинити виконання цієї функції при ошибочном уведенні, залишаючись все-таки в timelog. Якщо уведення було непустим, файл
проекту перевіряється на існування й на наявність у ньому даних. Якщо
файл не існує, користувача просять указати вірне ім'я проекту.
Якщо ім'я файлу правильне, то змінної PROJ привласнюється значення
PROJ2. Тільки після того, як командний файл із упевненістю знає, що
ім'я, уведене користувачем, припустимо, воно призначається в якості
поточного ім'я проекту. Це охороняє від втрати вибору поточного
проекту через помилку користувача. Тепер PROJ виводиться в меню на экран.
Команда створення обробляється рядками 39-50. Знову запрашивается ім'я й перевіряється, чи не дорівнює воно нулю. Якщо ім'я було уведено,
те перевіряється, чи існує вже такий файл. Ми не хочемо знову создавать і затирати вже наявний файл. Файл створюється в рядку 50. У цей
файл виводяться оцінка про час його ініціалізації й початкове сообщение про те, що підрахунок часу відключений.
Опція висновку списку виконується в рядках 51-53. Виводиться загоспритний, а потім команда ls використовується для генерації списку. Якщо немає
файлів потрібного нам типу, то команда ls повертає статус, відмінний від
нуля, тим самим включається оператор ||. У сутності цей фокус shell
дає нам убудований оператор if-then, що може використовувати результаты попередньої команди. Якщо виконання команди ls невдало (тобто
не знайдені підходящі файли), це повідомлення про помилку відкидається
(не виводиться) і виконується оператор echo. Команда echo повідомляє, що
немає файлів, щоб ви знали про це.
Усякий вихід команди ls пропускається через команду sed для отбрасывания розширення ім'я файлу .time. Для збереження місця й для
зручності користувача ми хочемо тільки подивитися й надрукувати імена
проектів, а не імена файлів. Однак, ми хочемо зберігати імена файлів в
спеціальному внутрішньому форматі так, щоб ми могли простіше обробляти
їх і підтримувати унікальні імена.
Команда перегляду виконується в рядках 54-60. Поточний файл проекта перевіряється на те, чи було обране ім'я. Якщо ні, головне меню
виводиться знову. У противному випадку друкується рядок з рисок, виводиться командою more файл проекту й друкується ще один рядок черточек для обрамлення виведеної інформації. Ви можете зачудуватися, чому
першим символом оператора echo є двокрапка (:). Це деякий
казус, оскільки, якщо ви спробуєте відобразити символ риски (-) в
якості першого символу, то оператор echo "подумає", що це порожня
опція й не виведе неї на екран. Ви просто повинні поставити в першої
позиції якийсь непустий символ, відмінний від риски.
Включення підрахунку часу виконується в рядках 61-70. Поточне
ім'я проекту перевіряється на те, чи було воно обрано. Якщо так, то провуряется, чи був відключений файл проекту. Ми виконуємо це, використовуючи доманду tail для виділення останнього рядка файлу, потім передаємо по
конвеєру цей рядок команді cut, де ми змінюємо символ-роздільник
на символ : і відрізаємо перше поле. Якщо в цьому полі перебувають символи
OFF, усе в порядку. Після цього рядок 69 виводить на екран повідомлення
для користувача, а рядок 70 вставляє у файл проекту рядок ON, за
яке треба поточна дата. Тим самим файл відзначається як включенийный. Підрахунок часу почався. Якщо ця операція вже була включена, ми
сповіщаємо про це користувачеві й виходимо з даної операції меню.
Рядка 71-80 обробляють відключення підрахунку часу. Тут почти все идентично тексту програми, що включає цю операцію,
тільки якщо там було слово "on", те тут слово "off".
Рядка 81-101 обробляють підлегле меню видачі звітів і статистики. Як бачите, екранне меню сплановано в такий же спосіб: цикл
while, печатка меню, читання відповіді, виконання оператора case у зависимости від обраної команди й т.д. Команда r подібна головному меню,
тільки скорочена для того, щоб поміститися усередині оператора case. Ви
також можете помітити, що в рядках 96-99 виконується не дуже багато
обробки. Це те місце, де ви повинні виконати деяку роботу.
Рядок 102 виконує обробку помилок при будь-якому невірному уведенні.
Друкується повідомлення про помилку, оператор case виходить на наступну
ітерацію циклу while, і все починається спочатку.
[
...]
Початок [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440]