3571

Введення в C#. Створення консольних додатків

Лекция

Физика

Введення в C#. Створення консольних додатків Мова C# (вимовляється Си-Шарп) - це мова програмування від компанії Microsoft. Він входить у версію Visual Studio - Visual Studio.NET. Крім C# в Visual Studio.NET входять Visual Basic.NET й Visual C++. Од...

Украинкский

2012-11-05

1.45 MB

68 чел.

Введення в C#. Створення консольних додатків

Мова C# (вимовляється Си-Шарп) - це мова програмування від компанії Microsoft. Він входить у версію Visual Studio - Visual Studio.NET. Крім C# в Visual Studio.NET входять Visual Basic.NET й Visual C++.

Одна із причин розробки нової мови компанією Microsoft - це створення компонентно-орієнтованого язика для нової платформи .NET. Інші язики були створені до появи платформи .NET, язик же C# створювався спеціально під цю платформу й не несе із собою вантажу сумісності з попередніми версіями язиків. Хоча це не означає, що для нової платформи це єдина мова.

Ще одна із причин розробки компанією Microsoft нової мови програмування - це створення альтернативи язику Java.

Язик C# є найбільш відомою новинкою в області створення мов програмування. На відміну від 60-х років XX століття - періоду бурхливого мовотворення - у нинішній час язики створюються вкрай рідко.

Творцем язика є співробітник Microsoft Андреас Хейлсберг. Він став відомим у світі програмістів задовго до того, як прийшов в Microsoft. Хейлсберг входив до числа провідних розроблювачів однієї із самих популярних середовищ розробки - Delphi. В Microsoft він брав участь у створенні версії Java - J. C# створювався, як язик компонентного програмування, і в цьому одне з головних достоїнств язика, спрямоване на можливість повторного використання створених компонентів.

Перша програма на C#

Запускаємо Visual Studio.NET. Для створення нового порожнього проекту C# проекту в Visual Studio необхідно скористатися кнопкою Create Project на стартовій сторінці Visual Studio 2008 (Рис.8.1).

Рис.8.1. Стартова сторінка Visual Studio 2008

У вікні, що з'явилося, New Project ліворуч вибираємо, Visual C#, а праворуч тип додатка - Console Application (мал.8.2):

Рис.8.2. Вікно створення нового проекту

Як ім'я проекту (Name) наберіть Consol1, або щось у цьому роді. Натисніть на кнопку ОК для закриття даного діалогового вікна. Як місце (Location), де буде зберігатися папка проекту з файлами, укажіть мережний диск Z. За замовчуванням, передбачено, що ім'я папки робочої області й ім'я проекту збігаються, що не обов'язково.

В результаті чого, на диску будуть створена папка робочої області Consol1, а в цій папці ще одна папка проекту Consol1, у якій будуть зберігатися файли проекту, і створений файл коду програми Program.cs. Крім цього, у папці робочої області створюються ще файл із ім'ям робочої області й розширенням sln, що містить інформацію, про настроювання робочої області, файлах, папках і за допомогою якого відбувається завантаження робочого простору в середовище VisualStudio. У папці з назвою проекту, створюються папки bin, obj, Properties. У папці bin перебуває вкладена папка Debug, де згодом буде перебувати виконує файл, що, проекту Consol1.exe. Папка obj використається для зберігання інформації про об'єктні модулі, папка Properties – інформації про властивості проекту (Рис.8.3).

Рис.8.3. Вікно робочої області проекту

Додамо в код програми рядок, що виведе деяке повідомлення в консольне вікно.

Console.WriteLine("Привіт з C#");

Тому що в програмі автоматично створений рядок using System, то замість довгих можна використати короткі імена методів, зокрема, замість System.Console можна писати просто Console, як записано в попередньому рядку.

Далі в програмі оголошений клас Programm. Що таке класи докладно буде розглянуто пізніше, зараз же досить знати, що в C# необхідно створити клас й у ньому функцію Main (функція Main обов'язково повинна бути в кожній програмі на C#, і саме із цієї функції й починається виконання програми). Звернете також увагу, що ця функція пишеться із прописної (великої) букви. C# розрізняє рядкові й прописні букви. У функції Main виводимо на екран деякий рядок методом WriteLine (Рис.8.4).

Рис.8.4. Вікно програми

Вибравши у верхньому меню робочій області Debug -> StartWithoutDebugging або Ctrl+F5 запускаємо програму. Результат представлений на Рис.8.5.

Рис.8.5. Результат роботи програми

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

Для зчитування рядка символів, уведеної із клавіатури в консольному вікні, використається метод Console.ReadLine(), простору імен System. Для перетворення рядка символів у число необхідно використати метод Parse().

Використаємо відповідні методи в програмі:

float m; //Опис змінної m типу float

Console.WriteLine("Привіт з C#");

Console.WriteLine("Уведіть ціле число: ");

//Вводимо рядок символів методом

//Console.ReadLine() і за допомогою методу

//Parse() перетворимо його до цілого типу int

//і привласнимо змінній k цілого типу.

int k = Int32.Parse(Console.ReadLine());

Console.WriteLine("Було введене число - " + k);

k = k + k;

Console.WriteLine("Сума k+k =" + k);

k = k * k;

Console.WriteLine("Добуток k*k =" + k);

//Змінна l описана як float

float l = (float)k / ((float)k + (float)k);

Console.WriteLine("Вираження k /(k+k) = " + l);

Console.WriteLine("Введіть дробове число ");

Console.WriteLine("(як розділовий знак");

Console.WriteLine(" використайте кому): ");

//Зчитування рядка символів і перетворення її до типу float

m = float.Parse(Console.ReadLine());

m = (m + m)/(m*m);

Console.WriteLine("Вираження(m + m)/(m*m)= " + m);

Зверніть увагу на рядок:

float l = (float)k / ((float)k + (float)k);

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

У рядку:

m = float.Parse(Console.ReadLine());

використовується метод Parse() для перетворення рядка символів в число типу float. Результат перетворення привласнюється змінній m. Тип змінної описаний у рядку:

float m; //Опис змінної m типу float

Результат роботи програми представлений на Рис.8.6.

Рис.8.6. Результат роботи програми

Приклад, що визначає, парне або непарне число ввів користувач:

class Program

{

static void Main(string[] args)

{

//Читаємо символ уведений із клавіатури ( метод ReadLine())

//за допомогою методу Parse перетворимо його

//у ціле число й привласнюємо значення змінної k

Console.WriteLine("Уведіть ціле число");

int k = Int32.Parse(Console.ReadLine());

int b = k / 2;

if (2*b == k)

{

Console.WriteLine("Парне число");

}

else

{

Console.WriteLine("Непарне число");

}

}

}

Фігурні дужки можна не писати у випадку одного оператора. Гілка else теж не є обов'язковою - все залежить від конкретного завдання.

Приклад використання оператора switch:

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Уведіть оцінку");

int k = Int32.Parse(Console.ReadLine());

Console.WriteLine("Уведена оцінка: " + k.ToString());

switch (k)

{

case 1:

case 2:

Console.WriteLine("Незадовільно");

break;

case 3:

Console.WriteLine("Задовільно");

break;

case 4:

Console.WriteLine("Добре");

break;

case 5:

Console.WriteLine("Відмінно");

break;

default:

Console.WriteLine("Помилка");

break;

}

}

}

У наведеному прикладі залежно від уведеного користувачем числа на екран виводиться та або інша оцінка. Якщо число k не лежить у проміжку від 1 до 5, то виконуються оператори в гілці default і виводиться напис "Помилка". Гілка default необов'язкова. Зверніть увагу на оператор break. Якщо його не написати, то будуть виконуватися оператори з наступної гілки case до рядка з break'ом . Якщо в деякій гілці case або default є оператори, то написання break обов'язково. Так, у наступних двох ділянках коду програми є помилки:

...

case 1:

Console.WriteLine("Зовсім незадовільно");

//Помилка! Отут пропущено break

case 2:

Console.WriteLine("Незадовільно");

break;

...

...

default:

Console.WriteLine("...");

//Помилка! Отут пропущено break

}

Застосовуючи оператор switch, необхідно закінчувати кожну case-галузь оператором break.

Приклад циклу for:

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Уведіть число");

int k = Int32.Parse(Console.ReadLine());

int sum = 0;

for (int i = 1; i <= k; i++)

{

sum += i; //Еквівалентно sum=sum+i

}

Console.WriteLine(sum);

}

}

Цей приклад підраховує суму чисел від 1 до уведеного користувачем числа k. Сума записується в змінну sum і виводиться на екран.

Приклад використання циклу While

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Уведіть пароль");

string password;

do

{

password = Console.ReadLine();

}

while (password != "C#");

//-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

}

}

У прикладі цикл буде виконуватися доти, поки користувач не введе правильний пароль (C#).

Приклад використання операторів break й continue

public void Jumps()

{

int i = 1, j=1;

for(i = 1; i<100; i++)

{

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

{

if (j>=3) break;

}

Console.WriteLine("Вихід із циклу j при j = {0}", j);

if (i>=3) break;

}

Console.WriteLine("Вихід із циклу i при i= {0}", i);

}

Оператор continue використається тільки в тілі циклу. На відміну від оператора break, що завершує внутрішній цикл, continue здійснює перехід до наступної ітерації цього циклу.

Стандартні математичні функції в С# зібрані в окремому класі Math й є методами класу.

Клас Math, що містить стандартні математичні функції, містить два статичні поля, що задає константи е й π, а також 23 статичних методи. Методи задають:

  •  тригонометричні функції - Sin, Cos, Tan;
  •  зворотні тригонометричні функції - ASin, ACos, ATan, ATan2 (sinx, cosx);
  •  гіперболічні функції - Tanh, Sinh, Cosh;
  •  експоненту й логарифмічні функції - Exp, Log, Log10;
  •  модуль, корінь, знак - Abs, Sqrt, Sign;
  •  функції округлення - Ceiling, Floor, Round;
  •  мінімум, максимум, ступінь, залишок - Min, Max, Pow, IEEERemainder.

В особливих поясненнях ці функції не мають потреби.

Приклад використання:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace temp11

{

class Program

{

static void Main(string[] args)

{

double a, b,t,t0,dt,y;

string NameFunction;

Console.WriteLine("Введіть ім'я F(t)досліджуваної функції a*F(b*t)" + " (sin, cos, tan, cotan)");

NameFunction = Console.ReadLine();

Console.WriteLine("Введіть параметр a (double)");

a= double.Parse(Console.ReadLine());

Console.WriteLine("Уведіть параметр b (double)");

b= double.Parse(Console.ReadLine());

Console.WriteLine("Уведіть початковий час t0(double)");

t0= double.Parse(Console.ReadLine());

const int points = 10;

dt = 0.2;

for(int i = 1; i<=points; i++)

{

t = t0 + (i-1)* dt;

switch (NameFunction)

{

case ("sin"):

y = a*Math.Sin(b*t);

break;

case ("cos"):

y = a*Math.Cos(b*t);

break;

case ("tan"):

y = a*Math.Tan(b*t);

break;

case ("cotan"):

y = a/Math.Tan(b*t);

break;

case ("ln"):

y = a*Math.Log(b*t);

break;

case ("tanh"):

y = a*Math.Tanh(b*t);

break;

default:

y=1;

break;

}

Console.WriteLine ("t = " + t + "; " + a +"*" +

NameFunction +"(" + b + "*t)= " + y + ";");

}

double u = 2.5, v = 1.5, p;

p= Math.Pow(u,v);

Console.WriteLine ("u = " + u + "; v= " + v + "; power(u,v)= " + p );

}

}

}

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

Рис.8.7. Результати роботи програми

Завдання.

Вивчити матеріал, наведений вище, і відповідно до заданого варіанту написати програми із Завдання1 - Завдання 4.

Варіанти індивідуальних завдань.

 

Завдання 1.

Скласти програму, задавши вихідні дані самостійно.

  1.  Квіткова клумба має форму кола. По заданому радіусі обчислити її периметр і площу.
  2.  Обчислити периметр і площу прямокутного трикутника по заданому катеті й гострому куті.
  3.  По заданому діаметрі обчислити довжину й площу окружності.
  4.  Ділянка лісу має форму рівнобічної трапеції. Обчислити по заданих сторонах її периметр і площу.
  5.  Ресторан купує щодня масло m1 кг по 8.50 грн. за кілограм, сметану т2 кг по 2.40 грн., вершки т3 кг по 4.10 грн. Визначити суми, необхідні для закупівлі окремих продуктів і загальну суму.
  6.  Скільки секунд мають доба, тиждень, рік ?
  7.  Обчислити кінетичну E=mv2/2 і потенційну P=mgh енергії тіла заданої маси т, що рухається на висоті h зі швидкістю v.
  8.  Ціни на два види товарів виросли на р відсотків. Вивести старі й нові ціни.
  9.  Обчислити площу поверхні S=4πr2 й обсяг V=4nr3/3 кулі по радіусі r.
  10.  Швидкість світла 299792 км/с. Яка відстань переборює світло за годину, добу?
  11.  Ввести врожайність трьох сортів пшениці (36, 40, 44 т/га) і розміри трьох відповідних полів (у га). Скільки зібрали пшениці з кожного поля й із всіх разом?
  12.  Радіус Місяця 1740 км. Обчислити площу поверхні S=4πr2 й обсяг планети V=(4/3)nr3.
  13.  Обчислити довжину гіпотенузи й площу прямокутного трикутника по двох катетах.
  14.  По відомому ребру обчислити обсяг і площу бічної поверхні куба.
  15.  По продуктивності трьох труб і часу їхньої роботи з наповнення басейну, визначити скільки води набрано в басейн.
  16.  Визначите площу й периметр квадрата, що описаний навколо кола заданої площі S.
  17.  Тіло падає із прискоренням g. Визначити шлях тіла h=gt2/2 після першої й другої секунд падіння.
  18.  По заданих катетах обчислити периметр і площу прямокутного трикутника.
  19.  Телефонні розмови із трьома населеними пунктами коштують із1, з2, з3 коп/хв. Розмови тривали t1 t2, t3 хв. Яку суму нарахує комп'ютер за кожен і всі розмови разом.
  20.  По заданій висоті h і радіусу підстави r обчислити площу бічної поверхні S=2πrh й обсяг V=nr2h бочки.
  21.  Квіткова клумба має форму квадрата. По заданій стороні обчислити площу й периметр.
  22.  По заданому катеті й гіпотенузі обчислити інший катет і площу прямокутного трикутника.
  23.  Обчислити сторону й площу квадрата S=d2/2, якщо задано його діагональ d.
  24.  По заданій висоті h, що утворить l і радіусу підстави r обчислити площу бічної поверхні S=πrl й обсяг конуса V=πr2h/3.
  25.  Поїзд їхав t1годину зі швидкістю v1 км/година, t2 година зі швидкістю v2 й t3 година зі швидкістю v3. Визначити пройдений шлях з різною швидкістю й повний шлях.

Завдання 2.

За довільним значенням x обчислити значення функції:

, де

,  , - номер варіанта. Вхідні дані вводяться із клавіатури.

Завдання 3.

Скласти програму для рішення поставленого завдання двома способами: використовуючи: 1) команди case 2) команди if. Дані сформувати таким чином, що б вибір був з 3-5 альтернатив.

  1.  По номеру студента в списку групи вивести його прізвище.
  2.  Є дані 4 моделей автомобіля. По номеру моделі одержати характеристики: рік випуску й ціну.
  3.  По номеру поїзда вивести назву пункту призначення.
  4.  За назвою першої букви країни вивести назву столиці.
  5.  По номеру для тижня надрукувати його назву.
  6.  По номеру тролейбуса вивести назву кінцевої зупинки.
  7.  По першій букві назви країни вивести назву континенту.
  8.  По номеру місяця вивести назву пори року.
  9.  По номеру студента в списку групи вивести його ім'я.
  10.  За назвою першої букви міста вивести довідку по кількості населення.
  11.  По номеру місяця вивести номер кварталу.
  12.  По номеру маршруту автобуса вивести кількість зупинок його маршруту.
  13.  По першій букві назви країни вивести кількість міст цієї країни.
  14.  По телефонному коду міста вивести назву міста.
  15.  По номеру дня тижня вивести кількість пар у цей день.
  16.  По цифровому коду шести груп товарів виводити його ціну.
  17.  По номеру місяця виводити кількість днів у цьому місяці.
  18.  По коду групи вивести кількість студентів у групі.
  19.  По числу з діапазону 0-5 надрукувати його написання англійською мовою.
  20.  По номеру поїзда вивести час його відправлення.
  21.  За назвою ріки вивести її довжину.
  22.  По першій букві назви ріки вивести назву країни, де вона протікає.
  23.  По номеру одного із чотирьох друзів вивести його ім'я.
  24.  По номеру квартири в будинку вивести кількість мешканців.
  25.  По цифрі з діапазону 5-9 вивести її значення словом.

Завдання 4.

Обчислити вираження згідно варіанта:

  1.  


  1.  z=a+b;
  2.  z=ab;
  3.  z=tg(b)-a;
  4.  z=(a+b)2;
  5.  z=5ab-4;
  6.  z=sin(a)+b;
  7.  z=b tga;
  8.  z=a2+3b;
  9.  z=(|ab|)1/4;
  10.  z=ab-?;
  11.  z=a-2b;
  12.  z=a tgb;
  13.  z=cos(ab);
  14.  z=|a-b|;
  15.  z=ctg(2a)-b;
  16.  z=e3ab;
  17.  z=4ba-b;
  18.  z=2a-b;
  19.  z=|12a-cos(b)|;
  20.  z=2a-b;
  21.  z=tg(a+b);
  22.  z=ln|a+4b|;
  23.  z=3ab-cos(b);
  24.  z=4a+eb;
  25.  z=5a-2b,


де

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

n

Функція f(x)

1

9,2cosx2–|sinx/1,1|

2

12,4sin|x/2,1|–8,3cos1,2x

3

|cosx/2,7|+9,1sin(1,2x+1)

4

|sinx/3,12+cosx2|–8,3sin3x

5

cos|2x|/1,12–cos(3x–2)+6,15

6

sinxcosx2sin(x+1,4) +5,14

7

|sin(2x–1,5) +3sinx2|+2,38

8

cosx2sin(2x–l)+4,29

9

cos(x2+l)–|sin2x–5,76|

10

sinx–cosx3sin(x2–4,2) +4,27

11

|sin12xcos|2x|/3|+4,21

12

cosx3/2,1+cosx2/1,1–8.3sin(3x+1)

13

sinx2cosx3–sinx+5,2

14

2sinxsin(2x–1,5) cos(2x+1,5)–6

15

|cosx2–0,51|sin(3x–4)–4,44

16

cos2,1xsin|x|/0,15–5,8

17

|cos2x3+2sin(x/l,2–3,4)|+10,51cos|3x|

18

|sin(x2/1,5–2)|+11,73cos(1,6x–1)

19

13,4cos|x|sin(x2–2,25)

20

|соs(x2–3,8)|/4,5–9,7sin(x–3,1)

21

13,4sin(–1,26) cos|x/7,5|

22

2sin|2x|cos2x–11,6sin(x/0,4–1)

23

sin|x|/0,1+ 9,4sin(3x–2,5)

24

10,8cos(x2/1,13) |sin(x+1,4)

25

11,2cos(2x–1)+|sinl,5x|/1,7


 

А также другие работы, которые могут Вас заинтересовать

41550. УСТРОЙСТВО ГИДРАВЛИЧЕСКОГО СТЕНДА 1.35 MB
  Режимы течения представляет собой круглую трубу с встроенной на входе капиллярной трубкой для подачи подкрашенной жидкости. Цель работы Визуальное наблюдение изменения составляющих полного напора потока жидкости в трубе переменного сечения. Общие сведения Работа заключается в экспериментальном построении энергетических графиков пьезометрической и энергетической линий одномерного потока жидкости. Уравнение Даниила Бернулли полученное им в 1738 году представляет собой частный случай всеобщего закона сохранения энергии...
41551. Внутренняя структура инновационных процессов на предприятии 155 KB
  Целевые качественные или количественные изменения в выборе и использовании материалов сырья информации оборудования информации работников и других ресурсов Целевые качественны или количественные изменения в результатах производственно хозяйственной деятельности т. в изделиях услугах технологии ИН структуры предприятия ИН на âвыходеâ предприятия Целевые изменения в производственных обслуживающих и вспомогательных процессах как по качеству так и по количеству а так же по организации и способу ее обеспечения. То есть изменения...
41552. Финансовая система государства 1.87 MB
  Основы теории финансов. Взаимосвязь финансов с другими категориями. Функции финансов. Финансовый механизм. Общее понятие о финансовой системе государства. Сферы и звенья финансовой системы, краткая характеристика финансов субъектов хозяйствования. Место и роль государственных финансов в финансовой системе. Бюджетное устройство, его понятие. Принципы построения бюджетной системы. Основные этапы бюджетного процесса. Роль и функции государственного казначейства
41553. ФИНАНСИРОВАНИЕ ИНВЕСТИЦИЙ 72 KB
  Оценка потребности в финансировании Исходным пунктом для организации финансирования является расчет потребности в средствах необходимых для реализации проекта. Он производится на основе графика выполнения работ что вопервых обеспечивает привязку ко времени а вовторых позволяет увязать объемы финансирования и направления расходования средств. Итогом работы является таблица в которой потребность в средствах расписывается по месяцам. В этом случае более удобна следующая форма представления расчета: Виды работ Месяцы выполнения...
41554. ИНВЕСТИЦИОННЫЙ ПРОЕКТ 472.5 KB
  Инвестиционный проект это план программа хозяйственного мероприятия или предпринимательского проекта реализация которых требует привлечения инвестиций. Структура затрат на реализацию проекта а также доходов получаемых в результате инвестиций традиционно отлична для каждой из выделенных стадий. Определение целей и класса инвестиций 1. Метод расчета рентабельности инвестиций 2.
41555. СУЩНОСТЬ ИННОВАЦИОННЫХ ПРОЦЕССОВ И КЛАССИФИКАЦИОННЫЕ ПОДХОДЫ К ИХ ГРУППИРОВКЕ 308 KB
  Изменения в организации производства и его материальнотехническом обеспечении. Речь может идти также о качественных или количественных изменениях как с положительными так и с отрицательными социальноэкономическими последствиями. Большинство западных авторов обычно подчеркивают необходимость практической реализации изменения. Это могут быть количественные или качественные изменения которые касаются той или иной сферы деятельности предприятия.
41556. ИНВЕСТИЦИОННЫЙ ПРОЦЕСС И МИССИЯ КОМПАНИИ 63.5 KB
  Среди обширного спектра факторов влияющих на выбор миссии компании есть чрезвычайно важный с точки зрения долгосрочной перспективы безкризисного существования фирмы это фактор адекватности инвестирования выдвинутым критериям. Акцент на исследовании этого вопроса делается по двум основным причинам: определяющей роли которая принадлежит инвестиционному процессу в выборе линии поведения фирмы особенно на долгосрочном горизонте ее роста и инноваций продукта. Принятие решений в этой области...
41557. ИНВЕСТИЦИИ: ПОНЯТИЕ, КЛАССИФИКАЦИЯ. РОЛЬ ИНВЕСТИЦИЙ 151.5 KB
  Одной из важнейших сфер деятельности любой фирмы являются инвестиционные операции. Оба типа инвестиций имеют большое значение для сохранения жизнеспособности фирмы и ее развития. Их целью является прежде всего создание условий для снижения затрат фирмы за счет замены оборудования обучения персонала или перемещения производственных мощностей в регионы с более выгодными условиями производства; инвестиции в расширение производства. Логика зависимости между типом инвестиций и уровнем их риска очевидна: она определяется степенью...
41558. ИННОВАЦИОННАЯ ПОЛИТИКА 187 KB
  Как и практически всякая иная политика она неодинакова в разных странах хотя и подчинена одной и той же цели: стимулированию инновационной активности и развитию научнотехнического потенциала. Место и роль инновационной политики в структуре государственного регулирования экономики определяются особенностями инновационного процесса как объекта управления. В практической направленности инновационной идеи и состоит ее притягательная сила для капиталистических компаний. Так к числу внутренних побудительных мотивов инновационной активности можно...