Закреплена за кафедрой | Кафедра информатики |
---|---|
Направление подготовки | 01.03.02. Прикладная математика и информатика |
Профиль | Математическое и компьютерное моделирование в природных и индустриальных системах |
Форма обучения | Очная |
Общая трудоемкость | 6 ЗЕТ |
Учебный план | 01_03_02_Прикладная математика и информатика_МКМПиИС-2023 |
|
|
Распределение часов по семестрам
Курс (семестр) | 1 (2) | Итого | ||
---|---|---|---|---|
Недель | 22,5 | |||
Вид занятий | УП | РПД | УП | РПД |
Лабораторные | 72 | 72 | 72 | 72 |
Сам. работа | 117 | 117 | 117 | 117 |
Часы на контроль | 27 | 27 | 27 | 27 |
Итого | 216 | 216 | 216 | 216 |
Визирование РПД для исполнения в очередном учебном году
Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2023-2024 учебном году на заседании
кафедры
Кафедра информатики
Протокол от 26.06.2023 г. № 4
Заведующий кафедрой к.ф.-м.н., доцент Козлов Денис Юрьевич
1.1. | Целями освоения дисциплины являются: - формирование базовых знаний в области основ алгоритмизации и программирования; - выработка навыков решения типичных задач с использованием ЭВМ; - овладение приемами разработки и отладки программ в современных средах программирования. Изучение дисциплины направлено - на развитие у обучающихся алгоритмического мышления, систематизацию принципов построения языков программирования и подходов к разработке программ для ЭВМ; - на формирование навыков реализации алгоритмов на высокоуровневом императивном языке программирования; разработки, отладки и тестирования программ; - на подготовку обучающихся к системному восприятию дальнейших дисциплин из учебного плана, использующих навыки алгоритмизации и программирования; - на получение представлений об основных идеях структурного программирования и развитие способностей сознательно использовать материал курса, умение разбираться в существующих языковых и программных средствах и условиях их применения. |
---|
Цикл (раздел) ООП: Б1.О.02 |
ОПК-4 | Способен понимать принципы работы современных информационных технологий и использовать их для решения задач профессиональной деятельности |
ОПК-4.1 | Знает основные понятия и принципы работы современных информационных технологий |
ОПК-4.2 | Использует научные и образовательные ресурсы сети Интернет для разработки программ и программной документации с учетом основных требований профессиональной деятельности. |
ОПК-4.3 | Использует основные методы ИКТ (передачи, обработки и хранения информации) в сфере профессиональной деятельности |
В результате освоения дисциплины обучающийся должен | |
3.1. | Знать: |
---|---|
3.1.1. | о различных парадигмах программирования и современном уровне развития языков и технологий программирования; о сложности программных систем и методах ее преодоления; об основах построения трансляторов; основные понятия в области алгоритмизации, свойства алгоритмов, методы анализа сложности алгоритмов; синтаксис и базовые конструкции языков C и С++, основные возможности и приемы программирования на этих языках; принципы структурного программирования; назначение, устройство и свойства основных структур данных: список, очередь, стэк, дерево, граф; эффективные алгоритмы поиска и сортировки, алгоритмы решения задач теории графов. |
3.2. | Уметь: |
3.2.1. | разрабатывать алгоритмы решения типичных задач и реализовывать их на языке С; применять при решении алгоритмических задач типичные алгоритмы и структуры данных; использовать для разработки и отладки программ современные интегрированные среды разработки. |
3.3. | Иметь навыки и (или) опыт деятельности (владеть): |
3.3.1. | приемами чтения, построения и записи алгоритмов; навыками написания и отладки программ на высокоуровневом языке программирования в интегрированной среде разработки. |
Код занятия | Наименование разделов и тем | Вид занятия | Семестр | Часов | Компетенции | Литература |
---|---|---|---|---|---|---|
Раздел 1. Язык программирования Си | ||||||
1.1. | Линейный вычислительный процесс | Лабораторные | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.2. | Линейный вычислительный процесс | Сам. работа | 2 | 8 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.3. | Ветвящийся вычислительный процесс | Лабораторные | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.4. | Ветвящийся вычислительный процесс | Сам. работа | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.5. | Циклический вычислительный процесс | Лабораторные | 2 | 8 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.6. | Циклический вычислительный процесс | Сам. работа | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.7. | Функции | Лабораторные | 2 | 8 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.8. | Функции | Сам. работа | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.9. | Массивы | Лабораторные | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.10. | Массивы | Сам. работа | 2 | 30 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.11. | Строки | Лабораторные | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.12. | Строки | Сам. работа | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.13. | Структуры | Лабораторные | 2 | 6 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.14. | Структуры | Сам. работа | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.15. | Файлы | Лабораторные | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
1.16. | Файлы | Сам. работа | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
Раздел 2. Алгоритмы и структуры данных | ||||||
2.1. | Базовые методы сортировки | Лабораторные | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.2. | Базовые методы сортировки | Сам. работа | 2 | 10 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.3. | Методы сортировки с линейно-логарифмической сложностью | Лабораторные | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.4. | Методы сортировки с линейно-логарифмической сложностью | Сам. работа | 2 | 7 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.5. | Анализ сложности алгоритмов сортировки | Лабораторные | 2 | 4 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.6. | Анализ сложности алгоритмов сортировки | Сам. работа | 2 | 8 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.7. | Динамические структуры данных | Лабораторные | 2 | 6 | Л2.1, Л1.2, Л1.3, Л1.1 | |
2.8. | Динамические структуры данных | Сам. работа | 2 | 6 | Л2.1, Л1.2, Л1.3, Л1.1 |
5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины |
Оценочные материалы для текущего контроля (лабораторные работы, тесты) размещены в онлайн-курсе на образовательном портале: https://portal.edu.asu.ru/course/view.php?id=3188 Оценка сформированности компетенции ОПК-4: Способен понимать принципы работы современных информационных технологий и использовать их для решения задач профессиональной деятельности Примеры заданий (открытые и закрытые ): 1. Что выведет следующая программа? #include <stdio.h> void main() { int a; unsigned b; if (sizeof(a)==sizeof(b)) printf(“YES”); else printf(“NO”); } Выберите один ответ: а.Yes б. Нет правильного варианта ответа в. No с.Возникнет ошибка компиляции Ответ: а 2. Что выведет следующая программа? #include <stdio.h> void main() { float f=2.0; printf(“%d”, sizeof(f)); } Ответ: 4 3. Если x=4 и y=7, то результатом вычисления выражения x < 3 && y<7 || y!=6 будет число: а.1 б. 4 с. 2 д. 3 е. 0 Ответ: е 4. Как обозначаются логические операции в языке Си? Выберите один ответ: а. && || ! б. && || !! в. && // ! г. & | ! д. AND OR NOT Ответ: а 5. Что выведет следующая программа? #include <stdio.h> void main() { unsigned char p=0x0F; if (p>>4) printf(“%d”, p); else printf(“%d”, p+1); } Выберите один ответ: а.1 б. 0 в.16 г. 0x10 д. 4 Ответ: в 6. Какое из следующих выражений является примером корректного употребления условной операции? Выберите один ответ: а.x<1 ? printf("x<1"); printf("x>=1"); б. x<1 ? printf("x<1") : printf("x>=1"); в. x<1 : printf("x<1") ? printf("x>=1"); г. x<1 ? printf("x<1") ? printf("x>=1"); д. x < 1 ? printf("x<1"); : printf("x>=1"); Ответ: б 7. Что выведет следующая программа? #include <stdio.h> void main() { int p=10; p=p>50? p++ : if (p<0) p/=2 else p*=2; printf(“%d”, p); } Выберите один ответ: а.20 б. 0 в. 5 г. 10 д. Нет правильного варианта ответа е. 50 Ответ: д 8. Что выведет следующая программа? #include <stdio.h> void main() { float f=5; int x; x=f%2; printf(“%d”, x); } Выберите один ответ: а. При компиляции программы возникнут ошибки б. 5.250000 в. 1.000000 г. Нет правильного варианта ответа д. 2.500000 Ответ: а 9. В каких строках программы содержатся ошибки? Проверьте этот кусок строки должны стоять только в таком порядке и отсутствуют точки с запятыми в конце строк иначе вся суть нарушается 1. #include <stdio.h> 2. 3. void main() { 4. int a,b; 5. printf(“input a=”); 6. scanf(“%f”, a); 7. printf(“input b=”); 8. scanf(“%d”, &b); 9. c=a+b 10. printf(“a+b=%c, c”); 11. } Выберите один или несколько ответов: а. 1 б. 2 в. 3 г. 4 д. 5 е. 6 ж. 7 з. 8 и. 9 к.10 л.11 Ответ: е, и, к 10. Сколько первых символов в идентификаторах должны различаться для того, чтобы идентификаторы считались различными согласно стандарту "ANSI C"? Выберите один ответ: все а. 8 б. 32 в. 64 г. 16 Ответ: б 11. Какие из следующих значений записаны в соответствии с синтаксисом языка Си? Выберите один или несколько ответов: а. 1.2009 б. 12009,0e-001 в. 1,2009 г. 12009.0e-1 д. 12009e-001 е. 12009.0E-001 Ответ: а, г, д, е 12. Какое значение получит переменная x после выполнения следующего оператора? float x=1+1e+1e+1; Выберите один ответ: a. Оператор синтаксически не корректен b. 12.000000 c. 4.000000 d. 2e2 Ответ: а 13. Как называется директива препроцессора для подключения внешних файлов (библиотек): Выберите один ответ: а. uses б. income в. include г. extern д. define е. exclude Ответ: в 14. В каких частях программы на языке Си могут располагаться объявления переменных? а. Выберите один или несколько ответов: б. Вне описаний функций в. В любой точке тела функции main() г. В начале тела функций main() д. После заголовка функции main(), но перед ее телом е. В любом месте программы Ответ: е 15. Что выведет на экран следующая программа, если ее откомпилировать и исполнить? #include <stdio.h> #define max=5; void main() { int a=0; a=max++; printf(“%d”, a++); } Выберите один ответ: а.6 б. 0 в. 7 г. 5 е. Возникнет ошибка компиляции Ответ: е 16. Укажите, какие из следующих описаний массивов являются корректными. Выберите один или несколько ответов: а. int D[1..3]; б. int A[3]={1,3,5}; в. int B[3]={11,22}; г. int M[3]; д. int C[3]={0,1,2,3}; Ответ: б, в, г 17. Что выведет следующая программа, если ее откомпилировать и исполнить? #include <stdio.h> void main() { int i, M[3]={1} ; for (i=0; i<3;i++) printf(“%d”, M[i]); } Выберите один ответ: а. 111 б. 100 в. Нет правильного варианта ответа с. 000 д. Выводимые программой значения неопределенны е. 1 1 1 Ответ: б 18. Какое значение получит переменная st после выполнения следующего фрагмента программы, если при выполнении программы на ввод ей будет подана указанная в комментарии строка (без кавычек)? char st[20]; gets (st); //Введенная строка “Hello world!” Выберите один ответ: а. Нет правильного варианта ответа б. Hello world в. Hello г. Программа синтаксически некорректна д. Helloworld! е. Hello world! Ответ: е 19. Сколько раз исполнится цикл в следующей программе? void main() { int i=1, j=1 ; for (; ;) { printf(“%d%d”, i,j); } } а. Выберите один ответ: б. Ни разу в. При компиляции программы возникнет ошибка г. Нет правильного варианта ответа е. 1 д. Бесконечное количество раз Ответ: д 20. Что выведет следующая программа? #include <stdio.h> void main() { int i; float s=0; while (i>1) { s=s+1/i; i=i-1; } printf(“%f”, s); } Выберите один ответ: а. Нет правильного варианта ответа б. 1.000000 в. 0.20000 г. 2.283333 д. 0.000000 е. При компиляции программы возникнет ошибка Ответ: д |
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.) |
Не предусматривается |
5.3. Фонд оценочных средств для проведения промежуточной аттестации |
Промежуточная аттестация заключается в проведении экзамена по всему изученному курсу. Экзамен проводится в письменной форме по билетам. В билет входят 6 вопросов практико-ориентированного характера. Методическое описание порядка проведения (процедуры) оценивания усвоенных компетенций на экзамене: На экзамен выносится материал практических и лекционных занятий, результаты выполненных лабораторных работ, предусмотренных рабочей программой учебной дисциплины. Экзамен проводится в письменной форме. В билет включено семь заданий, соответствующие содержанию формируемых компетенций. На подготовку ответа студенту отводится 120 минут. Результат экзамена выражается оценкой «отлично», «хорошо», «удовлетворительно», «не удовлетворительно» согласно критериям, описанным в п. 2 настоящего документа. Итоговая оценка за экзамен О = 0.5*Э + 0.3*Л + 0.2*Т Э – оценка за экзаменационную работу Л – средняя оценка за лабораторные работы Т – средняя оценка за тесты Методическое описание порядка проведения (процедуры) оценивания усвоенных компетенций в процессе тестирования: Тестирование проводится с помощью автоматизированной программы «Образовательный портал АлтГУ». На тестирование отводится 10 минут. Каждый вариант тестовых заданий включает 10 вопросов. За каждый правильно отвеченный вопрос дается 1 балл. Перевод баллов в оценку: 8.5-10 – «отлично», 7-8.4 – «хорошо», 5-6.9 – «удовлетворительно», 0-4.9 – «неудовлетворительно». Методическое описание порядка проведения (процедуры) оценивания усвоенных компетенций в процессе выполнения лабораторного работы: Защита выполненных заданий обучающимися происходят в виде беседы преподавателя с обучающимся на темы, связанные с изучаемой дисциплиной, которая рассчитана на выяснение объема знаний обучающегося по определенному разделу, теме, с демонстрацией разработанной компьютерной программы. Перевод баллов в оценку: 85-100 – «отлично», 70-84 – «хорошо», 50-69 – «удовлетворительно», 0-49 – «неудовлетворительно». Общий порядок проведения процедур оценивания знаний, умений, навыков и (или) опыта деятельности, характеризующих этапы формирования компетенций определены в «Положении о проведении текущего контроля успеваемости и промежуточной аттестации обучающихся по образовательным программам высшего образования в ФГБОУ ВПО «Алтайский государственный университет» от 23.10.2014, №1690/п. Пример экзаменационной работы 1. Типы, значения, операции, выражения Изучите следующие выражения присвоения на языке C (<переменная> = <выражение>). Для каждого из них укажите порядок вычисления и промежуточные результаты вычисления подвыражений. Укажите также значения и тип (double, float, int, char, …) окончательного результата вычисления выражения, стоящего справа от оператора присваивания, и значение с его типом, сохраняемое в переменной, стоящей слева от оператора присваивания. Для логических выражений используйте TRUE и FALSE в качестве значений и тип int в качестве типа данных. (a) char Grade; Grade = 'F' - 4 % 2; Выражение: Значение:....................Тип: .......................... Переменная: Значение: ................... Тип: ......................... (b) int Number; Number = 3 * 2 / 10.0; Выражение: Значение:....................Тип: .......................... Переменная: Значение: .................. Тип: ........................... (c) float Taxes; Taxes = (20 * 4 + 30 * 3)/50; Выражение: Значение:....................Тип: .......................... Переменная: Значение: ...................Тип: .......................... (d) int Done; Done = ((4 <= 7) && !(9.1 > 6)); Выражение: Значение:....................Тип: ....................... Переменная: Значение:...................Тип: ........................ (e) int Distance; Distance = 3.5 + 3 / (2 + 3); Выражение: Значение:....................Тип: ........................ Переменная: Значение:...................Тип: .......................... (f) int Price; Price = 5U / 2U + 13LU % (4U >> 1U); Выражение: Значение:....................Тип: ....................... Переменная: Значение:.................... Тип: ...................... 2. Управляющие конструкции (a) Напишите на языке C программу, задающую пользователю несколько вопросов и выбирающую в зависимости от его ответов модель автомобиля для него. Вопросы. 1) Есть ли у Вас дети? 2) Много ли у Вас денег? 3) Нравятся ли Вам грузовики? Предлагаемая в зависимости от ответов модель. Porsche: не имеет детей, имеет много денег, не любит грузовики Tundra: не имеет детей, имеет много денег, любит грузовики Civic: не имеет детей, имеет мало денег Villager: имеет детей, имеет много денег, не любит грузовики Explorer: имеет детей, имеет много денег, любит грузовики Lada: имеет детей, имеет мало денег #include <stdio.h> int main() { // объявление переменных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . // ввод пользователя (проверка не требуется) // вывод названия нужной модели автомобиля } (b) Перепишите следующий фрагмент программы, используя цикл for вместо цикла while. int Max = 1900; int Sum = 0; while ((Max < 1950)){ Sum = Sum + (Max - 1900); printf("Sum: %d\n",Sum); Max = Max + 5; } // далее следует Ваш код 3. Функции (a) Что выведет на экран следующая программа? #include <stdio.h> const int X = 3; void Proc1 (int *Y) { *Y = 6; printf("Внутри Proc1, X: %d, Y: %d\n",X,*Y); } int Proc2 (int *Y, int Z) { int X = 7; Proc1 (&X); Proc1 (Y); *Y = 3; printf("Внутри Proc2, X: %d, Y: %d, Z: %d\n",X,*Y,Z); return (*Y + Z); } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . int main() { int A = 1, B = 3, C = 5; C = Proc2 (&A,B); printf("В итоге, A: %d, B: %d, C: %d\n",A,B,C); return(0); } (b) Напишите функцию "sum_from_to" с двумя целыми аргументами first и last, возвращающую в качестве значения сумму всех целых чисел между first и last, включая границы диапазона. Примеры вызова функции: printf(“%d\n”, sum_from_to(4,7)); // выведет 22, т.к. 4+5+6+7 = 22 printf(“%d\n”, sum_from_to(-3,1)); // выведет -5, т.к. (-3)+(-2)+(-1)+0+1 = -5 printf(“%d\n”, sum_from_to(7,4)); // выведет 22, т.к. 7+6+5+4 = 22 printf(“%d\n”, sum_from_to(9,9)); // выведет 9 // далее следует Ваш код функции 4. Массивы, строки, указатели (a) Допишите следующую программу. Цель –– домножить каждое четное значение в целочисленном массиве на 2, а каждое нечетное значение –– на 3. #include const int MAXSIZE = . . . . ; // Задайте подходящий размер массива int main() { // Здесь объявите целочисленный массив размера MAXSIZE. // Инициализируйте его так, чтобы каждый его элемент содержал // одну цифру номера Вашей зачетной книжки. // Домножьте каждое четное целое на 2, а каждое нечетное – на 3. return (0); } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (b) Что будет выведено следующей программой? void main(){ char x[80] = "А вы знаете, что 2x2=4?" *(x+1) = ’ж’ - 3; *(x+2) = x[7]; x[3] = 0; printf("%s",x); } 5. Структуры, файлы (a) Допишите в следующей программе секцию инициализации переменной st так, чтобы программа порождала следующий вывод: 2 п ц 1.400000 void main() { struct altai { char c; float d; }; struct russia { int a[3]; char b; struct altai barnaul; }; struct russia st = printf("%d\t%c\t%c\t%f",st.a[1],st.b,st.barnaul.c,st.barnaul.d); } (b) Каким будет вывод следующей программы в случае успешного завершения? #include <stdio.h> void main(){ int i; char s[] = “свет”, t[]=“тьма”; FILE *f=fopen(“exam.txt”,”wt”); fprintf(f, “Ученье - %s, а неученье - %s”, s, t); fclose(f); f=fopen(“exam.txt”,“rt”); fseek (f, 17, SEEK_SET); for(i=0; i<4; i++) printf(“%c”,fgetc(f)); fclose(f); printf(“\n”); } 6. Анализ алгоритмов Дайте Θ-оценки временной сложности каждого из следующих фрагментов кода в зависимости от n. Все вызовы функций m1, m2 и m3 есть Θ(1). (a) for (int i = 1; i <= n; i++) { for (int j = 1; j <= n*n; j++) m1(i,j); for (int k = 1; k <= n*n*n; k++) m2(i,j); } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (b) for (int i = 1; i <= n; i=2*i) for (int j = 1; j <= n; j++) for (int k = 1; k <= j; k++) m3(i,j,k); 7. Представление чисел (a) Запишите числа X=14 и Y=–21 в прямом, обратном и дополнительном восьмиразрядном коде и вычислите X + Y в обратном и дополнительном коде. Результаты вычислений представьте в десятичной и шестнадцатиричной системах счисления. (b) Запишите двоичное представление чисел A=20.0 и B=0.25 в формате чисел с плавающей точкой float. Вычислите выражение A / B, указывая результаты промежуточных шагов (нормализации, выравнивания порядков и т.п.). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Пример варианта с решениями 1. Типы, значения, операции, выражения Изучите следующие выражения присвоения на языке C (<переменная> = <выражение>). Для каждого из них укажите порядок вычисления и промежуточные результаты вычисления подвыражений. Укажите также значения и тип (double, float, int, char, …) окончательного результата вычисления выражения, стоящего справа от оператора присваивания, и значение с его типом, сохраняемое в переменной, стоящей слева от оператора присваивания. Для логических выражений используйте TRUE и FALSE в качестве значений и тип int в качестве типа данных. (a) char Grade; Grade = 'F' - 4 % 2; Выражение: Значение: 70 ...............Тип: int ...................... Переменная: Значение: ‘F’ ............... Тип: char .................. (b) int Number; Number = 3 * 2 / 10.0; Выражение: Значение: 0.6 ..............Тип: double................. Переменная: Значение: 0................ Тип: int........................ (c) float Taxes; Taxes = (20 * 4 + 30 * 3)/50; Выражение: Значение:3..................Тип: int ...................... Переменная: Значение: 3.0 ..............Тип: float ................... (d) int Done; Done = ((4 <= 7) && !(9.1 > 6)); Выражение: Значение: FALSE ........Тип: int .................... Переменная: Значение: 0................Тип: int .................... (e) int Distance; Distance = 3.5F + 3L / (2 + 3); Выражение: Значение: 3.5 ..............Тип: float ................. Переменная: Значение: 3 ................Тип: int ...................... (f) int Price; Price = 5U / 2U + 13LU % (4U >> 1U); Выражение: Значение: 3.................Тип: unsigned long int Переменная: Значение: 3................. Тип: int................... 2. Управляющие конструкции (a) Напишите на языке C программу, задающую пользователю несколько вопросов и выбирающую в зависимости от его ответов модель автомобиля для него. Вопросы. 1) Есть ли у Вас дети? 2) Много ли у Вас денег? 3) Нравятся ли Вам грузовики? Предлагаемая в зависимости от ответов модель. Porsche: не имеет детей, имеет много денег, не любит грузовики Tundra: не имеет детей, имеет много денег, любит грузовики Civic: не имеет детей, имеет мало денег Villager: имеет детей, имеет много денег, не любит грузовики Explorer: имеет детей, имеет много денег, любит грузовики Lada: имеет детей, имеет мало денег #include <stdio.h> int main() { // объявление переменных. int hasChildren; // Есть ли дети? int hasMoney; // Много ли денег? int lovesTrucks; // Любит ли грузовики? // ввод пользователя (проверка не требуется) // вывод названия нужной модели автомобиля } (b) Перепишите следующий фрагмент программы, используя цикл for вместо цикла while. int Max = 1900; int Sum = 0; while ((Max < 1950)){ Sum = Sum + (Max - 1900); printf("Sum: %d\n",Sum); Max = Max + 5; } // далее следует Ваш код 3. Функции (a) Что выведет на экран следующая программа? #include <stdio.h> const int X = 3; void Proc1 (int *Y) { *Y = 6; printf("Внутри Proc1, X: %d, Y: %d\n",X,*Y); } int Proc2 (int *Y, int Z) { int X = 7; Proc1 (&X); Proc1 (Y); *Y = 3; printf("Внутри Proc2, X: %d, Y: %d, Z: %d\n",X,*Y,Z); return (*Y + Z); } if(hasChildren) // есть дети if(hasMoney) // | есть много денег if(lovesTrucks) // | | любит грузовики printf(“Explorer\n”); // | | | Explorer else // | | не любит грузовики printf(“Villager\n”); // | | Villager else // | мало денег printf(“Lada\n”); // | Lada else // нет детей if(hasMoney) // есть много денег if(lovesTrucks) // | любит грузовики printf(“Tundra\n”); // | | Tundra else // | не любит грузовики printf(“Porshe\n”); // | Porshe else // мало денег printf(“Civic\n”); // Civic int Sum = 0; for(int Max=1900; Max < 1950; Max+=5 ) { Sum += (Max – 1900); printf("Sum: %d\n",Sum); } printf(“Есть ли у Вас дети? (0-да/1-нет):”); scanf(“%d”,&hasChildren); printf(“Много ли у Вас денег? (0-да/1-нет):”); scanf(“%d”,&hasMoney); printf(“Любите ли Вы грузовики? (0-да/1-нет):”); scanf(“%d”,&lovesTrucks); int main() { int A = 1, B = 3, C = 5; C = Proc2 (&A,B); printf("В итоге, A: %d, B: %d, C: %d\n",A,B,C); return(0); } (b) Напишите функцию "sum_from_to" с двумя целыми аргументами first и last, возвращающую в качестве значения сумму всех целых чисел между first и last, включая границы диапазона. Примеры вызова функции: printf(“%d\n”, sum_from_to(4,7)); // выведет 22, т.к. 4+5+6+7 = 22 printf(“%d\n”, sum_from_to(-3,1)); // выведет -5, т.к. (-3)+(-2)+(-1)+0+1 = -5 printf(“%d\n”, sum_from_to(7,4)); // выведет 22, т.к. 7+6+5+4 = 22 printf(“%d\n”, sum_from_to(9,9)); // выведет 9 // далее следует Ваш код функции 4. Массивы, строки, указатели (a) Допишите следующую программу. Цель –– домножить каждое четное значение в целочисленном массиве на 2, а каждое нечетное значение –– на 3. После этого необходимо вывести массив на экран. #include const int MAXSIZE = 7; // Задайте подходящий размер массива int main() { // Здесь объявите целочисленный массив размера MAXSIZE. // Инициализируйте его так, чтобы каждый его элемент содержал // одну цифру номера Вашей зачетной книжки. // Домножьте каждое четное целое на 2, а каждое нечетное – на 3. return (0); } (b) Что будет выведено следующей программой? void main(){ char x[80] = "А вы знаете, что 2x2=4?" *(x+1) = ’ж’ - 3; *(x+2) = x[7]; x[4] = 0; printf("%s",x); } Ответ: Ага 5. Структуры, файлы (a) Допишите в следующей программе секцию инициализации переменной st так, чтобы программа порождала следующий вывод: 2 Ш Ы 1.400000 void main() { struct altai { char c; float d; }; struct russia { int a[3]; char b; struct altai barnaul; }; struct russia st = { {1,2,3}, ‘Ш’, {‘Ы’, 1.4} }; printf("%d\t%c\t%c\t%f",st.a[1],st.b,st.barnaul.c,st.barnaul.d); } (b) Каким будет вывод следующей программы в случае успешного завершения? #include <stdio.h> void main(){ int i; char s[] = “свет”, t[]=“тьма”; FILE *f=fopen(“exam.txt”,”wt”); fprintf(f, “Ученье - %s, а неученье - %s”, s, t); fclose(f); f=fopen(“exam.txt”,“rt”); fseek (f, 17, SEEK_SET); for(i=0; i<4; i++) printf(“%c”,fgetc(f)); fclose(f); printf(“\n”); } ответ: неуч 6. Анализ алгоритмов Дайте Θ-оценки временной сложности каждого из следующих фрагментов кода в зависимости от n. Все вызовы функций m1, m2 и m3 есть Θ(1). (a) for (int i = 1; i <= n; i++) { for (int j = 1; j <= n*n; j++) m1(i,j); for (int k = 1; k <= n*n*n; k++) m2(i,j); } Ответ: Сложность фрагмента: Θ(n^4) (b) for (int i = 1; i <= n; i=2*i) for (int j = 1; j <= n; j++) for (int k = 1; k <= j; k++) m3(i,j,k); Ответ: Сложность фрагмента: Θ(n^2 log n) |
Приложения |
6.1. Рекомендуемая литература | ||||
6.1.1. Основная литература | ||||
Авторы | Заглавие | Издательство, год | Эл. адрес | |
Л1.1 | Подбельский В.В., Фомин С.С. | Курс программирования на языке Си: Учебники | Издательство "ДМК Пресс", 2012 | e.lanbook.com |
Л1.2 | Смирнов А.А. | Технологии программирования : учебно-практическое пособие [Электронный ресурс]: Учебно-практическое пособие | Евразийский открытый институт, 2011 // ЭБС "Университетская библиотека ONLINE" | biblioclub.ru |
Л1.3 | Вирт Н. | Алгоритмы и структуры данных. Новая версия для Оберона: Учебные пособия | Издательство "ДМК Пресс", 2010 | e.lanbook.com |
6.1.2. Дополнительная литература | ||||
Авторы | Заглавие | Издательство, год | Эл. адрес | |
Л2.1 | Кауфман В.Ш. | Языки программирования. Концепции и принципы: Учебник | М.: ДМК Пресс // ЭБС "Лань", 2011 | e.lanbook.com |
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет" | ||||
Название | Эл. адрес | |||
Э1 | C — The ISO Standard — Rationale, Revision 5.10 (англ.) (апрель 2004). — Обоснование и пояснения для стандарта C99. – http://www.open-std.org/JTC1/SC22/WG14/www/docs/C99RationaleV5.10.pdf | |||
Э2 | ISO/IEC JTC1/SC22/WG14 official home – Официальная страница международной рабочей группы по стандартизации языка программирования Си. – http://www.open-std.org/JTC1/SC22/WG14/ | |||
Э3 | Поисковые системы - yandex.ru, google.com | |||
Э4 | Свободная энциклопедия Википедия – http://ru.wikipedia.org | |||
Э5 | Форум разработчиков программного обеспечения - Stackoverflow.com | |||
Э6 | Интернет-университет информационных технологий. – http://www.intuit.ru | |||
Э7 | Образовательный курс Основы программирования на платформе MOODLE | portal.edu.asu.ru | ||
6.3. Перечень программного обеспечения | ||||
Интегрированная среда разработки Компилятор С/С++ Текстовый редактор Microsoft Windows Microsoft Office 7-Zip AcrobatReaderMicrosoft Office 2010 (Office 2010 Professional, № 4065231 от 08.12.2010), (бессрочно); Microsoft Windows 7 (Windows 7 Professional, № 61834699 от 22.04.2013), (бессрочно); Chrome (http://www.chromium.org/chromium-os/licenses), (бессрочно); 7-Zip (http://www.7-zip.org/license.txt), (бессрочно); AcrobatReader (http://wwwimages.adobe.com/content/dam/Adobe/en/legal/servicetou/Acrobat_com_Additional_TOU-en_US-20140618_1200.pdf), (бессрочно); ASTRA LINUX SPECIAL EDITION (https://astralinux.ru/products/astra-linux-special-edition/), (бессрочно); LibreOffice (https://ru.libreoffice.org/), (бессрочно); Веб-браузер Chromium (https://www.chromium.org/Home/), (бессрочно); Антивирус Касперский (https://www.kaspersky.ru/), (до 23 июня 2024); Архиватор Ark (https://apps.kde.org/ark/), (бессрочно); Okular (https://okular.kde.org/ru/download/), (бессрочно); Редактор изображений Gimp (https://www.gimp.org/), (бессрочно) | ||||
6.4. Перечень информационных справочных систем | ||||
1. Образовательный портал АлтГУ [Электронный ресурс]: http://portal.edu.asu.ru 2. Издательство «Лань» - электронно-библиотечная система [Электронный ресурс]: http://e.lanbook.com 3. Издательство МЦНМО. Свободно распространяемые книги издательства Московского центра непрерывного математического образования [Электронный ресурс]: www.mccme.ru/free-books 4. Математическая библиотека [Электронный ресурс]: www.math.ru/lib 7. Электронная библиотечная система Алтайского государственного университета [Электронный ресурс]: http://elibrary.asu.ru 8. Научная электронная библиотека Elibrary [Электронный ресурс]: http://elibrary.ru |
Аудитория | Назначение | Оборудование |
---|---|---|
Учебная аудитория | для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик | Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска) |
Помещение для самостоятельной работы | помещение для самостоятельной работы обучающихся | Компьютеры, ноутбуки с подключением к информационно-телекоммуникационной сети «Интернет», доступом в электронную информационно-образовательную среду АлтГУ |
107Л | лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации | Учебная мебель на 18 посадочных мест; компьютеры: марка HP, модель ProOne 400 - 18 единиц; проектор: марка SMART, модель UF70 - 1 единица; интерактивная доска: марка SMART Board модель SMB680 - 1 единица |
В процессе освоения курса "Основы программирования" обучающийся будет сталкиваться с материалами разного рода. Ниже даны краткие инструкции по их использованию и освоению. 1. Рабoчая программа дисциплины Рабочая программа дисциплины -- официальный документ, определяющий содержание курса. С ним следует ознакомиться, чтобы понимать что конкретно будет изучаться в данном курсе. 2. Глoссарий Глоссарий -- справочник основных понятий и определений терминов, используемых в курсе. Для успешного освоения курса и сдачи экзамена, совершенно необходимо выучить наизусть и быть способным привести не только определение, но и пару-тройку фрагментов кода, иллюстрирующих данное понятие. 3. Слайды к лекциям Слайды к лекциям могут служить кратким конспектом лекций. Используйте их как план освоения прочих материалов: видеолекций, текстов и пр. В начале каждой презентации содержатся задания для самопроверки, которые могут дать представление о наиболее сложных вопросах в тестах. 4. Видеолекции Видеолекции смонтированы на основе звукозаписей "живых" лекций и до некоторой степени способны их заменить. Пока они не покрывают полный курс, но их коллекция неуклонно пополняется. Используйте их для освежения в памяти рассмотренного материала. К сожалению, при просмотре видеолекций нет возможности задать вопрос лектору, однако его можно задать а) в личном сообщении преподавателю, б) в группе ВКонтакте vk.com/asuop2014, в) на очной консультации. 5. Лабораторные работы Выполнение лабораторных работ -- основа практических занятий. Основные навыки программирования вырабатываются именно в эти моменты. Для выполнения работы необходимо получить вариант задания у преподавателя, ведущего практические занятия; обратившись к нужной лабораторной работе,загрузить документ с описанием работы; внимательно прочитать задание к работе (как правило, на второй странице документа); разработать, отладить и оттестировать программы, решающие указанные задачи; составить отчёт о лабораторной работе по шаблону (см. ссылку в 0-м разделе курса); загрузить PDF-версию отчета, используя нужный элемент "Лабораторная работа №..." (при необходимости вместо уже загруженного варианта отчета всегда можно загрузить и его обновленную версию); очно защитить результаты работы перед преподавателем и получить оценку. Оценки за лабораторные работы можно просмотреть через пункт меню "Оценки", расположенном на главной странице курса в её левой нижней части (Настройки\Управление курсом\Оценки). Как правило на выполнение лабораторной работы отводится 3 недели, при этом сложность работ возрастает с увеличением номера лабораторной работы. По этой причине не рекомендуется затягивать первые простые работы. 6. Шаблон отчета о лабораторной работе Шаблон отчета -- Word-документ, содержащий пример оформления отчета о выполнении лабораторной работы. Используйте этот документ как образец содержания и стиля оформления отчета, в том числе и в ситуациях, когда для подготовки отчета используются текстовые редакторы, отличные от Word-а. 7. Тесты Тесты предназначены для контроля усвоения теоретического материала, а также умения читать и понимать код программ. Количество попыток на каждый тест ограничено тремя. Зачётные попытки выполнения теста осуществляются только в присутствии преподавателя (на практическом занятии или консультации). Оценка за тест определяется как максимальная из оценок, полученных в зачетных попытках. Результаты прочих попыток аннулируются, а попытки рассматриваются как тренировочно-ознакомительные. Оценки за тесты сообщаются по окончании попытки, а также могут быть просмотрены в любой момент через пункт меню "Оценки", расположенный на главной странице курса в её левой нижней части (Настройки\Управление курсом\Оценки). 8. Рекомендации "Чтo почитать?" Элемент "Чтo почитать?" имеется в большинстве разделов курса и содержит ссылки на фрагменты текстов учебников, вдумчивое прочтение которых является залогом успешного выполнения как тестовых заданий, так и лабораторных работ. 9. Рекомендации "Чтo посмотреть?" На страницах с названием "Чтo посмотреть?" содержатся ссылки на видео-материалы, служащие либо полезными иллюстрациями к материалу соответствующего раздела курса, либо излагающие дополнительные сведения, необходимые для понимания раздела, но выходящие за рамки курса. 10. Примеры прoграмм В папках с таким названием содержатся исходные коды программ, которые рассматривались во время лекций и фрагментарно представлены на слайдах к лекциям соответствующих разделов. Используйте эти исходные коды для самостоятельной компиляции и [пошагового] выполнения программ, чтобы детально разобраться в их устройстве и принципах работы. Кроме того, исходные коды полезны в роли заготовки программ, решающих задачи, поставленные в лабораторных работах. 11. Экзамен проводится в письменном виде. Пример экзаменационного билета и пример его решения приводится на электронном ресурсе данного курса. Перед изложением нового материала каждой лекции рассматриваются задачи, которые входят в экзаменационные билеты. |