// метода, которые называются getnames, sortlist и printnames.
class list
{ private:
char names[ListLength][9];
public:
void getnames()
{ int i;
for(i = 0; i< ListLength; *+i)
cin » names[i]; }
void sortlist()
{ int i,j;
char pivot[9];
for(i = 1; i < ListLength; ++i)
{ strcpy(pivot, names[i]);
j = i - 1;
while((j >= 0) && (stremp(pivot, names[j]) < 0))
{ strcpy(names[j+1], names[j]); --j;}
strcpy(names[j+1],pivot); } }
void printnames()
{ int i;
cout « endl;
for(i = 0; i < ListLength; ++i)
cout « names[i] « endl; } }
// Создание объекта с именем namelist и обращение к нему с // требованием ввести несколько имен, отсортировать их, а // затем вывести отсортированный список на экран.void main()
{ list namelist;
namelist.getnames();
namelist.sortlist();
namelist.printnames();
1.3 Язык Java
Следующей ступенью на лестнице прогресса языков программирования стал язык Java, который первоначально назывался Oak (в переводе с англ. "дуб").
Java — это объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems в начале 90-х годов. Его разработчики много позаимствовали из языков С и C++. Будучи новым языком, Java еще не подвергался стандартизации. Действительно, язык Java все еще находится на стадии эволюции. Однако многие восторженно относятся к этому языку, поскольку он обещает стать стандартом для тех программ, которые известны как "аплеты Java" и которые можно передавать через Internet в виде выполняемых модулей и запускать на любой клиентской машине. Благодаря такой способности статичные по своей природе гипертекстовые документы можно заменить динамичными программами, с которыми пользователь сможет взаимодействовать непосредственно [7].
Пример программы на языке Java:
// Программа обработки списка
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.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; }
...продолжение...
Этот оператор позволяет организовывать дополнительные точки выхода из цикла (при дополнительных условиях).