- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «Microsoft Visual Studio.Net».
- •Структура программы.
- •Пример простейшей программы:
- •Представление данных.
- •Операции.
- •Ввод и вывод алфавитно-цифровой информации.
- •Математические функции.
- •Практическое задание №1.
- •Условия в вычислениях. Ветвящиеся и итерационные алгоритмы Условная операция присваивания. Операторы if ... Else и switch.
- •Ветвящиеся алгоритмы.
- •Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while.
- •Практическое задание №2.
- •Функции.
- •Определение функции.
- •Прототипы функций.
- •Вызов по значению и вызов по ссылке.
- •Вычисление функций путем разложения в ряд.
- •Поиск корней функции методом деления отрезка пополам.
- •Поиск корней функции методом касательных.
- •Практическое задание №3.
- •Массивы и указатели. Работа с файлами. Объявления массивов и указателей.
- •Доступ к элементам массива.
- •Передача массивов функциям.
- •Указатели.
- •Динамическое выделение и освобождение памяти.
- •Практическое задание.
- •Потоковые функции.
- •Низкоуровневый ввод и вывод.
- •Ввод и вывод символов, строк, слов.
- •Форматированный ввод и вывод.
- •Потоки cin, cout, cerr.
- •Практическое задание №4.
- •Структуры и объединения. Синтаксис структур.
- •Доступ к элементам структуры.
- •Передача структур в функции.
- •Структуры и битовые поля.
- •Объединения.
- •Дополнительные средства (typedef и enum).
- •Введение в объектно-ориентированное программирование. Принципы объектно-ориентированного программирования.
- •Терминология объектно-ориентированного программирования.
- •Структура как простейший класс.
- •Inline методы.
- •Указатель this.
- •Конструкторы и деструкторы.
- •Перегрузка методов класса.
- •Перегрузка операций.
- •Практическое задание.
- •Производные классы. Полиморфизм
- •Виртуальные функции
- •Использование дружественных функций.
- •Практическое задание.
- •Работа в объектно-ориентированной среде.
- •Объектно-ориентированные стековые операции.
- •Объектно-ориентированные связанные списки.
- •Практическое задание.
- •Классы iostream.
- •Потоковый ввод-вывод.
- •Буферизованные потоки.
- •Строковые потоки.
- •Двоичные файлы.
- •Вычисления в интерактивном режиме.
- •Графика в системе matlab.
- •3. Программирование m-функций.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •Глава 7. Дополнительные возможности системы matlab Объекты и классы. Переопределение операций.
- •Написание расширений matlab на языке c
- •Программные интерфейсы
- •Настройка среды для сборки проекта
- •Пример программы
- •Вызов команд среды matlab из mex-файла
Ветвящиеся алгоритмы.
Описанные условные операторы позволяю создавать достаточно сложные программы. Рассмотрим для примера программу решения линейного уравнения ax+b=0.
//
// Решение линейного уравнения ax+b=0
// ( C ) Демонстрационная программа
// 1999 год.
#include <stdio.h>
int main()
{
double a,b,x;
printf(“enter a:”);
scanf(“%lf”,&a);
printf(“enter b:”);
scanf(“%lf”,&b);
if(a==0)
{
if(b==0)
printf(“every x is solution.”);
else
printf(“no solution.”);
}else
{
x=-b/a;
printf(“x=%lf”,x);
}
return 0;
}
Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while.
В процессе программирования часто возникает необходимость повторять многократно один и тот же фрагмент программы. В этом случае используются операторы циклов.
Простейший из циклов имеет вид:
while (условие)
{
операторы;
}
Такой цикл повторяется многократно до тех пор, пока значение условия истина. Как только это значение становится ложным, выполнение цикла прекращается.
Имеется аналогичный вариант цикла, но с проверкой в конце
do
{
операторы;
} while (условие);
Если необходимо создать цикл с известным числом повторений, то используется следующий оператор:
for( инициализация ; проверка_условия ; коррекция) { операторы; }
В таком цикле сначала выполняется инициализация. Обычно – это присвоение начального значения переменной цикла. Инициализация выполняется только один раз. Далее происходит проверка условия. Если она дает истину, то выполняются операторы внутри цикла. После этого выполняется коррекция и повторяется проверка.
В следующем примере складываются первые пять целых чисел:
int sum=0;
for(int i=1;i<5;i++)
{
sum+=i;
}
Внутри циклов можно использовать оператор break; для принудительного завершения цикла и оператор continue; для пропуска оставшихся в цикле операторов и перехода к повторению цикла.
Практическое задание №2.
При выполнении второго задания студенты должны изучить и применить на практике приемы работы с операторами цикла и ветвления.
Вариант 1.
Напишите программу возведения целого числа a в целую степень n. Разработайте интерфейс, позволяющий пользователю вводить а и n с клавиатуры. Вычислите и распечатайте таблицу степеней числа 2: при n=0..20.
Вариант 2.
Напишите программу вычисления наибольшего общего делителя (НОД) двух целых чисел. Для поиска НОД можно использовать следующий алгоритм:
Даны два целых положительных числа x и y.
Шаг 1 : Из большего числа вычесть меньшее. Результат поместить в переменную c.
Шаг 2: Положить большее число равным c.
Шаг 3: Если , то повторить шаги 1 и 2.
Шаг 4: Если , то НОД=x=y.
Разработайте интерфейс, позволяющий ввести два числа с клавиатуры и получить их НОД.
Контрольные примеры:
НОД(30030, 2380) = 70, НОД(4200, 660) = 60,
НОД(462,819)=21, НОД(10465, 8778) = 7
Вариант 3.
Разработайте программу решения квадратного уравнения . Пользователь должен иметь возможность ввести с клавиатуры коэффициенты a, b, с и получить корни уравнения и . Обработайте особые случаи (, и т.д.).
Контрольные примеры:
;
;
;
; нет корней
Вариант 4.
Вычислите число e путем вычисления следующей суммы:
, где
Вычисления обрывайте по достижении условия . Для вычисления воспользуйтесь рекуррентными соотношениями. Разработайте интерфейс, позволяющий пользователю вводить параметр с клавиатуры. Сравните результат суммирования с точным значением числа e. Проанализируйте поведение суммы при различных .
Вариант 5.
Определите значение машинного нуля для чисел с плавающей запятой у используемого Вами типа компьютера. Для этого определите число такое, что (в смысле компьютерных вычислений. Разработайте интерфейс, позволяющий пользователю вводить начальное значение с клавиатуры.
Вариант 6.
Определите количество значащих цифр для чисел с плавающей запятой у используемого Вами типа компьютера. Для этого определите число такое, что (в смысле компьютерных вычислений. Разработайте интерфейс, позволяющий пользователю вводить начальное значение с клавиатуры.