Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Алфавіт

Алфавіт мови ((його символи))

це основні неподдільні знаки, за

допомогою яких пишуться всі тексти

мовою

великі та малі літери латинської абетки;

• арабські цифри;

• пробільні символи: пробіл, символи табуляції, символ переходу на наступний рядок тощо;

• спеціальні символи,.;:? ‘ ”! | / \ ~ () [ ] { } < > # % ^ & - + * =

 

Програма мовою С складається з синтаксичних конструкцій які називаються команди (оператори, вказівки).

? Структура програми.

В мові С довільна програма складається з однієї чи кількох функцій. Функціям можна давати довільні назви за винятком імені main, котре є зарезервованим словом і використовується для ідентифікації головної програми. Головна функція, яка має бути у кожній програмі, - це функція вигляду:

Коментар слугує для пояснення призначення програми і не впливає на виконання команд програми. Коментар можна і не писати. Комментар- це послідовність символів, яка сприймається компілятором як окремий пробільний символ або, іншими словами, ігнорується.

Коментар має наступну форму:

/*коментар */ або // коментар

Коментар може бути будь-якою комбінацією символів включаючи символи нового рядка. Коментарі можуть займати більше одного рядка, але не можуть бути вкладеними.

Коментарі допускаються скрізь, де дозволені пробільні символи. Компілятор ігнорує символи коментаря, зокрема, в коментарях допускається запис ключових слів і це не приведе до помилки. Оскільки компілятор розглядає коментар як символ пробілу, то коментарі не можуть з'являтися усередині лексем.

Main() – заголовок функції.

Void – означає, що функція незалежить від параметрів.

У тілі функції містяться команди. Команди одна від одної відокремлюють символом –;. Текст функції закінчується Return 0 – командою виходу з функції та повернення функції результату (у описаному випадку значення – 0). Тіло функції записується у {… }

Тіло програми складається з послідовності інструкцій (команд), котрі вказують які дії необхідно виконати на певному етапі виконання програми. Програма починається символом {, а закінчується символом }. Інструкції програми складаються з операторів та операндів. Для представлення операторів використовуються ключові (зарезервовані) слова.В мові С кожен оператор а також кожен виклик функції повинен закінчуватись крапкою з комою (;). Виняток становлять команди препроцесора та імена функцій, які стоять на початку програмної секції.

Метою будь-якої програми є розв'язок деякої задачі шляхом різних перетворень вхідних даних. Для цього необхідно:

1) ввести дані в програму;

2) встановити місце збереження даних (виділити область пам'яті);

3) реалізувати інструкції обробки інформації;

4) вивести дані з програми;

5) організувати виконання деяких інструкцій лиш тоді, коли певна умова або набір умов дає необхідне значення (наприклад істине або хибне);

6) реалізувати можливість повторення інструкції або групи інструкцій деяке число разів;

7) виділити групи інструкцій, котрі можна викликати і виконувати в довільних частинах програми, вказавши ім'я цієї групи.

Ці основні елементи програмування мають такий зміст:

1) ввід - читання даних з клавіатури, магнітного диску, порту вводу-виводу або з іншої програми;

2) дані - можуть бути простими або мати структурований тип. В мові Сі ними можуть бути числа, текстова інформація та адреси, котрі вказують місця розташування інших даних;

3) оператори - присвоюють значення змінним, реалізують переходи між інструкціями програми, викликають підпрограми та ін. Їх важливий підклас утворюють оператори умовного переходу і оператори циклу;

4) вивід - відображення інформації на екрані дисплею, запис на магнітний диск, вивід на друкуючий пристрій, передача в порт вводу-виводу чи в іншу програму;

5) оператори умовного переходу - дозволяють вибирати різні варіанти обробки даних в залежності від істиності чи хибності деяких заданих логічних умов;

6) оператори циклу - реалізують виконання однієї чи кількох інструкцій певне число разів до тих пір, поки виконується деяка умова;

7) підпрограми - пойменовані набори інструкцій, котрі можуть викликатись (скільки завгодно разів) і виконуватись в довільному місці програми. В різних мовах програмування підпрограми називають по-різному, в мові Сі об'єкти такого типу називають функціями.

Масиви структур. Вказівники на структури.

Структури можуть бути об'єднані в масиви структур. оголошення
масиву структур робиться аналогічно оголошенню масиву змінних. наприклад,
якщо потрібно зберігати інформацію про 10 студентів, то оголошення масиву буде
наступним
struct student stud1 [10];
Тут stud1 - ім'я масиву структур, а stud1 [0] - це перша
структура, stud1 [1] - друга... stud1 [9] - десята структура. щоб отримати
доступ до поля age п'ятий структури потрібно написати
stud1 [4]. age
Щоб отримати доступ до поля kurs першої структури потрібно написати
stud1 [0]. kurs

Вказівники на структури.

Існує, принаймні, три причини використання вказівників на структури:

- вказівниками легче керувати;

- структура не може передаватись функції в якості аргумента, але це можливо для вказівника;

- в деяких оголошеннях даних використовуються структури, які містять вказівники на інші структури.

Оголошення вказівника на структуру:

struct book *dn;

Спочатку йде службове слово struct,потім назва структури book, зірочка і ім’я вказівника. Це оголошення не створює нову структуру, але дозволяє використовувати вказівник dn для позначення будь-якої існуючої структури типу book.

Поняття про файли. Призначення файлів. Порядок опису файлів.

У всіх що розглядалися дотепер програмах введення даних проводилося тільки з клавіатури, а висновок - тільки на екран. Якщо як пристрої вводу/виводу обмежитися тільки клавіатурою і екраном, то у такому разі буде складно обробити великі об'єми вхідних даних. Вихідні дані, відображені на екрані, після виключення комп'ютера безповоротно втрачаються. Для усунення подібних проблем зручно зберігати дані на запам’ятовуючих носіях, призначених для довготривалого зберігання даних. Дані, що згенерували за допомогою однієї програми, можна зберегти на диску і надалі, при необхідності, витягнути і обробити в іншій програмі.

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

Файл - це сукупність даних, які розміщені на зовнішньо­му носії, зокрема, на жорсткому диску. Дані у файлі назива­ються елементами. Кількість даних під час опрацювання фай­лів не зазначають. Файли можуть містити як текстову, так і числову інформацію.

Існує декілька бібліотечних функцій, які дають змогу зчи­тати інформацію з файлу або спрямовувати потік виведення у файл. Функції, які розглядатимемо, описані в бібліотеці fstream.h. Тому для роботи з файлами насамперед необхідно підключити саме цю бібліотеку:

#include<fstream.h>

У модулі fstream.h також містяться описи стан­дартних потоків cout і сіn. Тому, щоб зчитати інформацію з файлу і вивести її на екран монітора, модуль iostream.h під­ключати не обов'язково.

Щоб зчитати вхідні дані з файлу, необхідно оголосити файлову змінну та відкрити файл для читання так

ifstream <назва файлової змінної>(<зовнішня назва>, ознака! |ознака2 |... | ознакам);

або так:

ifstream <назва файлової змінної>;<назва файлової змінної>.ореп(<зовнішня назва>);

Дія команд. Підключаємо потік введення даних із файлу та налагоджуємо зв'язок між файловою змінною у програмі та файлом на зовнішньому носії. Назву зовнішнього файлу треба записувати у лапках. Ознаки слугують для визначення прав доступу до файлу Ознаки зазначати необов'язково. У випадку, коли їх задавати не потрібно, наве­дені дві форми запису тотожні, і можна обирати одну з них.

Приклад. Відкрити зовнішній файл MyText.txt для чи­тання з нього даних можна так: ifstream MyFile("MyText.txt");

Порядок доступу до елементів файлу.

? В програмі перед першим зверненням до потоку введення або висновку необхідно "створити" потік. Оператори для створення потоків схожі на описи змінних, і вони звичайно розміщуються на початку програми або функції поряд з описами змінних.

Щоб зчитати вхідні дані з файлу, необхідно оголосити файлову змінну та відкрити файл для читання так (розглянемо два способи):

ifstream <назва файлової змінної>(<зовнішня назва>, ознака! |ознака2 |... | ознакам);

або так:

ifstream <назва файлової змінної>;<назва файлової змінної>.ореп(<зовнішня назва>);

Дія команд. Підключаємо потік введення даних із файлу та налагоджуємо зв'язок між файловою змінною у програмі та файлом на зовнішньому носії. Назву зовнішнього файлу треба записувати у лапках. Ознаки слугують для визначення прав доступу до файлу Ознаки зазначати необов'язково. У випадку, коли їх задавати не потрібно, наве­дені дві форми запису тотожні, і можна обирати одну з них.

Приклад. Відкрити зовнішній файл MyText.txt для чи­тання з нього даних можна так: ifstream MyFile("MyText.txt");

або так:

ifstream MyFile; MyFile.openfMyText.txt");

Тут MyFile - це файлова змінна, що асоціюється у програмі з відповідним зовнішнім файлом на диску. Введення даних виконують командою введення».

Наприклад, команда MyFile» text;

зчитає одне дане з початку файлу MyText.txt до першого про­пуску чи до символу „кінець рядка" у змінну text. Якщо треба зчитати наступне дане (яке розміщене між першим і другим пропусками), необхідно повторити попередню команду, тобто записати команди MyFile» text; MyFile» textl; або використати команду MyFile» text»textl;.

Наприклад, оператори

ifstream in_stream;

ofstream out_stream;

створюють потік з ім'ям "in_stream", ("ifstream" -input-file-stream, файловий потік введення), і потік з ім'ям "out_stream" ("ofstream" -output-file-stream, файловий потік виводу).

До потоків не можна застосовувати оператор присвоєння (наприклад, не можна записати "in_stream1 = in_stream2").

Отже, зчитати дані з файлу можна за допомогою команди:

< назва файлової змінної>» <змінна 1>» <змінна 2>»...» <змінна N>

Після опрацювання файлу його потрібно закрити. Це роб­лять так:

<назва файлової змінної>.сlose()

Наприклад, MyFile.close(). Файл MyText.txt буде закрито. Після цього файлову змінну MyFile у разі потреби можна зв'язати з іншим файлом на диску.

Визначити кінець файлу можна за допомогою функції eof() (eof - end of file, кінець файлу) так:

<назва файлової змінно>eоf();

Ця функція повертає нульове значення, якщо досягнуто кінця файлу.

Приклад. Нехай у деякому текстовому редакторі створе­но файли textl.dat і text2.dat. Послідовно зчитаємо з них да­ні та виведемо їх вміст на екран.

#include <fstream.h> // Виведення інформації із файлів

void main()

{

ifstream File1("text1.dat");

// Поки не досягнуто кінця файлу text1.dat

while (!File1.eof()) // Знак! означає операцію не

{

//надаємо місце в пам'яті для зчитуваного даного
char *t = new char[30]; // do ЗО символів

Filel»t; // Зчитуємо дане з файлу

cout«t«“\n”; // Виводимо це дане на екран

delete[] t; // Вивільняємо пам'ять

}

// Повертаємось на початок команди while

Filel.close(); // коли досягнуто кінця файлу, закриваємо його

Filel.open("text2.dat");// Відкриваємо файл text2.dat для читання
while (!File1.eof()) // Поки не досягнуто кінця файлу

{

char *t = new char[30];

File1»t;

cout«t«"\n";

delete[] t;Filel.close(); }

Приклад

// відкрити потік для введення

fstream f;

f.open("simple.txt", ios::in);

 

// відкрити потік для висновку fstream f;

fstream f;

f.open ("simple.txt", ios::out);

 

// відкрити потік уведення-виведення для двійкових даних fstream f;

fstream f;

f.open("simple.txt", ios::in | ios::out | ios::binary);

 

 

Відкрити файл для запи­сування у нього даних можна так:

ofstream <назва файлової змінноТ>(<зовнішня назва>,ознака 1 | ознака2 |... | ознакаN)

або так:

ofstream <назва файлової змінної>;

<назва файлової змінної>.ореn(<зовнішня назва>);

Дія команд. Підключаємо потік виведення у файл і нала­годжуємо зв'язок між файловою змінною у програмі та фай­лом на зовнішньому носії. Ознаки зазначати не обов'язково.

Приклад. Відкрити файл MyTextl.txt для запису у ньо­го даних можна так (тут FileForZap - файлова змінна):

ofstream FileForZap("MyText1.txt");

або так:

ifstream FileForZap; FileForZap.open("MyText1.txt");

Щоб занести дані у файл, використовують команду виве­дення даних << Наприклад, після виконання команд

int n = 10;

FileForZap <<n;

у файл MyTextl.txt буде занесено число 10. Занести декілька даних у файл можна так само, як і вивести їх на екран: вико­ристовуючи стандартні правила команди << та керуючі послі­довності.

Отже, записати дані у файл можна так:

<назва файлової змінної> «<змінна 1 > «<змінна 2> «... «<змінна М>

 

Приклад.

ofstream Flags(textl.dat, ios::app, ios::noreplace);

можна дописати до кінця вже існуючого файлу textl.dat потрібну інформацію. Якщо ж оголосити потік Flags так:

ofstream Rags("text1.dat", ios::noreplace);

і спробувати щось записати у файл, то жодних дій не відбу­деться, оскільки ознака ios::noreplace забороняє змінювати існу­ючий файл.

Проте якщо цю ознаку застосувати до нового файлу, якого ще немає на диску, наприклад, записати ofstream Flags("text3.dat", ios::noreplace);

то буде створено файл text3.dat, в який можна буде заносити дані.

Якщо потік оголосити так:

ofstream Flags("text4.dat", ios::nocreate);

то можливі два варіанти. Якщо файл text4.dat вже існує, то він може бути відкритий для записування даних. Якщо ж ра­ніше такого файлу на диску не було, то в кращому випадку у файл нічого не запишеться, а в гіршому - програма зависне.

Масиви. Ініціалізація масивів та класи пам’яті.

A) Ініціалізація масивів

Проініціалізувати масив (надати значення елементам масиву) можна одним із способів:

· Використовуючи принцип за замовчуванням;

· Безпосередньо під час його оголошення;

· Застосовуючи команду присвоєння;

· Під час введення даних із клавіатури.

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

<Тип> < ім’я масиву > [<константний вираз >]= {елементи константи};

Константний-вираз в квадратних дужках задає кількість елементів масиву.

За замовчуванням усім елементам масиву надається значення 0. Масив можна ініціалізувати повністю або частково, відразу під час його оголошення, записуючи значення змінних через кому у фігурних дужках.

Двовимірний масив можна ініціювати так:

int matr[2][5]= {3,4,0,1,2},{6,5,1,4,9 };

Якщо масив повністю ініціалізують під час оголошення, то його розмір зазначати не обов’язково.

Елементи масиву також можна вводити з клавіатури під час виконання програми, як це робимо для змінних простих стандартних типів даних.

Масиви сталі (константи) оголошуються так: const int tag[]={1,2}. Константи треба ініціалізувати під час оголошення, інакше елементам масиву автоматично будуть присвоєні нульові значення.

 

Отже,

1. Масив є структурою даних, яка дозволяє одній змінні зберігати декілька значень.

  1. При оголошенні масиву ви повинні вказати тип значень, що зберігаються в масиві, а також кількість значень (елементів масиву).
  2. Всі елементи усередині масиву повинні бути одного і того ж типу, наприклад, int, float або char.
  3. Для збереження значення усередині масиву вам слідує вказати номер елемента масиву, в якому ви хочете зберегти своє значення.
  4. Щоб звернутися до значення, що зберігається усередині масиву, ваші програми указують ім'я масиву і номер елемента.
  5. При оголошенні масиву програми можуть використовувати оператор присвоєння для ініціалізації елементів масиву.
  6. Програми можуть передавати змінні-масиви у функції точно так, як і вони передають будь-який інший параметр.

Б)Класи пам’яті.

Для того, щоб безпосередньо вказати комп’ютеру як і де у його пам’яті мають зюерігатися значення змінних чи функцій, як можна отримати доступ до цих даних, як визначити область видимості цих даних, використовують специфікатори класу пам’яті. Є п’ять спецтфікаторів:

 

Дія цих специфікаторів.

Auto – застосовується для локальних змінних по замовчуванню.

Область видимості – обмежена блоком, в якому вони оголошені.

Register – вказує компілятору, що значення слід зберігати в регістрах процесора (не в оперативній пам’яті). Це зменшує час доступу до змінної, що прискорює виконання програми

Область видимості – обмежена блоком, в якому вони оголошені.

Static – застосовується як для локальних, так і для глобальних змінних.

Область видимості – значення локальної статичної змінної зберігається після виходу з блока чи функції, де ця змінна оголошена. Під час повторного виклику функції змінна зберігає своє попереднє значення. Якщо змінна явно не ініцілізована, то за замовчуванням надається значення 0.їй

Дана програма обчислює суму перших 10 цілих додатних чисел.

Extern – використовується для передачі для передачі значень глобальних змінних з одного файлу в інший (часто великі програми складаються з кількох файлів).

Область дії – всі файли, з яких складається програма.

Volatile – застосовується до глобальних змінних, значення яких можуть надходити від переферійних пристроїв (наприклад від системного таймера)

 

 

 


Дата добавления: 2015-10-16; просмотров: 66 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Коммуникационная политика| Часть I

mybiblioteka.su - 2015-2024 год. (0.022 сек.)