- •Министерство образования и науки Российской федерации
- •Пример выполнения задания по теме № 1
- •Формулы для решения задач
- •Варианты заданий
- •Контрольные вопросы по теме № 1
- •Тема №2. Ветвление программы (использование операторов ветвления и переключателяswitch)
- •Варианты заданий
- •Пример выполнения лабораторного задания № 2
- •Блок-схема алгоритма вычисления составной функции
- •Контрольные вопросы к лабораторной работе № 2
- •Тема №3. Циклы, символьный (литерный) тип данных
- •Примеры выполнения задания по теме №3.
- •Блок-схема к программе
- •Варианты заданий
- •Контрольные вопросы к теме № 3
- •Тема №4. Функции в языке Си
- •Контрольные вопросы по теме №4
- •Тема №5. Обработка одномерных массивов Задание:
- •Краткая теоретическая справка и рекомендации по выполнению
- •Примеры функций для работы с одномерными массивами
- •Варианты заданий
- •Контрольные вопросы по теме № 5
- •Тема №6. Строки и использование библиотечных функций для их обработки
- •Краткая теоретическая справка и рекомендации по выполнению
- •Пример выполнения лабораторного задания № 6
- •Варианты заданий
- •Контрольные вопросы к теме № 6
- •Тема №7. Двумерные массивы. Файловый (бинарный) ввод-вывод Задание:
- •Краткая теоретическая справка
- •Примеры функций для работы с двумерным массивом
- •Тема №8. Односвязные списки. Файловый (текстовый) ввод-вывод Задание:
- •Краткая теоретическая справка и пример решения задачи
- •Оглавление
Блок-схема алгоритма вычисления составной функции
Блок-схема выбора функции
Контрольные вопросы к лабораторной работе № 2
Как используются операторы логических операций (и, или, исключающее или) в условных выражениях?
Начертите таблицы истинности логических операций.
Укажите тип переменной оператора switch, по значению которой выполняется переключение.
Какое действие может быть выполнено в операторе switchпо умолчанию?
Какой синтаксис записи метки в операторе switch?
Как использовать окно Watch?
Как выполнить программу по шагам (Step overиTrace into)?
Как средствами встроенного редактора производится копирование и вклейка фрагмента текста?
Тема №3. Циклы, символьный (литерный) тип данных
Задания: 1). Написать программу при помощи оператора цикла for (без применения массивов и прямой адресации курсора) для распечатки на экране монитора указанного в варианте набора символов.
2). Написать программу при помощи оператора цикла while .
3). Написать программу при помощи оператора цикла do…while .
4). Начертить блок-схемы к программам.
При выполнении заданий в первую очередь обратите внимание на то, что в языке Си литерный тип данных – это число (один байт). Поэтому с ним можно выполнять все операции, предусмотренные для работы с числами.
Второе – цикл for. Формат использования цикла for имеет следующий вид:
for ( [действие до цикла]; [предусловие цикла]; [последнее действие]).
Любое действие в прямоугольных скобках может отсутствовать. Предусловие (условие выполнения цикла) – это любое действие, результат которого будет интерпретироваться как int. Если результат равен нулю, то условие ложно, в противном случае истинно.
Третье, на что надо обратить внимание – цикл do…while будет повторяться, если условие в конструкции while – истинно.
Примеры выполнения задания по теме №3.
Распечатать на экране монитора таблицу символов, используя только циклы (без использования массивов и строк)
A |
C |
E |
G |
I |
I |
A |
C |
E |
G |
G |
I |
A |
C |
E |
E |
G |
I |
A |
C |
C |
E |
G |
I |
A |
Используя замеченные закономерности можно предложить следующий алгоритм решения:
надо организовать счет по строкам от первой до пятой (цикл по счетчику i), при каждом повторении этого цикла, т.е. внутри него будет выполняться три действия, объединенные в составном операторе:
распечатка строки символов (сначала ACEGI, а потом и других),
переход на следующую строку,
вычисление значения первого символа в следующей строке;
в каждой строке необходимо организовать счет (переменная j) по символам (с 1-ого до 5-ого); при каждом повторении цикла будет выполняться три действия (опять нужен составной оператор):
будет проверяться значение печатаемого символа (переменная C), и если окажется, что оно больше ‘I’, тогда переменной C присваивается значение ‘A’,
значение переменной C выводится на экран монитора,
переменной C присваивается новое значение (следующее за следующим, т.е. символы следуют через один).
Как при описании алгоритма, так и по тексту программы, действия внешнего цикла обозначены римскими цифрами, а внутреннего – арабскими. Решение записано в двух вариантах: подробном и сокращенном для демонстрации возможностей цикла for.
#include <conio.h>
#include <stdio.h>
int main() // ПОДРОБНЫЙ ВАРИАНТ ЗАПИСИ ПРОГРАММЫ
{
int i,j; /* Счетчики */
char c='A'; /* Переменная для хранения значения первого символа
в строке */
// Цикл по строкам
for (i=1; i<=5; i++)
{ /* Начало действий внутри цикла по строкам */
/**** I) Печать строки символов */
for (j=1; j<=5; j++)
{ /* Начало тела цикла печати строки */
if (c>'I') c='A'; /*** 1) Проверка значения символа */
printf ("%2c",c); /*** 2) Вывод символа на экран */
c++; c++; /*** 3) Новое значение символа */
} /* Конец тела цикла печати строки */
/**** II) Переход на следующую строку */
printf ("\n");
/**** III) Подготовка первого символа следующей строки */
c--;
c--;
} /* Конец действий внутри цикла по строкам */
getch();
return 0;
}
После подробно описанного алгоритма работы, особенностей, на которые можно было бы обратить внимание в первой программе, совсем немного. Это инициализация переменной Cво время объявления и изменение значения литерной переменнойCоператором декремента («минус-минус»), хотяС– переменная литерного типа.
Вторая программа (сокращенный вариант записи программы) также содержит особенности свойственные языку Си:
переменные iиj- литерного типа, но потом будут использованы как целочисленные;
в циклах forиспользован оператор запятая, позволяющий сделать программу более компактной.
Несмотря на перечисленные особенности, нетрудно заметить, что алгоритм решения задачи и в первом и во втором случае один и тот же.
#include <conio.h>
#include <stdio.h>
int main() // СОКРАЩЕННЫЙ ВАРИАНТ ЗАПИСИ ПРОГРАММЫ
{
char i, j, c;
for (i=1,c='A'; i<=5; printf ("\n"),c-=2,i++)
{
for (j=1; j<=5; c+=2,j++)
{
if (c>'I') c='A';
printf ("%2c",c);
}
}
return 0;
}