- •Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •Запятая в качестве операции
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •Разветвляющиеся вычислительные процессы
- •1. Управляющая структура «развилка». Логические операции и операции отношения
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •Алгоритмы сортировки одномерных массивов
- •1. Сортировка одномерных массивов
- •1.1. Метод пузырька (метод обменной сортировкой с выбором)
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
2. Линейные вычислительные алгоритмы
Под линейным вычислительным алгоритмом будем понимать последовательность действий, состоящую из команд ввода, вывода и присваивания значений некоторым величинам. При описании таких алгоритмов используется только одна управляющая структура – следование.
Из определения алгоритма следует, что он должен начинаться с описания величин, которые используются при вычислениях. Такие величины подразделяют на переменные и константы. Переменная – именованная величина, значение которой может меняться в ходе вычислений. Имя переменной – это последовательность из букв латинского алфавита, десятичных цифр и символов подчёркивания, начинающаяся не с цифры. Такую последовательность называют идентификатором. Переменные бывают различных типов: целые, вещественные, символьные и др, поэтому при их описании будем указывать тип каждой переменной. Константа – это величина, представляющая фиксированное числовое, строковое или символьное значение. После описания переменных и констант (если они есть) следует описание действий, которые и составляют собственно алгоритм решения поставленной задачи.
Помимо операций ввода-вывода основным элементарным действием в алгоритме является операция присваивания значения переменной. Формат команды присваивания:
<имя переменной> = <выражение>
Знак «=» следует читать как «присвоить». Под командой присваивания понимается последовательность действий:
вычисляется выражение;
полученное значение записывается в переменную.
Отметим три основных свойства команды присваивания:
до тех пор пока переменной не присвоено никакое значение, она остается неопределенной;
значение, которое было присвоено переменной, сохраняется в ней до следующей операции присваивания другого значения этой переменной;
значение, вновь присвоенное переменной, заменяет её предыдущее значение.
Пример построения линейного вычислительного алгоритма
и соответствующего проекта в среде Visual C++ 6.0
Пример. Разработать алгоритм и составить по нему программу (разработать консольный проект) для вычисления значений функции z = . Область определения функции не учитывать.
Ход выполнения работы
Написать алгоритм решения задачи в виде логически правильной последовательности действий.
Перевести алгоритм на язык программирования (этот процесс называется кодированием). Ниже приведены алгоритм и соответствующая программа. Программа снабжена комментариями, поясняющими, с какой целью написан тот или иной оператор. Первые два пункта нужно выполнять в тетради по лабораторным работам.
Алгоритм
Программа
объявление вещ: х, у, z
ввод х , у
z=(sin3(x2)+cos(y))/(x2/3+5)
вывод х, у, z
// подключение головных файлов stdio.h и math.h
#include "stdio.h"
#include "math.h"
//заголовок главной функции main()
int main ( )
{
// объявление вещественных переменных x, y, z
float y, z, x;
// вывод на печать строки x=
printf ("x=");
// ввод значения переменной x
scanf ("%i",&x);
// вывод на печать строки у=
printf ("y=");
// ввод значения переменной y
scanf ("%f",&y);
// вычисление значения переменной z с использованием
// математических функций
z=(pow(sin(pow(x,2)),3)+cos(y))/(pow(x,(float)2/3)+5);
// вывод значений переменных x, y, z последовательно
printf ("x=%5i\ty=%f\tz=%7.3f\n",x, y, z);
// завершение работы главной функции
return 1;
}
Создать консольное приложение A “Hello, World!” application. Открыть главную функцию main(), для чего нужно выполнить шаги, описанные в Лекции 1.
В открывшемся окне редактора необходимо отредактировать текст главной функции следующим образом:
удалить все строки, следующие за строкой #include "stdafx.h".
за указанной строкой напечатать текст программы.
Запустить приложение на выполнение, как это описано в Лекции 1.
Отладить программу.
Сохранить отлаженный проект на рабочем диске.
Примечания:
При вычислении знаменателя функции z была применена операция приведения к типу данных: (float)2/3. Причиной этого является то, что знак ‘/’ обозначает операцию целочисленного деления, т.е. при делении целого числа на целое число результат округляется до нуля. Если же один из операндов является вещественной переменной, то в результате получается вещественное значение. В нашем случае операция приведения к типу данных (float) позволяет «перевести» число 2 из разряда целых чисел в разряд вещественных.
При запуске программы на экране монитора появится строка
x=_
Часть строки x= выводит на экран функция printf(), мигающий курсор – это приглашение к вводу значения переменной x с клавиатуры. Ввод значения с клавиатуры заканчивается нажатием клавиши <enter>. Приглашение к вводу и считывание значения, введенного с клавиатуры, в ячейку оперативной памяти, отведенную под переменную x, – это результат работы функции scanf().
В операторе, отвечающем за вычисление значения переменной z, знаменатель дроби записан в скобках. Необходимо следить за тем, чтобы при вычислении выражений скобки были расставлены правильно, т.е. при записи дробей числитель и знаменатель, представляющие собой сумму, разность или произведение, нужно заключать в скобки; аргументы функций также заключаются в скобки. Очень важно при записи выражений на языке С++ помнить о приоритете операций.
Запись \t в форматной строке означает горизонтальную табуляцию, а запись \n – перевод на другую строку.
При выводе на печать вещественного значения функцией printf() допустим следующие форматы вывода:
%<количество_позиций_под_значение>.<количество_позиций_под_дробную_часть>f
%<количество_позиций_под_значение>i
В приведенном примере формат вывода %5i означает, что при выводе переменной x под вывод всего значения переменной будет отведено 5 позиций, а формат вывода %7.3f означает, что при выводе переменной z под вывод всего значения переменной будет отведено 7 позиций, из них 3 позиции – под дробную часть.