Структура Программы На Языке С++
Структура Программы На Языке С++
Структура Программы На Языке С++
языке С++
Татьяна Леонидовна Труханович,
ст. преподаватель, магистр управления ИС
Минск, 2021
Цель курса
Изучить алгоритмы и концепцию объектно-ориентированного
программирования
Научиться проектировать и разрабатывать алгоритмы и ПО в
объектно-ориентированном стиле
Примечание:
Изложение материала производится на примере языка С++.
Особое внимание уделено оформление программного кода*
(структурирование, именование объектов, комментирование).
Компиляция Интерпретация
В память ЭВМ загружается В память компьютера помещаются и
программа компилятор, программа на ЯП и программа
которая переводит программу с интерпретатор.
ЯП на язык машинных команд.
Интерпретатор в последовательности
В результате получается выполнения алгоритма читает
программа на языке машинных определённый оператор программы,
команд, которую можно переводит его в машинные коды и тут же
запускать на выполнение. выполняет эти команды. Затем переходит
к следующему оператору. Если
выполнить не может, то останавливается.
Этапы работы с программой на С++ в
системе программирования
Компоненты
Содержит список
элементов, которые нужно
проверить.
Задача — убедиться, что
элемент отображается на
экране, а описание
совпадает с реальностью.
Если всё так, пункт
отмечается как
выполненный.
Пример чек-листа
[https://praktikum.yandex.ru/]
Пример чек-листа
[https://praktikum.yandex.ru/]
Тест-кейс
вид тестовой документации, Обязательные элементы тест-кейса:
описывает процесс проверки УИД;
сервиса.
заголовок;
шаги;
ожидаемый результат (ОР).
Дополнительные элементы:
предусловие/постусловие;
операционную систему (ОС);
устройство, на котором тестируют
продукт;
другие компоненты: например,
версию ПО, названия элементов,
которые проверяют роль
пользователя.
Примеры тест-кейсов
Баг-репорт
Обязательные поля
Необязательные поля
[https://praktikum.yandex.ru/]
Пример баг-репорта
[https://praktikum.yandex.ru/]
Пример баг-репорта
[https://praktikum.yandex.ru/]
Отчет о тестировании
Методы локализации
Отладка ошибки
этап разработки Деление пополам.
компьютерной программы, на
Поэтапное
котором обнаруживают,
добавления/выполнения
локализуют и устраняют
функционала.
ошибки. (Обнаружение
причины ошибки.) Узнавать текущие значения
переменных. (Вывод значений
или дебагер)
Выяснять, по какому пути
выполнялась программа. (Вывод
сообщений с указанием метки
блока программы или дебагер)
Упражнение
int x=3;
x/2 1 !true= false
(float)x/2 1.5
false&& true=false
(float)x/2. 1.5
false&&false=false
x%2 1
true&& false=false
x++-2 1 //x=4
true&& true = true
++x-2 2 //x=4
false||false=false
x==3 1
false||true=true
x!=3 0
true||false=true
x>0?'y':'n' 1
x+=1 4
Правила записи выражения в
языках высокого уровня:
все символы записываются в одну строку;
в выражении проставляются все знаки операции;
при записи выражений учитываются приоритеты операции;
для влияния на последовательность операции используются
скобки.
Правила преобразования при
выполнении бинарных операций:
Примеры:
while (условие){
блок;
} int i=0, n=3;
Student Students[] = { {"Колос", 8},
{"Василькова", 9}, {"Жук", 7} };
while(Students[i].surname != "Колос"
&& i<n){
i++;
}
do{
операторы;
int i=0, n = 3;
}while (условие);
Student Students[] = { {"Колос", 8},
{"Василькова", 9}, {"Жук", 7} };
do{
cout << (i+1) <<
Students[i].surname << " " <<
Students[i].mark<<endl;
i++;
} while(i<n);
Оператор for
if(Students[i].mark>0){
cout << number++ << "." <<
Students[i].surname << " « <<
Students[i].mark << endl;
}
}
Оператор foreach
for(типМассива
имяРабочейПеременной:
имяМассива){ Student Students[] = { {"Колос", 8},
блок; {"Василькова", 9}, {"Жук", 7} };
} for (Student theStudent : Students){
cout << theStudent.surname << " "
<< theStudent.mark << endl;
}
Статический Динамический
int a=5; int *a,*b;
cout<<a; a=new int; // выделить
int b[10]; *a=5;
cout<<a;
delete a;//забрать
b=new int[10];
delete[] a;
Ссылки
Формат Пример
Объявить массив из 10
элементов.
тип имя [размер];
int A[10];
Размер массива должен быть
целочисленной константой. Объявление с
инициализацией
#define n 5 или const int n=5;
int B[ ]={4, 6, 7, 8, 10,6};
n=sizeof(A)/sizeof(A[0]);
Доступ к элементам массива
Синтаксис Пример
имя[индекс];
Имя массива – адрес его cout>>B[2];// выведет 7
нулевого элемента.
*(имя+индекс)
cout>>*(B+2);// выведет 7
Проход по элементам массива
можно организовать с помощью for
Строка в языке С/C++
Процедура
является минимальным исполняемым программным
модулем и представляет собой набор команд для
выполнения некоторого вспомогательного алгоритма.
может принимать параметры.
Функция
является минимальным исполняемым программным
модулем и представляет собой набор команд для
выполнения некоторого вспомогательного алгоритма.
может принимать параметры.
может возвращать значение.
Найти максимум из трех чисел.
void main()
{
printLine (80,'*'); // вызов функции line()
}
предложение фиксации (в
спецификации C++ это lambda-
introducer.)
список параметров
(необязательно).(Также именуется
как lambda declarator.)
отключаемая спецификация
(необязательно).
спецификация исключений
(необязательно).
завершающий возвращаемый тип
(необязательно).
тело лямбда-выражения)
#include <iostream>
using namespace std;
int main()
{
auto f1 = [](int x, int y) { return x + y; };
return EXIT_SUCCESS;
}
Аргументы по умолчанию
int myfunc(int, int, int = 3);
int main() {
cout << myfunc (4, 5, 6) << endl; // No default
cout << myfunc (4, 5) << endl; // 4, 5, 3(default)
// cout << myfunc (4) << endl;
// error: too few arguments to function 'int fun2(int, int, int)'
}
int myfunc (int n1, int n2, int n3) {
return n1 + n2 + n3;
}
Указатели для передачи
параметров функции
void swap (int * , int *);
int main ()
{
int x=1 , y=2;
cout<< " x= " <<x<< " y= " <<y);// x=1 y=2
swap (&x ,&y);
cout<< " x= " <<x<< " y= " <<y); // x=2 y=1
}
Переменные в
функции main() x y
1 2
FFC0 FFC2 FFC4
Ссылки для передачи
параметров функции
void swap (int&, int&);
int main ()
{
int x=1, y=2;
cout<< " x=" <<x<< " y=" <<y;// x=1 y=2
swap (x ,y);
cout<< " x=" <<x<< " y=" <<y; // x=2 y=1
}
Пример
double (*fp)(int, int); /* fp указатель на функцию, которая
принимает два параметра типа int и возвращает тип double */
int main() Функции:
{ int add(int n1, int n2)
int number1 = 5, number2 = 6; {
int (*fp)(int, int); // указатель на функцию return n1 + n2;
}
char c; // знак операции
int sub(int n1, int n2)
cout<<"Введите знак операции"; {
cin>>c; return n1 - n2;
switch(c){ // присвоить указателю адрес }
соответствующей функции int mult(int n1, int n2)
case '+': fp=&add; break; {
case '-': fp=⊂ break; return n1 * n2;
case '*': fp=&mult; break; }
default: cout<<"Такая операция не реализована.";
};
// вызвать функцию, на которую указывает
указатель
cout << number1<<c<<number2<<"="
<<fp(number1,number2) << endl;
}
Указатель на функцию как параметр
функции
int arithmetic(int, int, int (*)(int, int)); /*функция два аргумента типа int и
указатель на функцию, которая принимает два целочисленных аргумента и
возвращает значение типа int */
int main()
{
int number1 = 5, number2 = 6;
// выполняется сложение number1 и number2
cout << arithmetic(number1, number2, add) << endl;// add из предыд. слайда
// выполняется вычитание number1 и number2
cout << arithmetic(number1, number2, sub) << endl;
}
А) ?
Б) if
В) switch
Г) for
Д) do while
Е) while
Помошью какого оператора на экран будет
выведена последовательность 12345
А) for(i=0;i<5;)cout<<i++;
Б) for(i=1;i<=5;i++)cout<<i;
В) i=0;while(i<=5)cout<<i++;
Г) while(i<=5)cout<<i++;
Д) все из выше перечисленных
Е) нет правильного ответа.
Выберите правильный вариант объявления
массива из 10 элементов целого типа:
А)int A[10];
Б)A=int[10];
В A= new int[10];
Г) float A[10]
Д) int[10] A;
Е) нет правильного ответа
Сколько операторов return может
содержать функция в языке С++
А) ровно один;
Б) не более двух;
В) несколько;
Г) два;
Д) нет правильного ответа.
Что будет выведено на экран
switch(c){
case 1:
case 2: cout<<"два";
case 3: cout<<"три";break;
default: cout<<"нет";;
}
int x = 12;
while (x < 10) {
x--;
}
cout<<x;
А)0.
Б) cout никогда не будет выполнен.
В)10
Г) 12
Что будет выведено на экран
for(int i=0;i<10;i++){
if(i==3 || i==5)continue;
if(i==7)break;
cout<<i;
}
А) 1 10
Б) 1,5 10
В) 2 10
Г) 2 8
Д) нет правильного ответа.
Что будет выведено на экран
#include<isotream>
using namespace std;
void f()
{
cout<<”Hello”<<endl;
}
main(){}
А) Ничего не будет выведено.
Б) Hello
В) Ошибка – функция объявлена, но не вызвана.
Г) Ошибка – функция определена, но не объявлена
Д) Ошибка – тело функции main() пусто.
Что будет выведено на экран
А) Myfile 222
Б) Myfile 1 2 2 3 4
В) Myfile 1 3 2 2
Г) Myfile 0 1 2 3
Упражнение