Информация


Programm.ws - это сайт, на котором вы можете почитать литературу по языкам программирования, а так-же посмотреть примеры работающих программ на С++, ассемблере, паскале и много другого..

Программирование — в обычном понимании, это процесс создания компьютерных программ.
В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Более точен современный термин — «программная инженерия» (также иначе «инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.

Глава 1. Встроенные типы данных, операции над ними

Условный оператор

Условный оператор (if-then-else statement) в языке Java записывается так:

if (логВыр) оператор1 else оператор2

и действует следующим образом. Сначала вычисляется логическое выражение логвыр. Если результат true, то действует оператор! и на этом действие условного оператора завершается, оператор2 не действует, далее будет выполняться следующий за if оператор. Если результат false, то действует оператор2, при этом оператор,! вообще не выполняется.

Условный оператор может быть сокращенным (if-then statement):

if (логВыр) оператор!

и в случае false не выполняется ничего.

Синтаксис языка не позволяет записывать несколько операторов ни в ветви then, ни в ветви else. При необходимости составляется блок операторов в фигурных скобках. Соглашения "Code Conventions" рекомендуют всегда использовать фигурные скобки и размещать оператор на нескольких строках с отступами, как в следующем примере:

if (а < х) {

х = а + b; } else {

х = а — b; 

}

Это облегчает добавление операторов в каждую ветвь при изменении алгоритма. Мы не будем строго следовать этому правилу, чтобы не увеличивать объем книги.

Очень часто одним из операторов является снова условный оператор, например:

if (п == 0}{ 

sign = 0;

} else if (n < 0){

sign = -1; 

} else { 

sign = 1;

}

При этом может возникнуть такая ситуация ("dangling else"):

int ind = 5, х = 100;

if (ind >= 10) if (ind <= 20) x = 0; else x = 1;

Сохранит переменная х значение юо или станет равной 1? Здесь необходимо волевое решение, и общее для большинства языков, в. том числе и Java,. правило таково: ветвь else относится к ближайшему слева услдвиюif, не имеющему своей ветви else. Поэтому в нашем примере переменная х останется равной юо.

Изменить этот порядок можно с помощью блока:

if (ind > 10) {if (ind < 20) x = 0; else x = 1;}

Вообще не стоит увлекаться сложными вложенными условными операторами. Проверки условий занимают много времени. По возможности лучше использовать логические операции, например, в нашем примере можно написать

if (ind >= 10 && ind <= 20) х = 0; else х = 1;

В листинге 1.4 вычисляются корни квадратного уравнения ах2 + bх + с = 0 для любых коэффициентов, в том числе и нулевых.

Листинг 1.4. Вычисление корней квадратного уравнения

class QuadraticEquation{

public static void main(String[] args){

double a = 0.5, Ъ = -2.7, с = 3.5, d, eps=le-8; 

if (Math.abs(a) < eps) 

if (Math.abs(b) < eps)

if (Math.abs(c) < eps) // Все коэффициенты равны нулю

System.out.println("Решение —любое число"); 

else

System.out.println("Решений нет"); 

else

System.out.println("xl = x2 = " +(-c / b) ) ;

else { // Коэффициенты не равны нулю 

if((d = b**b — 4*a*c)< 0.0){ // Комплексные корни 

d = 0.5 * Math.sqrt(-d) / a; 

a = -0.5 * b/ a; 

System.out.println("xl = " +a+ " +i " +d+

",x2 = " +a+ " -i " +d); 

} else {

// Вещественные корни

d =0.5 * Math.sqrt(d) / a; 

a = -0.5 * b / a;

System.out.println("x1 = " + (a + d) + ", x2 = " +(a - d)); 

}

)

}

В этой программе использованы методы вычисления модуля absо и кш; ратного корня sqrt о вещественного числа из встроенного в Java API класса Math. Поскольку все вычисления-С вещественными числами производятся приближенно, мы считаем, что коэффициент уравнения равен нулю, если его модуль меньше 0,00000001. Обратите внимание на то, как в методе println о используется сцепление строк, и на то, как операция присваивания при вычислении дискриминанта вложена в логическое выражение.

"Продвинутым" пользователям

Вам уже хочется вводить коэффициенты а, b и с прямо с клавиатуры? Пожалуйста, используйте метод System, in. read (byte [ ] bt), но учтите, что этот метод записывает вводимые цифры в массив байтов bt в кодировке ASCII, в каждый байт по одной цифре. Массив байтов затем надо преобразовать в вещественное число, например, методом Double(new String(bt)).doubleValue0 . Непонятно? Но это еще не все, нужно обработать исключительные ситуации, которые могут возникнуть при вводе (см. главу 18).