
- •Програмування і алгоритмічні мови Конспект лекцій
- •Луцьк 2004
- •Лекція 1 Основи мови с. Оператори введення та виводу.
- •Імена змінних та типи і розміри даних. Арифметичні та логічні оператори. Оператори присвоєння.
- •Лекція 3 Масиви. Масиви літер.
- •Умовні оператори. Інкриментні та декрементні оператори.
- •Цикл For
- •Лекція 6 Цикли While, Do-while.
- •Препроцесор. Рекурсія.
- •Структури. Масив структур.
- •Основні відомості про функції.
- •Змінні і правила дії областей у функціях
- •Головні файли.
- •Масиви в якості аргументів функції.
- •Структури в якості аргументів функції
- •Вказівники і адреси
- •Масиви вказівників
- •Вказівники на структуру
- •Лекція 17 Використання вказівників у якості аргументів функцій
- •Лекція 18 Доступ до файлів
- •Методичне видання
- •“Автоматизоване управління технологічними процесами”
- •Тир.50 прим. Зам.1516
- •43018, М.Луцьк, вул. Львівська, 75
Головні файли.
Представимо що компоненти програми-калькулятора великих розмірів, і які неможливо розмістити в одному файлі. В цьому випадку необхідно розмістити їх по декількох файлах. Програму main помістимо у файл, який назвемо main.c; push, pop і їх змінні розмістимо в іншому файлі, stack.c; а getop –у третьому getop.с, getch і ungetch помістимо в четвертому файлі getop.с.
Існує ще один момент, про який слідує пам’ятати - ці визначення і декларації використовуються декількома файлами. Наскільки ми б хотіли централізувати опис так, щоб для них існувала тільки одна копія. Тоді програму в процесі її розвитку буде легше і виправляти, і підтримувати в правильному стані. Для цього загальну інформацію розмістимо в головному файлі calc.h, який буде по мірі необхідності включати й інші файли.
Потрібно, щоб кожний файл володів тою інформацією, яка йому необхідна для роботи, і тім, з чим на практиці має справу. Для програм, що не перевищують деякого середнього розміру, вірогідно, краще всього мати один головний файл, у якому зібрані разом всі об'єкти, кожний із яких використовується в двох різних файлах. Для програм більших розмірів потрібна більш складна організація з великим числом головних файлів.
Лекція 12
Масиви в якості аргументів функції.
Оскільки масив може містити сотні байтів тому немає змісту копіювати всі ці дані в стек при передачі масиву функції. Так як масив займає суміжні комірки пам'яті, то у випадку використання імені масиву (без індексу) у якості аргументу функції мова програмування Сі забезпечує передачу функцією адреси першого байта цього масиву. Приведений далі приклад демонструє один із способів оголошення масиву у викликаній функції.
Передача масиву функцією
/*
* визначити й ініціалізувати багатомірний масив
*/
#include “stdio.h” /* може знадобитися функція getchar */
char co_index[4][15]= /* другий індекс рівний розміру найбільш */
{ /* довшої допустимої назви в таблиці */
“IBM inc”, /* грудки розділяє рядки масиву */
“General Motors”,
“Delta”,
“Shell Oil”
};
/*
* рахувати індекс (у межах 1-4) і зобразити на екрані відповідні фірми
*/
main()
{
int index;
printf(“уведіть значення індексу (1-4): ”);
index=getchar();
display(index, co_index);
}
/*
* ця функція отримує індекс і масив відповідних фірм. Вона зображає на
* екрані назву, відповідну переданому значенню індексу.
*/
display(і, names)
int і; /* ASC II – код індексу*/
char names[4][15] /* двомірний масив назв*/
/* вказівка розмірності в аргументах необов'язкова */
{
i=i – ‘0’ – 1;
if (i>=0 && i<=3)
printf(“найменування фірми: %s/n”, names[і]);
else printf(“допускаються значення індексу від 1 до 4!”);
}
У додатках до об'єктів, що дозволяють реалізовувати списки і таблиці можна створювати об'єкти що вміщують агрегати даних. Дані різних типів.
Лекція 13