Составление линейных программ на С++ 10


НазваниеСоставление линейных программ на С++ 10
страница2/26
ТипПрактическая работа
1   2   3   4   5   6   7   8   9   ...   26
Тема: Ветвление и выбор в С++

Цель: освоение составления алгоритмов операторов ветвления с использованием простых операторов.

Теоретическая часть

Ветвления программы (Условия: if-else)

В с++ существует несколько видов условных операторов. Используются они в ситуация, когда в зависимости от происходящих событий нам надо выполнить различный код. Например, на 0 делить нельзя, поэтому нам всегда надо проверять, не равен ли делитель нулю. Для этого в с++ существует несколько конструкций:

if  (условие) {код}

if  (условие) {код}  else {код}

if  (условие) {код} elseif (условие2) {код} elseif(условие3) {код}

if  (условие) {код} elseif (условие2){код} elseif (условие3){код} else{код}

switch (переменная)

case "значение":

{код; break;} default: {код;break;}

Теперь, что эти конструкции означают.
Первые четыре - разные разновидности одной конструкции. У нас есть какой-то условие и в зависимости от его выполнения/невыполнения мы исполняем различный код. Elseif (условие) - если предыдущее не правда то если условие в скобках правда выполняем код. Просто else означает, что его код выполняется в случае, если ни одно предыдущее условие не выполнилость

Теперь немного про конструкцию switch-case

Она нам необходима, когда у нас есть много условий, зависящих от одной переменной. Тогда мы пишем: switch (переменная) case значение: код и  break; //break означает, что весь код ниже  до конца switch выполнять не надоТакже можно записать вот так: case переменная: значение1: значение2: значение н: код п ;break; // Это значит, что при значение 1 2 или н мы выполняем код пЗапись switch(n) default: {kodbreak; }означает, что по умолчанию мы будем выполнять kod, если ни одно из других условий не выполнилось

Примеры:

switch (c)
case '+'{

int res=a+b;

break;}

case '-'{

int res=a-b;

break;}

default:{

res=0;

break;}

Теперь задания для практики:

Калькулятор: с клавиатуры вводят число знак и число. Ваша задача вывести результат или сообщить об ошибке

Квадратное уравнение: вводят 3 числа a,b,c. Ваша задача решить уравнение ax*x+b*x+c=0 и вывести результат

Напоминаю, что ввод в с++:
cin>>переменная;
Вывод:
cout<<переменная
Не забываем, что на 0 делить нельзя. Если решаете квадратно уравнение через дискриминант, то помните, что он не может быть отрицательным, а если он 0, то корни совпадают
P.S. Немного про возможные логически операции. В условии вы можете использовать все математические операции сравнения:
== - равно
!= - не равно
< - больше
> - меньше

Программа калькулятор с клавиатуры




 

#include "stdafx.h"                                       // Вводим необходимые библиотеки для написания программы

#include

#include

#include

#include

#include

using namespace std;

 int _tmain(int argc, _TCHAR* argv[])                      // Объявление главной функции

{

    int i;                                                // Объявление переменных

    int N;                                                // N - переменная, которая определяется количество элементов массива

    int mas[100];                                         // Массив, имеющий размер 1*100

    int change=0;                                         // Переменная, которая будет показывать смену знаков чисел

    cout << " Enter number of Elements (2...100):  ";     // Ввод количества элементов массива

    do {                                                  // Цикл do while, проверяющий коректность введенного числа N

    cin >> N;

    if ( N <=0 || N>100  ) cout <<"\n You have entered the number incorrectly, try again: " ;

    } while ( N <=0 || N>100 );

cout << "\n It's ok, N= " << N << "\n";        // Сообщение об успешном вводе числа N

     for (i=0; i
    {

        cout << "\n Enter Element " << i << ": ";

        cin >> mas[i];

        cout << endl;

    }

     for (i=0 ; i< N-1 ; i++)                              // Цикл for, проверяющий смену знаков элементов, стоящих друг за другом ( рядом )                            

    {

        if ((( mas[i]>=0) && (mas[i+1] <0)) || ((mas[i] <0) && (mas[i+1]>=0))) change++;

    }

    cout << "\n[ ";

     for ( i=0; i< N; i++)                                 // Цикл for, выводящий весь массив, заданный пользователем в виде [ A1 A2 A3 ... An ] , Где A1, A2, A3 ... An - элементы массива

    {

        cout << "   " << mas[i];

    }

    cout << "   ] ";

    cout << "\n ";

    cout << "\n Change of sign:  " << change  << "\n\n";  // Вывод переменной change

    system("pause");                                      // Комманда, позволяющая увидеть результат программы

    return 0;                                             // Возвращение к функции main


Программа квадратное уравнение

#include

#include

using namespace std;

 

void Urovnenie (double a, double b, double c)

{

    double x1=0, x2=0, d=0;

    d=b*b-4*a*c;

    if(d<0)

    {

        cout<<"Уравнение не имеет решения так как его Дискриминант меньше нуля";

    }

    else

    {

        if(d==0)

        {

            x1=-b/(2*a);

            cout<<"Квадратное уравнение имеет единственное решение"<
        }

        else

        {

        x1=-b/(2*a)-(sqrt (d))/(2*a);

        x2=-b/(2*a)+(sqrt (d))/(2*a);

        cout<<"Квадратное уравнение имеет два корня\n";

        cout<<"X1="<
        cout<<"X2="<
        }

    }

 

}

void main()

{

    setlocale(LC_CTYPE, "Russian");

    int i=0;

    double a=0, b=0, c=0;

        cout<<"Введите первый коэфициент уровнения А: ";cin>>a;

        cout<<"Введите второй коэфициент уровнения B: ";cin>>b;

        cout<<"Введите третий коэфициент уровнения C: ";cin>>c;

        Urovnenie(a,b,c);

 

    cout<<"\n";}
Литература

Дж. Рихтер. Windowsдля профессионалов. – 3-е изд.: М: Русская редакция. 1993; 4-е изд: СПб: Русская редакция, 2001. – 752 с. [шифр библиотеки 681.3 Р-558]

Д. Круглински, С. Уинглоу, Дж. Шеферд. Программирование на MicrosoftVisualC++ 6.0 для профессионалов. – СПб: Питер, М: Русская редакция, 2001. – 864 с. [шифр библиотеки 681.3 К-844]

Архангельский А.Я. Программирование в C++Builder5. – М: БИНОМ, 2000. – 1152 с.

Вильямс А. Системное программирование в Windows2000 для профессионалов. – СПб.: Питер, 2001 – 624 с. [шифр библиотеки 681.3 В-467]


Оценка

Критерии

5

Студент написал правильно программу

4

Правильно написана программа, но есть не большие отклонения

3

Код п

2ограммы написан, верно, но есть отклонения в работе программы


не справился с заданием (программа не написана)




Практическая работа №3

Тема: Ветвление и выбор в С++

Цель: освоение составления алгоритмов ветвления и выбора с использованием простых операторов.

Теоретическая часть

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

Каждый цикл состоит из

блока проверки условия повторения цикла

тела цикла

Цикл выполняется до тех пор, пока блок проверки условия возвращает истинное значение.

Тело цикла содержит последовательность операций, которая выполняется в случае истинного условия повторения цикла. После выполнения последней операции тела цикла снова выполняется операция проверки условия повторения цикла. Если это условие не выполняется, то будет выполнена операция, стоящая непосредственно после цикла в коде программы.

В языке Си следующие виды циклов:

while - цикл с предусловием;

do...while - цикл с постусловием;

for - параметрический цикл (цикл с заданным числом повторений).

 

Если Условие выполняется (выражение, проверяющее Условие, не равно нулю), то выполняется БлокОпераций, заключенный в фигурные скобки, затем Условие проверяется снова.

Последовательность действий, состоящая из проверки Условия и выполнения БлокаОпераций, повторяется до тех пор, пока выражение, проверяющее Условие, не станет ложным (равным нулю). При этом происходит выход из цикла, и производится выполнение операции, стоящей после оператора цикла.

Пример на Си: Посчитать сумму чисел от 1 до введенного k

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  int k;  // объявляем целую переменную key
  int i = 1;
  int sum = 0; // начальное значение суммы равно 0
  printf("k = ");
  scanf("%d", &k);   // вводим значение переменной k
  while (i <= k)     // пока i меньше или равно k
  {
    sum = sum + i; // добавляем значение i к сумме
    i++;           // увеличиваем i на 1
  }
  printf("sum = %d\n", sum); // вывод значения суммы
  getchar(); getchar();
  return 0;
}


Результат выполнения



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

Пример бесконечного цикла
while (1)
{
  БлокОпераций;
}

while — цикл с предусловием, поэтому вполне возможно, что тело цикла не будет выполнено ни разу если в момент первой проверки проверяемое условие окажется ложным.

Например, если в приведенном выше коде программы ввести k=-1, то получим результат



Цикл с постусловием do...while

Общая форма записи

do {
  БлокОпераций;
} while (Условие);

Цикл do...while — это цикл с постусловием, где истинность выражения, проверяющего Условие проверяется после выполнения Блока Операций, заключенного в фигурные скобки. Тело цикла выполняется до тех пор, пока выражение, проверяющее Условие, не станет ложным, то есть тело цикла с постусловием выполнится хотя бы один раз.

Использовать цикл do...while лучше в тех случаях, когда должна быть выполнена хотя бы одна итерация, либо когда инициализация объектов, участвующих в проверке условия, происходит внутри тела цикла.

Пример на Си. Проверка, что пользователь ввел число от 0 до 10

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
#include  // для использования функции system()
int main() {
  int num;             // объявляем целую переменную для числа
  system("chcp 1251"); // переходим на русский язык в консоли
  system("cls");       // очищаем экран
  do {
    printf("Введите число от 0 до 10: "); // приглашение пользователю
    scanf("%d", &num); // ввод числа
  } while ((num < 0) || (num > 10)); // повторяем цикл пока num<0 или num>10
  printf("Вы ввели число %d", num); // выводим введенное значение num - от 0 до 10
  getchar(); getchar();
  return 0;
}

Результат выполнения:

Параметрический цикл for

Общая форма записи
for (Инициализация; Условие; Модификация)
{
  БлокОпераций;
}

for — параметрический цикл (цикл с фиксированным числом повторений). Для организации такого цикла необходимо осуществить три операции:

Инициализация - присваивание параметру цикла начального значения;

Условие - проверка условия повторения цикла, чаще всего - сравнение величины параметра с некоторым граничным значением;

Модификация - изменение значения параметра для следующего прохождения тела цикла.

Эти три операции записываются в скобках и разделяются точкой с запятой ;;. Как правило, параметром цикла является целочисленная переменная.

Инициализация параметра осуществляется только один раз — когда цикл for начинает выполняться.

Проверка Условия повторения цикла осуществляется перед каждым возможным выполнением тела цикла. Когда выражение, проверяющее Условие становится ложным (равным нулю), цикл завершается. Модификация параметра осуществляется в конце каждого выполнения тела цикла. Параметр может как увеличиваться, так и уменьшаться.

Пример на Си: Посчитать сумму чисел от 1 до введенного k

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  int k;  // объявляем целую переменную key
  int sum = 0; // начальное значение суммы равно 0
  printf("k = ");
  scanf("%d", &k);   // вводим значение переменной k
  for(int i=1; i<=k; i++) // цикл для переменной i от 1 до k с шагом 1
  {
    sum = sum + i; // добавляем значение i к сумме
  }
  printf("sum = %d\n", sum); // вывод значения суммы
  getchar(); getchar();
  return 0;
}

Результат выполнения



В записи цикла for можно опустить одно или несколько выражений, но нельзя опускать точку с запятой, разделяющие три составляющие цикла.
Код предыдущего примера можно представить в виде

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  int k;  // объявляем целую переменную key
  int sum = 0; // начальное значение суммы равно 0
  printf("k = ");
  scanf("%d", &k);   // вводим значение переменной k
  int i=1;
  for(; i<=k; i++) // цикл для переменной i от 1 до k с шагом 1
  {
    sum = sum + i; // добавляем значение i к сумме
  }
  printf("sum = %d\n", sum); // вывод значения суммы
  getchar(); getchar();  return 0;
}

Параметры, находящиеся в выражениях в заголовке цикла можно изменить при выполнении операции в теле цикла, например

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  int k;  // объявляем целую переменную key
  int sum = 0; // начальное значение суммы равно 0
  printf("k = ");
  scanf("%d", &k);   // вводим значение переменной k
  for(int i=1; i<=k; ) // цикл для переменной i от 1 до k с шагом 1
  {
    sum = sum + i; // добавляем значение i к сумме
    i++;           // добавляем 1 к значению i

  }
  printf("sum = %d\n", sum); // вывод значения суммы
  getchar(); getchar();
  return 0;
}

В цикле for может использоваться операция запятая - , - для разделения нескольких выражений. Это позволяет включить в спецификацию цикла несколько инициализирующих или корректирующих выражений. Выражения, к которым применяется операция запятая, будут вычисляться слева направо.

Пример на Си:

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  int k;  // объявляем целую переменную key
  printf("k = ");
  scanf("%d", &k);   // вводим значение переменной k
  for(int i=1, j=2; i<=k; i++, j+=2) // цикл для переменных
  {                                  // (i от 1 до k с шагом 1) и (j от 2 с шагом 2)
    printf("i = %d   j = %d\n", i, j); // выводим значения i и j
  }
  getchar(); getchar();
  return 0;
}

Результат выполнения

Вложенные циклы

В Си допускаются вложенные циклы, то есть когда один цикл находится внутри другого:

for (i = 0; i
  for (j = 0; j
    ;        // блок операций Цикла2  }

  // блок операций Цикла1; }

Пример: Вывести числа от 0 до 99, по 10 в каждой строке

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  for(int i=0; i<10; i++) // цикл для десятков
  {                                  
    for (int j = 0; j < 10; j++) // цикл для единиц
    {
      printf("%2d ", i * 10 + j); // выводим вычисленное число (2 знакоместа) и пробел
    }
    printf("\n"); // во внешнем цикле переводим строку
  }
  getchar(); // scanf() не использовался,
  return 0;  // поэтому консоль можно удержать одним вызовом getchar()
}

Результат выполнения



Рекомендации по выбору цикла

При выборе цикла необходимо оценить необходимость проверки условия при входе в цикл или по завершении прохождения цикла.

Цикл с постусловием удобно применять в случаях, когда для проверки условия требуется вычислить значение выражения, которое затем будет размещено в теле цикла (см. выше пример ввода числа от 0 до 10).

Цикл c предусловием используется в случае если все переменные, участвующие в выражении, проверяющем условие, проинициализированы заранее, но точное число повторений цикла неизвестно или предполагается сложная модификация переменных, участвующих в формировании условия повторения цикла.

Если цикл ориентирован на работу с параметром, для которого заранее известно число повторений и шаг изменения, то более предпочтительным является параметрический цикл. Очень удобно использовать параметрический цикл при работе с массивами для перебора элементов.

Операторы прерывания и продолжения цикла break и continue

В теле любого цикла можно использовать операторы прерывания цикла - break и продолжения цикла - continue.

Оператор break позволяет выйти из цикла, не завершая его.
Оператор continue позволяет пропустить часть операторов тела цикла и начать новую итерацию.

Пример на Си: Вывести числа от 0 до 99 ниже главной диагонали

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  for(int i=0; i<10; i++) // цикл для десятков
  {                                  
    for (int j = 0; j < 10; j++) // цикл для единиц
    {
      if (j > i) // если число единиц больше числа десятков в числе
        break; // выходим из вложенного цикла и переходим к новой строке
      printf("%2d ", i * 10 + j); // выводим вычисленное число (2 знакоместа) и пробел
    }
    printf("\n"); // во внешнем цикле переводим строку
  }
  getchar(); // scanf() не использовался,
  return 0;  // поэтому консоль можно удержать одним вызовом getchar()
}

Результат выполнения



Пример на Си: Вывести числа от 0 до 99 исключая числа, оканчивающиеся на 5 или 8

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf

#include 
int main() {
  for(int i=0; i<10; i++) // цикл для десятков
  {                                  
    for (int j = 0; j < 10; j++) // цикл для единиц
    {
      if ((j == 5) || (j == 8)) // если число единиц в числе равно 5 или 8,
        continue;             // переходим к следующей итерации цикла
      printf("%2d ", i * 10 + j); // выводим вычисленное число (2 знакоместа) и пробел
    }
    printf("\n"); // во внешнем цикле переводим строку
  }
  getchar(); // scanf() не использовался,
  return 0;  // поэтому консоль можно удержать одним вызовом getchar()
}

Результат выполнения


При вложенных циклах действия операторов break и continue распространяется только на самую внутреннюю структуру, в которой они содержатся.

Оператор безусловного перехода goto

Общая форма записи

 goto Метка;

Метка : Операция;

Выполнение оператора goto вызывает передачу управления в программе операции, помеченной Меткой. По сути Метка является идентификатором адреса операции, которой должно быть передано управление. Для отделения Метки от Операции используется двоеточие - :.

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

Пример на Си: Вывести все целые числа от 5 до 0.

#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
#include 
int main() {
  int k = 5;
M1: if (k < 0) // если k<0,
    goto M2;   // переходим на метку M2 (выходим из программы)
  printf("%d ", k); // выводим значение k
  k--;              // уменьшаем k на 1
  goto M1;          // переходим на метку M1 (повторяем операции выше)
M2: getchar();
  return 0; }

Результат выполнения



Использование оператора goto в программах на Си без крайней необходимости не рекомендуется, поскольку это может повлечь за собой ряд ошибок, связанных с плохой читаемостью кода программы. Использование операторов цикла позволяет практически полностью исключить необходимость использования оператора goto.

Литература

Дж. Рихтер. Windowsдля профессионалов. – 3-е изд.: М: Русская редакция. 1993; 4-е изд: СПб: Русская редакция, 2001. – 752 с. [шифр библиотеки 681.3 Р-558]

Д. Круглински, С. Уинглоу, Дж. Шеферд. Программирование на MicrosoftVisualC++ 6.0 для профессионалов. – СПб: Питер, М: Русская редакция, 2001. – 864 с. [шифр библиотеки 681.3 К-844]

Архангельский А.Я. Программирование в C++Builder5. – М: БИНОМ, 2000. – 1152 с.

Вильямс А. Системное программирование в Windows2000 для профессионалов. – СПб.: Питер, 2001 – 624 с. [шифр библиотеки 681.3 В-467]


Оценка

Критерии

5

Студент написал правильно программу

4

Правильно написана программа, но есть не большие отклонения

3

Код программы написан, верно, но есть отклонения в работе программы

2

не справился с заданием (программа не написана)


Практическая работа №4

1   2   3   4   5   6   7   8   9   ...   26

Похожие:

Составление линейных программ на С++ 10 iconПорядок учетно-кадастровых процедур в отношении сооружений (линейных объектов недвижимости)
В соответствии с Федеральным законом от 24. 07. 2007 №221-фз «О государственном кадастре недвижимости» (далее Закон) в отношении...

Составление линейных программ на С++ 10 icon«Составление индивидуальных корреционно развивающих программ развития...

Составление линейных программ на С++ 10 iconО подготовке к государственной аккредитации образовательных программ в 2018 г
Количество образовательных программ бакалавриата, специалитета и магистратуры (без учета программ, реализация которых завершается...

Составление линейных программ на С++ 10 iconОао мгтс
...

Составление линейных программ на С++ 10 iconЛекция: Организация похода выходного дня
Составление плана подготовки и проведения путешествия. Разработка маршрута, подбор картографического материала, составление схемы...

Составление линейных программ на С++ 10 iconАдминистративный регламент №36
«Выдача разрешений на ввод линейных объектов, расположенных на территории двух и более поселений Добрянского муниципального района,...

Составление линейных программ на С++ 10 iconУльяновский институт повышения квалификации и переподготовки работников...
Портфолио учащегося: составление и использование: методические рекомендации./ Автор-составитель: Т. Б. Табарданова – Ульяновск: уипк...

Составление линейных программ на С++ 10 iconАннотация к рабочей программе профессионального модуля «Составление...
Рабочая программа профессионального модуля «Составление и использование бухгалтерской отчётности» является частью основной профессиональной...

Составление линейных программ на С++ 10 iconРабочая программа производственной практики пп. 03 Пм. 04 «Составление...
Программа практики является составной частью профессионального модуля 04 Составление и использование бухгалтерской отчетности основной...

Составление линейных программ на С++ 10 iconИ составление «рабочего» плана курсовой работы 7
Предварительная проработка литературы по теме и составление «рабочего» плана курсовой работы 7

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск