Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB3_M~1.DOC
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
232.45 Кб
Скачать

Лабораторна робота №3

Тема: ОПЕРАТОРИ ЦИКЛУ, ДИРЕКТИВИ ПРЕПРОЦЕСОРА,

ФОРМАТОВАНИЙ ВВІД-ВИВІД І ФУНКЦІЇ ПЕРЕМИКАННЯ ВВОДУ-ВИВОДУ

У АЛГОРИТМІЧНІЙ МОВІ С

1. МЕТА РОБОТИ

Мета роботи - ознайомлення з директивами препроцесора мови C, з операторами циклу і функціями вводу-виводу.

2. Теоретичні відомості

2.1. Директиви препроцесора

Препроцесор мови C використовується для обробки тексту програми до її компіляції. Препроцесор виконує макропідстановку, умовну компіляцію, під’єднання іменованих файлів. Директиви препроцесора починаються з символу “#”.

З однією директивою препроцесора #include Ви познайомились в лабораторній роботі №1. За допомогою цієї команди в програму на мові C можна включити текст будь-якого файлу.

Директива #include має дві форми:

  1. #include<ім’я файлу> - під’єднання стандартного файлу.

#include<stdio.h>

#include<main.h>

2)#include “ім’я файлу”- під’єднання зовнішнього, Вашого файлу

#include “myfile.h”.

Суфіка h використовуються для файлів, які під’єднуються в заголовку Вашої програми.

2.1.1. Макровизначення

Директива #define ставить у відповідність ідентифікатору текстову стрічку. Синтасис оператора:

#Define ідентифікатор (список ідентиф) стрічка заміни.

Стрічка заміни може містити ідентифікатори, ключові слова, розділювачі. Директива #define може стояти у будь-якому місці програми і виконує такі функції:

1) Визначення констант:

#define NULL 0

#define TRUE 1

#define FALSE 0

  1. Прості макровизначення:

#define begin {

#define end }

тоді замість фігурних дужок будуть використовуватись слова begin i end.

3) Параметризація макровизначень:

#define MAX(x,y) ((x)>(y)?(x):(y))

#define MIN(x,y) ((x)>(y)?(y):(x))

Директива #undef - відміняє дію #define.

Приведемо приклад використання директив #define і #undef:

#define TWO 2

#define FOUR TWO*TWO

#define PX print(“x дорівнює %d.\n”,x)

main ()

{ int x=TWO; PX;

x=FOUR; PX;

}

В результаті роботи цієї програми одержим повідомлення:

х дорівнює 2

х дорівнє 4

За директивою #define препроцесор замінює кожне макровизначення на стрічку заміни, тобто:

int x=TWO перетвориться в int x=2;

PX перетвориться в print (“х дорівнює %d.\n”,x)

x=FOUR перетвориться в x=TWO*TWO і далі в х=2*2

і так далі.

2.1.2. Умовна компіляція.

Умовна компіляція це вибіркова компіляція лише тих частин програми, які задовільняють певні умови. Для умовної компіляції використовуються такі директиви препроцесора: #if, #else, #endif, #ifdef, #ifndef.

Синтаксис директиви умовної компіляції:

if - заголовок

текстові рядки для випадку “істина”

#else

текстові рядки для випадку “не істина”

#endif

if - заголовок містить умови, на основі яких здійснюється перевірка. Управляючий рядок if - заголовок має 3 форми:

  1. #if вираз, що має постійне значення;

  2. #ifdef ідентифікатор;

  3. #ifndef ідентифікатор.

В першій формі вираз визначається значенням нуль або не нуль (“істина”, “не істина”.

В другій формі значення “істина” відповідає умові, якщо ідентифікатор був визначений в директиві #define.

В третій формі значення “істина” відповідає умові, якщо ідентифікатор або не був визначений в директивою #define, або був відмінений директивою #undef.

Для прикладу умовної компіляції приведемо такий фрагмент програми:

#ifndef MAX_STK

#define MAX_STK 128

#endif

Ідентифікатор MAX_STK має значення по замовчуванню, якщо не буде заданий користувачем.

Директива if подібна до оператора if у мові C:

#if SYS= = “IBM”

#include “ibm.h”

#endif

Якщо вираз SYS= = “IBM” істина, то під’єднується файл “ibm.h”.

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