Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Збірка ЛР.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
198.66 Кб
Скачать

Оголошення змінних

Всі змінні повинні бути оголошені (declare) до їх використання в програмі. Оголошення змінної приводить до виділення пам'яті в розмірі, який необхідний для розміщення змінної даного типу (char – 1 байт, int – 2 байти, float – 4 байти, double – 8 байтів).

Основна форма оголошення (declaration):

тип <список_змінних>;

Приклади:

char c_symbol;

int ia, ib, ic;

float fa123, fradius;

double dArray1abc;

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

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

Коли змінна з'являється у програмі, велике значення має місце оголошення змінної. Правило, яке визначає де змінна може бути використана, залежить від того, де змінна була оголошена, і називається правилом видимості (scope rules). У мові Сі є три місця в програмі, де може бути оголошена змінна.

  1. Поза будь-якими функціями, у тому числі main( ) – глобальна (global), може бути використана в будь-якому місці програми.

  2. Всередині блоку, у тому числі всередині тіла функції – локальна (local), може бути використана тільки всередині блоку.

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

Важливо запам'ятати наступне:

  • дві глобальні змінні не можуть мати однакові імена;

  • локальна змінна однієї функції може мати таке ж ім'я як і локальна змінна іншої функції (або формує параметр іншої функції);

  • дві локальні змінні в одному блоці не можуть мати однакові імена, у тому числі формований параметр функції не може співпадати з локальним параметром.

Константи можуть бути будь-якого базового типу даних:

const <тип_даних> = <чисельне значення>;

Приклади:

const int i_con1 = 10;

const float f_co2 = 2.45;

Числа також вважаються константами в мові Сі. Для визначення до якого типу даних їх віднести використовується наступне правило. Ціла константа (без плаваючої точки) відноситься до типу int, якщо попадає в інтервал значень, якщо не попадає – до типу unsigned int, якщо не попадає – то long int. Це саме стосується і дробових чисел: float – unsigned float – double – long double.

У мові С існує механізм явного задавання типу констант з допомогою суфіксів: 12h, 344 – short int, 23L – long int, 23.4f – float.

Так як при програмуванні важливе значення мають вісімкові і шістнадцяткові системи числення, то розглянемо (octal) і (hexadecimal) константи.

Для 16-кових попереду ставиться Ox, для 8-кових О:

16-кова – OxFF28 8-кова – О1, О55, О38.

Ініціалізація змінних

Ініціалізація – це присвоєння змінній першого значення. Мова Сі надає користувачу можливість присвоїти змінній значення одночасно з її оголошенням у програмі.

тип <ім'я_змінної>=<константний вираз>;

Приклади:

char ch='e';

int pr=24;

int ia=2*28-4;

float rr1=23.345;

Ініціалізація приводить до того, що у виділену пам'ять заноситься значення ініціалізації. Якщо не ініціалізувати змінну, але використовувати її в програмі, то слід врахувати, що цій змінній присвоїлося значення "0".

1. #include<stdio.h>

2. /* Приклад 1 */

3. void main(void)

4. {

5. int year, month;

6. year=2006;

7.

8. printf("Зараз %d рік \n", year);

9. }

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

Після введення програми з клавіатури в інтегрованому середовищі програмування необхідно зайти в пункт меню Run і запустити програму на виконання викликавши підпункт меню Run. Після виконання програми на екрані виникне повідомлення – результат виконання програми: Зараз 2006 рік. В певних трансляторах для перегляду результатів виконання програми необхідно викликати екран результатів – Alt F5 .

Пояснення:

  1. Перший рядок повідомляє компілятору про необхідність підключення бібліотечного файлу stdio.h. Цей файл містить опис функцій стандартного вводу-виводу (standard input/output), зокрема в нашій програмі буде використано функцію printf(). Ця функція є необхідною, оскільки в мові програмування Сі не передбачено операторів вводу-виводу.

  2. Коментар.

  3. Визначає ім'я функції. В програмі обов'язково повинна бути хоча б одна функція – головна (main), яка повинна мати свій тип – перший void і мати аргументи – другий void. Представлений запис означає, що функція main() не передає жодного значення в основний проект, який може містити кілька окремих програм, і дана функція немає жодних аргументів. Можливий простіший запис – main().

  4. Фігурна дужка означає відкриття основної функції. Фігурні дужки завжди ідуть парами. Закриваюча дужка повинна завершувати головну функцію.

  5. Оголошення змінних. В програмі планується використання двох змінних цілого типу – year, month.

  6. Оператор присвоювання. Змінній year присвоюється чисельне значення 2006. Всі оператори обов'язково закінчуються ;.

  7. Пусті рядки не грають жодної ролі і вставляються для зручності читання.

  8. Виклик стандартної функції виводу на екран printf(). Функція складається з двох частин – імені і двох аргументів – "Зараз %d рік \n" і year, аргументи розділяються комою. Перший аргумент – керуюча стрічка (control string) може містити між лапками будь-яки символи і специфікатори формату, які починаються з %. В нашому випадку %d показує, що в даному місці керуючої стрічки при виводі на екран повинно бути вставлене ціле число, якому відповідає значення змінної з другого аргументу. Комбінація символів \n повідомляє функції printf() про перехід на новий рядок.

  9. Закриваюча фігурна дужка означає кінець функції main().

Увага! В процесі виконання програми буде видане попередження, оскільки змінна month була оголошена, але не використана в програмі. Це попередження не перешкоджає правильному виконанню програми.

#include<stdio.h>

/* Приклад 2 */

void main(void)

{

int radius;

float length, square;

printf("Введіть радіус кола");

scanf("%d", &radius);

length=2*3.14*radius;

square=3.14*radius*radius;

printf("Довжина кола-%f, площа кола-%f", length, square);

}

Пояснення:

Функція scanf() забезпечує введення значень змінних з клавіатури, & необхідний для правильної роботи програми, його використання буде пояснене при описі вказівників; %f – специфікатор формату, який відповідає за чисельні значення змінних з плаваючою крапкою.

#include<stdio.h>

/* Приклад 3 */

void main(void)

{

int i;

printf("Введіть ціле число");

scanf("%d", &i);

if(i<0) printf("Число від'ємне");

if(i>0) printf("Число додатнє");

if(i==0) printf("Число рівне 0");

for(i=0;i<=10;i++)

printf("%i \n", i)

}

Пояснення:

if – оператор умови

загальний вигляд: if(умова) оператор;

Умова – це логічний вираз, який приймає значення або "правда" або "неправда" (true i false). Якщо умова виконується – "правда", то виконується наступний оператор, якщо умова не виконується – "неправда", то наступний оператор не виконується, а програма переходить далі.

for – оператор циклу

загальний вигляд: for(ініціалізація;умова;приріст) оператор;

Ініціалізація – встановлення початкового значення параметра циклу; умова – вираз, значення якого перевіряється кожний раз при виконанні циклу, цикл виконується до того часу, поки умова – ""правда"; приріст – вираз, який змінює параметр циклу; і++ ідентичне і=і+1.

#include<stdio.h>

#include<math.h>

/* Приклад 4 */

void length(int r);

float square(int r);

void main(void)

{

int radius;

float sq;

printf("Введіть радіус кола");

scanf("%d", &radius);

length(radius);

sq=square(radius);

printf("Площа кола-%f", sq);

}

void length(int r) // Опис функції length

{

float l;

l=2*3.14*r;

printf("\n Довжина кола-%f", l);

}

void square(int r) // Опис функції square

{

float s;

s=3.14*pow(r,2);

return s;

}

Пояснення:

Програма складається з трьох функцій – main(), length() i square(), дві останні функції залежать від одного параметру цілого типу, а функція square() ще і повертає результат виконання в функцію main().

Бібліотека math.h підключається для використання функції pow(), яка дозволяє підносити до степеня: ab = pow(a,b).

#include<stdio.h>

#include<conio.h>

/* Приклад 5 */

void print_str(int m);

char ch; // глобальна змінна

void main(void)

{

int n; // локальна змінна

printf("Введіть символ");

ch=getch();

printf("Введіть кількість символів в стрічці");

scanf("%d",&n);

print_str(n);

}

print_str(int m); // формальний параметр

{

int j; // локальна змінна

for(j=0;j<m;j++) printf("%c", ch); // використання змінної

}

Пояснення:

Бібліотека conio.h підключається для використання функції getch(), яка сприймає натиснуту клавішу на клавіатурі і присвоює змінній, в нашому випадку сh, чисельне значення цієї клавіші згідно таблиці ASCII.

Функції printf() і scanf()

Ці функції здійснюють форматний вивід і ввід даних.

printf("На екран виводиться символ %c \n", ch);

керуюча стрічка

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

Специфікатор формату: %с – символ; %d – ціле десяткове число, %e – десяткове число у вигляді x.xхе+xx; %f – число з плаваючою точкою у вигляді xx.xxxx; %s – строка символів. Окрім того можуть застосовуватись модифікатори: %ld – long int, %lf – double.

Між знаком % і форматом команди може знаходитися десяткове число. Воно вказує на найменше поле, яке відводиться для друку. Якщо строка або число більше цього поля, то воно друкується повністю, ігноруючи зазначену ширину поля. Приклад: %5d. Нуль, поставлений перед цілим числом, означає, що необхідно заповнити невикористані місця нулями.

Приклад: printf("%05d",15); Результат – 00015

printf("%5d",15); Результат – _ _ _15

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

Приклад: printf("%5.5f",2.2); Результат – 2.20000

Вирівнювання виводу відбувається по правому краю, для лівого краю – після % необхідно поставити "–".

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

scanf("%f%c%d",&a,&b,&c);

керуюча стрічка

Керуюча стрічка містить три типи символів: специфікатори формату, пробіли і інші символи. Символ пробілу в керуючій стрічці дає команду пропустити один або кілька пробілів в процесі введення (в потоці вводу).

  1. Знак * після % означає прочитати дані вказаного типу але не присвоювати цього значення.

scanf("%d%*c%d",&i,&d); Ввведення – 50+20, Результат i=50 d=20

  1. Найбільша ширина поля при зчитуванні

scanf("%5s",&str); Ввведення – 1234567, Результат str[]=12345

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

scanf("%dplus%d",&i,&d); Ввведення – 50 20, Результат i=50 d=20

  1. Можливість задання множини пошуку (scanset). Функція scanf() читає символи до того часу поки вони зустрічаються в множині пошуку:

#include<stdio.h>

void main(void)

{

char s[10],t[10];

scanf("%[0123456789]%[a-z]",s,t)

printf("\n %s.......%s",s,t);

}

Пояснення:

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

Вирази

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

Операції мови Сі

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

Операції можуть мати один операнд – унарна операція (–x), два операнди – бінарна операція (x+y, x–y, x*y). Кожна бінарна операція має свій порядок виконання: додавання – зліва направо, присвоювання – справа наліво. Кожна операція має свій пріоритет, а саме – множення має вищий пріоритет, ніж додавання, я додавання – вищий, ніж присвоювання.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]