- •«Київський національний університет технологій та дизайну»
- •Система X Window….………………..…….………………………3
- •Робочі столи користувача …………….……….……………….....5 Загальні відомості про робочі столи користувача в
- •Операційна система Linux (Ubuntu ). Системне програмування в shell – інтерпритаторі.
- •Система X Window
- •Менеджери вікон
- •Робочі столи користувача
- •Завдання 1.
- •Команда порівняння
- •Завдання 2.
- •Завдання 3.
- •Використана література
Завдання 1.
Написать shell сценарий, который, используя графические возможности shell, выполнял вывод информации о пользователе (ФИО, группа) , ввод строки символов и обработку строки:
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать те слова последовательности, которые отличаются от последнего слова и удовлетворяют следующему свойству: первая буква слова входит в него ещё раз.
Алгоритм вирішення завдання:
Зчитуємо рядок символів.
В gdialog вводимо рядок символів.
Записуємо їх в файл ptext.txt.
Перевіряємо чи не введений пустий рядок.
Зчитуємо рядок з файлу ptext.txt в змінну ptext.
Виводимо введений рядок на екран.
Фільтрація слів щодо поставлених вимог
2.1. Читаємо текст по слову
2.1.а. Якщо досягли кінця рядка переходимо до п.3
2.1.б. Якщо ні, переходимо до п.2.2
2.2. Порівнюємо кожне наступне слово з останнім словом у рядку
2.3. Якщо слово співпадає, то перейти до п. 2.2
2.4. Якщо ні, то перевіряємо слово на кількість введених символів
2.4.1. Якщо кількість символів більше 8 , то виводиться повідомлення про неправильно введені дані
2.4.2. Інакше переходимо до п. 2.5
2.5. Зчитуємо кожну наступну букву слова до його кінця і порівнюємо з першою
2.5.1. Якщо символ співпадає, то заносимо слово у файл ptext1.txt і переходимо п.2.2
2.5.2 Інакше переходимо до п 2.1
3. Виводимо відфільтровані слова
Код програми:
#!/bin/bash
gdialog --inputbox "Введите текст" 10 60 2> ptext.txt # вводимо текст через #gdialog
# і записуємо його в ptext.txt
if [ $? -ne 1 ]; #перевірка умови
then
ptext=$(cat ptext.txt) #записуємо текст в змінну
echo " " > ptext1.txt # очищаємо файл ptext1.txt
echo " you enter: $ptext"; #виводимо текст на екран
for i in $ptext; #читаємо текст по слову
do
if [ ${i} = ${ptext##* } ] # порівнюємо слово з останнім словом
then :
else # якщо слово не співпадає
m=0
n=${#i}; #довжина слова
if [ $n -gt 8 ]; # перевірка слова на кількість введених символів
then
echo wrong data > ptext1.txt
gdialog --title "oops!" --textbox ./ptext1.txt 100 100
exit 0
fi # якщо кількість символів більше 8, то помилка
k=1 # лічильник букв
while [ $k -lt $n ] # читає кожне слово по букві
do
if [ ${i:$k:1} = ${i:0:1} ] # порівнює кожну літеру з першою
then
echo ${i} >> ptext1.txt # якщо літера співпадає
k=$(($k+1)) # то слово виводиться на екран
break # і цикл завершується
fi
k=$(($k+1)) #лічильник циклу while інкрементується
done
fi
done
fi
gdialog --title "words that don't matches with last word and have duplicate first letter:"
--textbox ./ptext1.txt 100 100 #виведення слів, що відповідають вимогам
rm ptext1.txt #видалення ptext1.txt
exit 0 #вихід з програми
Операційна система Windows. Системне програмування в MASM.
ФЛАГОВИЙ РЕГІСТР
Цей pегістр містить 16 біт прапорів, що керуються різними командами для індикації стану операції. В усіх випадках прапори зберігають своє значення доти, поки інша команда не змінить його. Флаговий регістр містить наступні дев'ять використовуваних біт (зірочками відзначені невикористовувані біти):
Номер біта: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Прапор: * * * * O D I T S Z * A * P * C
Розглянемо ці прапори в послідовності праворуч ліворуч.
CF (Carry Flag) - прапор переносу. Містить значення "переносів" (0 чи 1) зі старшого розряду при арифметичес ких операціях і деяких операціях зрушення і циклічного зрушення.
PF (Parity Flag) - прапор парності. Перевіряє молодші вісім біт результат- тов операцій над даними. Непарне число біт приводить до установки цього прапора в 0, а парне - у 1. Не варто плутати прапор парності з бітом контро- лю на парність.
AF (Auxiliary Carry Flag) - додатковий прапор переносу. Встановлюється в 1, якщо арифметична операція приводить до переносу четвертого праворуч біта (біт номер 3) у регистро виття однобайтовой команді. Даний прапор має відношення до арифметичних операцій над символами коду ASCII і до десяткових упакованим полям.
ZF (Zero Flag) - прапор нуля. Встановлюється в якості результату aрифметичних команд і команд порівняння. Як це не дивно, ненульовий результат приводить до установки нульового значення цього прапора, а нульовий - до установки одиничного значення. Існуюча невідповідність є, однак, логічно правильною, тому що 0 позначає "ні" (т.е. результат не дорівнює нулю), а одиниця позначає "так" (т.е. результат дорівнює нулю). Команди умовного переходу JE і JZ перевіряють цей прапор. SF (SIgn Flag) - знаковий прапор. Встановлюється у відповідності зі знаком результату (старшого біта) після арифметичних опеpацій: позитивний результат установлює 0, а негативний - 1. Команди умовного переходу JG і JL перевіряють цей прапор.
TF (Trap Flag) - прапор покрокового виконання. Цей прапор вам уже прихо- дилося встановлювати, коли використовувалася до манда Т в отладчике DEBUG. Якщо цей прапор встановлений в единичное cостояние, те процесор переходить у режим покрокового виконання команд, тобто в кожен момент виконується одна команда під користувальницьким керуванням.
IF (Interrupt Flag) - прапор переривання. При нульовому складаючись нии цього прапора переривання заборонені, при одиничному - дозволені.
DF (DIrection Flag) - прапор напрямку. Використовується в строкових опера- ціях для визначення напрямку передачі даних. При нульовому стані команда збільшує вміст регістрів SI і DI, викликаючи передачу даних ліворуч праворуч, при нульовому - зменшує вміст цих регістрів, викликаючи передачу даних праворуч ліворуч (див. гл.11).
OF (Overflow Flag) - прапор переповнення. Фіксує арифметическое переповнення, тобто перенос в/из старшого (знакового) біта при знакових арифметичних операціях. Як приклад: команда CMP порівнює два операнда
і воздействуте на прапори AF, CF, OF, PF, SF, ZF. Однак, немає необхідності перевіряти всі ці прапори по окремості. У сле- прикладі, що дує, перевіряється чи містить регістр BX нульове значення:
CMP BX,00 ;Порівняння BX з нулем
JZ B50; Перехід на B50 якщо нуль. (дії при ненулі)
B50: ... ;Крапка переходу при BX=0
Якщо BX містить нульове значення, команда CMP установлює прапор нуля ZF в одиничний стан, і можливо змінює (чи немає) інші прапори. Команда JZ (перехлд якщо нуль) перевіряє тільки прапор ZF. При одиничному значенні ZF, що позначає нульова ознака, команда передає керування на адресу, зазначений у її операнде, тобто на мітку B50.