Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВІдповіді на теоретичні питання з основ програм...doc
Скачиваний:
4
Добавлен:
20.09.2019
Размер:
299.01 Кб
Скачать

While (вираз) оператор;

Дія циклу While:

  1. Спочатку обчислюється значення логічного виразу

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

  3. Процес виконується доти, доки логічний вираз істиний.

Оператор циклу з постумовою.

Оператор циклу з післяумовою do-while формально записується так:

Do оператор while (вираз);

Дія циклу:

  1. Виконуються команди наступні за словом Do.

  2. Обчислюється значення логічного виразу . Якщо його значення істине (значення рівне TRUE), то повторно виконується команда циклу. Якщо ж значення рівне FALSE, то виконання циклу припиняється.

Таким чином, команди, що знаходяться між Do і While виконуються, до тих пір, поки логічний вираз має істине значення.

Оператор циклу з параметром.

Для організації циклу з відомим числом повторень використовується оператор циклу з параметром, котрий формально записується таким чином:

for (вираз 1; логічний вираз 2; вираз 3) команда 1;1

Дія команди.

  1. Обчислюється значення виразів 1 та 2.

  2. Якщо значення виразу 2 істине виконується тіло циклу, а потім знаходиться значення виразу 3.

  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(с);

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