Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoy Юрков.doc
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
339.97 Кб
Скачать

Оператор циклу з хибною умовою ("until").

Оператор циклу "until" має структуру:

until умова

do

список команд

done

де "until" - службове слово, що визначає тип циклу з хибною умовою. Список команд в тілі циклу повторюється стільки разів, скільки буде зберігатися хибність умови або цикл не буде перерваним спеціальними командами.

Відмінність від "while" полягає в тому, що умова циклу перевіряється на хибність, перевіряється після кожного виконання тіла циклу.

Пустий оператор.

Пустий оператор має формат:

:

Нічого не робить. Повертає значення "0". Наприклад, в конструкції "while :" або ставить у початок командного файлу, щоб гарантувати, що файл не буде прийнятий за виконавчий для "csh".

  1. Практична частина

1. Завдання:

7. Задано текст, що складається зі слів, розділених не менше ніж одним пропуском. Знайти слова, що містять найбільшу кількість голосних літер.

7. Код програми

#!/bin/bash

gdialog --inputbox "Введите текст" 10 60 2> ptext.txt

z=0

if [ $? -ne 1 ];

then

ptext=$(cat ptext.txt)

echo $ptext;

for i in $ptext;

do

m=0

n=${#i};

k=0

while [ $k -lt $n ]

do

byk=${i:$k:1}

case $byk in

a|o|u|e|i) m=$(( $m+1 ));;

*) ;;

esac

k=$(($k+1))

done

if [ $z -lt $m ]

then z=$m

l=$i

fi

done

fi

echo 'Slovo s naibolshem kolichestvom glasnuh: ' $l

echo $l>text1.txt

gdialog --title 'Слово с наибольшим количеством гласных букв:'\

--textbox ./text1.txt 10 60 2

exit 0

2-а частина

Операційна система Windows. Системне програмування в masm.

1) Теоретична частина

Вступ 1. Історія Асемблера 2. Програмування на мові Асемблера 3. Синтаксис 4. Директиви 5. Типи даних 6. Переваги та недоліки

2) Практична частина

  1. Завдання

  2. Опис алгоритму

  3. Код програми

1)Теоретична частина

ВСТУП Прогрес комп'ютерних технологій визначив процес появи нових різноманітних знакових систем для запису алгоритмів - мов програмування. Існує безліч мов програмування, але ми зупинимося на Асемблері. Незважаючи на те, що в даний час програміст може використовувати велику кількість мов програмування, які набагато простіше Асемблера, знання Асемблера і вміння програмувати на ньому ніколи не будуть зайвими. Тим більше можна навіть висунути аргументи:

1. На інших мовах програмування не завжди можливо написати програму, що повно б задовольняло вимогам. А в деяких випадках повністю неможливо. На мові програмування Асемблер можна написати будь-який додаток.

2. Іноді мови програмування високого рівня не можуть забезпечити необхідну швидкодію. А додаток, створений на Асемблері завжди швидкодіючий.

3. Розмір додатків створених на мовах високого рівня мають набагато більший розмір, ніж додатки, створені на Асемблері.

4. Мова «Асемблер» дозволяє працювати безпосередньо з апаратними засобами, що в деяких випадках дає програмісту перевагу і необхідний результат. Додаток на мові високого рівня працює з апаратними пристроями через написані модулі, тобто не дозволить програмістові, що не будь змінити, а, отже, отримати необхідний результат. 5. Знання мови Асемблер дає більшу перевагу перед тими, хто програмує тільки на мовах високого рівня. Знаючий Асемблер знає і структуру комп'ютера, і структуру апаратних пристроїв.

1. ІСТОРІЯ Асемблера Програмісти вже були знайомі з поняттям підпрограми: Грейс Хоппер і її колеги застосовували підпрограми на Гарвардському «Марк-1» під час другої світової війни, проте кожна підпрограма вирішувала свою специфічну задачу. Підпрограмами називаються незалежні фрагменти комп'ютерної програми, що використовуються багаторазово і викликаються з головної програми у разі потреби. Наприклад, одна підпрограма може обчислювати квадратний корінь, а інша змусить комп'ютер вивести на дисплей літеру. Перші програмісти майже завжди мали блокноти із записом найбільш уживаних підпрограм, щоб у разі необхідності не складати їх заново. Проблема полягала в тому, що адреси розташування команд і змінних підпрограми в пам'яті змінювалися в залежності від її розміщення в останньої. Налаштування підпрограм на певне місце в пам'яті, очевидно, мала потребу в автоматизації, і вперше це було зроблено на «ЕДСАК». Програмісти Кембриджа почали з написання набору уніфікованих підпрограм, які й утворили бібліотеку. Після цього досить було ввести лише коротку команду - і комп'ютер проробляв всю роботу по налаштуванню та розміщенню підпрограми усередині програми. Моріс Уилкс назвав мнемонічниу схему для «ЕДСАК» і бібліотеку підпрограм збираючою системою (по-англійськи assembly system - звідси слово «асемблер»), оскільки вона збирала послідовності підпрограм. Мова асемблера в українській мові часто називають просто асемблером. Транслятор з цієї мови теж зазвичай називають просто асемблером, що в ряді випадків може створити плутанину. Процес трансляції з мови асемблера в машинний код нерідко називають асемблюванням. Використання терміна «мова асемблера» може викликати помилкова думка про існування єдиної мови низького рівня або хоча б стандарту на такі мови, що абсолютно не відповідає істині. Тому при іменуванні мови, на якому написана конкретна програма, бажано уточнювати, для якої архітектури вона призначена і на якому діалекті мови написана.

2. ПРОГРАМУВАННЯ НА МОВІ Асемблер Асемблерні програми можуть бути дуже ефективними. З програмістів, з рівними навиками і здібностями, які працюють на мові Асемблера створити програму більш компактну і швидкодіючу, ніж таку ж програму, написану мовою високого рівня. Це так практично для всіх невеликих або середніх програм. На жаль, у міру зростання розмірів, програми на мові Асемблера втрачають частину своїх переваг. Це відбувається через необхідного в асемблерній програмі уваги до деталей. Як ви бачите, мова Асемблера вимагає від вас планування кожної дії комп'ютера. У невеликих програмах це дозволяє оптимізувати роботу програми з апаратними засобами. У великих же програмах величезна кількість деталей може перешкодити вам ефективно працювати над самою програмою, навіть якщо окремі компоненти програми виявляться дуже непоганими. Безумовно, програмування на мові Асемблера відповідає потребам не кожної програми. Програми на мові Асемблера дуже точні. Оскільки ця мова дозволяє програмістові безпосередньо працювати з усім апаратним забезпеченням, асемблерна програма може робити те, що недоступно ніякий іншій програмі. Безсумнівно, що в програмуванні пристроїв введення-виведення, де потрібно контроль над окремими розрядами регістрів пристрою, програмування на мові Асемблера - єдиний відповідний вибір. Ясно, що ефективність і точність мови Асемблера дають певні переваги. Але його деталізованість створює і деякі проблеми. Коли ж варто вибирати для програмування мову Асемблера? Звичайно, ви повинні користуватися програмами на мові Асемблера, коли немає іншого способу написати програму. Наприклад, програмісти фірми IBM писали з використанням процедур Асемблера всі програми управління пристроями введення-виведення для IBM PC. Для управління пристроями введення-виведення і системою переривань, потрібна була та точність мови Асемблера, яку не може забезпечити жоден інша мова програмування. Аналогічно, на мові Асемблера у фірмі IBM писалися процедури діагностики, які повинні перевіряти кожну деталь апаратури. Мова Асемблера необхідний також і в тих випадках, коли головними є робочі характеристики програми. Це може бути час виконання або кінцевий розмір програми. Бібліотека математичних процедур Фортрану - приклад програми, що вимагає хороших характеристик, як щодо часу, так і розміру. Математичні процедури є частиною будь-якої програми на Фортрані, тому вони повинні займати якомога менше місця. Крім того, ці процедури управляють всіма математичними функціями в фортрановськую програмі і часто використовуються. Отже, вони повинні виконуватися швидко. Яка програма не підходить для мови Асемблера? Звичайно, ви можете написати на ньому будь-яку програму, проте з великою програмою краще працювати в мові високого рівня, такому як Бейсік або Паскаль. Ці мови дозволяють вам зосередитися на своїй проблемі. Вам не доводиться безпосередньо мати справу з тонкощами апаратного устаткування і процесора. Мови високого рівня дозволяють вам відступити назад і за деревами побачити ліс. При програмуванні на мові Асемблера і лише через написання програм на цьому рівні деталізації ви можете зрозуміти, як працює машина на самому нижньому рівні. Якщо ви хочете дізнатися про комп'ютер все, ви повинні бути знайомі з мовою асемблера. Єдиний спосіб домогтися цього: писати програми на цій мові. Найпопулярнішими на сьогоднішній день є пакети Turbo Assembler (TASM) фірми Borland, Macro Assembler for Windows32 (MASM32), створений Hutch (на основі старого MASM фірми Microsoft), а також Flat Assembler (FASM), і Netwide Assembler (NASM), що розвивається командою NASM Development Team. Всі ці асемблери надають вельми широкі можливості для програміста. На них можна писати програми як під DOS, так і під Windows. Існує також безліч інших видів асемблера, число яких зростає. Наприклад: CodeX Assembler, Gema Assembler, Light Macro Assembler (LASM), Lazy Assembler (LZASM), Table Driven Assembler (TDASM), NewBasic + + Assembler (NBASM), TMA Macro Assembler і ін.

3. СИНТАКСИС    Загальноприйнятого стандарту для синтаксису мов асемблера не існує. Однак, існують стандарти де-факто - традиційні підходи, яких дотримуються більшість розробників мов асемблера. Основними такими стандартами є Intel-синтаксис і AT & T-синтаксис. Загальний формат запису інструкцій однаковий для обох стандартів: `[Мітка:] опкод [операнди] [; коментар]` Опкод - безпосередньо мнемоніка інструкції процесору. До неї можуть бути додані префікси (повторення, зміни типу адресації та ін.) В якості операндів можуть виступати константи, назви регістрів, адреси в оперативній пам'яті та ін. Відмінності між стандартами Intel і AT & T стосуються, в основному, порядку перерахування операндів і їх синтаксису при різних методах адресації. Використовувані мнемоніки зазвичай однакові для всіх процесорів однієї архітектури або сімейства архітектур (серед широко відомих - мнемоніки процесорів і контролерів Motorola, ARM, x86). Вони описуються в специфікації процесорів. Наприклад, процесор Zilog Z80 успадковував систему команд Intel i8080, розширив її і поміняв мнемоніки (і позначення регістрів) на свій лад. Наприклад, змінив інтеловське mov на ld. Процесори Motorola Fireball успадковували систему команд Z80, кілька її урізавши. Разом з тим, Motorola офіційно повернулася до мнемоніка Intel і в даний момент половина асемблерів для Fireball працює з интеловским мнемоніки, а половина з мнемоніки Zilog.

4. ДИРЕКТИВИ Крім інструкцій, програма може містити директиви: команди, не переводяться безпосередньо в машинні інструкції, а керують роботою компілятора. Набір і синтаксис їх значно різняться і залежать не від апаратної платформи, а від використовуваного компілятора (породжуючи діалекти мов в межах одного сімейства архітектур). В якості набору директив можна виділити:  - Визначення даних (констант і змінних)  - Управління організацією програми в пам'яті і параметрами вихідного файлу  - Завдання режиму роботи компілятора  - Всілякі абстракції (тобто елементи мов високого рівня) - від оформлення процедур і функцій (для спрощення реалізації парадигми процедурного програмування) до умовних конструкцій і циклів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]