Автор: Пользователь скрыл имя, 19 Декабря 2012 в 20:05, курсовая работа
У моїй курсовій роботі моїм завданням стало створення графічного годинника на мові С\С++. Для створення такої програми необхідно дуже добре знати мову програмування. Зокрема необхідно знати як працювати із рядками, графікою, знати як будувати цикли і вміти працювати із шрифтами. Розглянемо задачу детальніше. Для забезпечення читання та виведення системної дати та часу необхідно знати як працювати із рядками і змінними, для забезпечення встановлення розміру часу необхідно знати як працювати із функціями введення та виведення, щоб створити інтерфейс годинника необхідно вміти працювати із графікою.
1.Завдання на курсову роботу......................................……………………………2
2.Вступ..................................................................………………………………… ..4
3.Формулювання задачі.....................................……………………………………5
4.Методи розв’язування задачі……………………………………………………..6
5.Алгоритм розв’язування задачі......................................…… .………………………………………………………………………………………18
6.Програма та її опис...........................................………….…………………………………………23
7.Технологія програмування, виконання та від лагодження програми.....……25
8.Інструкція користувача................................................…………………………26
Висновки..................................................................……………… ……….……27
Список використаної літератури .....……………………………………..………28
Мiнiмальна програма на мовi Сi++ має вигляд:
main()
{
return 0;
}
Функцiя починається з iменi. В даному прикладi вона не має параметрiв,
тому за її iм'ям розташовуються порожнi круглi дужки (). Далi обидвi фiгурнi
дужки {...} позначають блок або складений оператор, з яким ми працюватимемо, як з єдиним цiлим. У Паскалi аналогiчний змiст мають операторнi дужки begin
... end.
Мiнiмальна
програма має лише один
чення return. Вiн завершує виконання програми та повертає в нашому випадку
деяке цiле значення (ненульове значення свiдчить про помилки в програмi, ну-
льове про успiшне її завершення). Виконання навiть цiєї найпростiшої програ-
ми, як i решти багатьох, проходить у декiлька етапiв.
Етапи виконання програми на мовi Сi:
код запуску ─> функцiя main() ─> код завершення.
Базовi типи даних
Будь-яка програма передбачає виконання певних операцiй з даними. Вiд їх
типу залежить, яким чином будуть проводитися цi операцiї, зрештою, будем визначено, як реалiзовуватиметься алгоритм.
Що таке тип даних? Сформулювати це поняття можна мтак : множина значень плюс перелiк дiй або операцiй, якi можна виконати мнад мкожною змiнною даного типу. Вважається, що змiнна або вираз належить до конкретного типу, якщо його значення лежить в областi допустимих значень цього типу.
Арифметичнi типи даних об'єднують цiлi та дiйснi, цiлi у свою чергу - декiль-
ка рiзновидiв цiлих та символьних типiв даних. Скалярнi типи включають в себе арифметичнi типи, покажчики та перелiчуванi типи. Агрегатнi або структуровані типи мiстять в собi масиви, структури та файли. Нарештi функцiї представляють дещо особливий клас, який слiд розглядати окремо.
Базовi типи даних Сi можна перерахувати у наступнiй послiдовностi:
1. char - символ
Тип може використовуватися для зберiгання лiтери, цифри або iншого
символу з множини символiв ASCII. Значенням об'єкта типу char є код символу.
Тип char iнтерпретується як однобайтове цiле з областю значень вiд -128 до
127.
2. int - цiле
Цiлi числа у дiапазонi вiд -32768 до 32767. В операцiйних середовищах
Windows та Windows NT використовуються 32-розряднi цiлi, що дозволяє розширити дiапазон їх значень вiд -2147483648 до 2147483647. Як рiзновиди цiлих чисел, у деяких версiях компiляторiв iснують short - коротке цiле (слово) та long (4 байти) - довге цiле. Хоча синтаксис мови не залежить вiд ОС, розмiр-
нiсть цих типiв може коливатися вiд конкретної реалiзацiї. Гарантовано лише,
що спiввiдношення розмiрностi є наступним: short <= int <=long.
3. float - число з плаваючою комою одинарної точностi.
Тип призначений для зберiгання дiйсних чисел. Може представляти числа
як у фiксованому форматi (наприклад число пi - 3.14159), так i в експонен-
цiальнiй формi - 3.4Е+8.
4. double - число з плаваючою комою подвiйної точностi
Має
значно бiльший дiапазон
308 ... 1.7 10308).
У мовах Сi та Сі++ , на вiдмiну вiд Паскаля, використовується префiксний запис оголошення. При цьому на початку вказується тип змiнної, а потiм її iм'я. Змiннi повиннi бути описаними до того моменту, як вони будуть використовуватися у програмi. Нiяких додаткових ключових слiв при цьому не пишуть.
Наприклад:
int name;
float var, var1;
double temp;
char ch;
long height;
Змiннi можна iнiцiалiзувати (присвоювати їм початковi значення) безпо-
середньо у мiсцi їх опису:
int height = 33 ;
float income = 2834.12 ;
char val = 12 ;
Для
виведення iнформацiї на екран
використаємо функцiю printf()(
но про операцiї
введення-виведення значень
"Функцiї введення та виведення"):
printf("Вiк Олега-%d.Його прибуток %.2f",age,income);
Крiм того, цiлi типи char, short, int, long можуть використовуватися з
модифiкаторами signed (iз знаком) та unsigned (без знаку). Цiлi без знаку
(unsigned) не можуть набувати вiд'ємних значень, на вiдмiну вiд знакових
цiлих (signed). За рахунок цього дещо розширюється дiапазон можливих додатних значень типу.
Функцiї введення та виведення
Що б там не було, але реальнi програми важко уявити без використання
операцiй введення та виведення.
В мовi Сi на стандартнi потоки введення-виведення (в бiльшостi випадкiв -
клавiатура та монiтор) завжди вказують iмена stdin та stdout. Обробку цих
потокiв здiйснюють функцiї, визначенi в заголовочному файлi stdio.h.
Розглянемо основнi функцiї введення-виведення.
Функцiя getchar() зчитує i повертає черговий символ з послiдовностi
символiв вхiдного потоку. Якщо цю послiдовнiсть вичерпано, то функцiя
getchar() повертає значення -1 (цьому значенню вiдповiдає константа EOF).
Функцiя putchar(аргумент), де аргументом є вираз цiлого типу, виводить у
стандартний вихiдний потiк значення аргументу, перетворене до типу char.
Приклад :
#include<stdio.h>
void main()
{
char ch;
ch=getchar();
putchar(ch);
}
Для введення та виведення бiльш складної iнформацiї використовуються
функцiї scanf() та printf().
Функцiя printf() призначена для виведення iнформацiї за заданим форматом.
Синтаксис функцiї printf():
printf("Рядок формату"[, аргумент1[, аргумент2, [...]]]);
Першим параметром даної функцiї є "рядок формату", який задає форму ви-
ведення iнформацiї. Далi можуть розташовуватися вирази арифметичних типiв або рядки (в списку аргументiв вони вiдокремлюються комами).
Функцiя printf() перетворює значення аргументiв до вигляду, поданого у
рядку формату, "збирає" перетворенi значення в цей рядок i виводить одержану послiдовнiсть символiв у стандартний потiк виведення.
Рядок
формату складається з об'єктi
якi з рядка копiюються в потiк виведення, та специфiкацiй перетворення.
Кiлькiсть специфiкацiй у
ментiв.
Приклад :
#include<stdio.h>
void main()
{
int a=10,b=20,c=30;
printf(" a==%d \n b==%d \n c==%d \n",a,b,c);
}
Специфiкацiї
перетворення для функцiї
%d - десяткове цiле;
%i - десяткове цiле;
%o - вiсiмкове цiле без знаку;
%u - десяткове цiле без знаку (unsigned)
%x - шiстнадцяткове цiле без знаку;
%f - представлення величин float та double з фiксованою точкою;
%e або %Е - експоненцiальний формат представлення дiйсних величин;
%g - представлення дiйсних величин як f або Е в залежностi вiд значень;
%c - один символ (char);
%s - рядок символiв;
%p - покажчик
%n - покажчик
%ld - long (в десятковому виглядi);
%lo - long (у вiсiмковому виглядi);
%p - виведення покажчика в шiстнадцятковiй формi;
%lu - unsigned long.
Можна дещо розширити основне визначення специфiкацiї перетворення,
помiстивши модифiкатори мiж знаком % i символами, якi визначають тип перетворення.
Директиви
У багатьох програмах ми зустрiчаємо використання так званих директив. Синтаксис використання їх у програмi наступний :
#include <file_1> ─ директива включення, підключає до програми необхідний файл або бібліотеку.
#pragma ─ директива, яка дозволяє передавати компілятору різні команди.
#endif ─ директива, яка позначає закінчення програми.
По-перше, слiд звернути увагу на те, що на вiдмiну вiд бiльшостi
операторiв, ці директиви не завершуються крапкою з комою. Використання таких директив призводить до того, що препроцесор пiдставляє на мiсце цих директив тексти файлiв. Якщо iм'я файла мiститься у дужках <…>, то пошук файлу буде проводитися у спецiальному каталозi файлiв для включення (як, правило, каталог INCLUDE, усi файли з розширенням *.h - header-файли). Якщо даний файл у цьому каталозi буде вiдсутнiм, то препроцесор видасть вiдповiдне повiдомлення про помилку, яка є досить типовою для початкiвцiв при роботi в iнтегрованому середовищi:
< Unable to open include file 'file.h'>
<Неможливо вiдкрити файл включення ' file.h'>
У цьому випадку
достатньо перевiрити не
вiдповiднiй директорiї, але й впевнитися у тому, що опцiя Options\Directories
дiйсно вiдповiдає правильному диску та спецiальному каталогу, де розташовані файли включення.
Iснує i другий спосiб - вказiвка iменi файла у подвiйних лапках - file_n.txt,
так найчастiше пiдключають програмiсти власностворенi файли включення. Тодi пошук файлу ведеться у поточнiй директорiї активного диску, якщо ж пошук буде невдалим, система закiнчує його у спецiальному каталозi для header -файлiв, як i у загальному випадку. Найбiльш частим у початкiвцiв є включення
файлу "stdio.h":
#include <stdio.h>
main()
{
printf("Hello ! ...\n");
return 0;
}
Слiд зауважити, що файли включення iнодi можуть вмiщувати в собi
команднi рядки включення iнших файлiв, причому без нiяких обмежень у глибину вкладеностi. Цей прийом широко застосовується при розробцi великих програмних проектiв.
Оператори
Тепер перейдемо до запису
алгоритмiв програм
програмування Сi nf Cі++.
Оператори - це основнi елементи, з яких "будуються" програми на
будь-якiй мовi програмування. Бiльшiсть операторiв складаються з виразiв.
Виходячи з цього, спочатку розглянемо вирази.
Вираз представляє собою об'єднання операцiй i операндiв. Найпростiший вираз складається з одного операнду.
Приклади виразiв :
5
-7
10+21
a*(b+d*1)-1
x=++a%3
a>3
Неважко помiтити, що операнди можуть бути константами, змiнними, їх
об'єднаннями. Деякi вирази складаються з менших виразiв.
Дуже важливою особливiстю мови Сi або Сі++ є те, що кожний вираз має значення. Наведемо приклади кiлькох виразiв i їх значень :
-5+7 2
1<2 1
6+(a=1+2) 9
a=1+2 3
Як вже було сказано, основу будь-якої програми складають оператори.
Оператором-виразом
Взагалi усi оператори можна згрупувати у наступнi класи:
Проте, оператори найчастiше вiдносяться до бiльш нiж одного з
чотирьох класiв. Наприклад, оператор if (a=fn(b+c)>d) складається з
представникiв наступних класiв : присвоювання, виклик функцiї та
розгалуження. У тому i є гнучкiсть Сi, що є можливiсть змiшування в одному
операторi операторiв рiзних класiв. Проте навряд чи слiд цим зловживати -
програма може вийти правильною, проте надто заплутаною та нечитабельною.
Оператор розгалуження if
Оператор розгалуження
залежностi вiд iстинностi або хибностi деякої умови. Основний оператор цього
блоку в Сi - if ... else не має ключового слова then, як у Паскалi, проте
обов'язково вимагає, щоб умова, що перевiряється, розмiщувалася б у круглих
дужках. Оператор, що слiдує за логiчним виразом, є then - частиною