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

Laboratornyy_praktikum_Programmirovanie_na_C

.pdf
Скачиваний:
38
Добавлен:
02.02.2015
Размер:
1.93 Mб
Скачать

Зулин Б.Д.

Лабораторный практикум

Информатика

Программирование на языке C#

Харьков, 2011

ВНИМАНИЕ!

До завершения написания всего учебника распространять его по сети и размещать на любых сетевых ресурсах ЗАПРЕЩАЕТСЯ!

1

Оглавление

 

Лабораторная работа 1. Microsoft Visual Studio C#. Среда программирования

.............. 7

1.1. Алгоритмы, программирование, языки ...................................................................

7

1.2. Блок-схемы ...............................................................................................................

10

1.3. компиляторы и интерпретаторы ............................................................................

11

1.4. .NET Framework .......................................................................................................

11

1.5. Язык программирования C#. Мотивы выбора......................................................

12

1.6. Использование компилятора командной строки ..................................................

13

1.7. Запуск пакета Visual Studio, начальная страница.................................................

15

1.8. Проекты ....................................................................................................................

16

1.9. Редактирование и запуск программы в IDE..........................................................

17

1.10. Отладка ...................................................................................................................

19

1.11. Справочная система...............................................................................................

20

1.12. Изменение проекта ................................................................................................

20

Лабораторная работа 2. типы данных, операторы ввода/вывода ..................................

23

2.1. Структура программы .............................................................................................

23

2.2. Типы данных, константы и переменные ...............................................................

24

2.2.1. Целые типы.......................................................................................................

25

2.2.2. Дробные (вещественные) типы ......................................................................

26

2.2.3. Логический тип ................................................................................................

26

2.2.4. Строковый тип..................................................................................................

26

2.2.5. Приведение типов ............................................................................................

26

2.2.6. Использование текстовых типов ....................................................................

27

2.3. Арифметические операторы, приоритет ...............................................................

29

2.4. Операторы ввода/вывода ........................................................................................

31

2.4.1. Операторы ввода ..............................................................................................

31

2.4.2. Операторы вывода ...........................................................................................

32

2.4.3. Форматированный вывод ................................................................................

33

2.4.4. Перенаправление ввода/вывода......................................................................

38

2.5. Программирование ..................................................................................................

39

2.5.1. Задача 1. Вычисление объѐма цилиндра.......................................................

39

2.5.2. Задача 2. Вычисление радиуса основания и высоты конуса ......................

39

2.5.3. Задача 3. Вычисление высоты ........................................................................

39

2

 

2.5.4. Задача 4. Найти массу шайбы .........................................................................

39

2.5.5. Задача 5. Кинематика.......................................................................................

39

Лабораторная работа 3. Логические выражения ..............................................................

41

3.1. Логические выражения ...........................................................................................

41

3.2. Поразрядные логические операторы .....................................................................

43

3.2.1. Упаковка данных логическими операторами................................................

44

3.2.2. Вычисление адреса подсети и номера компьютера......................................

46

3.2.3. Проверка нечѐтности .......................................................................................

48

3.2.4. Логические операторы в шифровании данных .............................................

49

3.3. Программирование ..................................................................................................

49

3.3.1. Задача. Чѐтность...............................................................................................

49

3.3.2. Задача. Поразрядные операторы ....................................................................

50

3.3.3. Задача. Взаимозаменяемость логических операторов..................................

50

3.3.4. Задача. Логические элементы в электронике** ............................................

50

Лабораторная работа 4. Условные операторы..................................................................

52

4.1. Операторы безусловного перехода ........................................................................

52

4.2. Операторы условия..................................................................................................

52

4.3. Внутристроковый условный оператор ..................................................................

55

4.4. Оператор выбора......................................................................................................

55

4.5. Программирование ..................................................................................................

57

4.5.1. Задача. Ветвление вычисления .......................................................................

57

4.5.2. Задача. Вложенные условия............................................................................

58

4.5.3. Задача. Максимум и минимум ........................................................................

58

4.5.4. Задача. Операторы выбора ..............................................................................

58

Лабораторная работа 5. Циклы ..........................................................................................

59

5.1. Понятие и организация цикла ................................................................................

59

5.2. Оператор цикла for ..................................................................................................

61

5.3. Операторы цикла while и do-while .........................................................................

63

5.4. Операторы break и continue.....................................................................................

64

5.5. Программирование ..................................................................................................

66

5.5.1. Задача. Сумма последовательности ...............................................................

66

5.5.2. Задача. Произведение последовательности...................................................

66

5.5.3. Задача. Сумма последовательности ...............................................................

66

5.5.4. Задача. Сумма последовательности ...............................................................

66

5.5.5. Задача. Максимальный делитель....................................................................

66

3

 

5.5.6. Задача. Шахматная доска ................................................................................

66

Лабораторная работа 6. Подпрограммы (методы) ...........................................................

68

6.1. Методы......................................................................................................................

68

6.1.1. Задача. Использование вычислений для любых значений ..........................

70

6.1.2. Задача. Технологические вычисления ...........................................................

70

6.2. Пример элементов интерактивной игры ...............................................................

70

6.2.1. Задача. Добавление реакции на клавиши ......................................................

74

6.2.2. Задача. Добавление счѐтчика игры ................................................................

75

6.2.3. Задача. Добавление автоматического движения*.........................................

75

6.2.4. Задача. Добавление хвоста**..........................................................................

76

6.2.5. Задача. Наведение глянца................................................................................

76

Лабораторная работа 7. Классы и объекты.......................................................................

78

7.1. объектно-ориентированное программирование ...................................................

78

7.1.1. Классы, объекты...............................................................................................

78

7.1.2. Абстракция .......................................................................................................

78

7.1.3. Инкапсуляция ...................................................................................................

79

7.1.4. Полиморфизм ...................................................................................................

80

7.1.5. Наследование....................................................................................................

80

7.1.6. Оператор new ....................................................................................................

80

7.1.7. Конструкторы ...................................................................................................

81

7.1.8. Принципы дизайна классов.............................................................................

81

7.2. Демонстрация использования объектов ................................................................

82

7.3. Программирование ..................................................................................................

84

7.3.1. Пример. Физика. Кинематика .........................................................................

84

7.3.2. Задача. Объект сфера .......................................................................................

85

7.3.3. Задача. Объект труба .......................................................................................

85

Лабораторная работа 8. Массивы ......................................................................................

87

8.1. Генерация случайных чисел ...................................................................................

87

8.2. Одномерные массивы..............................................................................................

89

8.2.1. Задача. Среднее арифметическое ...................................................................

94

8.2.2. Задача. ...............................................................................................................

94

8.3. Многомерные массивы ...........................................................................................

94

8.3.1. Задача. Среднее арифметическое области матрицы.....................................

97

8.3.2. Задача. Диагонали матрицы ............................................................................

97

8.4. Ступенчатые массивы .............................................................................................

97

4

 

8.5. Оператор цикла foreach ...........................................................................................

98

8.6. Возврат массива из метода .....................................................................................

99

Лабораторная работа 9. Строки .......................................................................................

100

9.1. Строки.....................................................................................................................

100

9.2. Операции со строками...........................................................................................

102

9.2.1. Задача. Замена подстроки..............................................................................

102

9.2.2. Конвейерная передача результата ................................................................

102

9.2.3. Посимвольный перебор .................................................................................

103

9.2.4. Использование шаблона ................................................................................

104

9.2.5. Разбор командной строки..............................................................................

104

9.3. Программирование ................................................................................................

104

9.3.1. Задача. Реверс строки ....................................................................................

104

9.3.2. Задача. Поиск количества слов .....................................................................

105

9.3.3. Задача. Поиск количества слов в предложении ..........................................

105

9.3.4. Задача. Поиск количества слов в предложении 2* .....................................

105

9.3.5. Задача. Поиск количества слов в предложении 3* .....................................

105

9.3.6. Задача. Поиск самого короткого и длинного слова* ..................................

105

9.3.7. Задача. Поиск количества предложений*....................................................

105

9.3.8. Задача. Удаление лишних пробелов.............................................................

105

9.3.9. Задача. Преобразование числа в текст* .......................................................

105

9.3.10. Задача. Преобразование числа в текст 2* ..................................................

105

9.3.11. Задача. Преобразование числа в текст 3** ................................................

106

Лабораторная работа 10. Структуры, перечисления......................................................

107

10.1. Структуры.............................................................................................................

107

10.2. Перечисления .......................................................................................................

108

10.3. Коллекции.............................................................................................................

110

10.3.1. Задание ..........................................................................................................

116

Лабораторная работа 11. Файлы ......................................................................................

117

11.1. Файлы....................................................................................................................

117

11.2. Программирование ..............................................................................................

117

11.2.1. Задача. ...........................................................................................................

117

Лабораторная работа 12. Формы. Конструирование интерфейса ...............................

118

12.1. Формы ...................................................................................................................

118

12.2. Программирование ..............................................................................................

119

12.2.1. Задача. Вычисление квадратного корня ....................................................

119

5

 

12.2.2. Задача. Калькулятор ....................................................................................

119

Лабораторная работа 13. Формы. Компоненты..............................................................

120

13.1. Формы ...................................................................................................................

120

13.2. Программирование ..............................................................................................

120

13.2.1. Задача. ...........................................................................................................

120

Лабораторная работа 14. Библиотеки. API .....................................................................

121

14.1. Библиотеки ...........................................................................................................

121

14.2. Программирование ..............................................................................................

121

14.2.1. Задача. ...........................................................................................................

121

Лабораторная работа 15. Графика ...................................................................................

122

15.1. Графика.................................................................................................................

122

15.2. Программирование ..............................................................................................

122

15.2.1. Задача. ...........................................................................................................

122

Список источников.......................................................................................................

122

6

ЛАБОРАТОРНАЯ РАБОТА 1. MICROSOFT VISUAL STUDIO C#. СРЕДА ПРОГРАММИРОВАНИЯ

Цель работы: Рассмотреть возможности получения исполняемых программ из текста кода. Ознакомиться с интерфейсом Microsoft Visual Studio C#, рассмотреть основные панели и окна пакета, справочную систему, ознакомиться с процессом отладки.

1.1. АЛГОРИТМЫ, ПРОГРАММИРОВАНИЕ, ЯЗЫКИ

Ал ор тм, от имени учѐного аль-Хорезми (перс.) – точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. [1]

Формальные свойства алгоритмов:

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

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

Понятность – алгоритм для исполнителя должен включать только те команды, которые ему (исполнителю) доступны, которые входят в его систему команд.

Завершаемость (конечность) – при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0.

Массовость (универсальность). Алгоритм должен быть применим к разным наборам исходных данных.

Результативность – завершение алгоритма определѐнными результатами.

Алгоритм содержит ошибки, если приводит к получению неправильных результатов либо не даѐт результатов вовсе.

Алгоритм не содержит ошибок, если он даѐт правильные результаты для любых допустимых исходных данных.

Компьют рн я про р мм – последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины; «представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с

7

целью получения определенного результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения.»; размещѐнные в оперативной памяти компьютера данные и машинные коды, исполняемые процессором для достижения некоторой цели.

Б бл от к (от англ. library) – сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО). В некоторых языках программирования то же, что модуль, в некоторых – несколько модулей. С точки зрения операционной системы (ОС) и прикладного ПО библиотеки разделяются на динамические (загружаемые по запросу программы в ходе выполнения) и статические (исходный код или компилированные блоки, вставляемые в программу при сборке).

Я ык про р мм ро н я – формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.

Т пы я ыко про р мм ро н я:

Функциональное программирование – раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). Тексты программ на функциональных языках программирования описывают «как решить задачу», но не предписывают последовательность действий для решения. (Lisp, Hope, Miranda, Haskel, ML, F#, Erlang)

Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 1940-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием Машина Тьюринга. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней. (Fortran, Cobol, Pascal, C, Ada, Basic, Modula-2, PL/1)

Стековый язык программирования (англ. stack-oriented programming language) –

это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript, а также многие ассемблерные языки (использующие эту модель на низком уровне – Java, C#). При использовании стека, в качестве основного канала передачи параметров между словами, элементы языка, естественным образом,

8

образуют фразы (последовательное сцепление). Это свойство сближает данные языки с естественными языками.

екларативные языки – языки высокого уровня, в которых программистом не задается пошаговый алгоритм решения задачи («как» решить задачу), а некоторым образом описывается, «что» требуется получить в качестве результата. Механизм обработки сопоставление по образцу декларативных утверждений уже реализован в устройстве языка. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил, Prolog).

инамический язык позволяет определять типы данных и осуществлять синтаксический анализ и компиляцию «на лету», непосредственно на этапе выполнения. Динамические языки больше подходят для быстрой разработки приложений. (Perl, Python, PHP, Ruby,Smalltalk, JavaScript)

Учебный язык программирования – язык программирования, предназначенный для обучения специалистов программированию. Такой язык должен отвечать главному требованию: простота. Чем проще он будет, тем быстрее его освоит новичок. Возможности таких языков могут быть ниже чем возможности полноценных, но они не предназначены для серьѐзной работы. (Basic, КуМ р, Ло о,

Роб к, Р п р , Проло , Скр тч, Форт, Postscript, С , П ск ль, Forth, PascalABC.NET)

IDL, или язык описания интерфейсов (англ. Interface Description Language или

Interface Definition Language) – язык спецификаций для описания интерфейсов. Объектно-ориентированный язык программирования (ОО-язык) – язык,

построенный на принципах объектно-ориентированного программирования, в основе концепции которого лежит понятие объекта – некоей субстанции, которая объединяет в себе поля (данные) и методы (выполняемые объектом действия). (C#, C++, Java,

Delphi, Eiffel, Simula, D, Io, Objective-C, Object Pascal, VB.NET, Visual DataFlex, Perl, PowerBuilder, Python, Scala, ActionScript (3.0), JavaScript, JScript .NET, Ruby, Smalltalk, Ada, Xbase++, X++, Vala, PHP)

Рефлексивные – поддерживающие отражение (синоним интроспекция, англ. reflection). Языки, позволяющие создать процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения.

огическое программирование – парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

(Prolog)

Скриптовый язык (англ. scripting language, в русскоязычной литературе принято название язык сценариев) – язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (batch languages или job control languages). Сценарии обычно интерпре-

тируются, а не компилируются (хотя всѐ чаще применяют компиляцию каждый раз перед запуском). В прикладной программе, сценарий (скрипт) – это программа,

9

которая автоматизирует некоторую задачу, которую без сценария пользователь делал бы вручную, используя интерфейс программы.

1.2. БЛОК-СХЕМЫ

Для отображения алгоритма решения задачи довольно часто используют графическое представление – блок-схему. Блок-схема представляет собой совокупность связанных линиями со стрелками блоков, обозначающих определѐнные действия.

Таблица 1.1 – Элементы блок-схемы

Н м но н

 

Обо н ч н

Поясн н

 

с м ол

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало/конец

 

 

 

 

 

Начало, конец, останов программ, вход

 

 

 

 

 

и выход в подпрограммах

 

 

 

 

 

 

 

 

 

 

 

 

 

Процесс

 

 

 

 

 

Последовательность вычислительных

 

 

 

 

 

 

 

 

 

 

действий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подпроцесс

 

 

 

 

 

Вычисления по подпрограмме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Данные

 

 

 

 

 

Преобразование данных,

 

 

 

 

 

ввод/вывод на терминал

 

 

 

 

 

 

 

 

 

 

 

 

 

Документ

 

 

 

 

 

Вывод, печать результатов

 

 

 

 

 

на бумаге

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение

 

 

 

 

 

Проверка условий, оператор ветвления

 

 

 

 

 

 

 

Модификация

 

 

 

 

 

Начало цикла (с предусловием)

 

 

 

 

 

 

 

Соединитель

 

 

 

 

 

Ссылка на текущую страницу

 

 

 

 

 

 

 

Соединитель

 

 

 

 

 

Ссылка на другую страницу

 

 

 

 

 

 

 

Различают следующие типы базовых конструкций алгоритмов (рис.1.1): линейный, разветвляющийся, циклический.

Линейный алгоритм не содержит логических условий и имеет одну ветвь вычислений.

Разветвляющийся алгоритм имеет хотя бы один условный блок, и соответственно несколько ветвей вычислений.

10