- Главная
- Информатика
- Основы алгоритмизации и программирования
Содержание
- 2. Минимальный (обязательный) набор практических навыков Умение нарисовать блок-схему алгоритма для линейных участков, любых циклов, развилок, в
- 3. Минимальный набор алгоритмов (выученных наизусть!) Вычисление факториала. Вычисление чисел Фибоначчи. Ввод элементов массива Вывод элементов массива
- 4. Пример экзаменационной задачи (на «хорошо») Общее задание Ввести двумерный массив из файла. Количество элементов не более
- 5. Простое решение экзаменационной задачи (другие варианты решения – см. Лекция 9)
- 6. Входной файл
- 7. Решение без функций (1) #define _CRT_SECURE_NO_WARNINGS #include void main() { int a[10][10]; int n, m; //
- 8. Решение без функций (2) // вывод массива в консоль for (int i = 0; i for
- 9. Решение без функций (3) // поиск максимального int max = a[0][0]; int iMax = 0; int
- 10. Решение без функций (4) // вывод массива в консоль for (int i = 0; i for
- 11. Решение без функций (5) { int x; scanf("%d", &x); } }
- 12. Пример экзаменационной задачи (на «отлично») Общее задание Ввести двумерный массив из файла. Количество элементов не более
- 13. Пример экзаменационной задачи (на «отлично») Вариант
- 14. Теоретические вопросы к экзамену 1. Графические схемы алгоритмов = блок-схемы алгоритмов. (Линейный алгоритм, развилка, цикл, вложенный
- 15. Теоретические вопросы к экзамену 19. Разделы памяти во время выполнения программы: статическая, автоматическая, динамическая, машинный код.
- 16. Ориентировочная структура экзамена Сделать все лаб работы Сдать все лаб работы Подготовиться к экзамену а) Выполнить
- 17. Уровни сложности на экзамене На «удовлетворительно» Можно сдать не все лабораторные работы (Пибд и ИСЭбд –
- 19. Скачать презентацию
Слайд 2Минимальный (обязательный) набор практических навыков
Умение нарисовать блок-схему алгоритма для линейных участков, любых
Минимальный (обязательный) набор практических навыков
Умение нарисовать блок-схему алгоритма для линейных участков, любых
Умение выполнять ручную трассировка алгоритма/программы – на листочке бумаги.
Умение создать новый проект в VS. Умение набрать текст программы в редакторе VS.
Умение собрать и запустить программу на выполнение в VS.
Умение ввести числовые данные с клавиатуры в консоли. Умение прочитать результат программы в консоли.
Умение трассировать программу в VS – линейные участки, развилки, циклы. Умение трассировать вызов функций, трассировать рекурсию. Просматривать локальные переменные, стек вызовов, любые выбранные выражения.
Умение создавать текстовые файлы вручную.
Умение читать программно числовые данные из текстовых файлов.
Умение создавать проект Windows.
Умение создавать картинки средствами Win API, состоящие из линий, прямоугольников и эллипсов.
Слайд 3Минимальный набор алгоритмов (выученных наизусть!)
Вычисление факториала.
Вычисление чисел Фибоначчи.
Ввод элементов массива
Вывод элементов массива
Поиск
Минимальный набор алгоритмов (выученных наизусть!)
Вычисление факториала.
Вычисление чисел Фибоначчи.
Ввод элементов массива
Вывод элементов массива
Поиск
Поиск среднего арифметического элементов массива
Обмен местами двух элементов массива
Функция strlen - смочь написать свою реализацию
Функция strcat - смочь написать свою реализацию
Функция strcpy - смочь написать свою реализацию
Слайд 4Пример экзаменационной задачи (на «хорошо»)
Общее задание
Ввести двумерный массив из файла. Количество
Пример экзаменационной задачи (на «хорошо»)
Общее задание
Ввести двумерный массив из файла. Количество
Каждый элемент – целое число в интервале значений -1000..+1000.
Количество строк (N) и столбцов (M) задано первой строке входного файла. Далее в N строках записаны по M числе.
Обработать массив согласно варианту.
Сохранить результат в формате, аналогичном входному
Вариант
Слайд 5Простое решение экзаменационной задачи
(другие варианты решения – см. Лекция 9)
Простое решение экзаменационной задачи
(другие варианты решения – см. Лекция 9)
Слайд 6Входной файл
Входной файл
Слайд 7Решение без функций (1)
#define _CRT_SECURE_NO_WARNINGS
#include
void main()
{
int a[10][10];
int n, m;
// Чтение из
Решение без функций (1)
#define _CRT_SECURE_NO_WARNINGS
#include
void main()
{
int a[10][10];
int n, m;
// Чтение из
FILE *fin = fopen("d:\\Temp\\in.txt", "rt");
if (fin == NULL) {
printf("File in3.txt is not found");
return;
}
fscanf(fin, "%d", &n);
fscanf(fin, "%d", &m);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(fin, "%d", &a[i][j]);
fclose(fin);
Слайд 8Решение без функций (2)
// вывод массива в консоль
for (int i = 0;
Решение без функций (2)
// вывод массива в консоль
for (int i = 0;
for (int j = 0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");
// поиск минимального
int min = a[0][0];
int iMin = 0;
int jMin = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] < min) {
min = a[i][j];
iMin = i;
jMin = j;
}
}
}
Слайд 9Решение без функций (3)
// поиск максимального
int max = a[0][0];
int iMax = 0;
int
Решение без функций (3)
// поиск максимального
int max = a[0][0];
int iMax = 0;
int
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] > max) {
max = a[i][j];
iMax = i;
jMax = j;
}
}
}
// перестановка столбцов с минимальным и максимальным элементами
for (int i = 0; i < n; i++) {
int tmp = a[i][jMin];
a[i][jMin] = a[i][jMax];
a[i][jMax] = tmp;
}
Слайд 10Решение без функций (4)
// вывод массива в консоль
for (int i = 0;
Решение без функций (4)
// вывод массива в консоль
for (int i = 0;
for (int j = 0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");
// Запись в выходной файл
FILE *fout = fopen("d:\\Temp\\out.txt", "wt");
if (fout == NULL) {
printf("File out.txt cannot be created");
return;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
fprintf(fout, "%5d ", a[i][j]);
fprintf(fout, "\n");
}
fclose(fout);
Слайд 11Решение без функций (5)
{
int x;
scanf("%d", &x);
}
}
Решение без функций (5)
{
int x;
scanf("%d", &x);
}
}
Слайд 12Пример экзаменационной задачи (на «отлично»)
Общее задание
Ввести двумерный массив из файла. Количество
Пример экзаменационной задачи (на «отлично»)
Общее задание
Ввести двумерный массив из файла. Количество
Каждый элемент – целое число в интервале значений -1000..+1000.
Количество строк (N) и столбцов (M) задано первой строке входного файла. Далее в N строках записаны по M числе.
Обработать массив согласно варианту.
Сохранить результат в формате, аналогичном входному.
Имейте в виду - во время выполнения программы количество используемых строк и столбцов может изменится. Предусмотрите в массиве столько строк и столбцов, чтобы программа корректно работала на любых корректных входных данных.
Нельзя использовать дополнительные массивы – в программе используется ровно один массив.
Слайд 13Пример экзаменационной задачи (на «отлично»)
Вариант
Пример экзаменационной задачи (на «отлично»)
Вариант
Слайд 14Теоретические вопросы к экзамену
1. Графические схемы алгоритмов = блок-схемы алгоритмов. (Линейный алгоритм,
Теоретические вопросы к экзамену
1. Графические схемы алгоритмов = блок-схемы алгоритмов. (Линейный алгоритм,
2. Идентификаторы (DlinnoeMnemonicheskoeImya1).
3. Стандартные типы данных (int).
4. sizeof(), диапазон значений типа (Пр: unsigned char – от 0 до 255).
5. Подключение библиотек (#include)
6. Объявление переменных (int a;).
7. Выражения (a+b*c).
8. Операторы. Приоритеты операторов (-b+sqrt(d)/2*a).
9. Развилка. Полная, усеченная, вложенная. (if (a10. Выбор (switch(day) { case Monday: printf(“Mn”);}).
11. Циклы. Циклы с предусловием и с постусловием (while (*str++);).
12. Циклы для обхода всех элементов. Цикл for (for( i=0; i
14. Структуры (struct Line {int x1, y1, x2, y2;}; struct Line *p; …p->x1 = 10; ).
15. Указатели (int *p; p = &a; *p = 10;). Указатель void *
16. Функции. (int f(int x) {}).
17. Область видимости переменных. Локальные и глобальные переменные (int x; void f() { int x;}).
18. Статические переменные (void f() { static int x = 0;}).
Слайд 15Теоретические вопросы к экзамену
19. Разделы памяти во время выполнения программы: статическая, автоматическая,
Теоретические вопросы к экзамену
19. Разделы памяти во время выполнения программы: статическая, автоматическая,
20. Рекурсия. Прямая и косвенная. Область применения. (void f() { f();})
21. Массивы. Работа с одномерными массивами. Работа с двумерными массивами. (int a[10];)
22. Динамическая память. Выделение и освобождение динамической памяти. (malloc, free).
23. Символы. ASCII. Функции обработки символов (if (isdigit(ch) {digit = ch – ‘0’;})
24. Обработка текста. Строки ASCIIZ. (char s[]= “abc”; int len = strlen(s);)
25. Ввод/вывод. Консоль. (scanf(“%d”, &a); printf(“%d”, a * a);)
26. Ввод/вывод. Текстовые файлы. HTML. (FILE * f = fopen(filename, “rt”);)
27. Создание многомодульных проектов.
28. Декартова система координат. Экранная система координат. Рисование линий средствами Win API.
29*. Реализация односвязных списков. (struct Item {Data data; Item * next;};)
30*. Реализация двусвязных списков. (struct Item {Data data; Item * next; Item * prev;};)
31*. Понятие «Двоичное дерево поиска». Реализация двоичного дерева поиска на Си. (struct NodeTree { int data; NodeTree * left; NodeTree * right; };)
32*. Вычислительная сложность алгоритма. Асимптотическая оценка сложности: O(1), O(log N), O(N), O(N2), … . Измерение времени работы программы.
*Вопросы помеченные “*” (с 29 по 32) являются обязательными для сдачи на оценку «отлично». Они исключены из списка вопросов на «хорошо» и «удовлетворительно»
Слайд 16Ориентировочная структура экзамена
Сделать все лаб работы
Сдать все лаб работы
Подготовиться к экзамену
а) Выполнить
Ориентировочная структура экзамена
Сделать все лаб работы
Сдать все лаб работы
Подготовиться к экзамену
а) Выполнить
б) выбрать уровень сложности, который вы готовы подтверждать на экзамене
в) Подготовить ответы на теоретические вопросы
* Посетить консультацию перед экзаменом – задать на ней любые вопросы по предмету и списку вопросов, получить ответы
Прийти на экзамен
Выбрать уровень сложности
Получить практическую задачу соответствующего уровня сложности
За ограниченное время - выполнить полученную задачу
Продемонстрировать работоспособность задачи на любых корректных входных данных
В случае необходимости – отладить и исправить код
По требованию преподавателя – нарисовать блок-схему для указанного фрагмента кода
По требованию преподавателя – продемонстрировать навыки трассировки как вручную так и в VS
Выбрать теоретические вопросы
Подготовить ответы письменно
В беседе с преподавателем показать знакомство с темами теоретических вопросов
В случае необходимости – ответить на дополнительные вопросы без подготовки
Получить оценку
Отметить успешную сдачу экзамена
Слайд 17Уровни сложности на экзамене
На «удовлетворительно»
Можно сдать не все лабораторные работы (Пибд и
Уровни сложности на экзамене
На «удовлетворительно»
Можно сдать не все лабораторные работы (Пибд и
Задача практическая (из списка Обязательных алгоритмов)
1 теоретический вопрос – при подготовке можно пользоваться бумажными носителями информации
Никаких дополнительных вопросов
На «хорошо»
Сделаны и сданы все лабораторные работы
Задача практическая
2 теоретических вопроса – при подготовке можно пользоваться бумажными носителями информации
дополнительные вопросы – 1-2
На «отлично»
Сделаны и сданы все лабораторные работы.
Оценка за аттестацию – не ниже «4» ИЛИ есть особые дополнительные заслуги (победитель олимпиады в течение семестра и т.п.)
Задача практическая
2 теоретических вопроса – при подготовке нельзя пользоваться ничем
дополнительные вопросы – 6+