Программирование на С#

Особенности и принципы построения языка программирования С#. Основные конструкции языка и типы данных. Характеристика среды разработки Visual Studio 2010. Работа с базовыми элементами управления. Указания и задания для выполнения лабораторных работ.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 11.12.2020
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Выражение определяет условие выполнения цикла: если его результат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с параметром реализован как цикл с предусловием. В блоке выражение через запятую можно записать несколько логических выражений, тогда запятая равносильна операции логическое И (&&).

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

Оператор (простой или составной) представляет собой тело цикла.

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

Пример формирования строки состоящей из чисел от 0 до 9 разделенных пробелами:

string s = ""; // Инициализация строки

for (int i = 0; i <= 9; i++) // Перечисление всех чисел

s += i.ToString() + " "; // Добавляем число и пробел

MessageBox.Show(s.ToString()); // Показываем результат

Данный пример работает следующим образом. Сначала вычисляется начальное значение переменной i. Затем, пока значение i меньше или равно 9, выполняется тело цикла и затем повторно вычисляется значение i. Когда значение i становится больше 9, условие становится ложным и управление передается за пределы цикла.

Средства отладки программ

Практически в каждой вновь написанной программе после запуска обнаруживаются ошибки.

Ошибки первого уровня (ошибки компиляции) связаны с неправильной записью операторов (орфографические, синтаксические). При обнаружении ошибок компилятор формирует список, который отображается по завершению компиляции (рис. 4.1). При этом возможен только запуск программы, которая была успешно скомпилирована для предыдущей версии программы.

Рис. 4.1. Окно со списком ошибок компиляции.

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

Ошибки второго уровня (ошибки выполнения) связаны с ошибками выбранного алгоритма решения или с неправильной программной реализацией алгоритма. Эти ошибки проявляются в том, что результат расчета оказывается неверным либо происходит переполнение, деление на ноль и др. Поэтому перед использованием отлаженной программы ее надо протестировать, т.е. сделать просчеты при таких комбинациях исходных данных, для которых заранее известен результат. Если тестовые расчеты указывают на ошибку, то для ее поиска следует использовать встроенные средства отладки среды программирования.

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

Рис. 4.2. Фрагмент кода с точкой останова

При выполнении программы и достижения установленной точки, программа будет остановлена, и далее можно будет выполнять код по шагам с помощью команд Отладка > Шаг с обходом (без захода в методы) или Отладка > Шаг с заходом (с заходом в методы) (рис 4.3).

Рис. 4.3. Отладка программы

Желтым цветом выделяется оператор, который будет выполнен. Значение переменных во время выполнения можно увидеть, наведя на них курсор. Для прекращения отладки и остановки программы нужно выполнить команду меню Отладка > Остановить отладку.

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

Порядок выполнения задания

Задание: Вычислить и вывести на экран таблицу значений функции y=a·ln(x) при x, изменяющемся от x0 до xk с шагом dx, a - константа.

Панель диалога представлена на рис 4.4.

Рис. 4.4. Окно программы для табулирования функции.

Текст обработчика нажатия кнопки Вычислить приведен ниже.

private void button1_Click(object sender, EventArgs e)

{

// Считывание начальных данных

double x0 = Convert.ToDouble(textBox1.Text);

double xk = Convert.ToDouble(textBox2.Text);

double dx = Convert.ToDouble(textBox3.Text);

double a = Convert.ToDouble(textBox4.Text);

textBox5.Text = "Работу выполнил ст. Иванов М.А." +

Environment.NewLine;

// Цикл для табулирования функции

double x = x0;

while (x <= (xk + dx / 2))

{

double y = a * Math.Log(x);

textBox5.Text += "x=" + Convert.ToString(x) +

"; y=" + Convert.ToString(y) +

Environment.NewLine;

x = x + dx;

}

}

После отладки программы следует проверить правильность работы программы с помощью контрольного примера, приведенного на рис. 4.4. Установите точку останова на оператор перед циклом и запустите программу. После попадания на точку остановки, выполните пошагово программу и проследите, как меняются все переменные в процессе выполнения.

Индивидуальные задания

Составьте программу табулирования функции y(x), выведите на экран значения x и y(x). Нужный вариант задания выберите из нижеприведенного списка по указанию преподавателя. Откорректируйте элементы управления в форме в соответствии со своим вариантом задания.

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

Цель лабораторной работы: изучить основные понятия, относящиеся к классам и объектам, освоить динамическое создание объектов в программном коде.

Классы и объекты

В объектно-ориентированном подходе существуют понятия класс и объект.

Класс - это программная единица, которая задаёт общий шаблон для конкретных объектов. Класс содержит все необходимые описания переменных, свойств и методов, которые относятся к объекту. Примером класса в реальной жизни является понятие «автомобиль»: как правило, автомобиль содержит некоторое количество колёс, дверей, имеет какой-то цвет, но эти конкретные детали в классе не описываются.

Объект - это экземпляр класса. Свойства объекта содержат конкретные данные, характерные для данного экземпляра. В реальной жизни примером объекта будет конкретный экземпляр автомобиля с 4 колёсами, 5 дверками и синего цвета.

Динамическое создание объектов

Чаще всего для размещения на форме кнопки, поля ввода или других управляющих элементов используется дизайнер среды Visual Studio: нужный элемент выделяется в панели элементов и размещается на форме. Однако иногда создавать элементы нужно уже в процессе выполнения программы. Поскольку каждый элемент управления представляет собой отдельный класс, его помещение на форму программным способом включает несколько шагов:

· Создание экземпляра класса

· Привязка его к форме

· Настройка местоположения, размеров, текста и т. п.

Например, чтобы создать кнопку, нужно выполнить следующий код (его следует разместить в обработчике сообщения Load или в каком-либо другом методе):

Button b = new Button();

Здесь объявляется переменная b, относящаяся к классу Button, как и в предыдущих лабораторных работах. Однако дальше идёт нечто новое: с помощью оператора new создаётся экземпляр класса Button и ссылка на него присваивается переменной b. При этом выполняется целый ряд дополнительных действий: выделяется память под объект, инициализируются все свойства и переменные.

Далее нужно добавить объект на форму. Для этого служит свойство Parent, которое определяет родительский элемент, на котором будет размещена кнопка:

b.Parent = this;

Ключевое слово this относится к тому объекту, в котором размещён выполняемый в данный момент метод. Поскольку все методы в лабораторных работах размещаются в классе формы, то и this относится к этому конкретному экземпляру формы.

Вместо формы кнопку можно поместить на другой контейнер. Например, если на форме есть элемент управления Panel, то можно поместить кнопку на него следующим образом:

b.Parent = panel1;

Чтобы задать положение и размеры кнопки нужно использовать свойства Location и Size:

b.Location = new Point(10, 20);

b.Size = new Size(200, 100);

Обратите внимание, что Location и Size - это тоже объекты. Хотя внутри у Location содержатся координаты x и y, задающие левый верхний угол объекта, не получится поменять одну из координат, нужно менять целиком весь объект Location. То же самое относится и к свойству Size.

На самом деле, каждый раз, когда на форму помещается новый элемент управления или вносятся какие-то изменения в свойства элементов управления, Visual Studio генерирует специальный служебный код, который проделывает приведённые выше операции по созданию и настройке элементов управления. Попробуйте поместить на форму кнопку, изменить у неё какие-нибудь свойства, а затем найдите в обозревателе решений ветку формы Form1, разверните её и сделайте двойной щелчок по ветке Form1.Designer.cs. Откроется файл с текстом программы на языке C#, которую среда создала автоматически. Менять этот код вручную крайне не рекомендуется! Однако можно его изучить, чтобы понять принципы создания элементов управления в ходе выполнения программы.

Область видимости

Переменные, объявленные в программе, имеют область видимости. Это значит, что переменная, описанная в одной части программы, не обязательно будет видна в другой. Вот наиболее часто встречающиеся ситуации:

· Переменные, описанные внутри метода, не будут видны за пределами этого метода. Например:

void MethodA()

{

// Описываем переменную delta

int delta = 7;

}

void MethodB()

{

// Ошибка: переменная delta в этом методе неизвестна!

int gamma = delta + 1;

}

· Переменные, описанные внутри блока или составного оператора, видны только внутри этого блока. Например:

void Method()

{

if (a == 7)

{

int b = a + 5;

}

// Ошибка: переменная b здесь уже неизвестна!

MessageBox.Show(b.ToString());

}

· Переменные, описанные внутри класса, являются глобальными и доступны для всех методов этого класса, например:

class Form1 : Form

{

int a = 5;

void Method()

{

// Переменная a здесь действительна

MessageBox.Show(a.ToString());

}

}

Операции is и as

Часто бывает удобно переменные разных классов записать в один список, чтобы было легче его обрабатывать. Чтобы проверить к какому классу принадлежит какой-либо объект, можно использовать оператор is: он возвращает истину, если объект принадлежит указанному классу. Пример:

Button b = new Button();

if (b is Button)

MessageBox.Show("Это кнопка!");

else

MessageBox.Show("Это что-то другое...");

Как правило, в общих списках объекты хранятся в «обезличенном» состоянии, так, чтобы у всех у них был лишь минимальный общий для всех набор методов и свойств. Для того чтобы получить доступ к расширенным свойствам объекта, нужно привести его к исходному классу с помощью операции приведения as:

(someObject as Button).Text = "Это кнопка!";

Следует помнить, что операция приведения сработает только в том случае, если объект изначально принадлежат тому классу, к которому его пытаются привести (или совместим с ним), в противном случае оператор as выбросит исключение и остановит выполнение программы. Поэтому более безопасный подход состоит в комбинированном применении операторов as и is: сначала проверяем совместимость объекта и класса, и только потом выполняем операцию приведения:

if (someObject is Button)

(someObject as Button).Text = "Это кнопка!";

В качестве практического примера использования этих операций рассмотрим пример программы, которая перебирает все элементы управления на форме, и у кнопок (но не у других элементов управления!) заменяет текст на пять звездочек «*****»:

private void Form1_Load(object sender, EventArgs e)

{

// Перебираем все элементы управления

foreach (Control c in this.Controls)

if (c is Button) // Кнопка?

(c as Button).Text = "*****"; // Да!

}

Сведения, передаваемые в событие

Когда происходит какое-либо событие (например, событие Click при нажатии на кнопку), в обработчик этого события передаются дополнительные сведения об этом событии в параметре e.

Например, при щелчке кнопки мыши на объекте возникает событие MouseClick. Для этого события параметр e содержит целый ряд переменных, которые позволяют узнать информацию о нажатии:

· Button - какая кнопка была нажата;

· Clicks - сколько раз была нажата и отпущена кнопка мыши;

· Location - координаты точки, на которую указывал курсор в момент нажатия, в виде объекта класса Point;

· X и Y - те же координаты, только в виде отдельных переменных.

Индивидуальные задания

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

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

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

3. На форме размещен элемент управления Panel. Написать программу, которая при щелчке мыши на элементе управления Panel добавляет в него кнопки Button, а при щелчке на форме в нее добавляются поля ввода TextBox.

4. Написать программу, добавляющую на форму кнопки. Кнопки добавляются в узлы прямоугольной сетки. Расстояния между кнопками и расстояния между крайней кнопкой и границей окна должны быть равны как по горизонтали, так и по вертикали.

5. Разработать программу, при щелчке мыши динамически порождающую на окне кнопки или поля ввода. Каждый четный элемент управления является кнопкой, нечетный - полем ввода. Левый верхний угол кнопки определяется местоположением курсора при щелчке. Для поля ввода положение курсора определяет координаты правого нижнего угла.

6. Создать программу с кнопкой, меткой и полем ввода. При щелчке на соответствующий элемент на форме динамически должен создаваться подобный ему элемент. Предусмотреть возможность вывода количества кнопок, меток и полей ввода.

7. Создать программу, добавляющую различные элементы управления на форму и на панель Panel. Тип элементов управления выбирается случайным образом. Предусмотреть возможность вывода информации о количестве элементов по типам и информацию о расположении элементов.

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

9. Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента управления определяется местоположением курсора при щелчке. При нажатии правой кнопки мыши на форме с нее удаляются все кнопки.

10. Разработать программу с двумя кнопками на форме. При нажатии на первую на форму добавляется одна панель Panel. При нажатии на вторую кнопку в каждую панель добавляется поле ввода.

11. Разработать программу с двумя кнопками на форме. При нажатии на первую на форму добавляется одна кнопка или поле ввода. При нажатии на вторую кнопку каждое поле увеличивается по вертикали в два раза.

12. Написать программу с кнопкой и тремя полями ввода. При нажатии на кнопку программа анализирует содержимое первого поля и динамически порождает элемент управления. Если в первом поле ввода содержится буква «К», то на форму добавляется кнопка, если «П» - поле ввода, если «М» - метка. Во втором и третьем поле ввода содержатся координаты левого верхнего угла будущего элемента управления.

13. Разработать программу, добавляющую на форму метки с текстом. Местоположение и размеры меток определяются в программе динамически через поля ввода. В заголовок окна, анализируя размер всех меток, вывести количество маленьких и больших меток. Маленькой меткой считается метка размером менее 50 пикселей по горизонтали и по вертикали.

14. Создать программу с двумя кнопками на форме, динамически порождающую на окне метки или поля ввода. При нажатии на первую кнопку каждая метка увеличивается по горизонтали в два раза. При нажатии на вторую кнопку каждое поле уменьшается по вертикали в два раза.

15. Разработать программу, динамически порождающую на окне кнопки и поля ввода. Координаты элемента управления определяется случайным образом. Элементы управления не должны накладываться друг на друга. Если нет возможности добавить элемент управления (нет места для размещения элемента), то предусмотреть вывод информации об этом.

16. Разработать программу, динамически порождающую на окне кнопки и поля ввода. Координаты элемента управления определяется случайным образом. При наведении курсора на элемент управления он должен быть удален с формы.

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

Цель лабораторной работы: изучить правила работы с элементом управления ListBox. Написать программу для работы со строками.

Строковый тип данных

Для хранения строк в языке C# используется тип string. Чтобы объявить (и, как правило, сразу инициализировать) строковую переменную, можно написать следующий код:

string a = "Текст";

string b = "строки";

Над строками можно выполнять операцию сложения - в этом случае текст одной строки будет добавлен к тексту другой:

string c = a + " " + b; // Результат: Текст строки

Тип string на самом деле является псевдонимом для класса String, с помощью которого над строками можно выполнять ряд более сложных операций. Например, метод IndexOf может осуществлять поиск подстроки в строке, а метод Substring возвращает часть строки указанной длины, начиная с указанной позиции:

string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int index = a.IndexOf("OP"); // Результат: 14 (счёт с 0)

string b = a.Substring(3, 5); // Результат: DEFGH

Если требуется добавить в строку специальные символы, это можно сделать с помощью escape-последовательностей, начинающихся с обратного слэша:

Escape-последовательность

Действие

\"

Кавычка

\\

Обратная косая черта

\n

Новая строка

\r

Возврат каретки

\t

Горизонтальная табуляция

Более эффективная работа со строками

Строки типа string представляют собой неизменяемые объекты: после того, как строка инициализирована, изменить её уже нельзя. Рассмотрим для примера следующий код:

string s = "Hello, ";

s += "world!";

Здесь компилятор создаёт в памяти строковый объект и инициализирует его строкой «Hello, », а затем создаёт другой строковый объект и инициализирует его значением первого объекта и новой строкой «world!», а затем заменяет значение переменной s на новый объект. В результате строка s содержит именно то, что хотел программист, однако в памяти остаётся и изначальный объект со строкой «Hello, ». Конечно, со временем сборщик мусора уничтожит этот бесхозный объект, однако если в программе идёт интенсивная работа со строками, то таких бесхозных объектов может оказаться очень много. Как правило, это негативно сказывается на производительности программы и объеме потребляемой ею памяти.

Чтобы компилятор не создавал каждый раз новый строковый объект, разработчики языка C# ввели другой строковый класс: StringBuilder. Приведённый выше пример с использованием этого класса будет выглядеть следующим образом:

StringBuilder s = new StringBuilder("Hello, ");

s.Append("world!");

Конечно, визуально этот код выглядит более сложным, зато при активном использовании строк в программе он будет гораздо эффективнее. Помимо добавления строки к существующему объекту (Append) класс StringBuilder имеет ещё ряд полезных методов:

Escape-последовательность

Действие

Insert

Вставляет указанный текст в нужную позицию исходной строки

Remove

Удаляет часть строки

Replace

Заменяет указанный текст в строке на другой

Если нужно преобразовать объект StringBuilder в обычную строку, то для этого можно использовать метод ToString():

StringBuilder s = new StringBuilder("Яблоко");

string a = s.ToString();

Элемент управления ListBox

Элемент управления ListBox представляет собой список, элементы которого выбираются при помощи клавиатуры или мыши. Список элементов задается свойством Items. Items - это элемент, который имеет свои свойства и свои методы. Методы Add, RemoveAt и Insert используются для добавления, удаления и вставки элементов.

Объект Items хранит объекты, находящиеся в списке. Объект может быть любым классом - данные класса преобразуются для отображения в строковое представление методом ToString(). В нашем случае в качестве объекта будут выступать строки. Однако, поскольку объект Items хранит объекты, приведённые к типу object, перед использованием необходимо привести их обратно к изначальному типу, в нашем случае string:

string a = (string)listBox1.Items[0];

Для определения номера выделенного элемента используется свойство SelectedIndex.

Порядок выполнения индивидуального задания

Задание: Написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк использовать ListBox. Строки вводятся на этапе проектирования формы, используя окно свойств. Вывод результата организовать в метку Label.

Панель диалога будет иметь вид:

Рис. 6.1. Окно программы обработки строк

Текст обработчика нажатия кнопки «Пуск» приведен ниже.

private void button1_Click(object sender, EventArgs e)

{

// Получаем номер выделенной строки

int index = listBox1.SelectedIndex;

// Считываем строку в переменную str

string str = (string)listBox1.Items[index];

// Узнаем количество символов в строке

int len = str.Length;

// Считаем, что количество пробелов равно 0

int count = 0;

// Устанавливаем счетчик символов в 0

int i = 0;

// Организуем цикл перебора всех символов в строке

while (i < len)

{

// Если нашли пробел, то увеличиваем

// счетчик пробелов на 1

if (str[i] == ' ')

count++;

i++;

}

label1.Text = "Количество пробелов = " +

count.ToString();

}

Индивидуальные задания

Во всех заданиях исходные данные вводить с помощью ListBox. Строки вводятся на этапе проектирования формы, используя окно свойств. Вывод результата организовать в метку Label.

1. Дана строка, состоящая из групп нулей и единиц. Посчитать количество нулей и единиц.

2. Посчитать в строке количество слов.

3. Найти количество знаков препинания в исходной строке.

4. Дана строка символов. Вывести на экран цифры, содержащиеся в строке.

5. Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробелами. Вывести количество четных чисел в этой строке.

6. Дана строка символов. Вывести на экран количество строчных русских букв, входящих в эту строку.

7. Дана строка символов. Вывести на экран только строчные русские буквы, входящие в эту строку.

8. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. В каждом слове заменить первую букву на прописную.

9. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Удалить первую букву в каждом слове.

10. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами i- и j-ю буквы. Для ввода i и j на форме добавить свои поля ввода.

11. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами первую и последнюю буквы каждого слова.

12. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Заменить все буквы латинского алфавита на знак «+».

13. Дана строка символов, содержащая некоторый текст на русском языке. Заменить все большие буквы «А» на символ «*».

14. Дана строка символов, содержащая некоторый текст. Разработать программу, которая определяет, является ли данный текст палиндромом, т.е. читается ли он слева направо так же, как и справа налево (например, «А роза упала на лапу Азора»).

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

Лабораторная работа №7.Одномерные массивы

Цель лабораторной работы: Изучить способы получения случайных чисел. Написать программу для работы с одномерными массивами.

Работа с массивами

Массив - набор элементов одного и того же типа, объединенных общим именем. Массивы в С# можно использовать по аналогии с тем, как они используются в других языках программирования. Однако С#-массивы имеют существенные отличия: они относятся к ссылочным типам данных, более того - реализованы как объекты. Фактически имя массива является ссылкой на область кучи (динамической памяти), в которой последовательно размещается набор элементов определенного типа. Выделение памяти под элементы происходит на этапе инициализации массива. А за освобождением памяти следит система сборки мусора - неиспользуемые массивы автоматически утилизируются данной системой.

Рассмотрим в данной лабораторной работе одномерные массивы. Одномерный массив - это фиксированное количество элементов одного и того же типа, объединенных общим именем, где каждый элемент имеет свой номер. Нумерация элементов массива в С# начинается с нуля, то есть, если массив состоит из 10 элементов, то его элементы будут иметь следующие номера: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Одномерный массив в С# реализуется как объект, поэтому его создание представляет собой двухступенчатый процесс. Сначала объявляется ссылочная переменная на массив, затем выделяется память под требуемое количество элементов базового типа, и ссылочной переменной присваивается адрес нулевого элемента в массиве. Базовый тип определяет тип данных каждого элемента массива. Количество элементов, которые будут храниться в массиве, определяется размер массива.

В общем случае процесс объявления переменной типа массив, и выделение необходимого объема памяти может быть разделено. Кроме того на этапе объявления массива можно произвести его инициализацию. Поэтому для объявления одномерного массива может использоваться одна из следующих форм записи:

тип[] имя_массива;

В этом случае описывается ссылка на одномерный массив, которая в дальнейшем может быть использована для адресации на уже существующий массив. Размер массива при таком объявлении не задаётся. Пример, в котором объявляется массив целых чисел с именем a:

int[] a;

Другая форма объявления массива включает и его инициализацию указанным количеством элементов:

тип[] имя_массива = new тип[размер];

В этом случае объявляется одномерный массив указанного типа и выделяется память под указанное количество элементов. Адрес данной области памяти записывается в ссылочную переменную. Элементы массива инициализируются значениями, которые по умолчанию приняты для данного типа: массивы числовых типов инициализируются нулями, строковые переменные - пустыми строками, символы - пробелами, объекты ссылочных типов - значением null. Пример такого объявления:

int[] a = new int[10];

Здесь выделяется память под 10 элементов типа int.

Наконец, третья форма записи даёт возможность сразу инициализировать массив конкретными значениями:

тип[] имя_массива = {список инициализации};

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

int[] a = { 0, 1, 2, 3 };

В данном случае будет создан массив a, состоящий из четырёх элементов, и каждый элемент будет инициализирован очередным значением из списка.

Обращение к элементам массива происходит с помощью индекса: для этого нужно указать имя массива и в квадратных скобках его номер. Например: a[0], b[10], c[i]. Следует помнить, что нумерация элементов начинается с нуля!

Так как массив представляет собой набор элементов, объединенных общим именем, то обработка массива обычно производится в цикле. Например:

int[] myArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

for (int i = 0; i < 10; i++)

MessageBox.Show(myArray[i]);

Случайные числа

Одним из способов инициализации массива является задание определение элементов через случайные числа. Для работы со случайными числами используются класс Random. Метод Random.Next создает случайное число в диапазоне значений от нуля до максимального значения типа int (его можно узнать с помощью свойства Int32.MaxValue).

Для создания случайного числа в диапазоне от нуля до какого-либо другого положительного числа используется перегрузка метода Random.Next(Int32) - единственный параметр метода указывает верхнюю границу диапазона, сама граница в диапазон не включается.

Для создания случайного числа в другом диапазоне используется перегрузка метода Random.Next(Int32, Int32) - первый аргумент задаёт нижнюю границу диапазона, а второй - верхнюю.

Порядок выполнения индивидуального задания

Создайте форму с элементами управления как приведено на рис. 7.1. Опишите одномерный массив. Создайте обработчики события для кнопок (код приведен ниже). Данная программа заменяет все отрицательные числа нулями. Протестируйте правильность выполнения программы. Модифицируйте программу в соответствии с индивидуальным заданием.

Рис. 7.1. Окно программы для работы с одномерными массивами

// Глобальная переменная видна всем методам

int[] Mas = new int[15];

// Заполнение исходного массива

private void button1_Click(object sender, EventArgs e)

{

// Очищаем элемент управления

listBox1.Items.Clear();

// Инициализируем класс случайных чисел

Random rand = new Random();

// Генерируем и выводим 15 элементов

for (int i = 0; i < 15; i++)

{

Mas[i] = rand.Next(-50, 50);

listBox1.Items.Add("Mas[" + i.ToString() +

"] = " + Mas[i].ToString());

}

}

// Замена отрицательных элементов нулями

private void button2_Click(object sender, EventArgs e)

{

// Очищаем элемент управления

listBox2.Items.Clear();

// Обрабатываем все элементы

for (int i = 0; i < 15; i++)

{

if (Mas[i] < 0)

Mas[i] = 0;

listBox2.Items.Add("Mas[" + Convert.ToString(i)

+ "] = " + Mas[i].ToString());

}

}

Индивидуальные задания

1) В массиве из 20 целых чисел найти наибольший элемент и поменять его местами с первым элементом.

2) В массиве из 10 целых чисел найти наименьший элемент и поменять его местами с последним элементом.

3) В массиве из 15 вещественных чисел найти наибольший элемент и поменять его местами с последним элементом.

4) В массиве из 25 вещественных чисел найти наименьший элемент и поменять его местами с первым элементом.

5) Дан массив X, содержащий 27 элементов. Вычислить и вывести элементы нового массива Y, где yi =6.85xi2-1.52. Если yi<0, то вычислить и вывести a=xi3-0.62 и продолжить вычисления; если yi0, то вычислить и вывести b=1/xi2 и продолжить вычисления.

6) Дан массив X, содержащий 16 элементов. Вычислить и вывести значения di, где и значения di0.1.

7) Дан массив Y, содержащий 25 элементов. Записать в массив R и вывести значения элементов, вычисляемые по формуле , i=1,2,…,25.

8) Дан массив F, содержащий 18 элементов. Вычислить и вывести элементы нового массива pi=0.13fi3-2.5fi+8. Вывести отрицательные элементы массива P.

9) Вычислить и вывести элементы массива Z, где zi=i2+1, если i - нечетное, и zi=2i-1, если i - четное. Сформировать и вывести массив D: di=2.5zi, если zi2.5 и di=zi/2.5, если zi2.5.

10) Заданы массивы D и E. Вычислить и вывести значения fi=(2di+sin ei)/di, где i=1,2,…,16; вывести 1fi3.

11) В массиве R, содержащем 25 элементов, заменить значения отрицательных элементов квадратами значений, значения положительных увеличить на 7, а нулевые значения оставить без изменения. Вывести массив R.

12) Дан массив A целых чисел, содержащий 30 элементов. Вычислить и вывести сумму тех элементов, которые кратны 5.

13) Дан массив A целых чисел, содержащий 30 элементов. Вычислить и вывести сумму тех элементов, которые нечетны и отрицательны.

14) Дан массив A целых чисел, содержащий 30 элементов. Вычислить и вывести сумму тех элементов, которые удовлетворяют условию aii2.

15) Дан массив A целых чисел, содержащий 30 элементов. Вычислить и вывести количество и сумму тех элементов, которые делятся на 5 и не делятся на 7.

16) Дан массив A вещественных чисел, содержащий 25 элементов. Вычислить и вывести число отрицательных элементов и число членов, принадлежащих отрезку1,2.

17) Дан массив C, содержащий 23 элемента. Вычислить и вывести среднее арифметическое всех значений ci3.5.

18) Дан массив Z целых чисел, содержащий 35 элементов. Вычислить и вывести R=S+P, где S - сумма четных элементов, меньших 3, P - произведение нечетных элементов, больших 1.

19) Дан массив Q натуральных чисел, содержащий 20 элементов. Найти и вывести те элементы, которые при делении на 7 дают остаток 1,2 или 5.

20) Дан массив Q натуральных чисел, содержащий 20 элементов. Найти и вывести те элементы, которые обладают тем свойством, что корни уравнения qi2+3qi-5=0 действительны и положительны.

21) Дан массив, содержащий 10 элементов. Вычислить произведение элементов, стоящих после первого отрицательного элемента. Вывести исходный массив и результат вычислений.

22) Дан массив, содержащий 14 элементов. Вычислить сумму элементов, стоящих до первого отрицательного элемента. Вывести исходный массив и результат вычислений.

23) Дан массив содержащий 12 элементов. Все четные элементы сложить, вывести массив и результат.

24) Дан массив, содержащий 15 элементов. Все положительные элементы возвести в квадрат, а отрицательные умножить на 2. Вывести исходный и полученный массив.

25) Дан массив, содержащий 14 элементов. Все отрицательные элементы заменить на 3. Вывести исходный и полученный массив.

26) Дан массив из 15 целых чисел. Найти количество нечетных положительных элементов.

27) Массив задан датчиком случайных чисел на интервале [-33, 66]. Найти наименьший нечетный элемент.

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

29) Разработать программу, циклически сдвигающую элементы целочисленного массива влево. Нулевой элемент массива ставится на последнее место, остальные элементы сдвигаются влево на одну позицию. Запрещается использовать второй массив.

30) Дано два массива с неубывающими целыми числами. Напишите программу нахождения элементов содержащихся в каждом массиве.

31) Дано два массива с неубывающими целыми числами. Напишите программу, формирующую новый массив их элементов первых двух. В результирующем массиве не должно быть одинаковых элементов.

32) Дан массив целых чисел из 30 элементов. Найдите все локальные максимумы. (Элемент является локальным максимумом, если он не имеет соседей, больших, чем он сам).

Лабораторная работа №8. Многомерные массивы

Цель лабораторной работы: изучить свойства элемента управления DataGridView. Написать программу с использованием двухмерных массивов.

Двухмерные массивы

Многомерные массивы имеют более одного измерения. Чаще всего используются двумерные массивы, которые представляют собой таблицы. Каждый элемент такого массива имеет два индекса, первый определяет номер строки, второй - номер столбца, на пересечении которых находится элемент. Нумерация строк и столбцов начинается с нуля. Объявить двумерный массив можно одним из предложенных способов:

тип[,] имя_массива;

тип[,] имя_массива = new тип[размер1, размер2];

тип[,] имя_массива =

{{элементы 1-ой строки},

{элементы n-ой строки}};

тип[,] имя_массива = new тип[,]

{{элементы 1-ой строки},

{элементы n-ой строки}};

В качестве примера рассмотрим код, который строит «таблицу умножения» - каждая ячейка будет содержать значение, равное произведению номера строки и номера столбца:

// Объявление двухмерного массива

int[,] mul = new int[10,10];

// Заполнение массива

for (int i = 0; i < 10; i++)

for (int j = 0; j < 10; j++)

mul[i, j] = i * j;

Элемент управления DataGridView

При работе с двухмерными массивами ввод и вывод информации на экран удобно организовывать в виде таблиц. Элемент управления DataGridView может быть использован для отображения информации в виде двумерной таблицы. Для обращения к ячейке в этом элементе необходимо указать номер строки и номер столбца. Например:

dataGridView1.Rows[2].Cells[7].Value = "*";

Этот код запишет во вторую строку и седьмой столбец знак звёздочки.

Порядок выполнения задания

В ходе выполнения задания нужно создать программу для определения целочисленной матрицы 15Ч15. Разработать обработчик кнопки, который будет искать минимальный элемент на дополнительной диагонали матрицы. Результат вывести в текстовое поле.

Окно программы приведено на рис. 8.1.

Рис. 8.1. Окно программы для работы с двухмерным массивом

Текст обработчика события нажатия на кнопку приведен ниже.

private void button1_Click(object sender, EventArgs e)

{

dataGridView1.RowCount = 15; // Кол-во строк

dataGridView1.ColumnCount = 15; // Кол-во столбцов

int[,] a = new int[15,15]; // Инициализируем массив

int i,j;

//Заполняем матрицу случайными числами

Random rand = new Random();

for (i = 0; i < 15; i++)

for (j = 0; j < 15; j++)

a[i,j] = rand.Next(-100, 100);

// Выводим матрицу в dataGridView1

for (i = 0; i < 15; i++)

for (j = 0; j < 15; j++)

dataGridView1.Rows[i].Cells[j].Value =

a[i, j].ToString();

// Поиск максимального элемента

// на дополнительной диагонали

int m = int.MinValue;

for (i = 0; i < 15; i++)

if (a[i, 14 - i] > m) m = a[i, 14 - i];

// выводим результат

textBox1.Text = Convert.ToString(m);

}

Индивидуальные задания

Дана матрица A(3,4). Найти наименьший элемент в каждой строке матрицы. Вывести исходную матрицу и результаты вычислений.

Дана матрица A(3,3). Вычислить сумму второй строки и произведение первого столбца. Вывести исходную матрицу и результаты вычислений.

Дана матрица A(4,4). Найти наибольший элемент в главной диагонали. Вывести матрицу и наибольший элемент.

Дана матрица A(3,4). Найти сумму элементов главной диагонали и эту сумму поставить на место последнего элемента. Вывести исходную и полученную матрицу.

Дана матрица A(4,3). Вычислить наибольший элемент матрицы. Вывести исходную матрицу и наибольший элемент.

Дана матрица A(4,3).Найти количество положительных элементов.

Дана матрица A(3,4).Найти количество отрицательных элементов.

Даны матрицы X(15,15) и Y(15,15). Вычислить и вывести элементы новой матрицы zij=12xij-0.85yij2.

Даны матрицы A(6,6),B(6,6) и C(6,6). Получить матрицу D(6,6), элементы которой вычисляются по формуле dij=maxaij,(bij+cij). Матрицу D(6,6) вывести.

Вычислить сумму S элементов главной диагонали матрицы B(10,10). Если S>10, то исходную матрицу преобразовать по формуле bij=bij+13.5; если S10, то bij=bij2-1.5. Вывести сумму S и преобразованную матрицу.

Дана матрица F(15,15). Вывести номер и среднее арифметическое элементов строки, начинающейся с 1. Если такой строки нет, то вывести сообщение «Строки нет».

Дана матрица F(7,7). Найти наименьший элемент в каждом столбце. Вывести матрицу и найденные элементы.

Найти наибольший элемент главной диагонали матрицы A(15,15) и вывести всю строку, в которой он находится.

Найти наибольшие элементы каждой строки матрицы Z(16,16) и поместить их на главную диагональ. Вывести полученную матрицу.

Вычислить суммы элементов матрицы Y(12,12) по столбцам и вывести их.

Найти наибольший элемент матрицы A(10,10) и записать нули в ту строку и столбец, где он находится. Вывести наибольший элемент, исходную и полученную матрицу.

Дана матрица R(9,9). Найти наименьший элемент в каждой строке и записать его на место первого элемента строки. Вывести исходную и полученную матрицы.

Определить количество положительных элементов каждой строки матрицы A(10,20) и запомнить их в одномерном массиве N. Массив N вывести.

Вычислить количество H положительных элементов последнего столбца матрицы X(5,5). Если H<3, то вывести все положительные элементы матрицы, если H3, то вывести сумму элементов главной диагонали матрицы.

Вычислить и вывести сумму элементов матрицы A(12,12), расположенных над главной диагональю матрицы.

Двумерный массив 30x20 заполнить случайными символами английского алфавита (заглавными буквами). Вывести на экран сколько раз встречается каждый символ.

Найти номер столбца матрицы, в котором находится наименьшее количество положительных элементов.

Дан двухмерный массив 20x20 целочисленных элементов. Найдите все локальные максимумы. (Элемент является локальным максимумом, если он не имеет соседей, больших, чем он сам).

Дана матрица 7x7. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

Задана матрица, содержащая N строк и M столбцов. Седловой точкой этой матрицы назовем элемент, который одновременно является минимумом в своей строке и максимумом в своем столбце. Найдите количество седловых точек заданной матрицы.

Требуется совершить обход квадратной матрицы по спирали так, как показано на рисунке: заполнение происходит с единицы из левого верхнего угла и заканчивается в центре числом N2, где N - порядок матрицы. Реализуйте программу для матрицы 10x10.

Требуется заполнить змейкой квадратную матрицу так, как показано на рисунке: заполнение происходит с единицы из левого верхнего угла и заканчивается в правом нижнем числом N2, где N - порядок матрицы. Реализуйте программу для матрицы 10x10.

Дана шахматная доска (матрица 8x8). Разработать программу, показывающую последовательность ходов конем с произвольной клетки. Конь ходит в соответствии с шахматными правилами, но в произвольную сторону (сгенерировать случайным образом). В клетку, с которой начинается ход, выводится единица. В клетку, в которую идет далее конь, записывается двойка и т.д. Ходить конем на клетки, на которых уже побывал конь, нельзя. Алгоритм останавливает работу, когда конем ходить некуда. Максимальная последовательность ходов - 64.

Дана квадратная матрица 10x10. Реализуйте программу для транспонирования матрицы по главной и побочной диагонали.

Реализуйте игру сапер с произвольным числом мин расположенных в случайных местах.

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

Проверка на симпатичность. Рассмотрим таблицу, содержащую n строк и m столбцов, в каждой клетке которой расположен ноль или единица. Назовем такую таблицу симпатичной, если в ней нет ни одного квадрата 2 на 2, заполненного целиком нулями или целиком единицами. Так, например, таблица 4 на 4, расположенная слева, является симпатичной, а расположенная справа таблица 3 на 3 - не является.

Является ли симпатичной таблица 7x7 заполненная случайным образом?

Лабораторная работа №9. Графики функций

Цель лабораторной работы: изучить возможности построения графиков с помощью элемента управления Сhart. Написать и отладить программу построения на экране графика заданной функции.

Как строится график с помощью элемента управления Chart

Обычно результаты расчетов представляются в виде графиков и диаграмм. Библиотека .NET Framework имеет мощный элемент управления Chart для отображения на экране графической информации (рис. 9.1).

Рис 8.1. Окно программы с элементом управления

Построение графика (диаграммы) производится после вычисления таблицы значений функции y=f(x) на интервале [Xmin, Xmax] с заданным шагом. Полученная таблица передается в специальный массив Points объекта Series элемента управления Сhart с помощью метода DataBindXY. Элемент управления Chart осуществляет всю работу по отображению графиков: строит и размечает оси, рисует координатную сетку, подписывает название осей и самого графика, отображает переданную таблицу в виде всевозможных графиков или диаграмм. В элементе управления Сhart можно настроить толщину, стиль и цвет линий, параметры шрифта подписей, шаги разметки координатной сетки и многое другое. В процессе работы программы изменение параметров возможно через обращение к соответствующим свойствам элемента управления Chart. Так, например, свойство AxisX содержит значение максимального предела нижней оси графика и при его изменении во время работы программы автоматически изменяется изображение графика.

Пример написания программы

Задание: составить программу, отображающую графики функций sin(x) и cos(x) на интервале [Xmin, Xmax]. Предусмотреть возможность изменения разметки координатных осей, а также шага построения таблицы.

Прежде всего, следует поместить на форму сам элемент управления Chart. Он располагается в панели элементов в разделе Данные.

Список графиков хранится в свойстве Series, который можно изменить, выбрав соответствующий пункт в окне свойств. Поскольку на одном поле требуется вывести два отдельных графика функций, нужно добавить ещё один элемент. Оба элемента, и существующий и добавленный, нужно соответствующим образом настроить: изменить тип диаграммы ChartType на Spline. Здесь же можно изменить подписи к графикам с абстрактных Series1 и Series2 на sin(x) и cos(x) - за это отвечает свойство Legend. Наконец, с помощью свойства BorderWidth можно сделать линию графика потолще, а затем поменять цвет линии с помощью свойства Color.

Ниже приведён текст обработчика нажатия кнопки «Расчёт!», который выполняет все требуемые настройки и расчёты и отображает графики функций:

private void buttonCalc_Click(object sender,

EventArgs e)

{

// Считываем с формы требуемые значения

double Xmin = double.Parse(textBoxXmin.Text);

double Xmax = double.Parse(textBoxXmax.Text);

double Step = double.Parse(textBoxStep.Text);

// Количество точек графика

int count = (int)Math.Ceiling((Xmax - Xmin) / Step)

+ 1;

// Массив значений X - общий для обоих графиков

double[] x = new double[count];

// Два массива Y - по одному для каждого графика

double[] y1 = new double[count];

double[] y2 = new double[count];

// Расчитываем точки для графиков функции

for (int i = 0; i < count; i++)

{

// Вычисляем значение X

x[i] = Xmin + Step * i;

// Вычисляем значение функций в точке X

y1[i] = Math.Sin(x[i]);

y2[i] = Math.Cos(x[i]);

}

// Настраиваем оси графика

chart1.ChartAreas[0].AxisX.Minimum = Xmin;

chart1.ChartAreas[0].AxisX.Maximum = Xmax;

// Определяем шаг сетки

chart1.ChartAreas[0].AxisX.MajorGrid.Interval = Step;

// Добавляем вычисленные значения в графики

chart1.Series[0].Points.DataBindXY(x, y1);

chart1.Series[1].Points.DataBindXY(x, y2);

}

Выполнение индивидуального задания

Постройте графики функций для соответствующих вариантов из лабораторной работы №2. Таблицу данных получить путём изменения параметра X с шагом h. Самостоятельно выбрать удобные параметры настройки.

Лабораторная работа №10. Компьютерная графика

Цель лабораторной работы: изучить возможности Visual Studio по создание простейших графических изображений. Написать и отладить программу построения на экране различных графических примитивов.

Событие Paint

Для форм в C# предусмотрен способ, позволяющий приложению при необходимости перерисовывать окно формы в любой момент времени. Когда вся клиентская область окна формы или часть этой области требует перерисовки, форме передается событие Paint. Все, что требуется от программиста, это создать обработчик данного события (рис. 10.1), наполнив его необходимой функциональностью.

Рис. 10.1. Создание обработчика события Paint

Объект Graphics для рисования

Для рисования линий и фигур, отображение текста, вывода изображений и т. д. нужно использовать объект Graphics. Этот объект предоставляет поверхность рисования и используется для создания графических изображений. Ниже представлены два этапа работы с графикой.

· Создание или получение объекта Graphics

· Использование объекта Graphics для рисования

Существует несколько способов создания объектов Graphics. Одним из самых используемых является получение ссылки на объект Graphics через объект PaintEventArgs при обработке события Paint формы или элемента управления:

private void Form1_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

// Далее вставляется код рисования

}

Методы и свойства класса Graphics

Имена большого количества методов, определенных в классе Graphics, начинается с префикса Draw* и Fill*. Первые из них предназначены для рисования текста, линий и не закрашенных фигур (таких, например, как прямоугольные рамки), а вторые - для рисования закрашенных геометрических фигур. Ниже рассматривается применение наиболее часто используемых методов, более полную информацию можно найти в документации по Visual Studio.

Метод DrawLine рисует линию, соединяющую две точки с заданными координатами. У метода есть несколько перегруженных версий:

public void DrawLine(Pen, Point, Point);

public void DrawLine(Pen, PointF, PointF);

public void DrawLine(Pen, int, int, int, int);

public void DrawLine(Pen, float, float, float, float);

Первый параметр задает инструмент для рисования линии - перо. Перья создаются как объекты класса Pen, например:


Подобные документы

  • Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.

    курсовая работа [571,9 K], добавлен 14.07.2012

  • Понятие математического программирования. Класс как тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции. Рассмотрение основных особенности языка программирования C++. Характеристика среды MS Visual Studio 2008.

    контрольная работа [318,0 K], добавлен 13.01.2013

  • Лаконичность, стандартный набор конструкций управления потоком выполнения, структур данных и обширный набор операций в основе языка программирования Си. Фортран как первый язык программирования с транслятором. Перевод программных кодов с Фортрана на Си.

    отчет по практике [77,4 K], добавлен 18.10.2012

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.

    курсовая работа [1,3 M], добавлен 24.06.2013

  • Основы языка программирвоания C++. Элементы управления в Microsoft Visual C++. Алгоритмические конструкции языка программирования Visual C++ и базовые элементы управления. Глобальные константы и переменные. Управление программой с помощью клавиатуры.

    курсовая работа [1,7 M], добавлен 08.04.2015

  • Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.

    презентация [1,4 M], добавлен 29.04.2014

  • Проектирование игры "Жизнь" и ее реализация в среде разработки Visual Studio 2010, версия .Net Framework 4.0. Особенности языка программирования C#, основных принципов ООП на языке C#. Проектирование пользовательского интерфейса. Описание алгоритмов.

    курсовая работа [990,0 K], добавлен 18.04.2013

  • Понятие и общая характеристика языка программирования РНР, принципы и этапы его работы, синтаксис и ассоциируемые массивы. Обработка исключений в языке Java. Работа с базами данных с помощью JDBC. Изучение порядка разработки графического интерфейса.

    презентация [192,3 K], добавлен 13.06.2014

  • Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.

    контрольная работа [36,4 K], добавлен 23.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.