REFERATUA.ORG.UA — База українських рефератів



Головна Інформатика, комп'ютери, програмування → Звіт про виконання практичного завдання з курсу ДРФМД

Міністерство освіти України

Львівський державний університет ім. І. Франка

Факультет прикладної математики

та інформатики

Звіт

про виконання практичного завдання з курсу

"ДРФМД"

Львів - 1998

Приклади роботи з системою UNIX

  • Скопіювати усі текстові файли (з розширеням .txt) в каталог TextDir

    cp *.txt TextDir

  • Дозволити читання усіх файлів каталогу AccessDir заданих шаблоном.

    UNIX-скріпт в файлі changeaccess виглядає таким чином:

    cd AccessDir

    chmod +r $1

    cd ..

    Приклад виклику: changeaccess "m*.*" – дозволяє читання усіх файлів, що

    починаються буквою m. Шаблон обов'язково вказується у лапках.

  • Приклад з мовою awk. Потрібно розв'язати квадратні рівняння типу

    Ax2 + Bx + C = 0 якщо коефіціенти A, B та C задані у вхідному файлі

    Вміст файлу на мові awksqrt.awk

    {

    a = 2 * $1;

    b = $2;

    c = $3;

    d = b * b - 2 * a * c;

    if (((a == 0) && (b == 0)) || (d < 0))

    printf(" Unable to calculate ")

    else

    if (a == 0)

    printf(" x = %f ", c / b)

    else

    if (d == 0)

    printf(" x = %f ", - b / a)

    else

    printf(" x1 = %f, x2 = %f ",

    (- b - sqrt(d)) / a, (- b + sqrt(d)) / a)

    }

    Вміст файлу з UNIX-скріптом для запуску awk-програми sqrtcalc

    awk -f sqrt.awk $1

    Приклад роботи програми: нехай файл koef.txt містить таки коефіціенти:

  • 0 -1

    1 0 1

    2 4 2

    0 0 5

    1 -3 2

  • 1 -2

    Набравши в командному рядку 'sqrtcalc koef.txt' отримаємо результат:

    x1 = -1, x2 = 1

    Unable to calculate

    x = -1

    Unable to calculate

    x1 = 1, x2 = 2

    x = 2

    Теоретична частина. Загальні можливості мови awk

    awk – інтерпретуюча мова програмування, що підтримується операційною системою UNIX. Виклик програми здійснюється командою awk –f programfile, де program є назвою файлу з awk-програмою, а file – файл даних. Не порушуючи логіки системи UNIX команда awk забезпечує потоковий ввід-вивід. who | awk -f program означає, що як файл даних використовується результат виконання команди who. Синтаксис awk-програм схожий із синтаксисом мови Cі, найбільша різниця між awk та Сі заключається в тому, що змінні в awk не типівізовані як в BASIC або тип Variant в Delphi.

    Текст програми пишеться у операторних дужках { } перед яким може стояти шаблон BEGIN або END. BEGIN означає, що дана частина коду виконується до початку обробки вхідних даних, END – після закінченя. Якщо шаблон не вказано, код виконується для кожного рядка з вхідного потоку.

    BEGIN{ n = 1 }

    {

    a[n] = $1;

    b[n] = $2;

    n++

    }

    END{

    for (i = 1; i <= n; i++)

    printf("a[i] + b[i] = %fn", a[i] + b[i])

    }

    В даному прикладі код {

    a[n] = $1;

    b[n] = $2;

    n++

    } виконається стільки разів, скільки рядків містить вхідний потік.

    Арифметичні та логічні операції в awk:

    awk

    Pascal

    z = x + y

    z := x + y

    z = x – y

    z := x – y

    z = x * y

    z := x * y

    z = x / y

    z := x / y

    z += y

    z := z + y

    z = x % y

    z := x mod y

    -=, *=, /=, %=

    Аналогічно

    x++

    inc(x)

    x--

    dec(x)

    x && y

    x and y

    x || y

    x or y

    ! x

    not x

    x == y

    x = y

    x != y

    x <> y

    x < y

    x < y

    x > y

    x > y

    x ~ y

    x in y

    x = (w) ? y : z

    if w then x := y else x := z


  •  
    Загрузка...