Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ю.Ю. Громов и др. Информатика (2007)

.pdf
Скачиваний:
67
Добавлен:
16.03.2015
Размер:
10 Мб
Скачать
☆

}

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();

}

Рис. Г.3. Пример программы на языке С++

процедур такие же, как и в программе на языке С, представленной на рис. Г.2. Отличие заключается в том, что в программе на языке C++ эти операции рассматриваются как часть свойств объекта, в то время как в программе на языке С они считаются отдельными модулями той части программы, где эти процедуры описываются.

Язык FORTRAN. FORTRAN (сокращение от FORmula TRANslator – транслятор формул) был одним из первых языков программирования высокого уровня (впервые опубликован в 1957 г.) и первым языком, получившим широкое признание в компьютерном сообществе. Со временем его официальное описание претерпело многочисленные изменения, так что теперь можно встретить ссылки на языки FORTRAN IV и FORTRAN 77. Последним в этом ряду стоит FORTRAN 90, который является дальнейшим развитием языка FORTRAN 77 и обладает такими свойствами, как рекурсия и определяемые пользователем типы данных.

Несмотря на то, что язык FORTRAN критикуется многими авторами, он остается популярным в научном мире. В частности, многие пакеты программ по численному анализу и статистике написаны и, вероятно, до сих пор пишутся на языке FORTRAN. Пример программы на этом языке представлен на рис. Г.4.

!Программа обработки списка

INTEGER J,K CHARACTER(LEN=8) Pivot

CHARACTER(LEN=8) DIMENSION(10) Names

!Сначала получаем имена

READ(UNIT=5, FMT=100) (Names(K), K=l,10)

100 FORMAT(A8)

!Теперь сортируем список

OuterLoop: DO J=2,10 Pivot = Names(J) InnerLoop: DO K=J-1,1,-1

IF (Names(K) .GT. Pivot)

THEN Names(K+l) = Names(K) ELSE InnerLoop

ENDIF

END DO InnerLoop Names (K+l) = Pivot

END DO OuterLoop

!Теперь выводим отсортированный список на экран

WRITE(UNIT=6,FMT=400) (Names(K), K=l,10) 400 FORMAT('',A8)

END

Рис. Г.4. Пример программы на языке FORTRAN

//Программа обработки списка 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();

}

}

Рис. Г.5. Пример программы на языке Java

{Программа обработки списка} program InsertSort(Input, Output);

const Blanks = '

';

ListLength = 10;

 

type NameType = packed array [1 .. 8] of char; var Names: Array[l .. ListLength] of Nametype;

Pivot: Nametype; LocationFound: Boolean; J,M,N: Integer;

{ GetName - это процедура чтения отдельного имени} procedure GetName(var Name: NameType);

var J: Integer; begin J := 1;

repeat read(Name[J]); J := J+l; until (J > 8) or eoln; readln;

end; begin

{Сначала вводим имя с клавиатуры} for J := 1 to ListLength do

begin Names[J] := Blanks; Getname{Names[J]) end; {Сортируем список}

N := 2; repeat

Pivot := Name[N]; M := N - 1;

LocationFound := false; while (not LocationFound) do

if Names[M] > Pivot then

begin

Names[M+l] := Names[M];

M := M-l; if M = 0

then LocationFound := true;

end

else LocationFound := true; Names[M+l] := Pivot;

N := N + 1 until N > ListLength;

{ Теперь выводим отсортированный список на экран } for J := 1 to ListLength do writeln (Names[J])

end.

Рис. Г.6. Пример программы на языке Pascal

Язык Java. Java – это объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems в начале 90-х гг. Его разработчики много позаимствовали из языков С и C++. Будучи новым языком, Java еще не подвергался стандартизации. Действительно, язык Java все еще находится на стадии эволюции. Однако многие восторженно относятся к этому языку, поскольку он обещает стать стандартом для тех программ, которые известны как "аплеты Java" и которые можно передавать через Internet в виде выполняемых модулей и запускать на любой клиентской машине. Благодаря такой способности статичные по своей природе гипертекстовые документы можно заменить динамичными программами, с которыми пользователь сможет взаимодействовать непосредственно.

Пример программы на языке Java представлен на рис. Г.5. Обратите внимание на сходство языков Java и C++.

Язык Pascal назван в честь французского математика и изобретателя Блеза Паскаля (Blaise Pascal) (1623 – 1662). Разработанный Никлаусом Виртом (Niklaus Wirth) в 1971 г., этот язык подвергался многочисленным более поздним улучшениям, в частности особое внимание было уделено типам данных, созданным в дополнение к структурам, разработан синтаксис со свободным форматом, и добавлены многочисленные управляющие структуры. Сегодня Pascal используется в основном при обучении компьютерным наукам, поскольку способствует выработке у обучающихся организованного подхода к разработке программ. Пример программы на языке Pascal представлен на рис. Г.6.

СПИСОК ЛИТЕРАТУРЫ

1.Брукшир, Дж. Глен. Введение в компьютерные науки. Общий обзор, 6-еизд. / Дж. ГленБрукшир. – М. : Издательский дом

"Вильямс", 2001. – 688 с.

2.Симонович, С.В. Информатика : базовыйкурс/ С.В. Симонович идр. – СПб. : Питер. 2002. – 640 с.

3.Острейковский, В.А. Информатика : учебник для вузов / В.А. Острейковский – М. : Высшая школа, 1999. – 511 с.

4.Каймин, В.А. Информатика: учебникдлявузов / В.А. Каймин. – М. : ИНФРА-М, 2000. – 232 с.

5.Могилев А.В. Информатика : учебное пособие для пед. учеб. заведений / А.В. Могилевидр. ; подред. Е.К. Хеннера. –

М. : Академия, 2000. – 816 с.

6.Информатика : энциклопед. словарь для начинающих / под общ. ред. Д.А. Поспелова. – М. : Педагогика Пресс, 1994. – 352 с.

7.Экономическая информатика / под ред. П.В. Конюховского, Д.Н. Колесова. – СПб. : Питер, 2000. – 560 с.

8.Информатикадляюристов иэкономистов/ подред. С.В. Симоновича. – СПб. : Питер, 2001. – 688 с.

9.Информатика: учебникдлявузов / подред. Н.В. Макаровой. – 3-еизд., перераб. – М. : Финансы и статистика, 2001. – 768с.

10.Жаров, А.В. "Железо" IBM 99 или все о современном компьютере. – 6-е изд., испр. и доп. / А.В. Жаров. – М. : Микро-

Арт, 1999. – 352 с.

11.Компьютерные сети : учебный курс ; пер. с англ. – 2-е изд., испр. и доп. – М. : Изд. отдел "Рус. редакция" ТОО "Chаnnel Traing Ltd", 1998. – 696 с.

12.Бекон, Д. Операционные системы / Д. Бекон, Т. Харрис. – СПб. : Питер, 2004. – 800 с.

13.Олифер, В.Г. Компьютерные сети: Принципы, технологии, протоколы : учебное пособие для вузов / В.Г. Олифер, Н.А. Олифер. – СПб. : Питер, 2001. – 672 с.

14.Анин, Б.Ю. Защитакомпьютерной информации / Б.Ю. Анин. – СПб. : БХВ-Санкт-Петербург, 2000. – 384 с.

15.Епанешников, А.М. ПрограммированиевсредеTurboPascal 7.0 / А.М. Епанешников, В.А. Епанешников. – М. : Диалог-

МИФИ, 1995. – 288 с.

16.Системный анализ в информационных технологиях / Ю.Ю. Громов, Н.А. Земской, А.В. Лагутин, О.Г. Иванова, В.М. Тютюнник. – Тамбов : Изд-во Тамб. гос. техн. ун-та, 2004. – 176 с.

17.Немнюгин С.А. TurboPascal : практикум / С.А. Немнюгин. – СПб. : Питер, 2001. – 256 с.

18.Решение инженерных и экономических задач на языке С++ / Ю.Ю. Громов, С.И. Татаренко, В.М. Тютюник, А.В. Лагутин, О.Г. Иванова. – Тамбов : Изд-во МИНЦ, 2003. – 312 c.

19.Орлов, С. Технологияразработки программногообеспечения / С. Орлов. – СПБ. : Питер. 2002. – 464 с.

ОГЛАВЛЕНИЕ

ПРЕДИСЛОВИЕ ……………………………………………………..

3

ВВЕДЕНИЕ …………………………………………………………..

4

1. ХРАНЕНИЕ ДАННЫХ …………………………………………

7

1.1.Основная память ………………………………………... 7

1.2.Запоминающие устройства большой емкости ………... 15

1.3. Представление целых чисел …………………………… 23

1.4.Представление дробных чисел* ………………………. 29

1.5.

Представление текста, изображений и звука …………

33

1.6.

Сжатие данных* …………………………………………

39

1.7.Ошибки при передаче информации* ………………….. 46

Упражнения …………………………………………….. 51

Ответы на вопросы для самопроверки ………………… 59

2.ОБРАБОТКА ДАННЫХ ………………………………………. 65 2.1. Центральный процессор ……………………………….. 65

2.2. Машинный язык ………………………………………… 69

2.3.Выполнение программы ……………………………….. 74

2.4. Арифметические и логические команды ………………

80

2.5.

Взаимодействие ЦП с периферийными устройствами*

85

2.6.

Другие типы архитектуры компьютеров* …………….

91

 

Упражнения ……………………………………………..

96

 

Ответы на вопросы для самопроверки ………………..

104

3.ОПЕРАЦИОННЫЕ СИСТЕМЫ И СЕТИ ……………………. 109

3.1.

Эволюция операционных систем ………………………

109

3.2.

Архитектура операционных систем ……………………

114

3.3.Координация действий машины ………………………. 122

3.4. Организация конкуренции между процессами* ……… 127

3.5.Сети ……………………………………………………… 133

3.6.Сетевые протоколы* ……………………………………. 142

3.7.Безопасность …………………………………………….. 154

Упражнения ……………………………………………..

157

Ответы на вопросы для самопроверки …………………

162

4.АЛГОРИТМЫ ………………………………………………….. 166

4.1.Понятие алгоритма ……………………………………... 166

4.2. Представление алгоритма ……………………………… 169

4.3.Создание алгоритма ……………………………………. 177

4.4.Итерационные структуры ………………………………. 185

4.5.Рекурсивные структуры ………………………………... 196

4.6.Эффективность и правильность ……………………….. 206

Упражнения …………………………………………….. 219

Ответы на вопросы для самопроверки ………………… 226

5.ЯЗЫКИ ПРОГРАММИРОВАНИЯ ……………………………. 230

5.1.Эволюция и классификация ……………………………. 230

5.2.Концепции традиционного программирования ………. 241

5.3.Процедуры и функции ………………………………….. 257

5.4.Реализация языка ……………………………………….. 264

5.5.Объектно-ориентированное программирование* ……. 275

5.6.Программирование параллельных процессов* ………. 279

5.7.Декларативное программирование* …………………... 283

Упражнения ……………………………………………..

289

Ответы на вопросы для самопроверки …………………

294

6.ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ …………………... 298

6.1.Предмет технологии разработки программного обес-

печения ………………………………………………….. 298

6.2.Жизненный цикл программного обеспечения ……….. 301

6.3.Модульность ……………………………………………. 308

6.4.Методы проектирования ………………………………. 315

6.5. Тестирование …………………………………………… 323

6.6.Документирование …………………………………….. 325

6.7.Право собственности и ответственность за создавае-

мое программное обеспечение

328

Упражнения ……………………………………………..

331

Ответы на вопросы для самопроверки …………………

334

СПИСОК ЛИТЕРАТУРЫ …………………………………………..

338

ПРИЛОЖЕНИЯ ………………………………………………………

340

Для заметок