Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PR_СП_лабы_11.doc
Скачиваний:
7
Добавлен:
22.04.2019
Размер:
755.71 Кб
Скачать

4. Завдання

1. Багатомодульна компіляція. Написати програму-калькулятор для виконання одного з 4-х арифметичних дій. Кожна дія має бути оформлене у вигляді окремої функції в окремому файлі.

2. Автоматизація компіляції. Написати також Makefile, що реалізує наступні завдання:

  • компіляцію програми-калькулятора, в результаті якої має бути отримано чотири виконуваних файлу,

  • компіляція повинна початися з повідомлення про те, які вихідні файли будуть використані,

  • після закінчення компіляції вихідні файли повинні бути видалені,

  • запуск утиліти make НЕ використовує ім'я мети.

Лабораторна робота № 3. Взаємодія програми з середовищем виконання

Мета: Оволодіння методами використання зовнішніх даних при розробці програм. Знайомство з поняттям зовнішнього середовища прграми.

Завдання для самостійної підготовки:

Вивчити:

  • призначення та способи обробки змінних оточення;

  • принципи використання змінних оточення в програмі;

  • призначення та способи обробки аргументів командного рядка;

  • принципи використання аргументів командного рядка в програмі.

Методичні вказівки

1. Аргументи командного рядка

Функція main () є головною функцією, визначеною користувачем, якій буде передано керування.

Функція main визначається наступним чином:

main (int argс, char * argv [], char * envp [])

1 2 3

1 - кількість аргументів командного рядка

2 - список аргументів командного рядка

3 - список змінних оточення

При запуску будь-яка програма UNIX отримує від зухвалої процесу два набори даних: аргументи командного рядка і змінні середовища оточення. У програмах на мові С обидва набори представлені у вигляді масивів покажчиків, причому останній покажчик у кожному з масивів має значення NULL. Крім того, програма отримує лічильник, що містить кількість елементів у масиві аргументів.

Аргументи командного рядка це додаткові інформаційні елементи, що передаються програмі під час запуску. Вони задаються в командному рядку і відділяються від імені програми і один від одного пробілами. (Аргумент, що містить пробіл, повинен екрануватися.)

Ім'я самої програми теж входить до списку аргументів. Наприклад, викликається програма ls, що відображає вміст кореневого каталогу та розміри відповідних файлів:

%ls –s /

У даному випадку список аргументів програми ls складається з трьох елементів. Перший - це ім'я самої програми, вказане в командному рядку, а саме ls. Другий і третій елементи - аргументи командного рядка-s і /.

Масив argv [] має довжину argс

Елемент argv [0] дорівнює імені програми,

argv [1] вказує на перший парамет і т. д. до argv [argc-1].

Нехай:

void main (int argc, char * argv [] , char * envp []);

Якщо ми наберемо команду

$ a.out a1 a2 a3

то функція main програми з файлу a.out викличеться з

argc = 4 / * кількість аргументів * /

argv [0] = "a.out"

argv [1] = "a1"

argv [2] = "a2"

argv [3] = "a3"

argv [4] = NULL

Якщо програма не передбачає прийом аргументів, то argc і argv можуть бути опущені. Робота з аргументами командного рядка зводиться до перегляду параметрів argc і argv.

Наведемо приклад програми, яка виводить ім'я програми, кількість переданих параметрів і значення цих параметрів.

# Include <stdio.h>

int main (int argc, char * argv [])

{printf("The name of this program is '% s'. \ N", argv [0]);

printf ("This program was invoked with% d arguments. \ n ", argc-1);

/ * Чи є хоч один аргумент? * /

If (argc> 1)

{int i;

printf ("The arguments are: \ n");. •

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

printf ("% s \ n", argv [i]);}

return 0;}

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