- •Поняття масиву. Одновимірні та багатовимірні масиви.
- •While (вираз) оператор;
- •Do оператор while (вираз);
- •2. Стрічки і дії з ними.
- •2. Діапазонний тип.
- •Вкладені цикли.
- •Процедури. Формальні і фактичні параметри. Параметри - значення і параметри - змінні. Порядок виклику процедур.
- •Зчитування даних з файлу та ввід у файл
While (вираз) оператор;
Дія циклу While:
Спочатку обчислюється значення логічного виразу
Якщо його значання істине, то виконується тіло циклу і повторно обчислюється значення логічного виразу. Якщо значення логічного виразу хибне, то здійснюється вихід з циклу.
Процес виконується доти, доки логічний вираз істиний.
Оператор циклу з постумовою.
Оператор циклу з післяумовою do-while формально записується так:
Do оператор while (вираз);
Дія циклу:
Виконуються команди наступні за словом Do.
Обчислюється значення логічного виразу . Якщо його значення істине (значення рівне TRUE), то повторно виконується команда циклу. Якщо ж значення рівне FALSE, то виконання циклу припиняється.
Таким чином, команди, що знаходяться між Do і While виконуються, до тих пір, поки логічний вираз має істине значення.
Оператор циклу з параметром.
Для організації циклу з відомим числом повторень використовується оператор циклу з параметром, котрий формально записується таким чином:
for (вираз 1; логічний вираз 2; вираз 3) команда 1;1
Дія команди.
Обчислюється значення виразів 1 та 2.
Якщо значення виразу 2 істине виконується тіло циклу, а потім знаходиться значення виразу 3.
Потім повторно визначається значення виразу 2 і пункт 2 повторюється до тих пір, поки значення виразу 2 істине. Як тільки значення виразу 2 стане хибне, відбувається вихід з тіла циклу.
Будь-який з трьох виразів може бути відсутній, але крапка з комою повинна залишатись. Якщо відсутні вирази 1 або 3, то керуюча змінна не використовується. Якщо ж пропущено вираз 2, то вважається, що умова істина і цикл не закінчується. Таким чином,
for (;;) { ... }
є нескінчений цикл, вихід з якого треба забезпечити іншими засобами.
Оператор continue був призначений для переривання циклічного процесу, організовуваного операторами for, while, do-while.
Двовимірні масиви. Порядок опису двовимірного масиву та доступу до його елементів.
Загальний вигляд масиву:
Type
<:ім’я>=array[1..<індекс>,1..<індекс>]of <тип_елементів>;
Індексом може бути довільний вираз. Тип індексів може бути тільки iнтервальним або перерахованим.
Приклад:
type
Robochid=(pn,vt,sr,ct,pt,sb);
Mas=array[Robochid] of Boolean;
При iнициалiзації двомірних масивів значення компонентів кожного з одномірних масивів, які його утворюють, записуються в дужках:
type Dim3x2= Array [1.. 3, 1.. 2] of Integer;
const iam3x2 : Dim3x2= ( ( 1, 2 ) ( 3, 4 ) ( 5, 6 ));
Другий спосіб iніціалiзації - використання різновиду процедури Fillchar:
Fillchar( var V; Nbytes : Word; B : Byte );
Ця процедура заповнює дільницю пам'яті однобайтовими значенням. Наприклад, для обнулення масиву A[1.. 10] of Real можна записати:
Fillchar( A, 40, 0 );
або Fillchar( A, Sizeof(A), 0) ;
Приклад: Програма множення многочленів.Нехай маємо многочлени вигляду a(x)=akxk+ak-1xk-1+..+a1x+a0,b(x)=bkxk+bk-1xk-1+..+b1x+b0,
p(x)=a(x)*b(x);
Program dobut;
Const Max=10;
Var
A,b,p:array[0..max] of real;
j.k:integer;
begin
for k:=0 to max do
a[k]:=k;
b:=a;
for k:=0 to max do
p[k]:=0.0;
for j:=0 to max do
for k:=0 to max-j do
p[j+k]:= p[j+k]+a[j]*b[k];
for k:=0 to max do
writeln (p[k]);
readln;end.
Файли в мові С++.
Файл - це сукупність даних, які розміщені на зовнішньому носії, зокрема, на жорсткому диску. Дані у файлі називаються елементами. Кількість даних під час опрацювання файлів не зазначають. Файли можуть містити як текстову, так і числову інформацію.
Існує декілька бібліотечних функцій, які дають змогу зчитати інформацію з файлу або спрямовувати потік виведення у файл. Функції, які розглядатимемо, описані в бібліотеці fstream.h. Тому для роботи з файлами насамперед необхідно підключити саме цю бібліотеку:
#include<fstream.h>
У модулі fstream.h також містяться описи стандартних потоків cout і сіn. Тому, щоб зчитати інформацію з файлу і вивести її на екран монітора, модуль iostream.h підключати не обов'язково.
Режими файлів.
При роботі з файловим вводом-виводом дуже важливо знати відмінність між текстовим і двійковим режимами. Текстовий режим був призначений для текстових файлів, в яких є рядки звичайного тексту. Двійковий режим використовується для будь-яких інших і особливо для файлів, які зберігаються у форматах, незручних для читання людиною. Існує деяка особлива тонкість, пов'язана з файлами текстового режиму, на які слід звернути особливу увагу і запам'ятати. Перша з них - символ EOF (26 в коді ASCII або Ctrl+Z) - є міткою (символ) кінця файлу. В текстовому режимі, де зустрічається символ EOF, система C++ низького рівня автоматично просувається до кінця файлу; ви нічого не можете прочитати після спеціального символу. Це може викликати проблеми, якщо такий спеціальний символ виявиться в середині файлу. Інша особливість текстового режиму полягає в тому, як інтерпретуються рядки текстового файлу. Кожний рядок закінчується послідовністю кінця рядка (EOL).
Ознаки файлів.
Ознаки слугують для зміни правил доступу до файлу. Розглянемо деякі з них:
Ознака |
Призначення |
ios::in |
Відкриває файл для читання з нього інформації. Вміст файлу зберігається |
ios::out |
Відкриває файл для запису інформації. Якщо файл не існує, то буде створений |
ios::app |
Відкриває файл для дописування інформації. Дані будуть записані в кінець файлу. |
ios::trunk |
Якщо файл, який відкривають для записування вже існує, то його вміст буде вилучено. |
ios::nocreate |
Забороняє створювати файл, який відкривають |
ios::noreplace |
Забороняє перезаписати існуючий файл. |
ios:: binary |
Відкрити файл в двійковому режимі.
|
Зчитування даних з файлу та ввід у файл
В програмі перед першим зверненням до потоку введення або висновку необхідно "створити" потік. Оператори для створення потоків схожі на описи змінних, і вони звичайно розміщуються на початку програми або функції поряд з описами змінних.
Щоб зчитати вхідні дані з файлу, необхідно оголосити файлову змінну та відкрити файл для читання так (розглянемо два способи):
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(); }
Функції роботи зі стрічками символів в мові С++.
Увести масив символів можна за допомогою команди
сіn » <назва масиву>;, що зчитає дані лише до першого пропуску. Щоб зчитати весь рядок до символу вводу, необхідно застосувати команду
сіn.get(<назва рядка>, максимальна довжина рядка>);
Вивести значення рядка на екран можна за допомогою команди
cout« <назва рядка>;
Посимвольно вводити чи виводити елементи рядка можна за допомогою команд циклу for або while звертаючись до елемента стрічки за допомогою виразу <ім’я стрічки>[<номер елемента стрічки>].
Розглянемо функції putchar і getchar , що знаходяться у бібліотеці conio.h і виконують введення і виведення символа. Після звернення
c = getchar()
змінна c містить черговий символ, набраний на клавіатурі.
Функція putchar за одне звернення до неї видає один символ в стандарный потік виводу. Виклик цієї функції має вигляд:
putchar(с);
с- змінна символьного типу, котрій попередньо було присвоєно деяке значення.
