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

  • 2. Передача одномерных массивов в функции. Примеры.

  • Билет №2 1.Структура программы на языке С++. Примеры. Этапы создания исполняемой программы.

  • 2. Передача многомерных массивов в функции. Примеры

  • Билет №3 1. Состав языка С++. Константы и переменные С++.

  • Билет №4 1.Типы данных в С++.

  • Билет №5 1. Выражения. Знаки операций.

  • 2. Подставляемые функции. Примеры.

  • Билет №6 1. Основные операторы С++ (присваивание, составные, выбора, циклов, перехода). Синтаксис, семантика, примеры

  • 2. Функции с переменным числом параметров. Примеры.

  • билеты. 1. Алгоритм и его свойства. Способы записи алгоритма. Программа. Языки программирования. Примеры алгоритмов и программ


    Скачать 83.2 Kb.
    Название1. Алгоритм и его свойства. Способы записи алгоритма. Программа. Языки программирования. Примеры алгоритмов и программ
    Дата20.11.2020
    Размер83.2 Kb.
    Формат файлаdocx
    Имя файлабилеты.docx
    ТипПрограмма
    #152211
    страница1 из 4
      1   2   3   4


    Билет №1

    1. Алгоритм и его свойства. Способы записи алгоритма. Программа. Языки программирования. Примеры алгоритмов и программ.

    Алгоритмом называется точное и понятное предписаниe исполнителю совершить последовательность действий, направленных на решение поставленной задачи.

    Свойства алгоритма:

    · детерминированность (определенность). Предполагает получение однозначного результата вычислительного процeссa при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;

    · результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;

    · массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;

    · дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.

    Способы записи алгоритма:

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

    · Словесный способ – способ записи алгоритма на естественном языке. Данный способ очень удобен, если нужно приближенно описать суть алгоритма. Однако при словесном описании не всегда удается ясно и точно выразить логику действий.

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

    Виды вычислительных процессов:

    · Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.

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

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

    Язык программирования — искусственный (формальный) язык, предназначенный для записи программ для исполнителя (например, компьютера или станка с числовым управлением).

    Языки программирования:

    · Фортран

    · Кобол

    · Алгол

    · Pascal

    · Java

    · C

    · C++

    · C#

    · Objective

    2. Передача одномерных массивов в функции. Примеры.

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

    · адрес массива,

    · размер массива.

    Исключение составляют функции обработки строк, в которые достаточно передать только адрес.

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

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

    Пример. Функция вывода элементов массива.

    void f(int *x, int n) {

    // x - указатель на массив (адрес массива)

    // n - размер массива

    For (int i=0; i
    Printf (“%d”,x[i]);

    }

    Билет №2

    1.Структура программы на языке С++. Примеры. Этапы создания исполняемой программы.

    Структура программы:

    · Инструкции

    Программа на С++ состоит из набора инструкций. Каждая инструкция (statement) выполняет определенное действие. В конце инструкции в языке C++ ставится точка с запятой (;). Данный знак указывает компилятору на завершение инструкции.

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

    · Функция main

    Каждая программа на языке С++ должна иметь как минимум одну функцию - функцию main(). Именно с этой функции начинается выполнение приложения. Ее имя main фиксировано и для всех программ на Си всегда одинаково.

    Функция также является блоком кода, поэтому ее тело обрамляется фигурными скобками, между которыми определяется набор инструкций.

    Определение функии main начинается с возвращаемого типа. Функция main в любом случае должна возвращать число.

    Далее идет название функции, то есть main. После названия в скобках идет список параметров.

    И после списка параметров идет блок кода, который и содержит в виде инструкций собственно те действия, выполняемые функцией main.

    · Директивы препроцессора

    В примере выше на консоль выводится строка, но, чтобы использовать вывод на консоль, необходимо в начале файла с исходным кодом подключать библиотеку iostream с помощью директивы include.

    Директива include является директивой препроцессора. Каждая директива препроцессора размещается на одной строке. И в отличие от обычных инструкциий языка C++, которые завершаются точкой с запятой; , признаком завершения препроцессорной директивы является перевод на новую строку. Кроме того, директива должна начинаться со знака решетки #. Непосредственно директива "include" определяет, какие файлы и библиотеки надо подключить в данном месте в код программы.

    · Комментарии

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

    игнорируются и не оказывают никакого влияние на работу приложения и на его размер.

    В языке C++ есть два типа комментариев: однострочный и многострочный. Однострочный комментарий размещается на одной строке после двойного слеша //:

    Многострочный комментарий заключается между символами /* текст комментария */. Он может размещаться на нескольких строках.

    Этапы создания программы:

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

    2. Осуществляется этап препроцессорной обработки, содержание которого определяется директивами препроцессора (программа, выполняющая предварительную обработку входных данных), расположенными перед заголовком программы (функции). В частности, по директиве #include препроцессор подключает к тексту программы заголовочные файлы (*.h) стандартных библиотек.

    3. Происходит трансляция текста программы на Си++ в программу на машинном языке. В ходе компиляции могут быть обнаружены синтаксические ошибки, которые должен исправить программист. В результате успешной компиляции получается объектный код программы в файле с расширением obj. Например, example.obj.

    4. Выполняется этап компоновки с помощью системной программы (Linker) - компоновщик. Этот этап еще называют редактированием связей. На данном этапе к программе подключаются библиотечные функции. В результате компоновки создается загрузочный модуль, представляющий исполняемую программу в файле с расширением ехе. Например, example.ехе.

    2. Передача многомерных массивов в функции. Примеры

    При передаче многомерных массивов функции следует определить все размерности, кроме самой левой. Например, если массив m определен как int m [4] [3] [6] [5]; то функция func1(), получающая m, может выглядеть следующим образом: int func1 (int d[] [3] [6] [5])

    { ... }

    Билет №3

    1. Состав языка С++. Константы и переменные С++.

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

    Переменная и константа – это определённые области в оперативной памяти, которые имеют имя (имя задаёт программист). Только переменная может менять своё значение в ходе выполнения программы, константа же определяется один раз и изменяться уже не может.

    И переменным, и константам при объявлении обязательно надо присвоить имя. Существуют строгие правила согласно, которым даются имена:

    · имя переменной может содержать маленькие и большие буквы английского алфавита, цифры, и ‘_’ (нижнее подчеркивание). С нижним подчеркиванием имена читаются намного легче.

    · имя не может начинаться с цифры! amount_of_apples1 – можно, 1amount_of_apples – не можно))

    · именем не может быть зарезервированное слово (int, bool …). Если вы придумали имя переменной, ввели, а его подсветило синим цветом, значит такое слово в С++ является зарезервированным. Придумайте новое имя.

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

    2. Передача строк в функции. Примеры.

    #include

    using namespace std;

    //определяем функции

    void showText1 (char str[])//функция принимает строку, как массив

    {

    cout << str << endl;

    }

    void showText2 (char *str)//указатель *str будет указывать на адрес первого символа в строке

    {

    cout << str << endl;

    }

    void showText3 (char (&str)[150])// адрес строки из 150-ти символов

    {

    cout << str << endl;

    }

    int main()

    {

    setlocale (LC_ALL, "rus");

    cout << "Можно ввести строку в круглых скобках при вызове функции: " << endl;

    showText1("текст");

    cout << endl;

    char str1[] = "str1 - передаем, как массив в функцию void showText1 (char str[]);";

    showText1(str1);

    cout << endl;

    char str2[] = "str2 - передаем, в функцию void showText2 (char *str); используя указатель.";

    showText2(str2);

    cout << endl;

    char str3[150] = "str3 - передаем, в функцию void showText3 (char &str[]);\nТут используем адрес строки.";

    showText3(str3);

    cout << endl;

    return 0;

    }

    Билет №4

    1.Типы данных в С++.

    · int — целочисленный тип данных.

    · float — тип данных с плавающей запятой.

    · double — тип данных с плавающей запятой двойной точности.

    · char — символьный тип данных.

    · bool — логический тип данных.

    · Void – множество значений этого типа пусты

    2. Функции с умалчиваемыми параметрами. Примеры.

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

    const int N=20;//количество элементов массива

    char mas1[N][10];//массив имен

    int mas2[N]//массив возрастов

    void init(int i, char* name=”Вася ”, int age=17)

    { strcpy(mas1[i],name);

    mas2[i]=age; }

    Билет №5

    1. Выражения. Знаки операций.

    Из констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое выражение представляет собой правило вычисления нового значения. Если выражение формирует целое или вещественное число, то оно называется арифметическим. Пара арифметических выражений, объединенная операцией сравнения, называется отношением. Если отношение имеет ненулевое значение, то оно – истинно, иначе – ложно.

    Пример: a = b*3+c;

    Знаки операций

    & получение адреса операнда

    * Обращение по адресу (разыменование)

    - унарный минус

    побитовое отрицание

    ! логическое отрицание (НЕ)

    ++ Увеличение на единицу

    - - уменьшение на единицу

    + бинарный плюс (сложение арифметических операндов)

    - бинарный минус (вычитание арифметических операндов)

    * умножение операндов арифметического типа

    / деление операндов арифметического типа

    % получение остатка от деления целочисленных операндов

    Формат выражения с операцией сдвига: операнд_левый операция_сдвига операнд_правый Поразрядные операции:

    < < сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого операнда, освободившиеся разряды обнуляются

    > > сдвиг вправо битового представления значения правого целочисленного операнда на количество разрядов, равное значению правого операнда, освободившиеся разряды обнуляются, если операнд беззнакового типа и заполняются знаковым разрядом, если – знакового

    & поразрядная конъюнкция (И) битовых представлений значений целочисленных операндов (бит =1, если соответствующие биты обоих операндов=1)

    | поразрядная дизъюнкция (ИЛИ) битовых представлений значений целочисленных операндов (бит =1, если соответствующий бит одного из операндов=1)

    ^ поразрядное исключающее ИЛИ битовых представлений значений целочисленных операндов(бит =1, если соответствующий бит только одного из операндов=1)

    < меньше, чем

    > больше, чем

    <= меньше или равно

    >= больше или равно

    == Равно

    != не равно

    && конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0)

    || дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0)

    Операции присваивания

    =, +=, -=, += и т.д.

    2. Подставляемые функции. Примеры.

    Подставляемые или встраиваемые (inline) функции – это функции, код которых вставляется компилятором непосредственно на место вызова, вместо передачи управления единственному экземпляру функции. Если функция является подставляемой, компилятор не создает данную функцию в памяти, а копирует ее строки непосредственно в код программы по месту вызова. Это равносильно вписыванию в программе соответствующих блоков вместо вызовов функций. Таким образом, спецификатор inline определяет для функции так называемое внутреннее связывание, которое заключается в том, что компилятор вместо вызова функции подставляет команды ее кода. Подставляемые функции используют, если тело функции состоит из нескольких операторов. Этот подход позволяет увеличить скорость выполнения программы, так как из программы исключаются команды микропроцессора, требующиеся для передачи аргументов и вызова функции.

    Например:

    /*функция возвращает расстояние от точки с координатами(x1,y1) до точки с координатами (x2,y2)*/

    inline float Line(float x1,float y1,float x2, float y2) {

    return sqrt(pow(x1-x2,2)+pow(y1-y2,2));

    }

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

    Билет №6

    1. Основные операторы С++ (присваивание, составные, выбора, циклов, перехода). Синтаксис, семантика, примеры

    1.Операции присваивания

    =, +=, -=, += и т.д.

    Формат операции простого присваивания: операнд1=операнд2

    Пример: а=в

    2. Составные операторы

    К составным операторам относят собственно составные операторы и блоки. В обоих случаях это последовательность операторов, заключенная в фигурные скобки. Блок отличается от составного оператора наличием определений в теле блока. Например:

    {

    n++; это составной оператор

    summa+=n;

    }

    {

    int n=0 ;

    n++; это блок

    summa+=n;

    }

    3. Операторы выбора

    Операторы выбора - это условный оператор и переключатель.

    1. Условный оператор имеет полную и сокращенную форму. if (выражение-условие ) оператор; //сокращенная форма

    В качестве выражения-условия могут использоваться арифметическое выражение, отношение и логическое выражение. Если значение выражения-условия отлично от нуля (т. е. истинно), то выполняется оператор. Например:

    if (x
    if ( выражение-условие ) оператор1; //полная форма else оператор2;

    Если значение выражения-условия отлично от нуля, то выполняется оператор1, при нулевом значении выражения-условия выполняется оператор2.Например:

    if (d>=0) {

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

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

    cout<< “\nx1=”<
    }

    else cout<<“\nРешения нет”;

    2.Переключатель определяет множественный выбор. switch (выражение)

    {

    case константа1 : оператор1 ; case константа2 : оператор2 ;

    [default: операторы;]

    }

    При выполнении оператора switch, вычисляется выражение, записанное после switch, оно должно быть целочисленным. Полученное значение последовательно сравнивается с константами, которые записаны следом за case. При первом же совпадении выполняются операторы помеченные данной меткой. Если выполненные операторы не содержат оператора перехода, то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель. Если значение выражения, записанного после switch не совпало ни с одной константой, то выполняются операторы, которые следуют за меткой default. Метка default может отсутствовать.

    Пример:

    #include void main()

    {

    int i;

    cout<<"\nEnter the number"; cin>>i; switch(i) {

    case 1:cout<<"\nthe number is one"; case 2:cout<<"\n2*2="<
    }

    }

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

    При вводе 1 будет выведено:

    The number is one

    2*2=1

    3*3=1

    При вводе 2 будет выведено:

    2*2=4

    3*3=4

    При вводе 3 будет выведено:

    3*3=9

    При вводе 4 будет выведено:

    is very beautiful!

    5. При вводе всех остальных чисел будет выведено:

    The end of work

    4. Операторы циклов

    Различают:

    · итерационные циклы;

    · арифметические циклы.

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

    В качестве <выражения-условия> чаще всего используется отношение или логическое выражение. Если оно истинно, т. е. не равно 0, то тело цикла выполняется до тех пор, пока выражение-условие не станет ложным. Пример

    while (a!=0) { cin>>a; s+=a;

    }

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

    do оператор

    while (выражение-условие);

    Тело цикла выполняется до тех пор, пока выражение-условие истинно. Пример:

    do { cin>>a; s+=a; } while(a!=0) ;

    Цикл с параметром: for ( выражение_1;выражение-условие;выражение_3) оператор;

    Выражение_1 и выражение_3 могут состоять из нескольких выражений, разделенных запятыми.

    Выражение_1 - задает начальные условия для цикла (инициализация). Выражение-условие определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение выражения_3. Выражение_3 - задает изменение параметра цикла или других переменных (коррекция). Цикл продолжается до тех пор, пока выражение-условие не станет равно 0. Примеры использования цикла с параметром.

    Уменьшение параметра: for ( n=10; n>0; n--)

    { оператор};

    5. Операторы перехода

    Операторы перехода выполняют безусловную передачу управления.

    1) break - оператор прерывания цикла.

    {

    < операторы>

    if (<выражение_условие>) break;

    <операторы>

    }

    Т. е. оператор break целесообразно использовать, когда условие продолжения итераций надо проверять в середине цикла.

    Пример:

    // ищет сумму чисел вводимых с клавиатуры до тех пор, пока не будет введено 100 чисел или 0 for(s=0, i=1; i<100;i++)

    { cin>> x;

    if( x==0) break; // если ввели 0, то суммирование заканчивается s+=x; }

    continue - переход к следующей итерации цикла. Он используется, когда тело цикла содержит ветвления.

    2)Оператор goto

    Оператор goto имеет формат: goto метка;

    В теле той же функции должна присутствовать конструкция: метка:оператор;

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

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

    Нельзя передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию, на операторы, которые стоят после инициализации. Пример:

    int k;

    goto m;

    . . .

    { int a=3,b=4 ; k=a+b; m: int c=k+1 ;

    . . .

    }

    В этом примере при переходе на метку m не будет выполняться инициализация переменных a , b и k.

    4) Оператор return – оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

    return [выражение]

    2. Функции с переменным числом параметров. Примеры.

    Язык программирования Си допускает использование функций, которые имеют нефиксированное количество параметров. Более того может быть неизвестным не только количество, но и типы параметров. То есть точное определение параметров становится известным только во время вызова функции.

    Для определения параметров неопределенной длины в таких функциях используется многоточие:

    1

    тип имя_функции(обязательные параметры, ...)

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

    Например, определим функцию, которая вычисляет сумму чисел, количество чисел нефиксировано:

    #include

    int sum(int n, ...)

    {

    int result = 0;

    // получаем указатель на параметр n

    for(int *ptr = &n;n>0; n--)

    {

    result+= *(++ptr);

    }

    return result;

    }

    int main(void)

    {

    printf("%d \n", sum(4, 1, 2, 3, 4));

    printf("%d \n", sum(5, 12, 21, 13, 4, 5));

    return 0;

    }

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

    Первый и обязательный параметр функции sum - n - указывает на количество необязательных параметров. В цикле устанавливаем указатель ptr на адрес параметра n и последовательно перемещаем его. С помощью операции разыменования *(++ptr) после перемещения указателя на один элемент вперед получаем значение и выполняем сложение с переменной result.

    В то же время нельзя не отметить недастаток данного решения: все параметры представляют один и тот же тип. Кроме того, мы можем при наборе кода ошибиться со значением первого параметра, тогда результаты функции будут непредсказуемыми.
      1   2   3   4


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