Главная страница
Навигация по странице:

  • Цель работы

  • Упражнение 1 Формулировка задания

  • Упражнение 2 Формулировка задания

  • Контрольные задания

  • ВКР. Учебно-методическое пособие Тольятти тгу 2011 удк 004 3(075) ббк. Учебнометодическое пособие по дисциплине Языки программирования предназначено для студентов очной формы обучения и содержит конспект лекций по ключевым темам курса и практикум


    Скачать 0.88 Mb.
    НазваниеУчебнометодическое пособие по дисциплине Языки программирования предназначено для студентов очной формы обучения и содержит конспект лекций по ключевым темам курса и практикум
    Дата30.05.2022
    Размер0.88 Mb.
    Формат файлаdoc
    Имя файлаУчебно-методическое пособие Тольятти тгу 2011 удк 004 3(075) ббк.doc
    ТипУчебно-методическое пособие
    #557668
    страница12 из 13
    1   ...   5   6   7   8   9   10   11   12   13

    3ПРАКТИКУМ ПО ДИСЦИПЛИНЕ


    Рассматривая алгоритм решения упражнений практикума, вы закрепляете навыки решения задач по дисциплине «Языки программирования».

    3.1Условные операторы в языке программирования Си++


    Цель работы: выполнив эту работу, вы познакомитесь с работой условного оператора, изучите оператор выбора варианта, научитесь применять их при составлении программ.

    Задание

    Выполните упражнения 1, 2. Перед выполнением упражнения изучите материал по темам из разделов 2.3.1 – 2.3.7 курса лекций.

    Упражнение 1

    Формулировка задания

    Составить программу, которая позволяет по введённым сторонам треугольника (а, b, с) вычислить S – площадь треугольника, при этом a, b, с должны быть положительными, а сумма длин каждой пары сторон треугольника должна быть больше длины третьей стороны.

    Решение

    1. Для решения задачи будем использовать формулу Герона:

    S = ,

    где p = (a + b + c) / 2 – полупериметр треугольника.

    2. Программа будет состоять из одной главной функции со стандартным именем main. Слово void обозначает отсутствие какого-либо возвращаемого этой функцией результата, а пустые скобки – отсутствие у неё аргументов. Всё, что следует после заголовка функции и заключено в фигурные скобки, можно назвать телом функции.

    3. В выражении для вычисления площади будем использовать библиотечную функцию sqrt() – квадратный корень (как и в Паскале). Данная функция относится к библиотеке математических функций. Для подключения этой библиотеки к нашей программе воспользуемся директивой препроцессора #include . Здесь math.h – имя заголовочного файла этой библиотеки.

    4. В программе будут использоваться операторы printf (...); и scanf (...); для реализации соответственно вывода на экран и ввода исходных данных с клавиатуры. Они осуществляют обращение к соответствующим функциям стандартной библиотеки ввода-вывода Си, заголовочный файл которой имеет имя stdio.h.

    5. Первая строка тела функции – объявление используемых переменных. Все они плавающего типа float. Объявление переменных заканчивается точкой с запятой.

    6. Дальнейшая часть программы – исполняемые операторы. Среди них операторы вывода на экран, ввода данных с клавиатуры, операторы присваивания.

    Оператор вызова функции форматированного вывода на экран printf() имеет следующую структуру:

    printf(форматная строка, список_аргументов);

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

    В программе используем оператор printf ("\nа=");, который содержит текст ("а=") и управляющие символы ("\n"). Текст выводится на экран в том виде, в котором он записан. Управляющие символы влияют на расположение на экране выводимых знаков. В результате выполнения этого оператора на экран с новой строки выведутся символы а=.

    Признаком управляющего символа является значок \.

    7. Форматированный ввод с клавиатуры. Оператор вызова функции форматированного ввода с клавиатуры scanf() имеет следующую структуру:

    scanf(форматная_строка, список_аргументов);

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

    scanf("%f",&a);

    Здесь "%f" – форматная строка; – список аргументов, состоящий из одного элемента. Этот оператор производит ввод числового значения в переменную а.

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

    Список аргументов – это перечень вводимых переменных, причем перед именем каждой переменной ставится значок &. Это знак операции «взятие адреса переменной».

    Форматная строка заключается в кавычки (как и для printf) и состоит из списка спецификаций. Каждая спецификация начинается со знака %.

    8. В программе необходимо наличие двух операторов присваивания: для вычисления полупериметра (р) и для вычисления площади треугольника (S).

    9. Для вывода значения переменной s на экран используем оператор printf ("\nПлощадь треугольника=%f",s);, который содержит все виды параметров функции printf. Список аргументов состоит из одной переменной s. Пара символов %f является спецификацией формата выводимого значения переменной s. Значок % – признак формата, а буква f указывает на то, что выводимое число имеет вещественный (плавающий) тип и выводится на экран в форме с фиксированной точкой.

    Например, если в результате вычислений переменная s получит значение 32,435621, то на экран выведется:

    Площадь треугольника=32.435621

    Спецификатор формата определяет форму внешнего представления выводимой величины.

    10. В результате проделанной работы программа примет следующий вид.

    #include

    #include

    void main ()

    {float a,b,c,p,s;

    printf("\na="); scanf("%f",sa);

    printf("\nb="); scanf("%f",&b);

    printf("\nc="); scanf("%f",&c);

    p=(a+b+c)/2;

    s=sqrt (р* (p-a) * (p-b) * (p-c) ) ;

    printf("\nПлощадь треугольника=%f", s) ;

    }

    11. Программируя на языке Си++, можно пользоваться средствами ввода-вывода стандартной библиотеки Си, подключаемой с помощью заголовочного файла stdio.h, как это делалось выше. Однако в Си++ имеются свои специфические средства ввода-вывода. Это библиотека классов, подключаемая к программе с помощью файла iostream.h. В этой библиотеке определены в качестве объектов стандартные символьные потоки со следующими именами:

    сin – стандартный поток ввода с клавиатуры;

    cout – стандартный поток вывода на экран.

    Ввод данных интерпретируется как извлечение из потока сin и присваивание значений соответствующим переменным. В Си++ определена операция извлечения из стандартного потока, знак которой >>. Например, ввод значений в переменную х реализуется оператором

    cin>>x;

    Вывод данных интерпретируется как помещение в стандартный поток cout выводимых значений. Выводиться могут тексты, заключённые в двойные кавычки, и значения выражений. Знак операции помещения в поток <<. Примеры использования потокового вывода.

    В выходном потоке можно использовать управляющие символы, как и при использовании функции printf(); перед каждым элементом вывода нужно ставить знак операции <<.

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

    Перепишем программу в варианте с использованием потокового ввода-вывода Си++.

    #include

    #include

    void main ()

    {float a,b,c,p,s;

    cout<<"\na="; cin>>a;

    cout<<"\nb="; cin>>b;

    cout<<"\nc="; cin>>c;

    p=(a+b+c)/2;

    s=sqrt (р* (p-a) * (p-b) * (p-c) ) ;

    cout<<"\nПлощадь треугольника="<

    }

    12. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон.

    Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, добавим в программу проверку условия правильности исходных данных, сразу «отфильтровав» все варианты неверных исходных данных.

    // Площадь треугольника

    #include <iostream.h>

    #include

    void main ()

    {float a,b,c,p,s;

    cout<<"\na="; cin>>a;

    cout<<"\nb="; cin>>b;

    cout<<"\nc="; cin>>c;

    if(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a)

    { p=(a+b+c)/2;

    s=sqrt (р* (p-a) * (p-b) * (p-c) ) ;

    cout<<"\nПлощадь треугольника="<

    }

    elsecout<<”\n Неверные исходные данные.”;

    }

    13. Сопоставим программу решения этой задачи, написанную на Си, с программой на Паскале.

    Program Geron;

    Var A,B,C,P,S: Real;

    Begin

    WriteLn('Введите длины сторон треугольника:');

    Write('а='); ReadLn(A) ;

    Write('b='); ReadLn(В);

    Write ('c='); ReadLn(C);

    If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+С>A) And (A+C>B)

    Then Begin

    P:=(A+B+C)/2;

    S:=Sqrt(P*(P-A)*(P-B)*(P-C));

    WriteLn('Площадь=',S)

    End

    Else WriteLn('Неверные исходные данные')

    End.
    Упражнение 2

    Формулировка задания

    Составить программу, которая переводит числовую оценку знаний ученика в её словесный эквивалент. Согласно вузовской системе 5 – «отлично», 4 – «хорошо», 3 – «удовлетворительно», 2 – «неудовлетворительно».

    Решение

    1. Программа также будет состоять из одной главной функции с именем main.

    2. Первая строка тела функции – объявление переменной ball (оценка) целого типа (int).

    3. Дальнейшая часть программы – исполняемые операторы. Помимо операторов вывода на экран и ввода данных с клавиатуры будем использовать оператор выбора (переключатель). Формат оператора выбора:

    switch (целочисленное выражение) { case константа!: список_операторов;

    case константа2: список_операторов;

    default: список операторов;

    }

    Последняя строка (default) может отсутствовать. Выполнение оператора происходит в следующем порядке:

    1) вычисляется выражение;

    2) полученное значение последовательно сравнивается с константами, помещёнными после служебного слова case; при первом совпадении значений выполняются операторы, стоящие после двоеточия;

    3) если ни с одной из констант совпадения не произошло, то выполнятся операторы после слова default.

    Для того чтобы «обойти» выполнение операторов на последующих ветвях, нужно принять специальные меры, используя операторы выхода или перехода.

    4. Для «обхода» других ветвей воспользуемся оператором break – оператором выхода. Его исполнение завершает работу оператора выбора. Вот два варианта результатов выполнения этой программы:

    Введите оценку: 3 Это удовлетворительно!

    Введите оценку: 7 Нет такой оценки!

    При отсутствии оператора break результат может выглядеть следующим образом:

    Введите оценку: 3 Это удовлетворительно!

    Это хорошо!

    Это отлично!

    Нет такой оценки!

    В этом случае выполнились операторы на всех ветвях, начиная с той, которая помечена константой 3.

    5. В результате проделанной работы программа примет следующий вид.

    #include

    void main ()

    {int ball;

    cout<<"\nВведитеоценку: "; cin>>ball;

    switch (ball)

    { case 2: cout<<"\tЭтонеудовлетворительно!\n"; break;

    case 3: cout<<"\tЭто удовлетворительно!\n"; break;

    case 4: cout<<"\tЭтохорошо!\n"; break;

    case 5: cout<<"\tЭтоотлично!\n"; break;

    default: cout<<"\tНеттакойоценки!\n";

    }

    }

    Контрольные задания

    1. Составить программу упорядочения по возрастанию значений в трёх переменных.

    2. Составить программу, которая выводит на экран меню:

    1) первое;

    2) второе;

    3) третье;

    и в зависимости от выбранного пункта выдаёт одну из надписей: «Получите суп», «Получите картошку», «Получите компот», «Оставайтесь голодным». Написать два варианта программы: с использованием условного оператора if и с использованием переключателя.

    3. Составить программу решения квадратного уравнения ах2 + bx + с = 0, учитывающую все возможные варианты исходных данных:

    1) а = 0, b = 0, с = 0;

    2) a = 0, b = 0, с ≠ 0;

    3) а = 0, b ≠ 0;

    4) а ≠ 0, D ≥ 0 (D – дискриминант);

    5) а ≠ 0, D < 0.

    В каждом случае должно выводиться соответствующее решение или сообщение.

    1   ...   5   6   7   8   9   10   11   12   13


    написать администратору сайта