- •Теоретические вопросы к экзамену к экзамену по курсу «Программирование и алгоритмизация»
- •А)Основные типы переменных в с. Б)Правила определения переменных и типов. В)Инициализация данных.
- •A)Время жизни и область видимости программных объектов.Б) Инициализация глобальных и локальных переменных
- •Операторы языка Си. Оператор выражение, составной оператор, операторы условного перехода
- •Оператор цикла for
- •Операторы цикла while и do … while
- •Указатели. Типизированные и нетипизированные.
- •Работа с файлами. Файловая переменная, открытие, закрытие файла.
- •Чтение и запись в файлы. Функция eof()
- •Определение и вызов функций. Фактические и формальные параметры.
- •Определение и вызов функций. Передача массивов и указателей на функции.
- •Бинарный поиск в упорядоченном массиве.
- •Сортировка массива на примере одного из алгоритмов.
- •Связанные списки: описание структуры, добавление и удаление элементов в односвязный линейный список.
- •Вставка узла
- •Удаление узла
- •Виды линейных списков: стек, очередь, дек.
- •Сущность методологии объектно-ориентированного программирования. Инкапсуляция. Наследование. Полиморфизм.
- •Дружественные функции класса.
- •Определение конструктора. Форматы вызова конструктора. Перегрузка конструкторов.
- •Наследование. Определение базового и производного классов.
- •Полиморфизм. Виртуальные функции.
- •Динамическое распределение памяти под объекты. Операторы new и delete. Динамическое выделение памяти
- •Функции operator new() и operator delete()
- •Шаблоны классов. Шаблоны классов
- •Использование шаблонов
- •Шаблоны функций.
- •Жизненный цикл программного продукта.
- •Основные процессы жизненного цикла.
- •Разновидности процесса разработки по.
- •Стадии разработки по
- •Действия при разработке тз
Определение и вызов функций. Передача массивов и указателей на функции.
Для того, чтобы передать указатель в качестве аргумента, нужно объявить параметр типа указателя. Void fun(int *t) допустим в мэйн объявлены int a; a=6; int *p; p=&a; fun(p) // передаем в функцию фан указатель и она что-то там делает. А можно передать непосредственно адрес переменной а fun(&a) как-то так работаем с указателем.
Массивы нельзя передавать в функции, можно только передать указатель на первый элемент массива и работать с ним. Существует три варианта:
1.void displ(int num[10])// функция в , которую передаем массив. В майн допустим объявлен массив int t[10]; displ(t);// вызвали и передали. Несмотря на то, что параметр num объявлен как массив из 10 элементов, компилятор с++ как-то преобразует его в указатель на int, в функцию диспл передается указатель на первый элемент
2. можно задать параметр в виде массива неопределенной длины void displ(int num[]) ( С++ похер выйдешь ты за рамки массива или нет), но и в этом случаи компилятор преобразует параметр в указатель на int.
3. 3им способом можно забабахать параметр в виде указателя. Void displ(int *num) и уже в майн вызываем диспл так displ(num).
Нужно помнить, что когда массив используется в качестве аргумента функции, в функцию передается его адрес, и когда мы будем как-то работать с ним, то мы будем воздействовать на содержимое массива.
Бинарный поиск в упорядоченном массиве.
Пусть есть упорядоченный по возрастанию массив целых чисел. Нужно определить, содержит ли этот массив некоторое число (образец).
Метод (алгоритм) бинарного поиска реализуется следующим образом:
1. Сначала образец сравнивается со средним (по номеру) элементом массива (рис. 5.10, а).
Если образец равен среднему элементу, то задача решена.
Если образец больше среднего элемента, то это значит, что искомый элемент расположен ниже среднего элемента (между элементами с номерами sred+1 и niz), и за новое значение verb принимается sred+i, а значение niz не меняется (рис. 5.10, б).
Если образец меньше среднего элемента, то это значит, что искомый элемент расположен выше среднего элемента (между элементами с номерами verh и sred-1), и за новое значение niz принимается sred-1, а значение verh не меняется (рис. 5.10, в).
а b
c
Сортировка массива на примере одного из алгоритмов.
Здесь я так понимаю можно рассказать про сортировку по порядку, ну хули ниже код , компилируем и разбираемся что да как.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int k; // koli4estvo chifr
int a[100]; //massiv
int i; // indeks massiva
int p;
int min=a[0]; //min zna4
int max=a[0]; //max zna4
int t;
clrscr();
printf("\n vvedite kolichestvo chifr v massive \n");
scanf("%d", &k);
printf("vvedite chisla massiva \n");
for(i=0; i<k; i++)
{
scanf("%d", &a[i]);
}
printf(" massiv: ");
for(i=0;i<k;++i)
{
printf("%d,", a[i]);
}
printf("\nchisla massiva poporyadku: ");
for(i=0;i<k;i++)
for(p=1;p<k;p++)
if(a[p-1]>a[p])
{
t=a[p-1];
a[p-1]=a[p];
a[p]=t;
}
for(t=0;t<k;t++)
{
printf("%d,",a[t]);
}
getch();
}