Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

Раздел 2 Управляющие структуры и структуры данных

Следующие пять тем посвящены структурам программирования: управляющие структуры программирования (структры следования, ветвления и повторения); адресные типы данных (указатели и ссылки); структуры данных фиксированного размера (массивы и типы данных, определяемые пользователем,); функции и программирование рекурсивных алгоритмов; динамические структуры данных (списки).

Тема 6. Представление управляющих структур

программирования

6.1. Структура следования

Обычно операторы программы обычно выполняются последовательно один за другим. Это называется последовательным выполнением. Когда следующим выполняется не очередной по порядку оператор, а какой-то другой, то это называется передачей управления. Многократное использование в программе передач управления (операторов goto) приводило к большим неприятностям в программировании и сопровождении программ. Одним из требований процедурного программирования являлся отказ от оператора goto. Исследования ведущих специалистов показали, что можно писать программы без goto, а с использованием трех типов управляющих структур: структура следования, структуры ветвления (выбора), структуры повторения.

Структура следования , представленная на рис. 6.1, встроена в язык C++ и означает режим последовательного выполнения операторов программы.

Рис. 6.1. Структура следования.

6.2. Структуры ветвления

Структура ветвления (выбора) служит для программирования разветвляющихся вычислительных процессов и реализована в виде трех структур:

  • структура с единственным выбором: структура if (если) выполняет некоторое действие, если условие истинно, и игнорирует его, если условие ложно;

синтаксис if (если):

if (expr) //если expr истинно, то выполняется блок {op1;...}

{op1;...} //если ложно, то блок пропускается

  • структура с двойным выбором: структура if/else (если -иначе) выполняет одно действие, если условие истинно, и второе действие, если условие ложно;

синтаксис if/else (если-иначе):

if (expr) //если expr истинно, то выполняется блок {op1;…}

{op1;...} //если ложно, то выполняется блок {op2;…}

else

{op2;…}

  • структура с множественным выбором: структура switch(выбор) выполняет выбор действия среди множества действий;

синтаксис switch:

switch(expr) //выполняется тот opi, для которого

{ case const1: op1;…break; //consti==значению expr

case const2: op2;…break; //break – выход из switch

[...] //если соответствие не найдено,

[default: opN;] //то выполняется оператор opN

if структура if/else структура switch структура

(единственный (двойной выбор) (множественный выбор)

выбор)

Рис. 6.2. Структуры ветвления (выбора)

Пример 1 «Структура ветвления с двойным

выбором if/else»

Условие задачи: имеются три переменных (a, b, c) с различными значениями; вывести числа в порядке убывания.

Для создания проекта консольного приложения необходимо выполнить следующие этапы:

Запустить Visual Studio .NET 2003. Появится стартовая страница Start Page. Проверить вкладку Projects.

Щелкнуть на кнопке New Project или выбрать команду File->New->Project. Появится диалоговое окно New Project.

Выбрать в списке Project Types папку Visual C++ Project Win32, а в списке Templates – Win32 Console Projects. Ввести имя проекта TPlab1_1 и проверить в поле Location имя папки для хранения проекта (TPlab1_1).

Щелкнуть на кнопке OK. Появляется диалоговое окно Win32 Application Wizard TPlab1_1. На вкладке Application Setting (параметры приложения) выбрать Console Application.

Щелкнуть на кнопке Finish. Информация о проекте выводится в окне Solution Explorer (левое окно). Создается исходный файл TPlab1_1.cpp, который будет содержать всего одну пустую функцию main():

int t_main(int args, _TCHAR* argv[])

{return 0;}.

Проект должен содержать файл заголовков TPlab1_1.h и файл кодов TPlab1_1.cpp. Для создания файла TPlab1_1.h выполнить следующие этапы:

Выбрать команду File->Add New Item. Появится диалоговое окно Add New Item lab1. В списке Categorie должно быть Visual C++.

Выбрать в списке Templates тип файла заголовков Header File (.h), ввести имя файла TPlab1_1.h и щелкнуть на кнопке Open. Появится пустое поле для ввода текста файла TPlab1_1.h.

Ввести текст файла Tlab1_1.h и сохранить его:

//файл заголовков TPlab1_1.h

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

Добавить в файл кодов TPlab1_1.cpp подключение файла заголовков и текст функции main():

//файл кодов TPlab1_1.cpp

#include "stdafx.h"

#include "TPlab1_1.h"

int _tmain(int argc, _TCHAR* argv[])

{

int a,b,c;

cout<<"Vvedite a, b, c: ";

cin>>a>>b>>c;

if(a>b)

if(b>c) cout<<a<<b<<c<<'\n'; //ввод:321, вывод:321

else if(a>c) cout<<a<<c<<b<<'\n'; //ввод:312, вывод:321

else cout<<c<<a<<b<<'\n'; //ввод:231, вывод:321

else if(a>c) cout<<b<<a<<c<<'\n'; //ввод:132, вывод:321

else if(b>c) cout<<b<<c<<a<<'\n';//ввод:213, вывод:321

else cout<<c<<b<<a<<'\n'; //ввод:123, вывод:321

return 0;

}

Выбрать команду Build->Build TPlab1_1. Выполняется компиляция и компоновка программы. При наличии ошибок выполнить редактирование файлов и снова запустить на компиляцию.

Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы. На экране появляется окно и выводятся результаты программы. Строка Press Any Key to Continue позволяет увидеть результаты программы.

Пример 2 «Структура ветвления с множественным

выбором switch»

Условие задачи: ввести оценки студентов и подсчитать число студентов с оценками 2, 3, 4, 5.

Создать проект консольного приложения и ввести имя проекта TPlab1_2.

Создается исходный файл TPlab1_2.cpp, который будет содержать всего одну пустую функцию main():

int t_main(int args, _TCHAR* argv[])

{return 0;}.

Проект должен содержать файл заголовков TPlab1_2.h и файл кодов TPlab1_2.cpp.

Создать файл TPlab1_2.h, ввести текст файла и сохранить его:

//файл заголовков TPlab1_2.h

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

Добавить в файл кодов TPlab1_2.cpp подключение файла заголовков и текст функции main():

//файл кодов TPlab1_2.cpp

#include "stdafx.h"

#include "TPlab1_2.h"

int _tmain(int argc, _TCHAR* argv[])

{

//блок объявлений, инициализации и ввода

char ocenka; //оценка

int kol2=0, //число оценок 2

kol3=0, //число оценок 3

kol4=0, //число оценок 4

kol5=0; //число оценок 5

cout<<"Vvedite ocenky, "<<endl

<<"ili konec vvoda '0' "<<endl;

//блок обработки

cin>>ocenka;

while(ocenka!='0')

{

switch(ocenka)

{

case '2':

kol2++; break;

case '3':

kol3++; break;

case '4':

kol4++; break;

case '5':

kol5++; break;

case ' ':

break;

default:

cout<<"Nepravilno, "

<<"vvedite snova"<<endl;

break;

}

cin>>ocenka;

}

//блок вывода

cout<<"\nKol-vo ocenok: "

<<"\n2: "<<kol2

<<"\n3: "<<kol3

<<"\n4: "<<kol4

<<"\n5: "<<kol5<<endl;

return 0;

}