КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Структурное программирование. Примеры
5.1. Таблица значений функции 5.1.1. Цикл while
// Пример 7.2.9 //Вывод таблицы значений функции циклом while #include <iostream> #include <math.h> using namespace std; double Fx(double x); void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста double a,b,h,x; cout << "Введите диапазон a,b через пробел >"; cin >> a >> b; cout << "Введите шаг изменения h > "; cin >> h; cout << "Таблица значений" << endl; cout << "------------------------" << endl; cout << " X: Y " << endl; cout << "------------------------" << endl; x=a; // начальное значение параметра цикла while (x<=b) // условие повторения цикла { cout << " " << x << "\t\t"<< Fx(x) << endl; x+=h; // изменение параметра цикла } cin.get();cin.get(); }
double Fx(double x) { double y; //y=x*x; //вид вычисляемой функции y=sqrt(x); //вид вычисляемой функции return y; }
5.1.2. Цикл for
// Пример 7.2.10 //Вывод таблицы значений функции циклом for #include <iostream> #include <math.h> using namespace std; double Fx(double x); void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста double a,b,h,x; cout << "Введите диапазон a,b через пробел >"; cin >> a >> b; cout << "Введите шаг изменения h > "; cin >> h; cout << "Таблица значений" << endl; cout << "------------------------" << endl; cout << " X: Y " << endl; cout << "------------------------" << endl; for (x=a; x<=b; x+=h) cout << " " << x << "\t\t"<< Fx(x) << endl; // for (x=a; x<=b; cout << " " << x << "\t\t"<< Fx(x) << endl,x+=h); cin.get();cin.get(); } double Fx(double x) { double y; //y=x*x; //вид вычисляемой функции y=sqrt(x); //вид вычисляемой функции return y; }
5.1.3. Операторы while, do while, for, switch
// Пример 7.2.11 // Повторение выполнения приложения при помощи цикла while // Повторение ввода при помощи цикла do-while // Вывод таблицы значений функции циклом for // Выбор функции оператором switch #include <iostream> #include <math.h> using namespace std; enum TFunc {Finish, Kvadrat, Kub, Koren, Obratnoe, Sinus}; double Fx(double, TFunc); void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста double a,b,h,x; int v; // цикл выполнения приложения while (true) { // выбор типа функции - личная функция do { cout << "Введите число\n1-квадрат, 2-куб, \ cin >> v; } while (v<Finish || v>Sinus);
// завершение работы приложения if (v==Finish) { cout << "Приложение завершено! "; cin.get(); break; } // ввод границ отрезка - личная функция do { cout << "Введите диапазон a,b через пробел >"; cin >> a >> b; } while (a>=b);
// ввод шага изменения - личная функция do { cout << " Введите шаг изменения h (0.1-2.0) > "; cin >> h; } while (h<0.1 || h>2);
// печать шапки таблицы cout << "Таблица значений" << endl; cout << "------------------------" << endl; cout << " X: Y " << endl; cout << "------------------------" << endl;
// вывод таблицы значений функции for (x=a; x<=b; x+=h) { cout << " " << x << "\t\t"<< Fx(x,(TFunc)v) << endl; }
cin.get(); } }
// функция для вычисления текущего значения х double Fx(double x, TFunc v) { double y; switch (v) { case 1: y=x*x; break; case 2: y=x*x*x; break; case 3: y=sqrt(x); break; case 4: y=1/x; break; case 5: y=sin(x); break; } return y; }
5.2. Числа Фибоначчи (интересный for)
// Пример 7.2.12 // Нахождение N-го числа Фибоначчи итерацией #include <iostream> using namespace std; //typedef unsigned long int ULONG; typedef long double ULONG; ULONG fib(ULONG position); void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста ULONG answer,position; cout << "Номер числа в последовательности?:"; cin >> position; cout << "\n"; answer=fib(position); cout<< "Значение числа Фибоначчи = "<< answer; cin.get();cin.get(); } ULONG fib(ULONG n) { ULONG minusTwo=1, minusOne=1, answer=2; if (n<3) return 1; for (n-=3; n; n--) {// n=0 - ложь - условие завершения цикла minusTwo=minusOne; minusOne=answer; answer=minusOne+minusTwo; } return answer; } 5.3. Программа, работающая под управлением меню
// Пример 7.2.13 //Использование бесконечного цикла и выбора в меню #include <iostream> using namespace std; typedef unsigned short int USHORT; USHORT menu(); void DoTaskOne(); // Заглушки будущих функций - Stub void DoTaskMany(USHORT); void DoSomeThing(); void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста bool exit=false; // флаг для завершения цикла while(true) { // бесконечный цикл USHORT choice=menu(); switch (choice) { case (1): DoTaskOne(); break; case (2): DoTaskMany(2); break; case (3): DoTaskMany(3); break; case (4): break; case (5): DoSomeThing(); break; case (6): DoTaskMany(4); break; case (7): exit=true; break; default: cout << " Выберите снова\n"; cin.get(); break; } if (exit==true) break; } cin.get(); } USHORT menu(){ USHORT choice; cout << "**** Меню ****\n\n"; cout << "(1) Выбор 1.\n"; cout << "(2) Выбор 2.\n"; cout << "(3) Выбор 3.\n"; cout << "(4) Обновление меню.\n"; cout << "(5) Выбор DoSomeThing.\n"; cout << "(6) Выбор 4.\n\n"; cout << "(7) Выход.\n\n"; cout << ": "; cin >> choice; return choice; } void DoTaskOne() { cout << "Задача 1! Для продолжения нажмите <Enter>\n"; cin.get(); cin.get(); } void DoSomeThing() { cout << "DoSomeThing! Для продолжения нажмите <Enter>\n"; cin.get(); cin.get(); } void DoTaskMany(USHORT which) { if (which ==2) cout << "Задача 2!\n"; else if (which == 3) cout << "Задача 3!\n"; else cout << "Задача 4!\n"; cout << " Для продолжения нажмите <Enter>\n"; cin.get(); cin.get(); } 5.4. Ввод числа из нужного диапазона // Пример 7.2.14 // Повторение при вводе чисел с клавиатуры #include <iostream> using namespace std; void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста int age, min=20,max=30; // Ввод возраста от min до max do { cout << "Введите возраст (" << min << "-" << max << ")? " << endl; cin >> age; } while(age < min || age > max); cout << "Возраст: " << age <<endl; cin.get(); // Ввод возраста < min или > max do { cout << "Возраст <" << min << " или > " << max << "? " << endl; cin >> age; } while(age >= min && age <= max); cout << "Возраст: " << age <<endl; cin.get();cin.get(); }
// Пример 7.2.15 // Ввод чисeл нужного диапазона #include <iostream> #include <ctype.h> #include <string> #include <conio.h> using namespace std; int GetNumber(int min, int max); string FormString(); void main() { setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста int MyInt, Age; MyInt=GetNumber(1,10); Age=GetNumber(20,40); cout << "Введены числа: "; cout << MyInt << '\t' << Age << endl; cin.get(); cin.get(); } int GetNumber(int min, int max) { string str; int value; do { cout << "Введите целое от " << min << " до " << max << endl; str=FormString(); value=atoi(str.c_str()); // преобразование строки С++ в целое } while (value < min || value > max); cout << "Введено число: " << value << endl; return value; } string FormString() { int ENTER=13, ch; string str; while (1) { ch=_getch(); if (ch==ENTER) { cout << endl; break; } if (isdigit(ch)) { str+=(char)ch; cout << (char)ch; } } return str; } Практические задания 1. Каким будет значение х после завершения цикла for? 2. Напишите вложенный цикл for, печатающий картинку из нулей 10х10. 3. Напишите циклы for, while, do…while для печати чисел от 100 до 200 через 2. 4. Напишите программу для ввода числа из заданного диапазона с клавиатуры. В случае выхода за границу диапазона повторите ввод числа. 5. Напишите программу вычисления суммы и произведения чисел, вводимых с клавиатуры: a. количество чисел предварительно вводится с клавиатуры; b. вычисления прекращаются по запросу программы. 6. Что неверно в следующем коде? 7. Что неверно в следующем коде? 8. Что неверно в следующем коде? 9. *** Напишите циклическую программу для ввода параметров объекта (Cat, Pencil, Worker, Student…) с клавиатуры и распечатки их на экран. Использовать классы из предыдущей темы. 10. Напишите 3 варианта switch для печати названий дней недели, используя различные типы его параметра: целое, символ и перечисление. 11. Напишите программу для вывода характеристики землетрясения по шкале Рихтера, используя следующую таблицу решений
12. Напишите программу для определения срока службы электрической лампочки на основе ее мощности, используя следующую таблицу решений.
13. Что недопустимо, а что логически неправильно в следующем коде? Контрольные вопросы 1. Почему отказались от циклов с меткой и оператором goto? 2. Как работает цикл while? 3. Может ли тело цикла while не выполниться ни разу? 4. Может цикл while выполняться бесконечно? Как избежать этого? 5. Может ли условие в цикле while быть сложным? 6. Для чего предназначены операторы break и continue? 7. Какой оператор обязательно должен быть внутри цикла while (1)? 8. В каких случаях пользуются циклом do…while? 9. Какие три этапа включает в себя цикл for? Как он работает? 10. Можно ли в цикле for инициализировать и изменять несколько переменных? 11. Можно ли пропускать параметры в цикле for? 12. Может ли цикл for быть пустым? 13. Можно ли внутрь одного цикла вкладывать другой? Есть ли на это ограничения? 14. Какого типа должен быть параметр оператора switch? 15. Для чего в операторе switch используется оператор break? 16. Что произойдет, если случай оператора switch не будет завершен break? 17. Почему рекомендуется внутрь switch вставить случай default? 18. Есть ли ограничение на количество случаев в операторе switch? 19. Как сделать выбор между конструкциями if/else и switch? Заключение В данном конспекте лекций были освещены теоретические и практические приемы основ программирования на языке С++. Цель пособия - дать правильное представление студентам о возможностях языка С++ и подготовить их к дальнейшему его изучению, т.е. к освоению объектно-ориентированного программирования (ООП). ООП - методика разработки программ, состоящих из объектов. Основой для создания объектов являются классы. ООП позволило реализовать, внедрить в жизнь и постоянно дорабатывать огромные по размерам программные проекты. Разработать и сопровождать такие проекты по силам только большим группам программистов. Методами структурного программирования, применяемыми ранее, эти проекты реализовать было просто невозможно. Вторая часть конспекта лекций будет посвящена изучению объектно-ориентированных возможностей языка С++, механизмам использования свободной памяти, концепциям хранения и обработки большого количества объектов в оперативной и внешней памяти. Желаю всем успехов в освоении и использовании языка С++. Его знание позволит, в случае необходимости, достаточно быстро освоить языки программирования Java и C#, которые являются потомками C++.
Литература 1. Джесс Либерти. Освой самостоятельно С++. 3 и-е. М.: Вильямс. – 2000. 2. Г. Шилдт. Полный справочник по С++. 4 и-е. – М.: Вильямс. – 2003. 3. Т.А. Павловская. С/С++. Программирование на языке высокого уровня. ПИТЕР-2002 4. С.В. Глушаков. Практикум по С++. ФОЛИО – 2006 5. Х. Дейтел, П. Дейтел. Как программировать на С++. 6. Страуструп Б. Язык программирования С++. БИНОМ, 1999 7. Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си. - М.: Финансы и статистика, 2000. 8. Прата С. Язык программирования С. Лекции и упражнения: пер. с англ. / С. Прата. – 5-е изд. – М.: Вильямс, 2006. – 960 с. 9. Ю.Л. Кетков. Введение в языки программирования C и C++ 10. А.Л. Фридман. Язык программирования C++ Содержание Введение.. 3 Тема 1: Введение в С++. 5 Лекция 1.1. Эволюция языка С++. Цикл разработки приложения. 5 Лекция 1.2. Работа в среде Visual Studio. 13 Практические задания. 21 Контрольные вопросы.. 22 Тема 2: Составные части программы на С++. 24 Лекция 2.1. Структура простой программы.. 24 Лекция 2.2. Использование функций. 36 Практические задания. 48 Контрольные вопросы.. 49 Тема 3: Переменные и константы... 51 Лекция 3.1. Встроенные типы данных. 51 Лекция 3.2. Константы, перечисления, синонимы типа. 61 Практические задания. 75 Контрольные вопросы.. 76 Тема 4: Операции и выражения.. 78 Лекция 4.1. Математические операторы и выражения. 78 Лекция 4.2. Логические операторы и выражения. 93 Практические задания. 105 Контрольные вопросы.. 106 Тема 5: Функции. 108 Лекция 5.1. Личные и встроенные функции. 108 Лекция 5.2. Параметры. Значения по умолчанию. Перегрузка. Рекурсия. 130 Практические задания. 147 Контрольные вопросы.. 149 Тема 6: Структуры. Классы и объекты. 150 Лекция 6.1. Структуры в языке С. 150 Лекция 6.2. Классы с открытыми данными. 163 Лекция 6.3. Конструкторы и деструктор. Cкрытие данных. 185 Лекция 6.4. Введение в библиотеки классов. 205 Практические задания. 213 Контрольные вопросы.. 214 Тема 7: Циклы, выбор вариантов. 216 Лекция 7.1. Циклы. 216 Лекция 7.2. Выбор из вариантов. 228 Практические задания. 246 Контрольные вопросы.. 248 Заключение.. 249 Литература.. 250
Дата добавления: 2014-01-03; Просмотров: 3440; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |