- •2.Целые,вещественные типы данных.Операции над ними.Диапозоны значений.Совместимость указанных типов.
- •2. *, / , Div, mod, and, shl, shr(сдвиг);
- •5.Ввод вывод данных.Стандартные потоки,файловые потоки.
- •8.Примеры функций обработки одномерных массивов.Работа в динамической памяти.
- •11.Правила оформления функции в с.Правила локализации переменных.Область действия и область видимости переменных.Примеры с разным типом возвращаемого значения.
- •14.Работа со строками.Форматы представления строк.Функции для работы со строками и примеры.
- •17.Бинарные и типизированные фаилы.Общие черты и отличия.Представления данных в них.
- •20.Пользовательские типы данных.Структуры.Массивы структур/записей.
- •23.Перегрузка операций для структур:определение правил для операторов согласно разработанным пользовательским типам.
- •26.Рекурсивные алгоритмы.Проверка строки на симметричность.Вычисление суммы ряда.
- •29.Графические библиотеки.Основные функции и процедуры.
26.Рекурсивные алгоритмы.Проверка строки на симметричность.Вычисление суммы ряда.
Рекурсия — это такой способ организации вспомогательного алгоритма (подпрограммы), при котором эта подпрограмма (процедура или функция) в ходе выполнения ее операторов обращается сама к себе. Вообще, рекурсивным называется любой объект, который частично определяется через себя.
Например, приведенное ниже определение двоичного кода является рекурсивным:
<двоичный код> ::= <двоичная цифра> | <двоичный код><двоичная цифра>
<двоичная цифра> ::= 0 | 1
Здесь для описания понятия были использованы, так называемые, металингвистический формулы Бэкуса-Наура (язык БНФ); знак "::=" обозначает "по определению есть", знак "|" — "или".
Вообще, в рекурсивном определении должно присутствовать ограничение, граничное условие, при выходе на которое дальнейшая инициация рекурсивных обращений прекращается.
Вычисление суммы ряда:#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int summa(int N, int a[100]);
int i,n, a[100];
void main() { clrscr();
printf("\nКоличество элементов массива? "); scanf("%d", &n);
printf("\nВ сформированном массиве %d чисел:\n", n);
randomize();
for (i=0; i<n; i++)
{a[i]= -10+random(21); printf("%d ", a[i]);}
printf("Сумма: %d", summa(n-1, a)); }
int summa(int N, int a[100]) {
if (N==0) return a[0]; else return a[N]+summa(N-1, a); }
Проверка на симметричность:#include <stdio.h>
#include <conio.h>
#include <string.h>
char s[100];
int pal(char s[100]);
void main(){ clrscr();
printf("\nВведите строку: "); gets(s);
if (pal(s)) printf("Строка является палиндромом");
else printf("Строка не является палиндромом");}
int pal(char s[100])
{ int l; char s1[100];
if (strlen(s)<=1) return 1;
else {l=s[0]==s[strlen(s)-1];
strncpy(s1, s+1, strlen(s)-2);
s1[strlen(s)-2]='\0';
return l&&pal(s1);}}
29.Графические библиотеки.Основные функции и процедуры.
GD Graphics Library (GD) — программная библиотека, написанная Томасом Баутелом (Thomas Boutell) и другими разработчиками для динамической работы с изображениями.
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#include <time.h>
Выбирает координаты для центра круга задаётся радиус и цвет, направление.
void Init(Object &a){
a.x=random(640);
a.y=random(480);
a.R=20;
a.dir=1; //направление
a.color=random(16);}
Рисование объекта
void DrawObject(Object a){
circle(a.x,a.y,a.R);
line(a.x-a.R*1.5, a.y-a.R-5, a.x+a.R, a.y-a.R+5);
line(a.x-a.R*1.5, a.y-a.R+5, a.x+a.R*1.5, a.y-a.R-5);
line(a.x-a.R/2, a.y+a.R+3, a.x+a.R/2, a.y+a.R+3);
line(a.x, a.y, a.x, a.y-a.R);
line(a.x, a.y, a.x+a.dir*a.R, a.y);}
Движение объекта
void Up(Object &a){a.y-=5;}
void Down(Object &a){a.y+=5;}
void Right(Object &a){a.dir=1;a.x+=5;}
void Left(Object &a){a.dir=-1;a.x-=5;}
Меняет цвет
void ChangeColor(Object &a){a.color=random(16);}
Какая клавиша, за что отвечает
void Choice(char ch,Object &a){
switch(ch){
case 'a': { Erase(a); Left(a); Draw(a); break;}
case 'w': { Erase(a); Up(a); Draw(a); break;}
case 's': { Erase(a); Down(a); Draw(a); break;}
case 'd': { Erase(a); Right(a); Draw(a); break;}
case 'c': { ChangeColor(a); break;}
case 'g': { Erase(a); Growth(a,2); Draw(a); break;}
case 'f': { Erase(a); Growth(a,0.5); Draw(a); break;}}}
32. Классы и объекты С++. Создание, инициализация данных, деструктор, методы для сохранения и извлечения значений полей объектов.
Класс – объединение свойств и действий.
/*Класс – это абстрактный тип данных, определяемый пользователем, и представляет собой модель реального объекта в виде данных и функций для работы с ними.
класс – набор методов и функций*/.
Объекты класса – конкретные переменные типа «класс»
class <имя>{
[ private: ]
<описание скрытых элементов>
public:
<описание доступных элементов>
};
Спецификаторы доступа private и public управляют видимостью элементов класса. Элементы описанные после private видимы только внутри класса. Интерфейс класса описывается после спецификатора public. Действие любого спецификатора распространяется до следующего спецификатора или до конца класса. Можно задавать несколько секций private и public, порядох их следования значения не имеет.
Поля класса:
• Могут иметь любой тип, кроме типа этого же класса (но могут быть указателями или ссылками на этот класс);
• Могут быть описаны с модификатором const, при этом они инициализируются только один раз (с помощью конструктора) и не могут изменяться;
• Могут быть описаны с модификатором static.
Инициализация полей при описании не допускается.
Классы могут быть локальными (объявленные внутри блока) и глобальными (объявленные вне любого блока)
Чтобы упростить процесс инициализации элементов данных класса, C++ использует специальную функцию, называемую конструктором, которая запускается для каждого создаваемого вами объекта. Подобным образом C++ обеспечивает функцию, называемую деструктором, которая запускается при уничтожении объекта.