ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.09.2024
Просмотров: 15
Скачиваний: 0
Лабораторна робота №2.
Тема: Лінійний обчислювальний процес
Мета: вивчити правила складання текстів програм, навчитися реалізовувати лінійні алгоритми, а також складати каркас простої програми в середовищі C++ Builder. Написати і відлагодити програму лінійного алгоритму в консольному і(чи) віконному застосуванні.
1.1. Загальні теоретичні відомості
Алфавіт мови С / С++ складається з:
-
прописних і рядкових букв латинського алфавіту,
-
арабських цифр,
-
спеціальних символів, сенс і правила використання яких розглядатимуться далі.
У мові C застосовуються дані двох категорій: прості (скалярні) і складні (складені).
До основних (базових) типів даних відноситься цілий (int), дійсний (float, double) і символьний (char) типи. У свою чергу, дані цілого типу можуть бути короткими (short) і довгими (long), зі знаком (signed) і беззнаковими (unsigned). Атрибут long може використовуватися і з типом double - довге дійсне.
До складних типів даних відносяться масиви, структури (struct), об'єднання (union) і перерахування (enum).
У мові С++ використовуються дані типу bool - логічні, приймаючі значення true (1) - істина і false (0) - брехня, а також AnsiString (String) - строковий тип даних.
Запис констант, що самовизначаються
Тип даних |
Загальний формат запису |
Приклади |
Десяткові цілі |
n |
22 –15 176 –1925 |
Дійсні з фіксованою десятковою точкою |
n.m |
1.0 –3.125 –0.001 |
Дійсні з плаваючою точкою |
n.mE(p сенс запису (n, m(10(p |
1.01E - 10 0.12537е+4
|
Символьні |
' ' |
'A' 'х' '0' '<' |
Рядкові |
“ ” |
“Minsk" "Press any key" |
У таблиці ( - будь-який символ, набраний на клавіатурі.
Декларація об'єктів
Усі об'єкти (змінні, масиви і так далі), з якими працює програма, необхідно декларувати. У декларації об'єктам привласнюються ідентифікатори (ID), які можуть включати латинські букви, символ нижнього підкреслення «_» і цифри, причому першим символом ID не може бути цифра.
Увага! У мові С/С++ рядкові і прописні букви мають різні коди, тобто PI, Pi і pi - різні ідентифікатори.
При декларації об'єктам можна задавати початкові значення (ініціалізувати), наприклад:
int k = 10, m = 3, n;
double c = - 1.3, w = - 10.23, s;
Прийнято використовувати в ID змінних рядкові букви, а в іменованих константах - прописні, наприклад:
const double PI = 3.1415926;
double pi = 3.1415926;
Роздільниками ID є пропуски, символи табуляції, перекладу рядка і сторінки, а також коментарі.
Коментар - будь-яка послідовність символів, що починається парою символів /* і що закінчується парою символів */ або що починається // і до кінця поточного рядка.
Директиви препроцесора
Перед компіляцією програми за допомогою директив препроцесора виконується попередня обробка тексту програми.
Директиви починаються з символу #; за яким йде найменування операції препроцесора. Найчастіше використовуються директиви include і define.
Директива #include використовується для підключення до програми заголовних файлів з декларацією стандартних бібліотечних функцій, наприклад:
#include <stdio.h> - стандартні функції введення-виводу;
#include <conio.h> - функції роботи з консоллю;
#include <math.h> - математичні функції.
Директива #define (визначити) створює макроконстанту і її дію распро-страняется на увесь файл, наприклад:
#define PI 3.1415927
– в ході препроцесорної обробки ідентифікатор PI скрізь замінюється вказаним значе-нием 3,1415927.
Операція привласнення має повну і скорочену форми запису.
Повна форма: ID = вираз;
– виконується справа наліво, тобто спочатку обчислюється вираження, а потім його результат привласнюється вказаному ID, наприклад: y(3*x) - 5;
У одному операторові можна присвоїти значення кільком змінним, наприклад: x = y = z = 0;
чи z = (x = y) * 5; - спочатку змінною x привласнюється значення змінної y, далі обчислюється вираження x*5, і результат привласнюється змінній z.
Скорочена форма: ID операція = вираз;
де операція - одна з арифметичних операцій +, -, *, /, %; наприклад:
s += 7; (s = s+7;) чи y *= x+3; (y = y*(x+3));
Скорочена форма застосовується, коли змінна використовується в обох частинах її повної форми.
У мові С/С++ існують операції інкремента (--) і декремента (++), тобто зменшення або збільшення значення змінної на 1. Операції можуть бути префіксні (++i і --i) і постфіксні (i++ і i--). При використанні цієї операції у виразі в префіксній формі, спочатку виконується сама операція (змінюється значення i), і тільки потім обчислюється вираження. У постфіксній формі - операція застосовується після обчислення вираження, наприклад, для значень b = 7 і n = 1 будуть отримані наступні результати:
1) c = b*++n; - порядок виконання : n = n+1, c = b*n, тобто c = 14;
2) c = b*n++; - в цьому випадку: c = b*n, n = n+1, тобто c = 7 .
1.2. Приклад виконання завдання
Скласти програму обчислення арифметичного виразу для заданих значень x, y, z:
.
1.2.1. Приклад створення віконного додатку
У віконному режимі панель діалогу програми створити у виді, представленому на мал. 1.1.
Мал. 1.1
Для створення проекту необхідно виконати наступні дії.
1. Запускаємо С++ Builder. Створюємо окрему, папку, відкривши її, зберігаємо пропоновані файли Unit1.cpp і Project1.cpp (рекомендуємо без зміни).
2. Оформляємо вікно форми, замінивши заголовок Form1 на потрібний текст. Поміщаємо на форму необхідні компоненти Label1, Label2, Label3, Label4 (вставляючи в Caption відповідні тексти), Edit1, Edit2, Edit3, Memo1 зі смугами прокрутки, Button1 (замінивши в Caption текст).
Використовуючи властивість Font, вибираємо стилі текстів, що виводяться.
3. Оформляємо лістинг програми (Unit1.cpp). Подвійним клацанням кнопкою миші по вільному місцю форми створюємо функцію FormCreate і заповнюємо її (див. приклад). Переходимо на форму (F12), клацаємо двічі по кнопці «ВИКОНАТИ» і заповнюємо створену функцію Button1Click (див. приклад).
4. Перед запуском програми на обробку, зберігаємо усе.
5. Запускаємо проект на виконання, виправляємо помилки.
Текст програми може мати наступний вигляд (похилим дрібним шрифтом виділений текст, редагувати який не рекомендується) :
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit 1.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1 ->Text = "3, 4";
Edit2 ->Text = "7, 4e-2";
Edit3 ->Text = "1, 943e2";
Memo1 ->Clear();
Memo1 ->Lines ->Add("Лабораторна робота № 1");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x, y, z, a, b, c, rez;
x = StrToFloat(Edit1 ->Text);
y = StrToFloat(Edit2 ->Text);
z = StrToFloat(Edit3 ->Text);
a = pow(tan(x+y), 2);
b = exp(y - z);
c = sqrt(cos(x*x)+sin(z*z));
rez = a - b*c;
Memo1 ->Lines ->Add("При х = "+FloatToStrF(x, ffFixed, 7,3)
+ "; y = "+FloatToStrF(y, ffFixed, 7,3)+"; z = "+FloatToStrF(z, ffFixed, 7,3));
Memo1 ->Lines ->Add("Результат = "+FloatToStr(rez));
}
Увага! У строкових константах роздільник цілої і дробової частин - кома: Edit1 ->Text = "3,4"; на відміну від числових констант в тексті програми.
В результаті повинне вийти робоче вікно (мал. 1.3). Якщо клацнути мишею по кнопці «ВИКОНАТИ», у вікні Memo1 з'явиться відповідний текст (результат). Далі у віконцях Edit* можна змінювати початкові значення і, натискаючи кнопку «ВИКОНАТИ», отримувати нові результати.
Мал. 1.3
1.2.2. Створення консольного застосування
Щоб створити проект в консольному застосуванні, виконуємо наступну послідовність дій : File / Close All / File / New / Other / Console Wizard / Ok. Закриваємо усі віконця, окрім вікна коду, яке в консольному застосуванні матиме вигляд
Текст програми може мати наступний вигляд:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
double x, y, z, a, b, c, rez;
puts("\n\tx, y, z = ");
scanf("%lf%lf%lf", &x, &y, &z);
a = pow(tan(x+y), 2);
b = exp(y - z);
c = sqrt(cos(x*x)+sin(z*z));
rez = a - b*c;
printf("\n x = %7.3lf\n y = %7.3lf\n z = %7.3lf\nRezult = %lf\n", x, y, z, rez);
puts("Press any key ... ");
getch();
return 0;
}
Для початкових даних x = 3,4; y = 7,4е10-2; z = 1,943е2, результат виконання програми виглядає таким чином: