
- •Лекция 1
- •14 Ч. Лекции
- •58 Ч. Лабораторные работы
- •1.0 Основы алгоритмизации задач
- •1.1. Методы подготовки решения задачи на эвм
- •1.2. Алгоритмы и его свойства
- •1.3. Способы описания алгоритмов:
- •1.4. Стандартные блок-схемы
- •1.5. Базовые алгоритмические структуры
- •1.6. Методы алгоритмизации задач
- •2. Основы программирования
- •2.1. Машинный код процессора
- •2.2. Программа на языке программирования
- •2.3. Трансляторы
- •2.4. Классификация языков программирования
- •2.5. Языки низкого уровня
- •2.6. Языки высокого уровня
- •Лекция 2
- •3.0. Интегрированная среда разработки (иср) Visual c# 2010 Express
- •3.1. Основные характеристики.
- •3.2. Консольное приложение
- •3.3. Сохранение проекта
- •3.3. Структура папок при сохранении консольного приложения
- •3.5. Компиляция
- •4.2. Словарь языка
- •4.3. Комментарии
- •4.4. Идентификаторы (имена)
- •4.5. Ключевые слова
- •4.6. Числа
- •4.7. Переменные и константы
- •5.0. Структура программы консольного приложения на c#
- •Лекция 3
- •6.0. Типы данных
- •6.1. Типы значений
- •6.2. Ссылочные типы
- •6.3. Задание типов в объявлениях переменных
- •6.4. Встроенные базовые типы
- •6.5. Типы чисел Типы целых чисел
- •Типы чисел с плавающей запятой
- •Значения типов по умолчанию
- •6.6. Преобразования типов
- •6.7. Стандартное форматирование чисел
- •6.8. Символы char
- •7. Инструкции, команды
- •7.1. Выражения
- •7.2. Разделители
- •7.3. Математические операции
- •7.4. Приоритеты операций
- •Лекция 4
- •7.0. Операторы
- •7.2. Унарные операторы
- •7.3. Мультипликативные операторы
- •7.4. Аддитивные операторы (типа сложения)
- •7.5. Операторы отношений
- •7.6. Операторы присвоения
- •8.0. Инструкции
- •8.1. Безусловный переход вызовом функций
- •8.2. Оператор перехода goto
- •Лекция 5
- •9.0. Условные операторы.
- •9.1. Сложные условия
- •9.2. Инструкция if
- •9.3. Инструкции выбора switch, case
- •Лекция 6
- •10.0. Операторы цикла
- •10.1. Инструкция goto
- •10.2. Инструкция for
- •10.3. Использование нескольких управляющих переменных цикла
- •10.4. Использование переменных цикла c любым шагом их изменения
- •10.5. Инструкция while . . Цикл с предусловием
- •10.6. Инструкция do - while Цикл с постусловием
- •10.7. Накопление сумм и произведений
- •10.8. Безусловные переходы
- •Лекция 7
- •11.0. Массивы
- •11.1. Операции с массивами
- •Вывод массива
- •Ввод массива
- •Поиск максимального ( или минимального ) элемента массива
- •Поиск заданного элемента массива
- •Сортировка массива
- •11.2. Расчет статистических показателей
- •11.3. Использование генератора случайных чисел
- •11.4. Массивы строк
- •Лекция 8
- •12.0. Введение в классы, объекты и методы
- •12.1. Синтаксис класса
- •13.0. Подпрограммы
- •13.1. Основные понятия
- •13.2. Сравнение вариантов
- •13.3. Описание методов (процедур и функций)
- •13.4. Аргументы и параметры
- •13.5. Области действия имен
- •13.6. Тело метода (процедуры и функции)
- •13.7. Вызов метода. Синтаксис.
- •13.8. Функция
- •13.9. Процедура
- •Лекция 9
- •14. Исключительные ситуации
- •14.1. Виды исключений:
- •14.2. Существуют два типа блоков:
- •Лекция 10
- •15. Объектно-ориентированное программирование (ооп)
- •15.1. Классы в с#
- •15.2. Основные принципы ооп
- •Конструкторы
- •Деструкторы
- •15.3. Графическая структура понятий оо Подхода
- •15.4. Преимущества ооп:
- •Лекция 11
- •16.0. Приложение под ос Windows
- •16.1. Основные характеристики
- •16.2. Основной экран среды:
- •16.3. Окно Конструктора формы
- •16.4. Окно Редактора кода
- •16.6. Характеристика проекта
- •16.7. Сохранение проекта – приложения под Windows
- •16.8. Запуск и компиляция приложения
- •16.9. Шаблон кода:
- •16.10. Разработка приложения
- •16.11. Простейшее приложение
- •16.12. Создание интерфейса приложения
- •16.13. Определение функциональности приложения
- •16.14. Отладка
- •Лекция 12
- •17.0. Ввод и вывод данных в Windows-Приложениях
- •17.1 Ввод из поля редактирования и вывод в метку, и окно сообщения
- •17.2 Окно сообщения
- •18.0 Процедуры и функции
- •18.1 Структура процедуры
- •18.2 Структура функции
- •19. Модули
- •19.1 Свойства модуля
- •19.1. Структура модуля
- •Лекция 13
- •20.0. Массивы в Windows Forms Application
- •20.1 Операции с массивами в Windows-приложениях
- •21.0. Графика в c#
- •21.1. Рисованные изображения
- •Объект Graphics
- •Перо (Pen) или карандаш
- •Кисть (Brush) или заливка
- •Шрифты и текст
- •21.2. Методы рисования
- •21.3. Методы заливки
- •21.4. Рисование с помощью примитивов
- •21.5. Рисование графика функции
- •21.6. Растровая графика
20.1 Операции с массивами в Windows-приложениях
Типовые операции:
вывод/ввод элементов массива;
поиск максимального или минимального элемента массива;
поиск заданного элемента массива;
сортировка массива.
Ввод/Вывод массивов в Windows-приложениях
Поскольку эти приложения позволяют создать дружелюбный интерфейс пользователя, то это облегчает работу по вводу и выводу массивов.
Пример. Форма разделена условно на две части – для ввода и вывода массива.
Пользователь в текстовое окно число элементов массива и нажимает командную кнопку «Создать массив», обработчик которой создает массив заданной размерности, если корректно задан размер, в противном случае выдается сообщение об ошибки.
Затем пользователь переходит к вводу элементов массива. Элемент вводится в текстовое окно, а командная кнопка «Ввести элемент» обеспечивает передачу значения в массив. Корректность ввода контролируется и на этом этапе.
Для облегчения ввода пользователю выводится подсказка, какой именно элемент надо ввести. После ввода элементов массива окно ввода становится недоступным для ввода элементов.
В нижней части отображается введенный массив в форме, удобной для восприятия пользователя. Для этого пригодны элементы: ListBox, CheckedListBox, ComboBox. Как только вводится очередной элемент, он немедленно отображается во всех объектах.
ComboBox11
label1 label2
label3 label4
label5 label6
label7 listBox1-
список checkedListBox1 comboBox1-
комбинированный список
textBox1 button1
textBox2 button2
panel1
panel2
Три объекта вывода элементов массива приведены для демонстрации, реально их всех отображать не нужно. Компонент выбирается по желанию пользователя.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
double [] mas;
int i=0;
private void button1_Click(object sender, EventArgs e)
{
try //охраняемый блок
{
int n = int.Parse(textBox1.Text);
mas = new double[n];
label4.Text = "mas[ " + 0 + " ]";
textBox2.ReadOnly = false;
listBox1.Items.Clear();
checkedListBox1.Items.Clear();
comboBox1.Items.Clear();
i = 0;
}
catch //перехватчик исключения и формирование ошибки
{
MessageBox.Show("Надо вводить цифры ", "Ошибочный ввод данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button2_Click(object sender, EventArgs e)
{
int n = int.Parse(textBox1.Text);
mas = new double[n]; // задание размера массива
mas[i] = double.Parse(textBox2.Text);
label4.Text = "mas[ " + i + " ]";
listBox1.Items.Add(mas[i]);
checkedListBox1.Items.Add(mas[i]);
comboBox1.Items.Add(mas[i]);
i++;
textBox2.Text = " ";
label6.Text = "ОК";
if (i == n)
{
label3.Text = " ";
label4.Text = " ";
label6.Text = "Ввод не доступен ";
textBox2.Text = " ";
textBox2.ReadOnly = true;
}
}
}
}
Последовательность чисел удобно вводить в строку таблицы с помощью компонента DataGridView (данные строкового вида).
DataGridView – это таблица, ячейки которой содержат строки символов.
Столбец
Строка
Ячейка
Свойства DataGridView определяют:
Columns колонки таблицы
Rows строки таблицы
Cells ячейки
ColumnCount количество столбцов таблицы
RowCount количество строк таблицы
Rows[n].Cells[k] ячейка, лежащая на пересечении n - го ряда row и k-ой столбца
Задача. Ввести элементы одномерного массива и вычислить:
Задача1: суммарное, среднеарифметическое,
Задача2: максимальное и минимальное значения элементов этого массива.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); // объявление компонентов на Form1
}
double[] K = new double[5]; // объявление массива
private void button1_Click(object sender, EventArgs e) // Задача1
{
double avr = 0; //среднее значение
double summ = 0; //сумма элементов
int n = 0; // количество введенных элементов
try //охраняемый блок
{
for (int i = 0; i < 5; i++) //преобразование данных, вводимых в 1 строку
{ // с клавиатуры в цифровой эквивалент
K[i] = System.Convert.ToDouble(dataGridView1.Rows[0].Cells[i].Value);
summ = summ + K[i];
n= n + 1;
}
avr = summ / n;
label1.Text = "Сумма элементов: " + String.Format("{0,6:f}", summ);
label2.Text = "Среднее арифмет. значение: " + String.Format("{0,6:f3}", avr);
}
catch //перехватчик исключения и формирование ошибки
{
MessageBox.Show("Надо вводить цифры ", "Ошибочный ввод данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button2_Click(object sender, EventArgs e) // Задача2
{
double Kmax = 0;
double Kmin = 0;
int Nmx = 0;
int Nmn = 0;
try //охраняемый блок
{
for (int i = 0; i < 5; i++) //преобразование данных, вводимых в первую строку
{ //с клавиатуры в цифровой эквивалент
K[i] = System.Convert.ToDouble(dataGridView1.Rows[0].Cells[i].Value);
}
Kmax = K[0]; // предположение
Nmx = 0;
for (int i = 1; i < 5; i++)
{
if (K[i] > Kmax)
{
Kmax = K[i]; // выявление max
Nmx = i;
}
}
Kmin = K[0]; // предположение
Nmn = 0;
for (int i =1; i < 5; i++)
{
if (K[i] < Kmin)
{
Kmin = K[i]; // выявление min
Nmn = i;
}
}
label3.Text = "Максимальное значение: " + String.Format("{0,6:f1}", Kmax) + ", его номер: " + Nmx.ToString();
label4.Text = "Минимальное значение: " + String.Format("{0,6:f1}", Kmin) + ", его номер: " + Nmn.ToString();
}
catch //перехватчик исключения и формирование ошибки
{
MessageBox.Show("Надо вводить цифры ", "Ошибочный ввод данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
0 1 2 3 4
Двумерную таблицу можно представить как совокупность одномерных массивов.
Задача 3. Обработать результаты спортивных соревнований олимпиады.
Программа должна вычислять общее количество медалей каждой страны и соответствующее количество баллов, по правилу:
- за золотую медаль – 7 баллов,
- за серебряную медаль – 6 баллов,
- за бронзовую медаль – 5 баллов,
Устанавливаем на форму объекты dataGridView1 и button1. Используя свойство Colomns, создаем коллекцию столбцов с полями: Страна, Золотых, Серебряных, Бронзовых, Всего, Баллов
dataGridView
Изменив свойство Name, переименуем dataGridView в Tabl.
Количество строк в компоненте по умолчанию dataGridView = 1 и для увеличения их численности необходимо при инициализации элементов добавить нужное их число через метод dataGridView.Rows.Add();
public Form1()
{
InitializeComponent();
Tabl.Rows.Add(8); //добавление строк в таблицу
}
Заполнение ячеек организовано через процедуру обработки события Activate, которое происходит при активизации формы.
Запуск приложения
При нажатии на кнопку «Итоги» происходит расчет показателей:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Tabl.Rows.Add(8); //добавление строк в таблицу
}
private void Form1_Activated(object sender, EventArgs e) //при активизации формы
{
string[] Ctrana = new string[8] { "Австрия", "Великобритания", "Германия", "Италия",
"Россия", "США", "Франция", "Япония" };
int[] Zoloto = new int[8] { 16, 11, 14, 13, 32, 39, 13, 5 };
int[] Serebro = new int[8] { 25, 10, 17, 8, 28, 25, 14, 8 };
int[] Bronza = new int[8] { 17, 7, 28, 13, 28, 33, 11, 5 };
for (int i = 0; i < 8; i++)
{
Tabl.Rows[i].Cells[0].Value = Ctrana[i]; // заполнение элементами 0 столбца
Tabl.Rows[i].Cells[1].Value = Zoloto[i]; // заполнение элементами 1 столбца
Tabl.Rows[i].Cells[2].Value = Serebro[i]; // заполнение элементами 2 столбца
Tabl.Rows[i].Cells[3].Value = Bronza[i]; // заполнение элементами 3 столбца
}
}
private void button1_Click(object sender, EventArgs e) //кнопка Итоги
{
int c,r; //номер колонки и строки Tabl
int s=0; //всего медалей у команды
int b=0; //всего баллов у команды
for (r = 0; r < 8; r++) //цикл по строкам
{
//вычисление общего количества медалей
for (c = 1; c <= 3; c++)
s = s + System.Convert.ToInt16(Tabl.Rows[r].Cells[c].Value);
//вычисление общего количества баллов
b = 7 * System.Convert.ToInt16(Tabl.Rows[r].Cells[1].Value) +
6 * System.Convert.ToInt16(Tabl.Rows[r].Cells[2].Value) +
5 * System.Convert.ToInt16(Tabl.Rows[r].Cells[3].Value);
Tabl.Rows[r].Cells[4].Value = s.ToString(); // всего медалей для каждой страны
Tabl.Rows[r].Cells[5].Value = b.ToString(); // всего баллов для каждой страны
}
}
}
}
Лекция 14