- •1. Основные этапы решения задач на эвм
- •Формулировка задачи
- •Математическая постановка задачи
- •Разработка алгоритма решения задачи
- •Написание текста программы на языке программирования
- •Ввод текста программы в эвм
- •Поиск и устранение синтаксических ошибок
- •Тестирование программы. Поиск и устранение логических ошибок в программе
- •Этапы создания исполняемой программы
- •Базовые компоненты программ
- •Буквы и цифры
- •Пробельные символы
- •Знаки пунктуации и специальные символы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Лексемы
- •Типы данных
- •Целые константы
- •Константы с плавающей точкой
- •Константа-символ
- •Строковые литералы
- •Универсальные функции ввода и вывода любых типов данных
- •Структуры и форма написания программы
- •Программирование разветвляющихся вычислительных процессов
- •Цикл while – цикл с предусловием.
- •Цикл do while – цикл с постусловием
- •Цикл for
- •Безусловная передача управления внутри цикла
- •Описание некоторых стандартов алгоритмов
- •Работа с файлами (функции ввода вывода верхнего уровня)
- •Указатели
- •Одномерные массивы Объявление массива.
- •Стандартные функции обработки строк
- •Многомерные массивы на примере двумерных
- •Классы памяти
- •Способы передачи данных в функцию
- •Функции и строки
- •Функции и одномерные числовые массивы
- •Функции и двумерные массивы
- •Функции с параметрами по умолчанию
- •Перегрузка функции
- •Шаблоны функции
- •Типы данных, определяемые пользователем
- •4.1. Структуры
- •Шаблон структуры
- •Структурные переменные
- •Инициализация структуры
- •Доступ к полям структуры
- •Массив структур
- •Вложенные структуры
- •Битовые поля структур
- •Передача структуры в функцию
- •Двоичный ввод-вывод структур
- •Функции двоичного ввода-вывода
- •Динамические структуры данных
- •4.2. Объединения
- •4.3. Перечисления
- •Файловые операции ввода/вывода
- •Файловый ввод/вывод с прямым доступом
Программирование разветвляющихся вычислительных процессов
Вычислительный процесс называется разветвляющимся, если для реализации предусмотрено несколько направлений (ветвей). Каждое разветвление является следствием проверки условия. При разработке программы обратить внимание на следующее. В программе должны быть предусмотрены все возможные направления, но процесс реализуется только по одной ветви. Любая ветвь должна приводить к выводу результата и на конец программы.
Условные выражения. Для образования простых условных выражений используются операции отношения: >, >=, <, <=, != - не равно = = - сравнение на равенство. Значение операции отношения 1, если выражение истинно, и 0 если выражение - ложь. Например: a>b, если а=3 а b=7, то ложь.
Если в выражении присутствует несколько операций отношения, то они соединяются между собой логическими операциями. Логические операции:
а) && - логическая операция И – результат истина т.е. 1, если оба операнда истины, или ложь в противном случае;
б) || - логическая операция ИЛИ – результат операции истина или 1 если хотя бы один операнд истинен, или ложь в противном случае;
в) ! – логическая операция НЕ (пишется перед операндом) если операнд –истина, то результат операции – ложь, и наоборот.
Пример: X>= X>= 5&&X<=25
!( X<5 || X>25
Анализ символьной информации.
‘0’
‘9’ ‘A’
‘Z’
‘a’
‘z’
‘А’ ‘Я’ ‘а’ ‘п’ ‘р’
‘я’
char sim;
Убедиться, что в переменной записана цифра sim>=’0’&& sim<=’9’
В переменной sim содержится большая латинская буква. sim>=’A’&&sim<=’Z’
Условный оператор if с одной альтернативой. Применяется если при выполнении, какого либо условия, требуется выполнить какое либо действие в противном случае ничего не делать.
Синтаксис: if (выражение)
один оператор или блок.
Пример:
if (score>big)
puts (“Привет”);
if (a>b&&a>c)
{
mix=a;
printf (“mix=%d.\n”,mix);
}
Оператор if-else – с двумя альтернативами. Применяется когда в случае истинности условия выполняется одни действия, в случае ложности - другие. Использовать конструкцию, чтобы подчеркнуть выполнение одной из двух возможных действий.
Синтаксис: if (выражения)
один оператор или блок
else
один оператор или блок
Слово else несет в себе вполне определенное условие которое можно сформировать как отрицание выражения !(выражение).
Конструкция else-if для трех и более альтернатив. Применяется в случае проверки двух или более взаимосвязанных условий.
Синтаксис: if (выражение 1)
один оператор или блок
else if (выражение 2)
один оператор или блок
else
один оператор или блок
Ветвь else является не обязательной и служит для выражения действий, если выражения 1,2….. не выполняются.
Операция условия ?: Используется тогда когда есть некая переменная, которой можно присвоить одно из двух возможных значений.
Синтаксис: выражение 1 ? выражение 2 : выражение3
Если выражение 1 истина, то значением операции является выражение 2, иначе - выражение 3.
Пример:
x=(y>0)?y:-y; вычисляется модуль числа y.
Задача. Ракета запускается с Земли со скоростью v км/с в направлении движения Земли по орбите вокруг Солнца. Составьте алгоритм, определяющий результат запуска ракеты в зависимости от скорости. Известно, что при v < 7,8 ракета упадет на Землю, при 7,8 ≤ v < 11,2 ракета станет спутником Земли, при 11,2 ≤ v < 16,4 ракета станет спутником Солнца, при v ≥ 16,4 ракета покинет Солнечную систему.
Текст функции main будет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
double v; //объявили переменную - скорость
//приглашение к вводу, текст выводится на экран монитора отдельной строкой
cout<<Rus("\n Введите скорость ракеты ");
//ввод скорости с клавиатуры в переменную v
cin>>v;
//схитрим немного: выведем общую часть сообщения один раз
cout<<Rus("Ракета, запущенная со скоростью ") << v;
//в зависимости от условия выводим на монитор то или иное сообщение
if(v<7.8)
cout<<Rus("км/сек, yпадет на Землю\n");
else if(v<11.2)
cout<<Rus("км/сек, cтанет спутником Земли\n");
else if(v<16.4)
cout<<Rus("км/сек, cтанет спутником Солнца\n");
else //условие по этой ветви неявно: во всех остальных случаях
cout<<Rus("км/сек, покинет Солнечную систему\n");
//оператор return завершает работу функции main
return 0;
}
Оператор switch. Оператор switch применяется для сравнения на равенство некоторого выражения или переменной целого типа с рядом констант. Замечание: анализируемое выражение или переменная должны быть типа int или char.
Синтаксис: switch (выражение)
{
case метка 1:
оператор
…………….
case метка 2:
оператор
……………
default:
оператор
……………
}
Под меткой (1,2...) подразумеваются константы соответствующего типа(int, char).Операторы выполняются последовательно, в том числе и под другими метками до тех пор, пока не будет встречен оператор break, который прерывает выполнение switch.
Задача 1. Вывести на экран монитора название времени года по его номеру:
1 – зима,
2 – весна,
3 – лето,
4 – осень.
В остальных случаях печатается сообщение об ошибке.
Текст функции main будет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
int n; //объявили переменную
//приглашение к вводу, текст выводится на экран монитора отдельной строкой
cout<<Rus("\n Введите номер времени года ");
//ввод исходных данных с клавиатуры
cin>>n ;
//вычисляем результат в зависимости от n
switch(n)
{
case 1:
cout<<Rus("Это зима!")<<endl;
break;
case 2:
cout<<Rus("Это весна!")<<endl;
break;
case 3:
cout <<Rus("Это лето!") <<endl;
break;
case 4:
cout<<Rus("Это осень!")<<endl;
break;
default:
cout<<Rus("Нет такого номера времени года") <<endl;
}
//оператор return завершает работу функции main
return 0;
}
Задача 2. Вывести на экран монитора название растения на букву d, независимо от того, большая она или маленькая.
Текст функции main будет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
char simvol; //объявили переменную
//приглашение к вводу, текст выводится на экран монитора отдельной строкой
cout<<Rus ("\n Введите букву ");
//ввод исходного данного с клавиатуры
cin>>simvol;
//вычисляем результат в зависимости от simvol
switch(simvol)
{
case 'd':
case 'D':
cout<<Rus("\nЭто дуб!")<< endl;
break;
default:
cout<<Rus("\nВведите букву d – получите ответ!")<< endl;
}
//оператор return завершает работу функции main
return 0;
}
Циклы в языке С++
Вычислительный процесс называется циклическим, если он содержит неоднократное выполнение одной и той же последовательности действий.
Число повторений цикла в некоторых случаях известно, в других – определяется в процессе выполнения цикла, на основе проверки некоторого условия.
Бывают циклы с проверкой условия перед началом выполнения цикла, или по окончанию выполнения цикла, или внутри цикла с помощью оператора передачи управления.
Итерация- выполнения цикла один раз.
Заголовок– некая конструкция, включающая в себя служебное слово.
Тело цикла– один оператор или блок, повторяющийся заданное количество раз.
Для построения цикла необходимо:
а) выделить переменную управляющую циклом, от значения которой зависит, выполняется цикл или нет.
б) до начала цикла присвоить ей правильное начальное значение.
в) построить условие, при истинности которого цикл выполнялся бы.
г) внутри цикла изменять переменную цикла так, чтобы он на определенном шаге завершился бы.