Смекни!
smekni.com

Циклические конструкции в языках программирования высокого уровня (стр. 2 из 5)

// метода, которые называются 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. ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ В ЯЗЫКАХ ВЫСОКОГО УРОВНЯ

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&bsol;n", x);

x = x - 1;} printf("Конец.&bsol;n");

printf("x стало равно %d.&bsol;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&bsol;n", i)

i означает "номер повторения".

Такой цикл служит для повторения схожих действий несколько раз с разным значением параметра. Оператор break ("вывалиться из цикла") Оператор break заставляет прервать выполнение тела цикла и сразу перейти к продолжению программ

While (условие1) {

операторы1; if (условие2)

break; операторы2;}

...продолжение...и

for(i=0; условие1; i++){ операторы1;

if(условие2) break;операторы2; }

...продолжение...

Этот оператор позволяет организовывать дополнительные точки выхода из цикла (при дополнительных условиях).