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

  • Тело цикла

  • Операторы перехода

  • Использование математических функций

  • Стандартные

  • Модификаторы формата: l , h .

  • Модификатор формата: x – числа выводятся в 16-тиричном формате вида: 0х123o - числа выводятся в 8-ном формате с ведущими нулями вида 0123Модификатор формата: *

  • Использование управляющих символов для вывода

  • Символьные функции Функции преобразования символов находятся в библиотеке

  • шпора по проге. прог. Теоретический материал по курсу Основы программирования Язык С (для фкбв и фкбо) Основные понятия. Типы данных


    Скачать 165.08 Kb.
    НазваниеТеоретический материал по курсу Основы программирования Язык С (для фкбв и фкбо) Основные понятия. Типы данных
    Анкоршпора по проге
    Дата06.01.2023
    Размер165.08 Kb.
    Формат файлаdocx
    Имя файлапрог.docx
    ТипДокументы
    #874591
    страница2 из 6
    1   2   3   4   5   6

    Циклический процесс (цикл) – повторение одних и тех же действий

    Тело цикла – последовательность действий (операторов, выражений), которые повторяются в цикле.

    Итерация (шаг) – один проход цикла.

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

    Циклы могут быть вложенными, тогда они разделяются на внешние и внутренние.

    Условие всегда анализируется на истину или ложь. Циклы выполняются, если условие – истина

    Цикл с предусловием:

    while (условие) оператор; while (условие) { операторы;}

    Если первоначально условие ложно, то в тело цикла не войти.

    Пример:

    while (x != y)

    {

    (x > y) ? x = x - y : y = y - x; //тернарный оператор

    }

    Цикл с постусловием:

    do оператор; while(условие); do { операторы; }while(условие);

    Если первоначально условие ложно, то тело цикла выполняется 1 раз.

    Пример:

    do

    {

    int j = Num%ii;

    if (j) { ii++; continue; } //простое число

    //печать множителя

    printf("%d ", Num / ii);

    ii++;

    } while (ii <= Num);

    Цикл с параметром:

    for (начальные_значения; условие; приращение) оператор;

    for (начальные_значения; условие; приращение) {операторы;}

    Работа цикла for:

    1- устанавливаются начальные значения, проверяется условие, если оно истинно, выполняется цикл;

    2- выполняется приращение, проверяется условие, если оно истинно, выполняется цикл;

    . . . . . . . . . .

    3- выполняется приращение, проверяется условие, если оно ложно, прекращается выполнение цикла;

    Пример:

    for (int i = 2; i <= Num / 2; i++)

    {

    int j = Num%i;

    if (j) continue;

    pr = false;

    }

    Если первоначально условие ложно, то в тело цикла не войти.

    Операторы перехода (передачи управления):

    - break – выход из цикла. После этого оператора ничего не выполняется в цикле. Программа выполняется со следующего оператора после цикла;

    Пример:

    for (int j = 1; j <= 10; ++j)

    {

    if (j >= 4 && j <= 7) break;

    printf("%3d", j);

    }

    Результат работы:


    - continue – завершение текущей итерации цикла и переход к следующей итерации. После этого оператора в цикле ничего не выполняется, но цикл не прекращается, просто продолжается со следующего приращения;

    Пример:

    for (int j = 1; j <= 10; ++j)

    {

    if (j >= 4 && j <= 7) continue;

    printf("%3d", j);

    }

    Результат работы:


    - return – завершение выполнения функции и возврат в точку вызова. Может стоять в любом месте программы (по алгоритму). После этого оператора в функции ничего не выполняется. Оператор return может иметь выражение. Выражение указывается тогда, когда надо передать что-то в вызывающую функцию.

    Пример:

    int GetMaxElem(int m[], int I)//получить максимальное значение элемента массива

    {

    int maxim = m[0];

    for(int i=0; i
    if(m[i]>maxim) maxim = m[i];

    return maxim; //значение. Оператор перехода, передает значение в вызывающую функцию

    }
    - goto МЕТКА - переход на метку, объявленную в программе МЕТКА: Применение этого оператора не рекомендуется. Целесообразно использовать тогда, когда надо выйти из глубокой вложенности циклов.
    Использование математических функций

    Для расчета математических выражений необходимо подключить библиотеку

    #include //в стиле С++ или #include в стиле С

    Все математические функции работают, в основном, с вещественными величинами.

    Пример: извлечение корня 5 степени

    #include

    #include

    using namespace std;
    int main()

    {

    double n00 = 3125;

    double step0 = 5;

    double rezult00;

    rezult00 = pow(n00, 1 / step0);

    printf("извлечение корня степени %5.0f из числа %5.0f равно %5.2f", step0, n00, rezult00);

    return 0;

    }

    Результат работы:



    Некоторые математические функции приведены в Приложении 2 «Математические функции, используемые в работе»

    Понятие поток

    Поток — это абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. Потоки C++, в отличие от функций ввода/вывода в стиле С, обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных, а также единообразный и понятный синтаксис.

    Стандартные потоки предназначены для передачи данных от клавиатуры и на экран дисплея

    Объект вывода – cout связан с операцией вставки в поток (<<) – вывод на экран, объект cin – извлечением из потока (>>) – считывание с клавиатуры.

    Чтобы работали эти объекты необходимо подключить библиотеку , компоненты этой библиотеки находятся в пространстве имен std.

    #include //БИБЛИОТЕКА

    using namespace std; //используется пространство имен для функций из этой библиотеки

    Пример:

    #include

    using namespace std;

    int main()

    {

    int i;

    double d;

    char c;

    char s[50];

    cout << "Введите значения параметров:\n -целого типа: "; cin >> i;
    cout << "-вщественного типа: "; cin >> d;
    cout << "-символьного типа: ";

    if (cin.peek() == '\n') cin.get();//проверка: не осталось ли символа перевода на

    // новую строку после предыдущей операции, и если осталось, то этот символ считываем.

    cin.get(c); //ввод символа
    cout << "-строку: ";

    if (cin.peek() == '\n') cin.get();//такая же проверка, иначе строку не введем.

    cin.getline(s,50); //ввод строки

    return 0;

    }
    Результат работы:


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

    Для использования ввода/вывода в стиле С необходимо подключить библиотеки

    #include //стандартный ввод (с клавиатуры)/вывод (на экран), если выбран язык «С», для языка «С++» подключения библиотеки не делать.

    В языке С нет операторов ввода/вывода, поэтому применяют библиотечные функции из библиотеки .

    printf(“управляющая_строка”, список_данных); //функция вывода на экран

    scanf(“управляющая_строка”, список_данных); //функция ввода с клавиатуры
    управляющая_строкапоказывает, как и по каким форматам выводятся или вводятся данные. Управляющая строка может быть только одна. Она заключается всегда в двойные кавычки.
    список_данных –список имен переменных, разделенных запятыми. При вводе – список адресов переменных, разделенных запятыми.
    Между данными и форматами должно быть однозначное соответствие.

    Если форматов меньше, чем данных, то данные игнорируются.

    Если форматов больше, чем данных, то по лишним форматам выводится грязь.

    Общий вид формата

    %[p.q]спецификация
    [p.q] – необязательная часть формата,

    р – количество занимаемых позиций для числа (целое, вещественное, символ, строка)

    .q – количество значащих цифр после запятой-точки (вещественное).
    Если р (число позиций) больше, чем разрядность числа, то выравнивание по правой границе.

    Чтобы выравнивание происходило по левой границе, надо перед р поставить знак «минус» .

    Пример: %-15d
    При вводе управляющую строку необходимо писать без пробелов, ввод осуществляется в адрес переменной.

    Пример:

    int a, c;

    float b; double d;

    scanf(“%d%f%d%lf”, &a, &b, &c, &d); //форматированный ввод в переменные


    тип переменной

    спецификация

    целые десятичные числа знаковые

    %d или %i

    целые десятичные числа беззнаковые

    %u

    целые 16-тиричные числа

    %x

    целые 8-ричные числа

    %o

    вещественные числа с плавающей точкой (float)

    %f

    вещественные числа с плавающей точкой (double)

    %f

    вещественные числа в экспоненциальной форме

    %e

    символы

    %c

    строки

    %s

    указатели

    %p

    вещественные числа с плавающей точкой (double) для ввода-обязательно

    %lf


    Особенность функции scanf(): при вводе символьной строки (текста с пробелами) ввод осуществляется до первого пробела (разделителя).
    Модификаторы формата: l, h.

    Позволяют выводить данные, определенные как длинные/ короткие величины (long int, short int)

    l - длинное число (пример double)

    h – короткое число (пример short int)

    Эти модификаторы можно применять со всеми спецификаторами.

    Пример:

    unsigned int perem = 1234;

    printf(“%hu”, perem);
    Модификатор формата: #

    #x – числа выводятся в 16-тиричном формате вида: 0х123

    #o - числа выводятся в 8-ном формате с ведущими нулями вида 0123
    Модификатор формата: *

    При выводе сопоставляется модификатор с каждым аргументом

    Пример:

    printf(“%*.*f”,8, 3, 3.141516);

    где первая * будет 8 – 8 знаков на число

    вторая * будет 3 – три знака после точки.

    3.141516 – выводится само число.

    Использование управляющих символов для вывода


    назначение

    символ

    печать на новой строке с самого начала

    \n

    печать на текущей строке с самого начала

    \r

    табуляция

    \t

    возврат на одну позицию

    \b

    записать 0 в строку – конец строки

    \0

    печать % на экране

    %%

    печать “ на экране

    \”

    печать \ на экране

    \\


    Пример

    #include

    using namespace std;

    int main()

    {

    printf("%10s\t%10s\t%10s\n"," i"," y"," sum");

    double sum = 0., y=0.;

    for (int i = 1; i <= 10; ++i)

    {

    y = 1./(2*i+1);

    sum += y;

    printf("%10d\t%10.6f\t%10.6f\n", i, y, sum);

    }

    return 0;

    }

    Результат работы:




    Массив – структурированный тип данных, состоящий из фиксированного числа элементов одного типа. Фиксированное число элементов определяет размерность массива. Каждый элемент массива пронумерован (имеет порядковый номер). Номер называется индексом. Доступ к каждому элементу массива происходит через его индекс. Индекс первого элемента массива всегда 0. Индекс последнего элемента массива равен размерности массива минус 1.

    Массив имеет имя. Имя массива является адресом области памяти, с которой располагаются его элементы. Область памяти всегда непрерывна.

    Все манипуляции с массивами выполняются поэлементно.
    Одномерный массив

    Одномерный массив (вектор) представляет собой последовательность однотипных данных, расположенных друг за другом.

    Объявление одномерного массива:

    Тип_массива Имя_массива [размерность];

    Пример:

    int mas[10]; double MD[15]; char MasChar[300];
    Работа с одномерным массивом происходит в цикле. Цикл организуется для перебора значения индексов. В цикле происходит обращение к каждому элементу массива через его индекс.

    Обращение к элементу массива:

    Имя_массива [индекс_текущий]

    Пример:

    for (int index = 0; index < 10; ++index) mas[index] = 5 * index + 12;

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

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

    Тип_массива Имя_массива[размерность] = {список значений через запятую};

    Пример:

    int masB[7] = {10, 20, 30, 40, 50, 60, 70};
    Строка – последовательность символов (одномерный массив символов), всегда заканчивающаяся «\0». Код нуля – признак окончания строки.

    Объявление строки происходит в виде массива или через указатель. Тип символьный. Объявление строки:

    char имя_строки [размер];

    Пример:

    char MasChar[300];

    При объявлении строки как массива количество элементов должно быть больше, чем количество букв хотя бы на единицу (для нулевого символа).

    Если строка располагается в обычной памяти (ее создает компилятор), то при объявлении строки ее можно сразу инициализировать:

    char Имя_строки[размер_строки] = “текст”;

    Пример:

    char MasChar[300]= "Привет!";
    Минимальный размер строки = количеству букв в тексте +1.

    Размер строки можно задавать большим, чем требуется.

    Инициализация при объявлении строки через указатель:

    constchar *Имя_строки = “текст”;

    Пример:

    const char *NewChar = "Привет всем!";
    Символы – однобайтовые. В ASCII-средах печатаемые символы расположены между пробелом (0х20) и тильдой (0хFE). Управляющие символы имеют значения, лежащие в диапазоне между 0x0 и 0x1F, к ним относится символ DEL (0x7F).

    Для работы со строками используют символьные и строковые функции. Каждая функция имеет тип int и возвращает ненулевое значение, если параметр, указанный в функции, является истинным. Иначе функция возвращает значение нуль. Параметр в функции имеет тип int, а использует функция только младший байт. Задается в функцию символ char ch или unsigned char (для русских букв), компилятор автоматически преобразует его в тип int.
    Символьные функции

    Функции преобразования символов находятся в библиотеке

    Функция выделяет младший байт параметра ch и возвращает значение true, если

    символ ch удовлетворяет условию, или false в противном случае.

    Пример:

    //1. Разбор строки

    char str[200]="Команда, под руководством тренера Петрова П.П., получила 5 золотых, 10 серебряных и 25 бронзовых медалей.";
    // определение длины строки

    int len = strlen(str);
    // переменные - счетчики

    int probel=0, cifra=0, zaglav_bykva=0, punkt=0;
    //разбор предложения

    for(int i=0; i
    {

    //определение количества пробелов

    if(isspace((unsigned char)str[i])) probel++;
    //определение количества знаков пунктуации

    if(ispunct((unsigned char)str[i])) punkt++;
    //определение количества заглавных букв

    if(isupper((unsigned char)str[i])) zaglav_bykva++;
    //определение количества цифр

    if(isdigit((unsigned char)str[i])) cifra++;

    }

    printf("%s\n\nСтрока содержит количество: \

    \nпробелов=%d, знаков пунктуации=%d, заглавных букв=%d цифр=%d\n",

    str, probel, punkt, zaglav_bykva, cifra);

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


    Некоторые символьные функции приведены в приложении 3 «Символьные функции»
    1   2   3   4   5   6


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