p align="left">// Программа обработки списка import java.io.* // Все объекты класса list содержат список имен и три открытых // метода, которые называются getnames, sortlist и printnames. class list { final int ListLength = 10; private String[] names; public list() { names = new String[ListLength]} public void getnames{} { int i; Datalnput data = new DatalnputStream(System.in); for(i = 0; i < ListLength; i++) { try( names[i] = data.readLine(); catch(IOException e){};} public void sortnames() { int i,j;String pivot;for(i = 1; i < ListLength; i++) { pivot = names[i]);j = i - 1; while((j >= 0) && (pivot.compareTo(names[j]) < 0)) { names[j+1]=names[j];j--;} names[j+1] = pivot;}} public void printnames() { int i;for(d = 0; i < ListLength; i++) System.out.println(names[i]);}} // Создание объекта с именем namelist и обращение к нему с// требованием ввести несколько имен, отсортировать их, а// затем вывести отсортированный список на экран. class sort{ public static void main (String args[]) { list namelist = new list(); namelist.getnames(); namelist.sortnames(); namelist.printnames(); }}
1.4 Язык C# Разработчики Java успешно решили многие проблемы, связанные с переносимостью в среде Internet, но далеко не все. Одна из них -- межъязыковая возможность взаимодействия (cross-language interoperability) программных и аппаратных изделий разных поставщиков, или многоязыковое программирование (mixed-language programming). В случае решения этой проблемы программы, написанные на разных языках, могли бы успешно работать одна с другой. Такое взаимодействие необходимо для создания больших систем с распределенным программным обеспечением (ПО), а также для программирования компонентов ПО, поскольку самым ценным является компонент, который можно использовать в широком диапазоне компьютерных языков и операционных сред. Кроме того, в Java не достигнута полная интеграция с платформой Windows. Хотя Java-программы могут выполняться в среде Windows (при условии установки виртуальной машины Java), Java и Windows не являются прочно связанными средами. А поскольку Windows -- это наиболее широко используемая операционная система в мире, то отсутствие прямой поддержки Windows -- серьезный недостаток Java [13]. Чтобы удовлетворить эти потребности, Microsoft разработала язык С#. С# был создан в конце 1990-х годов и стал частью общей .NET-стратегии Microsoft. Впервые он увидел свет в качестве б-версии в середине 2000 года. Главным архитектором С# был Андерс Хейлсберг (Anders Hejlsberg) -- один из ведущих специалистов в области языков программирования, получивший признание во всем мире. Достаточно сказать, что в 1980-х он был автором весьма успешного продукта Turbo Pascal, изящная реализация которого установила стандарт для всех будущих компиляторов. С# непосредственно связан с С, C++ и Java. И это не случайно. Эти три языка -- самые популярные и самые любимые языки программирования в мире. Более того, почти все профессиональные программисты сегодня знают С и C++, и большинство знает Java. Поскольку С# построен на прочном, понятном фундаменте, то переход от этих "фундаментальных" языков к "надстройке" происходит без особых усилий со стороны программистов. Так как Андерс Хейлсберг не собирался изобретать свое "колесо", он сосредоточился на введении усовершенствований и новшеств. "Дедушкой" С# является язык С. От С язык С# унаследовал синтаксис, многие ключевые слова и операторы. Кроме того, С# построен на улучшенной объектной модели, определенной в C++. Если вы знаете С или C++, то с С# вы сразу станете друзьями. С# и Java связаны между собой несколько сложнее. Как упоминалось выше, Java также является потомком С и C++. У него тоже общий с ними синтаксис и сходная объектная модель. Подобно Java C# предназначен для создания переносимого кода. Однако С# -- не потомок Java. Скорее С# и Java можно считать двоюродными братьями, имеющими общих предков, но получившими от родителей разные наборы "генов". Связь языков можно изобразить в виде схемы, которая представлена на рисунке 1[12]. Рисунок 1 - Схема связи языков программирования Общую связь языков можно увидеть в коде C# программы: // Определение наименьшего множителя, // состоящего из одной цифры. using System; class Ladder { public static void Main() { int num; for(num = 2; num < 12; num++) { if((num % 2) == 0) Console.WriteLine("Наименьший множитель числа " + num + " равен 2."); else if((num % 3) == 0) Console.WriteLine("Наименьший множитель числа " + num + " равен 3."); else if((num % 5) == 0) Console.WriteLine("Наименьший множитель числа " + num + " равен 5."); else if((num % 7) == 0) Console.WriteLine("Наименьший множитель числа " + num + " равен 7."); else Console.WriteLine(num + " не делится на 2, 3, 5 или 7."); }} 2. ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ В ЯЗЫКАХ ВЫСОКОГО УРОВНЯ2.1 Алгоритмическая структура цикла Цикл - это такая форма организации действий, при которой одна последовательность действий повторяется несколько раз (или ни разу), до тех пор, пока выполняются некоторые условия. В алгоритмические структуры цикл входит серия команд, выполняемая многократно. Такая последовательность команд называется телом цикла. Циклические алгоритмические структуры бывают двух видов: - циклы со счетчиком, в которых тело цикла выполняется определенное количество раз; - циклы с условием, в которых тело цикла выполняется до тех пор, пока выполняется условие. Они все состоят из нескольких этапов. Это: - Подготовка цикла, в которую входят начальные присвоения; - Тело цикла - команды повторения цикла; - Условие - обязательная часть цикла “Пока”. Циклической конструкцией со счетчиком является цикл “For или Для”, его используют когда заранее известно, какое число повторений тела цикла необходимо выполнить. Цикл “For” можно представить в виде блока схем, такая схема изображена на рисунке 2. Теперь рассмотрим цикл “While или Пока”. Цикл “While” является циклической конструкцией с условием, т.е. это такой цикл, где тело цикла выполняется до тех пор, пока выполняются некоторые условия. Его простейшая блок схема изображена на рисунке 3. Рисунок 2 - Схема цикла For Рисунок 3 - Схема цикла While Существует также пустой цикл - это цикл без тела цикла. В большинстве случаев он применяется для создания пауз в программах. Наиболее часто в алгоритмах и программах применяются два вида циклов. Это циклы “ While или Пока ” и “ For или Для ”. Циклы очень часто используют в прикладных программах и алгоритмах. Для того чтобы понять принципы циклов, рассмотрим их в языках программирования высокого уровня [9].
2.2 Циклы в языке С В языке C применяются такие циклические конструкции: while,for. Цикл while - это цикл, в котором тело повторяется несколько раз до тех пор, пока истинно условие. Чтобы цикл окончился, оператор-тело цикла должен менять какую-то переменную, от которой зависит истинность условия повторений. Его конструкция выглядит таким образом: while(условие){ оператор;} ...продолжение... или while(условие){ операторы; ... } ...продолжение... Пример цикла: int x; x = 10; While (x > 0) { Printf ("x=%d\n", x); x = x - 1;} printf("Конец.\n"); printf("x стало равно %d.\n", x);/* печатает 0 */ Цикл for ("для каждого") Этот цикл является просто иной записью одного из вариантов цикла while. Он служит обычно для выполнения определенного действия несколько раз, не "пока истинно условие", а "выполнить N-раз". У такого цикла есть "переменная цикла" или "счетчик повторений". int i; i = a; /* начальная инициализация */ while(i < b){ тело_цикла; i += c; /* увеличение счетчика */} ...продолжение... переписывается в виде int i;for(i=a; i < b; i += c) тело_цикла; Тело_цикла будет выполнено для значений i a a+c a+c+c ... пока i < b В простейшем случае: for(i=1; i <= N; i++) Printf ("i=%d\n", i) i означает "номер повторения". Такой цикл служит для повторения схожих действий несколько раз с разным значением параметра. Оператор break ("вывалиться из цикла") Оператор break заставляет прервать выполнение тела цикла и сразу перейти к продолжению программ While (условие1) { операторы1; if (условие2) break; операторы2;} ...продолжение...и for(i=0; условие1; i++){ операторы1; if(условие2) break;операторы2; } ...продолжение... Этот оператор позволяет организовывать дополнительные точки выхода из цикла (при дополнительных условиях). Пример: for (i=0; i < 20; i++){ Printf ("i=%d\n", i); if (i == 7){ Printf ("break loop! \n"); break; /* вывалиться из цикла */ } printf("more\n");} Printf ("finished, i=%d\n", i); /* печатает 7 */ В частности, с его помощью можно организовывать бесконечный цикл: for (;;){ /* заголовок бесконечного цикла */ операторы1; if (условие2) break; операторы2; } ...продолжение... Здесь в самом заголовке цикла не проверяется никаких условий, такой цикл продолжается бесконечно. Условие продолжения считается всегда истинным. Единственный способ выйти из него - это сделать break (при каком-то условии) в теле цикла, что и написано [2,3]. Бесконечный цикл можно также организовать при помощи: while(1){ ... }
2.3 Циклы в языке С++ Предположим, нам нужно вычислить сумму всех целых чисел от 0 до 100. Для этого воспользуемся оператором цикла for: int sum = 0; int i; for (i = 1; i <= 100; i = i + 1) // заголовок цикла sum = sum + i; // тело цикла Оператор цикла состоит из заголовка цикла и тела цикла. Тело цикла - это оператор, который будет повторно выполняться (в данном случае - увеличение значения переменной sum на величину переменной i). Заголовок - это ключевое слово for, после которого в круглых скобках записаны три выражения, разделенные точкой с запятой. Первое выражение вычисляется один раз до начала выполнения цикла. Второе - это условие цикла. Тело цикла будет повторяться до тех пор, пока условие цикла истинно. Третье выражение вычисляется после каждого повторения тела цикла. Оператор for реализует фундаментальный принцип вычислений в программировании - итерацию. Тело цикла повторяется для разных, в данном случае последовательных, значений переменной i. Повторение иногда называется итерацией. Мы как бы проходим по последовательности значений переменной i, выполняя с текущим значением одно и то же действие, тем самым постепенно вычисляя нужное значение. С каждой итерацией мы подходим к нему все ближе и ближе. С другим принципом вычислений в программировании - рекурсией - мы познакомимся в разделе, описывающем функции. Любое из трех выражений в заголовке цикла может быть опущено (в том числе и все три). То же самое можно записать следующим образом: int sum = 0; int i = 1; for (; i <= 100; ) { sum = sum + i; i = i + 1; } Заметим, что вместо одного оператора цикла мы записали несколько операторов, заключенных в фигурные скобки - блок. Другой вариант: int sum = 0; int i = 1; for (; ;) { if (i > 100) break; sum = sum + i;
Страницы: 1, 2, 3, 4
|