- •Содержание работы
- •1 Элементы языка с
- •1.1 Символы
- •2 Простые типы данных
- •3 Операции над числовыми данными
- •4 Объявление переменных
- •5 Структура программы на с
- •7 Директива #define
- •9 Библиотека математических функций
- •Содержание работы
- •1 Условный оператор if
- •Пример 1 Поиск наибольшего значения
- •Пример 2 Определение принадлежности точки фигуре
- •2 Составной оператор
- •Пример 3 Проверка условия существования треугольника
- •3 Вложенный оператор
- •Пример 4 Вложенное ветвление
- •4 Оператор выбора switch
- •Содержание работы
- •1 Определение цикла
- •Пример 1 Виды циклов
- •Задание 1
- •2 Оператор цикла for
- •3 Оператор цикла while
- •4 Оператор цикла do while
- •5 Табулирование функций
- •Пример 2 Табулирование непрерывной функции
- •Пример 3 Табулирование сложной функции
- •6 Вычисление конечных сумм и произведений
- •Пример 4 Вычисление суммы
- •Пример 5 Вычисление произведения
- •7 Управляющие конструкции break, continue, return, goto
- •Содержание работы
- •1 Понятие и описание массивов
- •Пример 1 Объявление одномерного массива
- •Пример 2 Объявление двумерного массива
- •2 Одномерные массивы Пример 3 Ввод элементов одномерного массива
- •Пример 4 Нахождение суммы и среднего значения элементов массива
- •Пример 5 Нахождение наибольшего элемента массива и его номера
- •3 Двумерные массивы (матрицы)
- •Пример 6 Суммирование матриц
- •4 Символьные массивы
- •Пример 7 Описание символьного массива
- •Пример 8 Сравнение строк
- •5 Указатели и операции над указателями
- •Пример 9 Описание указателей
- •Пример 10 Операции над указателями
- •Пример 11 Сравнение указателей
- •6 Связь между массивом и указателем
- •Содержание работы
- •1 Модульное программирование
- •2 Объявление функции
- •Пример 1 Объявление функции
- •Задание 1
- •Это важно
- •2 Формальные и фактические параметры функции
- •Задание 3
- •Содержание работы
- •1 Создание класса
- •Пример 1 Объявление класса
- •Задание 1
- •Пример 2 Доступ к членам класса
- •Задание 2
- •2 Полиморфизм
- •Пример 3 Перегрузка функций
- •Задание 3
- •Содержание работы
- •1 Понятие формы. Конструктор форм Windows Forms
- •2 Элементы управления
- •3 Создание приложений с помощью Windows Forms Application Пример 1 Создание простейшего оконного приложения
- •Пример 2 Создание идентификационной формы
- •Пример 3 Изменение параметров MessageBox.Show
- •5 Анализ кода
- •6 Расчетные формы Пример 4 Создание расчетной формы
- •Пример 5 Создание простейшего меню
- •7 Создание оконных приложений на базе mfc
-
В целочисленной прямоугольной таблице замените все отрицательные элементы на их модули.
-
Поменяйте местами первую и последнюю строки прямоугольной таблицы.
-
Квадратичную матрицу состоящую из натуральных чисел повернуть на 90 градусов по часовой стрелке и вывести результат на экран.
-
Написать программу, которая проверяет, является ли введенная матрица магическим квадратом (сумма элементов которой в каждой строке, в каждом столбе и по каждой диагонали одинакова).
-
В целочисленной прямоугольной таблице расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию.
-
В квадратной матрице a[n,m] определить количество строк упорядоченных по возрастанию; упорядоченных по убыванию; неупорядоченных
-
Задан двумерный массив А размерностью 3×3. Написать программу вычисления суммы и произведения элементов строк и столбцов массива.
-
Задан двумерный массив А размерностью 3×3. Написать программу вычисления суммы и произведения элементов главной диагонали матрицы.
-
Задан двумерный массив А размерностью 3×3. Написать программу поиска наибольшего и наименьшего элементов главной диагонали.
-
Задан двумерный массив А размерностью 3×3. Написать программу поиска наибольшего и наименьшего элемента в каждой строке и столбце массива.
-
Задан двумерный массив А размерностью 3×3. Написать программу подсчета числа одинаковых и числа различных элементов массива.
Лабораторная работа № 5
Функции
-
-
-
Цель работы: приобрести навыки в решении задач с использованием функций.
-
-
Содержание работы
-
-
1 Модульное программирование
-
2 Объявление функции
-
Пример 1 Объявление функции
-
2 Формальные и фактические параметры функции
-
Пример 2 Создание функции
-
Пример 3 Вызов функции
-
3 Локальные и глобальные переменные
-
Пример 4 Вычисления с использованием функции
-
Задачи
-
-
-
1 Модульное программирование
-
Модульность – фундаментальный аспект всех успешно работающих крупных систем.
-
Бьерн Страуструп
-
При разработке программы иногда появляются повторяемые группы действий или возникает необходимость разбить программу на функциональные модули, сделать ее структуру иерархической. Для этого во всех языках программирования существуют средства организации подпрограмм (модулей).
-
Подпрограмма (модуль) — это специальным образом оформленный алгоритм, который может многократно использоваться при решении более общей задачи.
-
Программирование, основанное на разбиение программы на независимые модули, называется модульным.
-
2 Объявление функции
-
Разновидностью подпрограмм являются функции.
-
До настоящего момента нами были использованы системные функции. Например, выполнение программы всегда начинается с команд, содержащихся в функции main(), а затем последняя вызывает другие функции.
-
Функция – самостоятельная единица программы, представляющая собой группу операторов, выполняющих законченное действие.
-
К функции можно обратиться по имени, передать ей значение и получить из нее результат.
-
Формат объявления функции (прототип функции):
-
тип имя_функции (список_параметров)
-
тело функции;
-
Пример 1 Объявление функции
-
Прототип функции, возвращающей факториал числа n (факториал числа n – это произведение n!=1*2*…*n, см. лабораторную работу 3, задание 5):
-
int fact(int n);
-
-
Задание 1
-
В примере 1 определите имя функции, тип функции и параметра.
-
Это важно
-
Функцию следует определять так, чтобы ею можно было воспользоваться как черным ящиком. Имя функции должно быть информативным. Программист не должен нуждаться в доступе к ее телу, для того чтобы узнать, что она делает. Вся необходимая информация должна быть приведена в объявлении функции. Данное правило называется принципом процедурной абстракции.
-
-
2 Формальные и фактические параметры функции
-
-
Для удобства передачи данных в функцию и получения результата используются формальные и фактические аргументы.
-
Формальные параметры – условные обозначения в описании функции.
-
В примере 1 переменная n является формальным параметром.
-
Фактические параметры – аргументы, с которыми требуется выполнить функцию. Фактические параметры перечисляются при вызове функции.
-
-
Пример 2 Создание функции
-
int fact(int n)
-
{
-
int i,p;
-
p=1;
-
for (i=1;i<=n;i++)
-
p=p*i;
-
return p;
-
}
-
Возвращение значения функции (факториала числа n) выполняется с помощью оператора return.
-
Задание 2
-
Проанализируйте код функции примера 2.
-
-
3 Локальные и глобальные переменные
-
В примере 2 вспомогательные переменные i,p будут являться локальными переменными.
-
Локальные переменные – переменные, которые описываются только внутри подпрограммы (функции) и являющиеся промежуточными при ее выполнении.
-
Глобальные переменные – переменные, описанные в главной программе.
-
Пример 3 Вызов функции
-
На основе функции fact, (см. пример 2) вычислим число сочетаний:
-
-
-
-
#include "stdafx.h"
-
#include<iostream>
-
#include<conio.h>
-
using namespace std;
-
// Объявление функции
-
int fact(int n)
-
{
-
int i,p;
-
p=1;
-
for (i=1;i<=n;i++)
-
p=p*i;
-
return p;
-
}
-
//Главная программа
-
int main(array<System::String ^> ^args)
-
{
-
int N,M;
-
cout<<"Введите значение N ";
-
cin >> N;
-
cout<<"Введите значение M, M>N ";
-
cin >> M;
-
cout<<"Число сочетаний "<< N << " из " << M << " равно " << fact(N)/fact(N-M)/fact(M);
-
getch();
-
return 0;
-
}
-
В примере 3 в главной программе функция fact(N) вызывается три раза:
-
fact(N)/fact(N-M)/fact(M)
-
соответственно с аргументами N, N-M и M. Переменные N и M являются глобальными.
-
Тестирование:
-
-
Задание 3
-
Выполните программу примера 3. Создайте функцию ch_s(), возвращающую число сочетаний . Сколько аргументов будет иметь данная функция?
-
Лабораторная работа № 6
Элементы объектно-ориентированного программирования
-
-
-
Цель работы: приобрести навыки создания собственных классов и познакомиться с основными идеями объектно-ориентированного программирования.
-
-
Содержание работы
-
-
1 Создание класса
-
Пример 1 Объявление класса
-
Пример 2 Доступ к членам класса
-
2 Полиморфизм
-
Пример 3 Перегрузка функций
-
Задачи
-
-
-
1 Создание класса
-
Нами были рассмотрены основные принципы структурного программирования на языке С. Основным отличием языка С от С++ является наличие в нем средств объектно-ориентированного программирования.
-
Объектно-ориентированное программирование основано на классах. Введение понятие класса является естественным развитием идей модульности, рассмотренных в лабораторной работе №5.
-
Класс – это структурированный тип, включающий в себя в качестве элементов типизированные данные (параметры) и функции, применяемые по отношению к этим данным.
-
В простейшем случае объявление класса имеет формат:
-
class имя
-
{
-
Закрытые данные и функции
-
public:
-
Открытые данные и функции
-
};
-
Public – это режим доступа. Элементы с режимом Public, доступны в других частях программы.
-
В объявлении класса заложен принцип инкапсуляции – объединения данных и функций.
-
Пример 1 Объявление класса
-
class circle
-
{
-
public:
-
// Объявление функций – членов класса
-
double l(float);
-
double s(float);
-
};
-
Задание 1
-
Определите имя класса примера 1. Какие функции объявлены?
-
Пример 2 Доступ к членам класса
-
#include "stdafx.h"
-
#include<iostream>
-
#include<conio.h>
-
#include<math.h>
-
#define pi 3.14
-
using namespace std;
-
// Объявление класса circle (окружность)
-
class circle
-
{
-
public:
-
double l(float);
-
double s(float);
-
};
-
// Описание функций – членов класса
-
// Описание функции l от одной переменной(длины окружности от радиуса)
-
double circle::l(float r)
-
{
-
return 2*pi*r;
-
}
-
// Описание функции s от одной переменной (площади окружности от радиуса)
-
double circle::s(float r)
-
{
-
return pi*r*r;
-
}
-
// Основная программа
-
int main(array<System::String ^> ^args)
-
{
-
// Объявление объекта С – экземпляра класса circle
-
circle C;
-
float R;
-
cout << "Введите значение радиуса окружности R=";
-
cin>>R;
-
cout << "Длина окружности равна L=" << C.l(R);
-
getch();
-
return 0;
-
}
-
Функции, заявленные в классе (l и s) должны быть описаны. Описание функций производится отдельно, после объявления класса. При этом необходимо указать, к какому классу принадлежит данная функция. Для этого к имени функции через двойное двоеточие :: добавляется имя класса, например circle::l и circle::s.
-
Двойное двоеточие:: – это оператор разрешения области видимости, который квалифицирует имя члена (функции) вместе с именем его класса. Оператор заявляет о том, что функция l принадлежит классу circle. Т.о., различные классы могут использовать одинаковые имена функций благодаря оператору разрешения области видимости.
-
Чтобы вызвать функцию из части программы, которая находится вне класса, необходимо использовать имя объекта и оператор «точка». Например, в основной программе примера 2 C.l(R)вызывает функцию поиска длины окружности l для окружности C с фактическим значением радиуса R. Вызов C.l(R)возможен, т.к. функция l()в классе circle объявлена как открытая (public).
-
Задание 2
-
Выполните тестирование программы примера 2. Добавьте вызов функции s()для объекта С.
-
-
-
2 Полиморфизм
-
-
Полиморфизм (с греч. многообразие форм, poly – много, morphos – форма) можно определить как свойство, позволяющее использовать одно имя для обозначения действий, общих для родственных классов. При этом конкретизация выполняемых действий осуществляется в зависимоти от типа обрабатываемых данных.
-
В С++ полиморфизм реализован через механизм перегрузки (функций и операций), виртуальные функции и шаблоны.
-
Рассмотрим механизм перегрузки функций – внутри класса допускается существование нескольких функций с одинаковым именем, но различающимися типами результатов и наборами формальных параметров.
-
-
Пример 3 Перегрузка функций
-
Определим перегруженную функцию l()класса circle, которая возвращает длину окружности и длину дуги . Во втором случае необходимо задать два аргумента: радиус r и угол сектора a в градусах.
-
-
#include "stdafx.h"
-
#include<iostream>
-
#include<conio.h>
-
#include<math.h>
-
#define pi 3.14
-
using namespace std;
-
class circle
-
{
-
public:
-
double l(float);
-
double l(float, float); // Объявление функции l от двух переменных
-
double s(float);
-
};
-
// Описание функций – членов класса
-
// Описание функции l от одной переменной(длины окружности от радиуса)
-
double circle::l(float r)
-
{
-
return 2*pi*r;
-
}
-
// Описание второй функции l от двух переменных (длины дуги от радиуса окружности и угла сектора)
-
double circle::l(float r, float a)
-
{
-
return pi*r*a/180;
-
}
-
// Описание функции s от одной переменной (площади окружности от радиуса)
-
double circle::s(float r)
-
{
-
return pi*r*r;
-
}
-
// Основная программа
-
int main(array<System::String ^> ^args)
-
{
-
circle C;
-
float R,A;
-
cout << "Введите значение радиуса окружности R=";
-
cin>>R;
-
cout << "Введите значение угла в градусах А=";
-
cin>>A;
-
cout << "Длина окружности равна L=" << C.l(R)<< "\n";
-
cout << "Длина дуги равна L=" << C.l(R, A);
-
getch();
-
return 0;
-
}
-
Тестирование:
-
Задание 3
-
Выполните перегрузку функции l(), добавив соответствующие строки к программе примера 2. Выполните перегрузку функции circle::s, вычислив площадь сектора:
-
Лабораторная работа № 7
Создание оконных приложений
Цель работы: изучить определение, назначение и виды форм; научиться создавать оконные приложения с помощью конструктора форм Windows Forms.
Содержание работы
1 Понятие формы. Конструктор форм Windows Forms
2 Элементы управления
3 Создание приложений с помощью Windows Forms Application
Пример 1 Создание простейшего оконного приложения
Пример 2 Создание идентификационной формы
4 API-функции
Пример 3 Изменение параметров MessageBox.Show
5 Анализ кода
6 Расчетные формы
Пример 4 Создание расчетной формы
Пример 5 Создание простейшего меню
7 Создание оконных приложений на базе MFC