- •«Утверждаю»
- •Учебно-методический комплекс
- •Астана 2010 График выполнения и сдачи заданий по дисциплине
- •Карта учебно-методической обеспеченности дисциплины Учебники, учебные пособия
- •Конспект лекционных занятий
- •Тема 1. Введение в программирование на Си. Структура программы. Директивы препроцессора. Типы данных.
- •Основные операции в языке Си.
- •Преобразование типов
- •Тема 2. Управляющие структуры. Выбор вариантов. Структура выбора If, If – Else, логические операции, операция условия, множественный выбор.
- •Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue.
- •Тема 4. Массивы. Разработка программ с использованием одномерных и двумерных массивов.
- •Тема 5. Функции в Си. Создание и использование функций.
- •Тема 6. Классы памяти и разработка программ.
- •Тема 7. Указатели в Си.
- •Тема 8. Использование указателей при обработке одномерных и двумерных массивов.
- •Тема 9. Символы и строки в Си.
- •Функции сравнения из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 6.
- •Функции поиска из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 7.
- •Другие функции из библиотеки обработки строк. В таблице 8 приведены прототипы и краткое описание остальных функций из библиотеки обработки строк.
- •Ниже приведены примеры программы, использующих функции работы со троками.
- •Тема 11. Структуры данных в Си.
- •Тема 12. Динамические структуры данных.
- •Тема 13. Работа с файлами в Си.
- •Тема 14. Графика в Си.
- •Тема 15. Объектно-ориентированное программирование.
- •Методические рекомендации по выполнению лабораторных заданий
- •Лабораторная работа № 3. Использование операторов цикла при решении задач.
- •Лабораторная работа №4. Разработка программ с использованием одномерных массивов.
- •Лабораторная работа №5. Разработка программ с использованием двумерных массивов.
- •Лабораторная работа № 6. Программирование задач с использованием нескольких функций на языке Си.
- •Лабораторная работа № 8. Программирование задач обработки структур данных.
- •Лабораторная работа № 9. Разработка программ с использованием файловых переменных.
- •Лабораторная работа № 10. Разработка программ с использованием графических функций языка Си.
- •Содержание отчета по выполнению лабораторной работы
- •1 Задание
- •Тема 1. Запись констант, стандартных функций, выражений, операторов присваивания. Запись программ линейных структур алгоритмов.
- •Тема 2. Алгоритмическое описание, запись программ линейных, разветвляющихся.
- •Тема 3. Алгоритмическое описание, запись программ циклических структур алгоритмов.
- •Тема 4. Алгоритмическое описание, составление программ обработки одномерного массива.
- •Тема 5. Алгоритмическое описание, составление программ обработки двумерного массива.
- •Тема 6-7. Составление программ решения задач с использованием функции.
- •Рекомендуемая литература:
- •Тема 8-9. Составление программ решения задач обработки массивов с использованием указателей.
- •Тема 10-11. Программирование задач обработки символьных и стрковых данных.
- •Рекомендуемая литература.
- •Тема 12. Методы сортировки.
- •Тема 13. Составление программ решения задач с использованием структур данных.
- •Тема 14. Составление программ решения задач с использованием файла произвольного доступа.
- •Рекомендуемая литература.
- •Тема 15. Алгоритмизация графических построений.
- •Варианты заданий:
- •Сведения
- •Перечень экзаменационных вопросов по пройденному курсу
- •Глоссарий
Рекомендуемая литература.
1осн[425-444],2осн[437-450], 5доп[51-54],6доп[235-242], 8доп[16-23]
Тема 15. Алгоритмизация графических построений.
Форма проведения: Решение задач.
Задание 1. Задав конкретную функцию F(x), построить на символьном экране дисплея ее график и графически найти все возможные решения, не применяя никаких численных методов. При реализации учесть, что вид функции и интервал могут быть любыми (в конкретных вариантах задан тестовый интервал и значение корня на этом интервале – для проверки правильности построения графика данной функции).
Варианты заданий:
F(x) = 3*sin + 0.35*x- 3.8. На интервале [2,3] ответ:x=2.2985.
F(x) = -cos. На интервале [0,1] ответ:x=0.4538.
F(x) =x- 2 +sin . На интервале [1.2,2] ответ:x=1.3077.
F(x) =x*tgx- . На интервале [0.2,1] ответ:x=0.5472.
F(x) =x*x-ln(1+x) - 3. На интервале [2,3] ответ:x=2.0267.
Задание 2. Используя константы, процедуры и функции графической библиотеки, реализовать следующие визуальные эффекты.
Варианты заданий:
Движение планеты (планет) вокруг солнца.
Запуск ракеты в космос.
Растущий цветок.
Домик, у которого открываются и закрываются окна и двери.
Бег ежа с яблоком и грибами на спине.
Методические рекомендации по проведению СРСП.
Контрольный пример 1. Построить кривую Астроида по заданному параметрическому представлению (параметрическое представление кривой l на плоскости с координатами x, y – это две функции , определенные на одном и том же числовом множестве) (рисунок 13):,.
Контрольный пример 2. Изобразить на экране движение прямоугольника.
/* пример 1 */ #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> main() { int gdriver = DETECT, gmode, errorcode; int b,x,y; float t; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } setbkcolor(WHITE); setcolor(BLUE); line(getmaxx()/2,0,getmaxx()/2,getmaxy()); line(0,getmaxy()/2,getmaxx(),getmaxy()/2); t=0; b=150; while (t<=2*M_PI) { x=ceil(b*pow(cos(t),3)); y=ceil(b*pow(sin(t),3)); x+=getmaxx()/2; y=getmaxy()/2-y; putpixel(x,y,61); t+=0.00001; } getch(); closegraph(); return 0; } |
/* пример 2 */ #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> main() { int gdriver = DETECT, gmode, errorcode; int i; float t; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } setbkcolor(WHITE); setcolor(BLUE); for(i=1;i<=600;i++) { setcolor(GREEN); rectangle(i,200,i+100,250); delay(10); setcolor(WHITE); rectangle(i,200,i+100,250); } getch(); closegraph(); return 0; } |
Тестовые задания для самоконтроля с указанием ключей правильных ответов
1. Назовите директиву препроцессора для определения констант
A) #include B) #define C) typedef D) union E) extern
2. Выберите спецификатор преобразования для вывода значений с плавающей точкой
A) %f B) %d C) %x D) %o E) %u
3. Выберите правильный вариант фрагмента для решения задачи
A) ;
B) ;
C) ;
D) ;
E) ;
4. Выберите правильный вариант фрагмента для решения задачи .
A) if (x>-2 & x<5) f=5pow(x,2)+6 else if (x>=5) f=pow(x,3)+7;
B) if (x>-2 && x<5) f=5*pow(x,2)+6; else if (x>=5) f=pow(x,3)+7;
C) if (x>-2 || x<5) f=5*sqr(x)+6; else if (x>=5) f=pow(3,x)+7;
D) if (x>-2 ! x<5) f=5*pow(x,2)+6 else if (x>=5) f=pow(3,x)+7;
E) if (x>-2) && (x<5) f=5*sqr(x)+6; else if (x>=5) f=pow(x,3)+7;
5. Выберите правильное описание условного оператора для решения задачи: даны x и y, если отрицательно одно из них, то числа увеличить на 0,5
A) if ( x<0 & y<0) {x+=0.5; y+=0.5;}
B) if ( x<0 || y<0) {x+=0.5; y+=0.5;}
C) if ( x<0 && y<0) {x+=0.5; y+=0.5;}
D) if ( x<0 ! y<0) {x+=0.5; y+=0.5;}
E) if ( x<0 || y<0) x+=0.5; y+=0.5;
6. Выберите правильное описание цикла WHILE для решения задачи:
A) k=p=f=1; while (k<=n) { f*=k; p*=(1+sin(k*x)/f); k--;} |
B) k=p=f=1; while k<=n { f*=k; p*=(1+sin(k*x)/f); k++;} |
C) k=p=f=1; while (k<=n) { f*=k; p*=(1+sin(k*x)/f); k++;} |
D) k=p=f=1; while (k<=n) f*=k; p*=(1+sin(k*x)/f); k++; |
E) k=p=f=1; while (k<=n) { f*=k; p*=(1+sin(k*x)/f*k);} k++; |
|
7. Какой из вариантов использования оператора DOWHILEявляется правильным?
A) k=15; x=1; do { x*=5; printf(“%d”,x);} while (k-->=7); |
B) k=15; x=1; do { x*=5; printf(“%d”,x);} while (k--<=7); |
C) k=15; x=1; do { x*=5; printf(“%d”,x);} while (k>=7); |
D) k=15; x=1; do x*=5; printf(“%d”,x); while (k-->=7); |
E) k=15; x=1; do { x*=5; printf(“%d”,x);} while(k++>7); |
|
8. Что будет напечатано в результате выполнения следующей программы
main()
{int i=5,p=1;
while (--i>1) p*=i;
printf("i=%d, p=%d\n", i, p);}
A) i=1, p=120 B) i=1, p=24 C) i=0, p=24 D) i=24, p=1 E) i=0, p=120
9. Что будет напечатано в результате выполнения следующей программы
main()
{int a=20,b=3,c=4,x,y,z;
x=a++;
y=!(++b<c);
z=x--+y;
printf("x=%d, y=%d, z=%d", x, y, z); }
A) x=20, y=1, z=22 B) x=19, y=1, z=21 C) x=19, y=0, z=20
D) x=19, y=1, z=20 E) x=20, y=0, z=20
10. Что будет напечатано программой с использованием указателей массивов (где 65410 и 65426 - начальные адреса массивов a[2] иb[2])
main()
{int i, a[2],*pa;
short b[2],*pb;
pa=a; pb=b;
for(i=0;i<2;i++)
printf("указатели+%d: %u %u\n",i,pa+i,pb+i);}
A) указатели+0: 65410 65426 указатели+1: 65412 65434 |
B) указатели+0: 65410 65426 указатели+1: 65412 65428 |
C) указатели+0: 65410 65426 указатели+1: 65411 65428 |
D) указатели+0: 65410 65426 указатели+1: 65411 65427 |
E) указатели+0: 65410 65426 указатели+1: 65414 65430 |
|
11. Выберите правильный фрагмент программы для решения следующей задачи: даны целые числа x1, x2, x3, x4; вычислитьx1x4+x2x3+x3x2+x4x1
A) p=x; s=0; for(i=0;i<4;i++) s+=*(p+i)**(p+3); |
B) p=x; s=1; for(i=0;i<4;i++) s*=*(p+i)**(p+3-i); |
C) p=x; s=0; for(i=1;i<=4;i++) s+=*(p+i)**(p+3-i); |
D) p=x; s=0; for(i=1;i<=4;i++) s+=*(p+i)**(p+3+i); |
E) p=x; s=0; for(i=0;i<4;i++) s+=*(p+i)**(p+3-i); |
|
12. Выберите правильный фрагмент программы для решения следующей задачи: даны целые числа a1,…,a10; вычислитьmin(a1+a6, a2+a7, a3+a8, a4+a9, a5+a10)
A) px=x; min=*px+*(px+5);
for(i=1;i<5;i++)
if (*(px+i)+*(px+5+i)<min) min=*(px+i)+*(px+5+i);
B) px=*x; min=*px+*(px+5);
for(i=1;i<10;i++)
if (*(px+i)+*(px+5+i)<min) min=*(px+i)+*(px+5+i);
C) px=x; min=*px+*(px+5);
for(i=1;i<10;i+=2)
if (*(px+i)+*(px+5+i)<min) min=*(px+i)+*(px+5+i);
D) px=x; min=*px+*(px+5);
for(i=1;i<5;i++)
if (*(px+i)+*(px+5-i)<min) min=*(px+i)+*(px+5-i);
E) px=x; min=*px+*(px+5);
for(i=1;i<5;i+=2)
if (*(px+i)+*(px+5-i)<min) min=*(px+i)+*(px+5-i);
13. Что будет напечатано следующей программой
int a[10]={2,4,5,7,8,6,3,12,19,9};
main()
{ int i, max=2;
for(i=0;i<10;i+=2)
if (a[i]>max) max=a[i];
printf(“%d”, max); }
A) 12B) 19C) 9D) 8E) 6
14. Что будет напечатано в результате выполнения следующей программы
main()
{int a[8]={5,-3,4,7,6,-2,9,12},i,k,s;
i=k=s=0;
while (a[i]%3!=0)
{s+=a[i]; k++; i++; }
printf("s=%d, k=%d",s,k); }
A) 14, 4 B) s=14, k=4 C) 5, 1 D) s=24, k=4 E)s=5,k=1
15. Укажите тип данных для описания данных целого типа без знака
A) long B) short C) char D) unsigned int E) double
16. Выберите правильный фрагмент ввода строковых данных str1,str2
A) scanf(“%s%s“, str1, str2); B) scanf(“%s%c“, &str1, &str2);
C) scanf(“%s%c“, str1, str2); D) scanf(“%c%c“, str1, str2);
E) scanf(“%u%u“, str1, str2);
17. Укажите из приведенных ниже операций операцию с наименьшим приоритетом
A) &&B) !!C) <=D) = =E) !
18. Выберите операцию доступа к элементу структуры при помощи указателя
A) >> B) -> C) << D) & E) *
19. Что будет напечатано следующей программой
main()
{ staticinta[4][4]={{2,3,4,5};
{7,5,9,8};
{1,0,6,7};
{-2,4,5,3}; };
int i, k=0;
for(i=0;i<4;i++)
if (a[i][3-i]>0) k++;
printf(“%d”, k); }
A) 4B) 2C) 1D) 3E) 0
20. Выберите правильный результат выполнения следующей программы
main()
{ staticcharL[ ] = “Сведения о результатах сессии”;
puts(L);
flen(L,8);
puts(L); }
flen(char *stroka, int size)
{ if (strlen(stroka)>size )
*(stroka+size) = ‘\o’; }
A) Сведения о результатах сессии