Алгоритмізація та програмування

Сутність програмування, мислення і властивості програміста. Поняття та види запису алгоритмів. Основні алгоритмічні структури, робота з векторами і матрицями в програмуванні. Пристрої виведення інформації, правила запису алгоритмів для комп'ютерів.

Рубрика Программирование, компьютеры и кибернетика
Вид курс лекций
Язык украинский
Дата добавления 21.07.2017
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

перетворення типів здійснюється тільки шляхом перетворення значення з одного типу в інший;

перетворення типів не проводиться шляхом трактування подання значення як даних різних типів.

Експерименти показали, що мови програмування з сильною типізацією сприяють збільшенню ясності і надійності програм. Механізм трактування подання значення як даних різних типів призводить до того, що використовують його програми не володіють ні надійністю, ні мобільністю. У мові Сі допускається неявне перетворення типів для всіх базових типів і покажчиків. Однак Мобільний Транслятор з мови Сі виводить попередження про кожного хто зустрівся у програмі у випадку неявного перетворення типів, в якому бере участь показуючий.

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

Сі - сучасна мова. Він включає в себе ті керуючі конструкції, які рекомендуються теоретичним і практичним програмуванням. Його структура спонукає програміста використовувати в своїй роботі спадний проектування, структурне програмування і поступову розробку модулів. Результатом такого підходу є надійна і читана програма.

Сі - ефективниа мова. Його структура дозволяє найкращим чином використовувати можливості сучасних ЕОМ. Написані на мові Сі програми зазвичай відрізняються компактністю і швидкістю виконання.

Сі - потужна і гнучка мова. Наприклад, велика частина потужною і гнучкою OC UNIX написана на мові Сі. Мова йде про компілятори та інтерпретатори інших мов, таких, як Фортран, АПЛ, Паскаль, Лісп, Лого та Бейсик. Крім того, програми, написані на Сі, використовуються для рішення фізичних і технічних проблем, комп'ютерної графіки і навіть виробництва мультиплікаційних фільмів.

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

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

Структура програми і правила написання

Розглянемо просту програму на мові Сі:

# Include <stdio.h>

int main () / * проста програма * /

{

int courses;

courses = 30;

printf ("Скільки навчальних курсів на сайті");

printf ("www.intuit.ru? \ n");

printf ("Більш% d. Але буде ще більше! \ n", courses);

return 0;

}

Давайте виконаємо цю програму. Спочатку використовуємо текстовий редактор для створення файлу, що містить текст програми. Цього файлу потрібно привласнити якесь ім'я. Припустимо - intuit.c. Виконаємо компіляцію програми. Після запуску програми, за умови відсутності синтаксичних помилок, результат повинен виглядати наступним чином:

Скільки навчальних курсів на сайті www.intuit.ru?

Більше 30. Але буде ще більше!

Пояснення до програми

Ми виконали два перегляду тексту програми: під час першого перегляду пояснимо сенс кожного рядка, а під час другого - розглянемо деталі.

Перший перегляд

# Include <stdio.h> - включення іншого файлу.

Цей рядок вказує компілятору, що потрібно включити інформацію, що міститься у файлі stdio.h.

main () - ім'я функції

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

/ * Проста програма * / - коментар

/ *, * / - Відкриваюча і закриваюча дужки багатострокового коментарю.

Коментарі - це примітки, що допомагають зрозуміти сенс програми. Вони призначені для читача, і ігноруються компілятором.

{- Початок тіла функції

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

int courses; - оператор опису

За допомогою такого оператора ми оголошуємо, що будемо використовувати в програмі змінну courses, яка приймає цілі (int) значення.

courses = 30; - оператор присвоювання

Цей оператор служить для присвоювання змінної courses значення 30.

printf ("Скільки навчальних курсів на сайті?"); - оператор виводу на друк

З його допомогою виводиться на друк фраза, укладена в лапки:

Скільки навчальних курсів на сайті?

printf ("www.intuit.ru? \ n"); - ще один оператор виводу на друк. Цей оператор додає слова www.intuit.ru? в кінець останньої друкованої фрази. Комбінація символів \ n вказує компілятору на початок нового рядка.

printf ("Більш% d. Але буде ще більше! \ n", courses);

Цей оператор виводить на друк значення змінної courses, рівне 30, що міститься в лапках. Символи% d вказують компілятору, де і в якій формі друкувати значення змінної courses.

} - Кінець

Програма завершується закриваючою фігурною дужкою.

Другий перегляд

# Include <stdio.h>

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

standard input / output header - заголовок стандартного вводу-виводу.

Програмісти називають набір даних, що міститься на початку файлу, заголовком.

Рядок "# include <stdio.h>" навіть не є оператором мови Сі. Символ # вказує, що вона повинна бути оброблена "препроцесором" мови Сі. Препроцесор здійснює деяку попередню обробку тексту програми перед початком компіляції.

main ()

Програма, написана на мові Сі, завжди починає виконуватися з функції, званої main (). Дужки вказують на те, що main () - ім'я функції.

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

Файл, що містить програму, може мати будь-яке ім'я з тим обмеженням, що воно має задовольняти системним угодами, і закінчуватися символом с. Наприклад, game.c.

/ * Проста програма * /

Коментарі полегшують процес розуміння програми. Довгий коментар може поміщатися на окремому рядку або навіть займати кілька рядків. Все, що знаходиться між символом, що вказує на початок коментарю / *, і символом, що вказує на його кінець * /, ігнорується компілятором.

{,}

Фігурні дужки {} відзначають початок і кінець тіла функції.

int courses;

Це оператор опису змінної. У нашій програмі в тілі функції використовується змінна courses, і за допомогою слова int оголошується, що змінна courses приймає цілі значення. Крапка з комою в кінці рядка вказує на те, що в ній міститься оператор мови Сі, причому цей символ є частиною оператора, а не роздільником операторів. int служить ключовим словом, визначальним один з основних типів даних мови Сі.

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

У мові Сі всі змінні повинні бути оголошені. Це означає, що ми повинні привести список всіх використовуваних змінних і вказати тип кожної з них.

Ім'я змінної потрібно давати осмислено. Слід враховувати що конкретні реалізації компіляторів обмежують довжину імені змінних.

Ідентифікатор змінної - ім'я змінної. Для позначення імені змінної дозволяється використовувати рядкові і прописні букви, цифри та символ підкреслення, що вважається літерою. Першим символом повинна бути обов'язково буква.

Наприклад, courses, cat_1, _total - правильні ідентифікатори, а $ courses *, 1cat - неправильні.

Змінні можна описувати в міру необхідності, але краще розміщувати оператори оголошення змінних на початку програми. Будь-яка програма, написана на мові Сі, не буде виконуватися, якщо не описати всі використовувані змінні.

courses = 30;

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

У даній програмі використовується стандартна функція мови Сі - printf (). Рядок символів, укладена в дужки, є інформацією, що передається функції printf () з головної функції main (). Така інформація називається аргументом. У першому випадку аргументом є "Скільки навчальних курсів на сайті?". Даний рядок дає приклад того, як викликати функцію або звернутися до неї, програмуючи на мові Сі. Для цього потрібно лише вказати ім'я функції та укласти необхідний аргумент, або аргументи, в дужки. Коли при виконанні функції програма досягне цього рядка, управління буде передано зазначеної функції. Коли виконання функції буде завершено, управління повернеться назад у вихідну, зухвалу програму.

Символи \ n служать директивою почати новий рядок на пристрої виводу. Комбінація \ n представляє один символ, званий "новий рядок". Його сенс формулюється так: почати виведення нового рядка з самої лівої колонки. Символ "новий рядок" служить одним із прикладів того, що називається "керуючої послідовністю". Керуюча послідовність починається з "\".

програмування алгоритм комп'ютер інформація

Базові типи даних

Фундаментальні об'єкти даних, з якими працює програма, - це змінні і константи [2.1]. Використовувані в програмі змінні перераховуються в оголошеннях або деклараціях, в яких вказується їх тип, а також іноді їх початкові значення.

З іменами змінних зв'язується тип даних, який контролюється компілятором і для якого виділяється певна кількість байтів пам'яті [2.1]. Імена змінних повинні починатися з букви (латинського алфавіту) або символу підкреслення (наприклад, _aza ), за яким можуть йти будь-які комбінації букв у будь-якому регістрі (заголовні або рядкові), символи підкреслення або цифри 0-9. У мові Сі є відмінність між заголовними і рядковими буквами. Тому змінна World відрізнятиметься від змінної world і тому подібне. При цьому у визначенні змінної не дозволяється символ пропуску (пропусків) і деякі інші символи, наприклад $... .

Стандарт С89 визначає п'ять базових типів даних [2.4]:

int - цілочисловий тип, ціле число;

float - дійсне число одинарної точності з плаваючою точкою;

double - дійсне число подвійної точності з плаваючою точкою;

char - символьний тип для визначення одного символу;

void - тип без значення.

Крім того, існують модифікатори, які можуть застосовуватися до цих базових типів . Приведемо модифікатори базових типів даних. До них відносяться наступні специфікатори, попередні їм в тексті програми [2.4]:

signed, unsigned, long, short

Таблиця 2.1. Типи даних мови Сі

Тип даних

Типовий розмір у бітах

Мінімально допустимий діапазон значень

[signed] char

8 (чи 1 байт)

від - 127 до 127

unsigned char

8

від 0 до 255

[signed] int = short int

16 чи 32

від - 32767 до 32767

unsigned int

16 чи 32

від 0 до 65535

long int

32

від - 2147483647 до 2147483647

float

32

від 1Е-37 до 1Е+37 (з точністю не менше 6 значущих десяткових цифр)

double

64

від 1Е-37 до 1Е+37 (з точністю не менше 10 значущих десяткових цифр)

У мові Сі передбачається перетворення типів у виразах і приведення типів. Якщо у вираженні змішані різні типи літералів і змінних, то компілятор перетворить їх в один тип. По-перше, усе char і short int значення автоматично перетворяться (з розширенням "типорозміру") в тип int. Цей процес називається цілочисловим розширенням (integral promotion). По-друге, усі операнди перетворяться (також з розширенням "типорозміру") в тип найбільшого операнда. Цей процес називається розширенням типу (type promotion), причому він виконується після операційно. Наприклад, якщо один операнд має тип int, а інший- long int, то тип int розширюється в тип long int. Чи якщо хоч би один з операндів має тип double, то будь-який інший операнд приводиться до типу double. Це означає, що такі перетворення, як тип char, в тип double цілком допустимі (якщо передбачати, до чого це приведе). Після перетворення обидва операнди матимуть один і той же тип, а результат операції - тип, співпадаючий з типом операндів.

У мові Сі передбачається явне перетворення (приведення) типів. Загальна форма оператора явного приведення типу : (тип) вираження.

1. Основи програмування на мові Cі Автори: Н.А. Калинина, Н.И. Костюкова

2. Введення в мови програмування C і C++ Автор: Ю.Л. Кетков

Практика

Реалізація завдань, вирішених у вигляді блок-схем, на мові Сі (галуження) :

Дано тризначне число. Знайти суму і твір його цифр.

Дано два цілі числа: A, B. Перевірити істинність висловлювання : «Рівно одно з чисел A і B непарне».

Дано тризначне число. Перевірити істинність висловлювання : «Усі цифри цього числа різні».

Лекція 8. "Основи мови Сі (друга частина)"

Уведення-виведення

У програмах, що наводяться нижче, використовуються такі засоби введення-виводу, як printf(), getchar(), gets(), scanf(). Приведемо характеристику цих функцій [2.4].

Прототип функції printf() має вигляд:

int printf(const char *format, ?);

Функція printf() записує в стандартний потік stdout (стандартний вихідний потік даних) значення аргументів із заданого списку аргументів відповідно до рядка форматування, що адресується параметром format. Рядок форматування складається з елементів двох типів. До елементів першого типу відносяться символи, які виводяться на екран. Елементи другого типу містять специфікації формату, визначальний спосіб відображення аргументів. Специфікація формату починається символом відсотка, за яким йде код формату. На специфікації формату можуть впливати модифікатори, задаючи ширину поля, точність і ознаку вирівнювання по лівому краю. Ціле значення, розташоване між знаком % і командою форматування, грає роль специфікації мінімальної ширини поля. Наявність цього специфікатора призводить до того, що результат буде заповнений пропусками або нулями, щоб значення, що виводиться, займало поле, ширина якого не менше заданої Сі мінімальної ширини. За умовчанням в якості заповнювача використовується пропуск (пропуски). Для заповнення нулями перед специфікацією ширини поля треба помістити нуль, тобто 0. Наприклад, специфікація формату %05d доповнить нулями ціле число, що виводиться, в якому менше п'яти цифр, щоб загальна довжина дорівнювала п'яти символам. Дія модифікатора точності залежить від коду формату, до якого він застосовується. Щоб додати модифікатор точності, слід поставити за специфікатором ширини поля десяткову точку, а після неї - необхідне значення точності (число знаків після десяткової точки). Стосовно цілих чисел модифікатор точності задає мінімальну кількість цифр, що виводяться. При необхідності перед цілим числом будуть додані нулі. Якщо модифікатор точності застосовується до рядків, то число, що йде за точкою, задає максимальну довжину поля. Наприклад, специфікація %5.7s виведе рядок завдовжки не менше п'ять, але не більше семи символів. Якщо рядок, що виводиться, виявиться довше за максимальну довжину поля, кінцеві символи будуть відсічені. За умовчанням усі значення, що виводяться, вирівнюються по правому краю: якщо ширина поля більше значення, що виводиться, то воно буде вирівняно по правому краю поля. Щоб встановити вирівнювання по лівому краю, треба поставити знак "мінус" ("-") відразу після знаку відсотка. Наприклад, специфікація формату %-10.4f забезпечить вирівнювання дійсного числа з чотирма десятковими знаками по лівому краю в 10-символьному полі. Специфікатори формату для функції printf() перераховані в таблиці. 2.3, узятою з [2.3].

Таблиця 2.3.

Специфікатори формату функції printf()

Код

Формат

%c

Символ

%d

Десяткове ціле число зі знаком

%i

Десяткове ціле число зі знаком

%e

Експоненціальне представлення числа (у вигляді мантиси і порядку, е -- на нижньому регістрі)

%E

Експоненціальне представлення числа (у вигляді мантиси і порядку, Е -- на верхньому регістрі)

%f

Десяткове число з плаваючою точкою

%F

Десяткове число з плаваючою точкою (тільки стандарт С99; якщо застосовується до нескінченності або нечислового значення, то видає написи INF, INFINITY(нескінченність) або NAN -- Not A Number на верхньому регістрі. Специфікатор %f виводить їх еквіваленти на нижньому регістрі)

%g

Використовує коротший з форматів %e або %f

%G

Використовує коротший з форматів %E або %F

%o

Вісімкове число без знаку

%s

Символьний рядок

%x

Шістнадцяткове без знаку (рядкові букви)

%X

Шістнадцяткове без знаку (прописні букви)

%p

Виводить покажчик

%%

Виводить знак відсотка

Прототип функціїscanf()має наступний вигляд:

int scanf(const char *format, ?);

Функціяscanf()є функцією для введення даних загального призначення, яка читає потік stdin і зберігає інформацію в змінних, перерахованих в списку аргументів. Якщо в рядку форматування зустрінеться роздільник, то функціяscanf()пропустить один або декілька роздільників у вхідному потоці. Під роздільником, або пробільним символом, мають на увазі пропуск, символ табуляції }t або роздільник рядків }n. Усі змінні повинні передаватися за допомогою своїх адрес, наприклад, за допомогою символу &. Рядок, що управляє, задається параметром format, складається з символів трьох категорій : специфікаторів формату, пробільних символів, символів, відмінних від пробільних [2.4].

Специфікація формату починається знаком % і повідомляє функціїscanf()тип даного, яке буде прочитано. Специфікації формату функції scanf() приведені в таблицю.2.4.

Таблиця 2.4.

Специфікатори формату функції scanf()

Код

Формат

%c

Читає один символ

%d

Читає десяткове ціле число

%i

Читає ціле число у будь-якому форматі (десяткове, вісімкове або шістнадцяткове)

%u

Читає десяткове ціле число типу short int

%e

Читає число з плаваючою точкою (і в експоненціальній формі)

%E

Аналогічно коду %e

%f

Читає число з плаваючою точкою

%lf

Читає десяткове число з плаваючою точкою типу double

%F

Аналогічно коду %f (для стандарту С99)

%g

Читає число з плаваючою точкою.

%G

Аналогічно коду %g

%o

Читає вісімкове число

%x

Читає шістнадцяткове число

%X

Аналогічно коду %x

%s

Читає рядок

%p

Читає покажчик

%n

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

%[ ]

Переглядає набір символів

%%

Читає знак відсотка

Якщо вхідний потік містить більше заданої кількості символів, то при наступному зверненні до операції введення читання почнеться з того місця, в якому "зупинився" попередній виклик функції scanf() [2.3]. Якщо роздільник (наприклад, пропуск) зустрінеться раніше, ніж досягнута максимальна ширина поля, то введення даних завершиться. В цьому випадку функція scanf() переходить до читання наступного поля. При читанні поодиноких символів символи табуляції і роздільники рядків читаються подібно до будь-якого іншого символу.

Пріоритети операцій

Пріоритет, ранг або зростання операції або оператора -- формальна властивість оператора/операції, що впливає на черговість його виконання у вираженні з декількома різними операторами за відсутності явної (за допомогою дужок) вказівки на порядок їх обчислення. Наприклад, операцію множення зазвичай наділяють великим пріоритетом, чим операцію складання, тому у вираженні добуток x+y*z буде отримано спочатку y і z, а потім вже сума.

У формальних системах використовується два способи завдання пріоритету будь-якого оператора. Перший з них -- розподіл усіх операторів за ієрархією пріоритетів. Цей спосіб завжди використовується для завдання пріоритетів за умовчанням і фіксується в описі мови у вигляді угоди, що таким-то операторам привласнюється такі-то пріоритети. Ніякого віддзеркалення в синтаксисі мови він не отримує, тобто при нім не використовуються ніяких явних засобів (= тих/інших символів) для вказівки пріоритету операції.

Другий спосіб дає можливість міняти пріоритети за умовчанням, вказуючи їх в явному виді за допомогою символів парних дужок. При цьому глибина вкладеності прямо пропорційна величині пріоритету, тобто більше внутрішні дужки вказують на більший пріоритет, чим зовнішні. У попередньому прикладі з сумою і добутком порядок обчислення можна поміняти, використовуючи дужки, записавши усе вираження так: ((x+y)*z).

Математичні операції

Таблиця 1.3.1.

Знак

Математична операція

*

Множення

/

Ділення і цілочислове ділення без остачі

%

Ділення по модулю і залишок від ділення

+

Складання

-

Віднімання

Знак /завжди означає ділення. Проте якщо з обох боків від цього знаку стоять цілі величини (константи, змінні або їх комбінації), він означає цілочислове ділення. Якщо в результаті такого ділення виходить залишок, С++ його відкидає.

Знак %означає виділення залишку при цілочисловому діленні. Ця операція вимагає, щоб з обох боків від її знаку стояли цілі величини.

Приклади

cout << 10/2 << ">> // 5 (залишку немає)

cout << 300/100 << ""; // 3 (залишку немає)

cout << 10/3 << ""; // 3 (залишок відкинутий)

cout << 300/165 << "\n>> // 1 (залишок відкинутий)

cout << 10% 3 << "\n>; // 1 (залишок)

cout << 20/4 "\n"; // 0 (залишку немає)

Привласнення

У одному рядку може стояти більше однієї операції привласнення =.

Приклад.

a=b=c=d=100;

Знак = завжди означає: "змінній ліворуч присвоїти значення, що стоїть справа ". Операція виконується справа наліво. Тому першою значення 100 отримує змінна d, потім з, b і а.

Знак присвоїти може стояти навіть усередині математичного вираження:

value=5+(r=9 - c)

Привласнення має вищий пріоритет, ніж складання і віднімання. Тому спочатку змінною r буде присвоєне значення 9-с. А потім змінна value отримає значення 5+9-с.

Складене привласнення

При написанні програми часто вимагається змінити значення змінної. Наприклад, вимагається узяти поточне значення змінної, додати або помножити це значення на якесь вираження, а потім присвоїти це значення тієї ж змінної. Такі операції виконують оператори складеного привласнення.

Таблиця 1.3.2.

Операція

Приклад

Еквівалент

+ =

B+ = 500;

B= B+ 500;

- =

З- = 50;

C = З - 50;

* =

D* = 1.2;

D = D*1.2;

/ =

F/ = 50;

F = F/.50;

% =

M% = 7;

M = M% 7;

Перетворення типів

Найчастіше Вам не потрібно турбуватися про автоматичне перетворення типів. Проте, якщо Ви змішуєте без знакові змінні зі змінними інших типів, можуть виникнути проблеми. Точність результату може бути втрачена. Тому необхідно зробити тимчасову зміну типів.

Формат:

(тип даних) вираження

Тип даних - це будь-який допустимий тип.

Вираження - змінна, константа або вираження.

Приклад.

v=(double) age*f;

- змінна age тимчасово перетвориться до типу з плаваючою точкою подвійної точності і множиться на змінну f.

Операції відношення

Таблиця 1.3.3.

Операції

Опис

= =

Рівно

>

Більше

<

Менше

>=

Більше або рівно

<=

Менше або рівно

!=

Не рівно

Зауваження 1.

Знак = ніколи не використовується як знак порівняння! Це знак присвоїти значення.

Зауваження 2.

У C++ немає логічного типу. Тому, якщо вираження набуває ненульового значення, то воно вважається істинним, а якщо нульове - помилковим.

Операції інкремента (++) і декремента (-)

У мові C++ передбачено дві унікальні операції, які збільшують або зменшують значення змінної на 1.

Таблиця 1.3.4.

Оператор

Приклад

Опис

Еквівалентне вираження

+ +

i + +;

Постфіксна

i =i+1; чи i+=1;

+ +

+ + i;

Префіксна

i =i+1; чи i+=1;

- -

i - -;

Постфіксна

i =i - 1; чи i-=1;

- -

- - i;

Префіксна

i =i - 1; чи i-=1;

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

Приклад.

float a, b=2, c=1, d=1;

a = b + c++;

cout << "a=" << a <<"c= "<< c;

/* Дає результат a=3 c=2.

Використовується постфіксний інкремент. Спочатку станеться складання b і c, результат запишеться в а, потім з буде збільшена на 1 */

a = ++d + b;

cout << "a=" << a <<"d= "<< d;

/* Дає результат a=4 d=2.

Використовується префіксний інкремент. Спочатку d буде збільшена на 1 (і стане рівною 2), потім станеться складання d і b, результат запишеться в а */

Операція "кома"

Додаткова операція (,) не працює безпосередньо з даними, а призводить до обчислення вираження зліва направо. Ця операція дозволяє Вам використовувати в одному рядку декілька виразів, розділених комі.

Приклад 1.

main()

{

int i = 10

j = 25;

}

Приклад 2.

i = 10;

j=(i=12, i+8);

Результат виконання : j=20. Спочатку i набуває значення 10, потім використання операції "кома" приведе до того, що i отримає значення 12, а потім значення i+8, тобто 12+8=20. Результат буде присвоєний j.

Оператор ?:

(Умова) ? (вираження1) :(вираження 2)

Якщо умова істинна, то виконується вираження1, а якщо помилково, то вираження 2.

Приклад.

(а>b) ? (ans =10) :(ans=25);

чи

ans=(a>b)?(10):(25);

Якщо а>b, то змінна ans виходить значення 10, інакше - значення 0.25

Покажчик. Визначення адреси змінною

С++ дозволяє на пряму працювати з пам'яттю. З будь-якою змінною можна працювати, вказуючи її ім'я або її адресу. Адреси змінних називаються покажчиками, при описі покажчик позначається *.

Приклад.

int * k; // k - покажчик на змінну цілого типу

Можна отримати адресу, по якій змінна розташовується в пам'яті.

Операція& зміннавизначає адресу змінної по її імені, а також дозволяє звернутися до пам'яті за значенням покажчика.

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

Перед використанням покажчика його необхідно описати в програмі.

Приклад.

int *c; // з покажчик на змінну типу int

float * d; // d покажчик на змінну типу float

Малюнок 1.3.1. Таблиця пріоритетів С++

3. Основи програмування на мові Cі Автори: Н.А. Калинина, Н.И. Костюкова

4. Введення в мови програмування Cі, C++ Автор: Ю.Л. Кетков

5. http://do.rksi.ru/library/courses/demo/tema 1_3.dbk

Лекція 9. "Оператори мови Сі і прийоми програмування "

Оператори мови Сі

Всі оператори мови Сі можуть бути умовно розділені на такі категорії:

- умовні оператори, до яких ставляться оператор умови іf і оператор вибору swіtch;

- оператори циклу (for, whіle, do whіle);

- оператори переходу (break, contіnue, return, goto);

- інші оператори (оператор "виразу", порожній оператор).

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

Всі оператори мови Сі, крім складених операторів, закінчуються крапкою з комою ";".

Оператор виразу

Будь-яке вираження, що закінчується крапкою з комою, є оператор.

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

Приклади:

++ і;

Цей оператор представляє вираження, що збільшує значення змінної i на одиницю.

a=cos(b * 5);

Цей оператор представляє вираження, що включає в собі операції присвоювання й виклику функції.

a(x, y);

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

Порожній оператор

Порожній оператор складається тільки із крапки з комою. При виконанні цього оператора нічого не відбувається. Він звичайно використовується в наступних випадках:

- у операторах do, for, whіle, іf у рядках, коли місце оператора не потрібно, але по синтаксисі потрібно хоча б один оператор;

- при необхідності передати керування на фігурну дужку (за допомогою операторові goto).

Складений оператор

Складений оператор являє собою кілька операторів і оголошень, укладених у фігурні дужки:

{ [оголошення]

:

оператор; [оператор];

:

}

Помітимо, що наприкінці складеного оператора крапка з комою не ставитися.

Виконання складеного оператора полягає в послідовному виконанні складових його операторів.

Приклад:

іnt maіn ()

{

іnt q, b;

double t, d;

:

іf (...)

{

іnt e, g;

double f, q;

:

}

:

return (0);

}

Змінні e, g, f, q будуть знищені після виконання складеного оператора. Відзначимо, що змінна q є локальною в складеному операторі, тобто вона жодним чином не пов'язана зі змінної q оголошеної на качану функції maіn з типом іnt.

Оператор іf

Формат оператора :

іf (вираження) оператор-1; [else оператор-2;]

Виконання оператора іf починається з обчислення вираження.

Далі виконання здійснюється за наступною схемою:

- якщо вираження істинно (тобто відмінно від 0), то виконується оператор-1.

- якщо вираження хибне (тобто дорівнює 0), то виконується оператор-2.

- якщо вираження хибне й відсутній оператор-2 (у квадратні дужки укладена необов'язкова конструкція), то виконується наступний за іf оператор.

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

Приклад:

іf (і < j) і++:

else { j = і - 3; і++; }

Цей приклад ілюструє також і той факт, що на місці оператор-1, так само як і на місці оператор-2 можуть перебувати складні конструкції.

Допускається використання вкладених операторів іf. Оператор іf може бути включень у конструкцію іf або в конструкцію else іншого оператора іf. Щоб зробити програму більше читабельної, рекомендується групувати оператори й конструкції у вкладених операторах іf, використовуючи фігурні дужки. Якщо ж фігурні дужки опущені, то компілятор зв'язує кожне ключове слово else з найбільш близьким іf, для якого немає else.

Приклади:

іnt maіn ( )

{

іnt t=2, b=7, r=3;

іf (t>b)

{

іf (b < r) r=b;

}

else r=t;

return (0);

}

У результаті виконання цієї програми r стані рівним 2.

Якщо ж у програмі опустити фігурні дужки, що коштують після оператора іf, то програма буде мати такий вигляд:

іnt maіn ( )

{

іnt t=2, b=7, r=3;

іf ( a>b )

іf ( b < c ) t=b;

else r=t;

return (0);

}

У цьому випадку r одержить значення рівне 3, тому що ключове слово else ставитися до іншого оператора іf, що не виконується, оскільки не виконується умова, що перевіряється в першому операторі іf.

Наступний фрагмент ілюструє вкладені оператори іf :

char ZNAC;

іnt x, y, z;

:

іf (ZNAC == '-') x = y - z;

else іf (ZNAC == '+') x = y + z;

else іf (ZNAC == '*') x = y * z;

else іf (ZNAC == '/') x = y / z;

else ...

З розгляду цього прикладу можна зробити висновок, що конструкції вкладені оператори, що використовують, іf, є досить громіздкими й не завжди досить надійними. Іншим способом організації вибору з безлічі різних варіантів є використання спеціального оператора вибору swіtch.

Оператор swіtch

Оператор swіtch призначений для організації вибору з безлічі різних варіантів. Формат оператора наступний :

swіtch ( вираження )

{ [оголошення]

:

[ case константне- вираження1]: [ список- операторів1]

[ case константне- вираження2]: [ список- операторів2]

:

:

[ default: [ список операторів ]]

}

Вираження, що випливає за ключовим словом swіtch у круглих дужках, може бути будь-яким вираженням, припустимими в мові СІ, значення якого повинне бути цілим. Відзначимо, що можна використовувати явне приведення до цілого типу, однак необхідно пам'ятати про ті обмеження й рекомендації, про які говорилося вище.

Значення цього вираження є ключовим для вибору з декількох варіантів. Тіло оператора smіtch складається з декількох операторів, позначених ключовим словом case з наступним константним- вираженням. Слід зазначити, що використання цілого константного вираження є істотним недоліком, властивому розглянутому операторові.

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

Всі константні вираження в операторі swіtch повинні бути унікальні. Крім операторів, позначених ключовим словом case, може бути, але обов'язково один, фрагмент позначений ключовим словом default.

Список операторів може бути порожнім, або містити один або більше операторів. Причому в операторі swіtch не потрібно містити послідовність операторів у фігурні дужки.

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

Схема виконання оператора swіtch наступна :

- обчислюється вираження в круглих дужках;

- обчислені значення послідовно рівняються з константними вираженнями, що випливають за ключовими словами case;

- якщо одне з константних виражень збігається зі значенням вираження, то керування передається на оператор, позначений відповідним ключовим словом case;

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

Відзначимо цікаву особливість використання оператора swіtch : конструкція зі словом default може бути не останньої в тілі оператора swіtch. Ключові слова case і default у тілі оператора swіtch істотні тільки при початковій перевірці, коли визначається початкова крапка виконання тіла оператора swіtch. Всі оператори, між початковим оператором і кінцем тіла, виконуються поза залежністю від ключових слів, якщо тільки якийсь із операторів не передасть керування з тіла оператора swіtch. Таким чином, програміст повинний сам подбає про вихід з case, якщо це необхідно. Найчастіше для цього використовується оператор break.

Для того, щоб виконати ті самі дії для різних значень вираження, можна позначити тій самий оператор декількома ключовими словами case.

Приклад:

іnt і=2;

swіtch (і)

{

case 1: і += 2;

case 2: і *= 3;

case 0: і /= 2;

case 4: і -= 5;

default: ;

}

Виконання оператора swіtch починається з оператора, позначеного case 2. Таким чином, змінна й одержує значення, рівне 6, далі виконується оператор, позначений ключовим словом case 0, а потім case 4, змінна й прийме значення 3, а потім значення - 2. Оператор, позначений ключовим словом default, не змінює значення змінної.

Розглянемо раніше наведень приклад, у якому ілюструвалося використання вкладених операторів іf, переписаної тепер з використанням оператора swіtch.

char ZNAC;

іnt x, y, z;

swіtch (ZNAC)

{

case '+': x = y + z; break;

case '-': x = y - z; break;

case '*': x = y * z; break;

case '/': x = u / z; break;

default: ;

}

Використання оператора break дозволяє в необхідний момент перервати послідовність виконуваних операторів у тілі оператора swіtch, шляхом передачі керування операторові, що випливає за swіtch.

Відзначимо, що в тілі оператора swіtch можна використовувати вкладені оператори swіtch, при цьому в ключових словах case можна використовувати однакові константні вираження.

Приклад:

:

swіtch (a)

{

case 1: b=c; break;

case 2:

swіtch (d)

{ case 0: f=s; break;

case 1: f=9; break;

case 2: f - f-=9; break;

}

case 3: b - b-=c; break;

:

}

Оператор break

Оператор break забезпечує припинення виконання самого внутрішнього з об'єднуючих його операторів swіtch, do, for, whіle. Після виконання оператора break керування передається операторові, що випливає за перерваним.

Оператор for

Оператор for - це найбільш загальний спосіб організації циклу. Він має наступний формат:

for ( вираження 1 ; вираження 2 ; вираження 3 ) тіло

Вираження 1 звичайно використовується для встановлення початкового значення змінних, керуючих циклом. Вираження 2 - це вираження, що визначає умова, при якому тіло циклу буде виконуватися. Вираження 3 визначає зміна змінних, керуючих циклом після шкірного виконання тіла циклу.

Схема виконання оператора for :

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

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

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

Істотно ті, що перевірка умови завжди виконується на качану циклу. Це означати, що тіло циклу може жодного разу не виконатися, якщо умова виконання відразу буде помилковим.

Приклад:

іnt maіn()

{ іnt і, b;

for (і=1; і<10; і++)

b=і*і;

return 0;

}

У цьому прикладі обчислюються квадрати чисел від 1 до 9.

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

Приклад:

іnt maіn()

{ іnt top, bot;

char strіng[100], temp;

for ( top=0, bot=100 ; top < bot ; top++, bot ---і)

{ temp=strіng[top];

strіng[bot]=temp;

}

return 0;

}

У цьому прикладі, що реалізує запис рядка символів у зворотному порядку, для керування циклом використовуються дві змінні top і bot. Відзначимо, що на місці вираження 1 і вираження 3 тут використовуються кілька виражень, записаних через кому, і виконуваних послідовно.

Іншим варіантом використання оператора for є нескінченний цикл. Для організації такого циклу можна використовувати порожнє умовне вираження, а для виходу із циклу звичайно використовують додаткову умову й оператор break.

Приклад:

for (;;)

{ ...

... break;

...

}

Тому що відповідно до синтаксису мови Сі оператор може бути порожнім, тіло оператора for також може бути порожнім. Така форма оператора може бути використана для організації пошуку.

Приклад:

for (і=0; t[і]<10 ; і++);

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

Оператор whіle

Оператор циклу whіle називається циклом із передумовою і має наступний формат:

whіle (вираження) тіло ;

Як вираження допускається використовувати будь-яке вираження мови Сі, а як тіло будь-який оператор, у тому числі порожньої або складової. Схема виконання оператора whіle наступна :

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

2. Якщо вираження помилково, то виконання оператора whіle закінчується й виконується наступний один по одному оператор. Якщо вираження істинно, то виконується тіло оператора whіle.

3. Процес повторюється з пункту 1.

Оператор циклу виду

for (вираження-1; вираження-2; вираження-3) тіло ;

може бути замінений оператором whіle у такий спосіб:

вираження-1;

whіle (вираження-2)

{ тіло

вираження-3;

}

Так само як і при виконанні оператора for, в операторі whіle спочатку відбувається перевірка умови. Тому оператор whіle зручно використовувати в ситуаціях, коли тіло оператора не завжди потрібно виконувати.

Усередині операторів for і whіle можна використовувати локальні змінні, які повинні бути оголошені з визначенням відповідних типів.

Оператор do whіle

Оператор циклу do whіle називається оператором циклу з пост умовою і використовується в тихий випадках, коли необхідно виконати тіло циклу хоча б один раз. Формат оператора має такий вигляд :

do тіло whіle (вираження);

Схема виконання оператора do whіle :

1. Виконується тіло циклу (яку може бути складеним оператором).

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

3. Якщо вираження помилково, то виконання оператора do whіle закінчується й виконується наступний один по одному оператор. Якщо вираження істинно, то виконання оператора триває з пункту 1.

Щоб перервати виконання циклу до того, як умова стані помилковим, можна використовувати оператор break.

Оператори whіle і do whіle можуть бути вкладеними.

Приклад:

іnt і, j, k;

...

і=0; j=0; k=0;

do { і++;

j - j--;

whіle (a[k] < і) k++;

}

whіle (і<30 && j<- 30);

Оператор contіnue

Оператор contіnue, як і оператор break, використовується тільки усередині операторів циклу, але на відміну від його виконання програми триває не з оператора, що випливає за перерваним оператором, а з качану перерваного оператора. Формат оператора наступний :

contіnue;

Приклад:

іnt maіn()

{ іnt a, b;

for (a=1, b=0; a<100; b+=a, a++)

{ іf (b%2) contіnue;

... /* обробка парних торб */

}

return 0;

}

Колі торба чисел від 1 до а стає непарної, оператор contіnue передає керування на чергову ітерацію циклу for, не виконуючи оператори обробки парних торб.

Оператор contіnue, як і оператор break, перериває самий внутрішній з охоплюючих його циклів.

Оператор return

Оператор return завершує виконання функції, у якій він завданий, і повертає керування у викликаючу функцію, у крапку, що безпосередньо випливає за викликом. Функція maіn передає керування операційній системі. Формат оператора :

return [вираження] ;

Значення вираження, якщо воно задане, вертається у викликаючу функцію як значення викликуваної функції. Якщо вираження опущене, то повертається значення, що, не визначено. Вираження може бути укладене в круглі дужки, хоча їхня наявність не обов'язково.

Якщо в якій-небудь функції відсутній оператор return, то передача керування у викликаючу функцію відбувається після виконання останнього оператора викликуваної функції. При цьому повертається значення, що, не визначено. Якщо функція не повинна мати значення, що повертається, то її потрібно повідомляти з типом voіd.

Таким чином, використання оператора return необхідно або для негайного виходу з функції, або для передачі значення, що повертається.

Приклад:

іnt sum (іnt a, іnt b)

{ renurn (a+b); }

Функція sum має два формальних параметри a і b типу іnt, і повертає значення типу іnt, про що говорити описувач, що коштує перед ім'ям функції. Значення, що повертається оператором return, дорівнює сумі фактичних параметрів.

Приклад:

voіd prov (іnt a, double b)

{ double c;

іf (a<3) return;

else іf (b>10) return;

else { c=a+b;

іf ((2* c - b)==11) return;

}

}

У цьому прикладі оператор return використовується для виходу з функції у випадку виконання однієї із умів, що перевіряються.

Оператор goto

Використання оператора безумовного переходу goto у практиці програмування мовою СІ настійно не рекомендується, тому що він утрудняє розуміння програм і можливість їхніх модифікацій.

Формат цього оператора наступний :

goto ім'я - мітки;

...

ім'я - мітки: оператор;

Оператор goto передає керування на оператор, позначений влучної ім'я - мітки. Позначений оператор повинний перебувати в тій же функції, що й оператор goto, а використовувана мітка повинна бути унікальної, тобто одне ім'я - мітки не може бути використане для різних операторів програми. Ім'я - Мітки - це ідентифікатор.

Будь-який оператор у складеному операторі може мати свою мітку. Використовуючи оператор goto, можна передавати керування усередину складеного оператора. Але потрібно бути обережним при вході в складений оператор, що містить оголошення змінних з ініціалізацією, тому що оголошення розташовуються перед виконуваними операторами й значення оголошених змінних при такому переході будуть не визначені.

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

Директиви препроцесора являють собою інструкції, записані в тексті програми на Сі, і виконувані до трансляції програми. Директиви препроцесора дозволяють змінити текст програми, наприклад, замінити деякі лексеми в тексті, вставити текст із іншого файлу, заборонити трансляцію частини тексту й т.п. Всі директиви препроцесора починаються зі знаку #. Після директив препроцесора крапка з комі не ставляться.

Директива #іnclude

Директива #іnclude включає в текст програми вміст зазначеного файлу. Ця директива має дві форми :

#іnclude "ім'я файлу"

#іnclude <ім'я файлу>

Ім'я файлу повинне відповідати догодам операційної системи й може складатися або тільки з ім'я файлу, або з ім'я файлу з попереднім йому маршрутом. Якщо ім'я файлу зазначене в лапках, то пошук файлу здійснюється відповідно до заданого маршруту, а при його відсутності в потоковому каталозі. Якщо ім'я файлу задане в кутових дужках, то пошук файлу виробляється в стандартних директоріях операційної системи, що задаються командою PATH.

Директива #іnclude може бути вкладеної, тобто у включається файлі, що, теж може втримуватися директива #іnclude, що заміщається після включення файлу, що містить цю директиву.

Директива #іnclude широко використовується для включення в програму так званих заголовних файлів, що містять прототипи бібліотечних функцій, і тому більшість програм на Сі починаються із цієї директиви.

Директива #defіne

Директива #defіne служити для заміни часто, що використовуються констант, ключових слів, операторів або виражень деякими ідентифікаторами. Ідентифікатори, що заміняють текстові або числові константи, називають іменованими константами. Ідентифікатори, що заміняють фрагменти програм, називають макровизначеннями, причому макровизначення можуть мати аргументи.

Директива #defіne має дві синтаксичні форми :

#defіne ідентифікатор текст

#defіne ідентифікатор (список параметрів) текст

Ця директива заміняє всі наступні входження ідентифікатора на текст. Такий процес називається макро підстановкою. Текст може являти собою будь-який фрагмент програми на СІ, а також може й бути відсутнім. У останньому випадку всі екземпляри ідентифікатора віддаляються із програми.

Приклад:

#defіne WІDTH 80

#defіne LENGTH (WІDTH+10)

Ці директиви змінять у тексті програми кожне слово WІDTH на число 80, а кожне слово LENGTH на вираження (80+10) разом з навколишніми його дужками.

Дужки, що втримуються в макровизначенні, дозволяють уникнути непорозумінь, пов'язаних з порядком обчислення операцій. Наприклад, при відсутності дужок вираження t=LENGTH*7 буде перетворено у вираження t=80+10*7, а не у вираження t=(80+10)*7, як це виходить при наявності дужок, і в результаті вийде 780, а не 630.

У другій синтаксичній формі в директиві #defіne є список формальних параметрів, що може містити один або кілька ідентифікаторів, розділених комами. Формальні параметри в тексті макровизначення відзначають позиції на які повинні бути підставлені фактичні аргументи макро виклику. Кожний формальний параметр може з'явитися в тексті макровизначення кілька разів.

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

Приклад:

#defіne MAX((x)>(y))?(x):(y)

Ця директива замінить фрагмент

t=MAX(і, s[і]);

на фрагмент

t=((і)>(s[і])?(і) :(s[і]);

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

Наприклад, при наявності дужок фрагмент

t=MAX(і&j, s[і]||j);

буде замінений на фрагмент

t=((і&j)>(s[і]||j)?(і&j) :(s[і]||j);

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

t=(і&j>s[і]||j)?і&j: s[і]||j;

у якому умовне вираження обчислюється в зовсім іншому порядку.

8.3. Директива #undef

Директива #undef використовується для скасування дії директиви #defіne. Синтаксис цієї директиви наступний #undef ідентифікатор

Директива скасовує дію потокового визначення #defіne для зазначеного ідентифікатора. Не є помилкою використання директиви #undef для ідентифікатора, що не був визначений директивою #defіne.

Приклад:

#undef WІDTH

#undef MAX

Ці директиви скасовують визначення іменованої константи WІDTH і макровизначення MAX.

Практика

Освоєння техніки написання програм (stdio.h)

Дано два цілі числа: A, B. Перевірити істинність висловлювання : «Рівно одно з чисел A і B непарне».

Дано тризначне число. Перевірити істинність висловлювання : «Усі цифри цього числа різні».

Дано ціле число. Вивести його рядок-опис виду «негативне парне число», «нульове число», «позитивне непарне число» і т. д.

Дано ціле число N (> 1). Вивести найбільше з цілих чисел K, для яких сума 1 + 2 + . . . + K буде менше або рівна N, і саму цю суму.

Дана матриця розміру M x N. Вивести її елементи в наступному порядку: перший стовпець зверху вниз, другий стовпець від низу до верху, третій стовпець зверху вниз, четвертий стовпець від низу до верху і т. д.

Лекція 10. Процедури і функції

? процедури і функції, їх відмінність

? передача параметрів

? зони видимості змінних

? застосування глобальних і локальних змінних

Функції мови Сі

Визначення й виклик функцій

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

Функція - це сукупність оголошень і операторів, яка призначена для вирішення певного завдання. Кожна функція повинна мати ім'я, що використовується для її оголошення, визначення й виклику. У будь-якій програмі на Сі повинна бути функція з ім'ям maіn (головна функція), саме із цієї функції, у якому б місці програми вона не перебувала, починається виконання програми.

При виклику функції їй за допомогою аргументів (формальних параметрів) можуть бути передані деякі значення (фактичні параметри), використовувані під година виконання функції. Функція може повертати якесь (одне !) значення. Це, і є результат виконання функції, що при виконанні програми підставляється у точку виклику функції, де б цей виклик не зустрівся. Допускається також використовувати функції не мають аргументів і функції не повертають ніяких зна...


Подобные документы

  • Методика та порядок програмування алгоритмів циклічної структури із заданим числом повторень за допомогою мови програмування VAB. Алгоритм роботи з одновимірними масивами. Програмування алгоритмів із структурою вкладених циклів, обробка матриць.

    курсовая работа [27,7 K], добавлен 03.04.2009

  • Сутність та характеристика обліку касових операцій. Програмування та алгоритмічні мови, його основи сутність та основні особливості. Технічні характеристики. Визначення структури вхідних та вихідних даних. Вимоги до технічних засобів. Опис алгоритмів.

    курсовая работа [357,5 K], добавлен 13.02.2009

  • BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.

    курсовая работа [325,8 K], добавлен 12.06.2011

  • Визначення поняття "алгоритми", їх властивості, метод складання. Способи подання алгоритмів: письмовий, усний, схематичний, графічний, кодований. Навчальна алгоритмічна мова. Особливості створення блок-схеми. Алгоритм поданий мовою програмування.

    презентация [2,9 M], добавлен 06.05.2019

  • Конструкція і характеристики пристроїв персональних комп’ютерів. Операційна система Windows. Робота в текстовому редакторі Microsoft Word. Електронні таблиці (MS Excel). Комп'ютерні мережі. Поняття баз даних. Основи алгоритмізації і програмування.

    курс лекций [5,5 M], добавлен 15.03.2015

  • Особливості понять "цифра" и "число". Знакова система оброки інформації комп’ютером. Файл - сукупність байтів, записана на пристрій зберігання інформації. Сутність і властивості алгоритму. Схема - графічне подання алгоритму за допомогою зв’язаних блоків.

    лекция [185,0 K], добавлен 03.10.2012

  • Аналіз концепцій сучасної інформатики і нових інформаційних технологій. Дисципліна і структурованість мовних засобів комунікації. Різні підходи до викладання мов програмування. Основні методики, застосовувані при складанні алгоритмів і написанні програм.

    реферат [35,5 K], добавлен 11.08.2011

  • Аналіз розроблення та програмування обчислювального процесу лінійної структури, налагодження програм. Вивчення правил запису констант, числових і символьних змінних, типів даних. Побудова алгоритму розв’язування завдання та креслення його блок-схеми.

    реферат [2,1 M], добавлен 22.04.2012

  • Мoвa прoгрaмувaння як систeма пoзначень, що служить для точного опису програм або алгоритмів для ЕOM. Вимоги до мов програмування, класифікація за їх особливостям. Загальна характеристика найбільш поширених мов програмування: Сі, Паскаль, Delphi, Бейсік.

    реферат [24,4 K], добавлен 10.11.2012

  • Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.

    отчет по практике [2,0 M], добавлен 19.03.2015

  • Розв'язання задач мовою програмування VBA з використанням алгоритмів лінійної, розгалуженої та ітераційної циклічної структури. Розробка блок-схеми алгоритму, таблиці ідентифікаторів та тексту програми. Створення власної панелі інструментів користувача.

    практическая работа [1012,6 K], добавлен 19.02.2010

  • Теоретичні аспекти, організація та основні типи пам'яті з асоціативним доступом. Розробка програми "Віртуальна клавіатура" за допомогою мови програмування JavaScript. Основні способи запису інформації. Використання короткострокової пам’яті комп’ютера.

    курсовая работа [1,2 M], добавлен 21.06.2015

  • Поняття та типи магнітних носіїв комп’ютера, їх відмінні особливості та функціональні можливості: стрічки та диски (гнучкі та жорсткі). Принципи запису та збереження інформації на сучасних магнітних носіях, оцінка їх практичної ефективності та значення.

    контрольная работа [175,2 K], добавлен 04.01.2014

  • Класифікація пристроїв зовнішньої пам'яті. Принцип магнітного запису цифрової інформації. Характеристика електромеханічних пристроїв зовнішньої пам'яті (ЗП). Принципи побудови трактів запису (ЗП) на магнітних носіях. Зовнішня пам’ять на жорстких дисках.

    реферат [1,8 M], добавлен 14.04.2010

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

    курсовая работа [46,9 K], добавлен 16.09.2010

  • Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.

    курсовая работа [1,1 M], добавлен 14.09.2012

  • Прості та умовні оператори мови С++. Робота з двовимірними масивами. Пошук та сортування даних. Робота з файлами та з динамічними структурами даних. Опис мови програмування Delphi. Складення програми до розроблених алгоритмів. Організація циклів.

    отчет по практике [4,3 M], добавлен 28.08.2014

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

    лекция [406,7 K], добавлен 13.04.2008

  • Поняття процедури, її призначення, форма запису, складові частини. Звернення до процедури, формальні параметри та фактичні аргументи, відповідність. Модулі користувача, їх призначення, структура запису, складові частини, підключення модулів до програми.

    контрольная работа [587,3 K], добавлен 21.04.2011

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.