- •«Утверждаю»
- •Учебно-методический комплекс
- •Астана 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. Алгоритмизация графических построений.
- •Варианты заданий:
- •Сведения
- •Перечень экзаменационных вопросов по пройденному курсу
- •Глоссарий
Тема 2. Управляющие структуры. Выбор вариантов. Структура выбора If, If – Else, логические операции, операция условия, множественный выбор.
Язык Си предоставляет три типа структур выбора. В структуре выбора if некоторое действие либо выполняется (выбирается), если условие истинно, либо пропускается, если это условие ложно. В структуре выбора if/else некоторое действие выполняется, если условие истинно, и выполняется другое действие, если это условие ложно. В структуре выбора switch выполняется одно из набора действий в зависимости от значения некоторого выражения.
Структура if называется структурой с единичным выбором, поскольку в ней выбирается или игнорируется одно действие. Структура if/else называется структурой с двойным выбором, поскольку в ней выбор происходит между двумя альтернативными действиями. Структура switch называется структурой с множественным выбором, поскольку в ней выбор происходит из нескольких различных действиями.
Общий вид структуры выбора if:
if(выражение) оператор1;
Общий вид структуры выбора if/else:
if(выражение) оператор1;
elseоператор2;
Если выражение истинно (отлично от нуля), то выполняется оператор 1, в противном случае оператор 2.
В языке Си предусмотрена условная операция (?:), которая тесно связана со структуройif/else. Для нее необходимо три операнда. Операнды вместе с условной операцией образуют условное выражение. Первый операнд является условием, второй операнд значением для всего условного выражения, если условие истинно, и третий операнд значением для всего условного выражения, если условие ложно. Например,
x>y ? printf(“max=%d\n”, x) : printf(“max=%d\n”, y);
Вложенные структуры if/elseслужат для проверки составных условий, при этом одни структурыif/elseпомещаются внутри других структурif/else.
Приведем следующую форму записи:
if(выраж. 1)
оператор 1;
elseif(выраж. 2)
оператор 2;
else
оператор 3
Если выражение 1 истинно, выполняется оператор 1. Если выражение 1 ложно, но выражение 2 истинно, выполняется оператор 2. В случае, когда оба выражения ложны, выполняется оператор 3.
Логические операции. При объединении двух или более условных выражений используются логические операции. В языке Си имеются три логические операции: & & (и), !! (или), ! (не).
1. fl1 &&fl2 истинно в том и только в том случае, когда оба выраженияfl1 илиfl2 истинны.
2. fl1 ||fl2 истинно в том и только в том случае, когда оба выраженияfl1 илиfl2 истинно или оба истинны.
3. !fl1 истинно, если выражениеfl1 ложно, и наоборот.
Пример: 15>12 && 8>10 - ложно (истинно таким образом одно подвыражение)
15>12 | | 8>10 – истинно (по крайней мере одно подвыражение истинно)
! (8>10) истинно
Операция ! имеет очень высокий приоритет, только круглые скобки имеют более высокий приоритет. Приоритет операции && выше, чем операции ||, а обе эти операции имеют более низкий приоритет, чем операция присваивания.
При использовании операции && и || необходимо отметить следующее: выполнение этих операций прекращается, как только становится ясно, будет ли результат иметь значение истина или ложь. Предположим, что имеется выражение вида: fl1 &&fl2.
Если fl1 – ложь, значит и все выражение ложь, таким образом,fl2 не будет вычисляться.
Аналогично, если мы имеем выражение вида fl1 ||fl2,
То fl2 не будет вычисляться, еслиfl1 – верно.
В следующей программе показан пример использования структуры выбора if/elseс двойным выбором.
// Вычисление стоимости покупки с учетом скидки
#include <stdio.h>
#include <conio.h>
void main()
{
float sum; /* сумма покупки */
printf(“\nВычисление стоимости покупки с учетом ”);
printf(“скидки\n”);
printf(“Введите стоимость покупки ->”);
scanf(“%f”, &sum);
if(sum<1000)printf(“Скидка не предоставляется.\n”);
else{printf(“Вам предоставляется скидка ”);
if (sum>3000) { printf(“5%\n”);
sum = 0.95 * sum; }
else { printf(“3%\n”);
sum = 0.97 * sum; };
printf(“Сумма с учетом скидки %.2f тг\n”, sum); }
printf(“\nДля завершения нажмите <Enter>”);
getch(); }
Результат программы:
Вычисление стоимости покупки с учетом скидки
Введите стоимость покупки -> 2250
Вам предоставляется скидка 3%.
Стоимость покупки с учетом скидки: 2182.50 тг.
Оператор выбора switch (переключатель)
Если в программе необходимо произвести выбор одного из нескольких вариантов используется оператор выбора switch.
Общий вид оператора switch:
switch(выражение)
{
caseметка 1:
операторы;
caseметка 2:
операторы;
---------------------------------
default:
операторы;
}
Выражения и метки должны иметь значения целого типа (включая тип char); метки должны быть константами или константными выражениями. Вначале вычисляется выражение в скобках, затем происходит сравнение вычисленного значения выражения с каждым значением метки. Если они совпадают, начинается выполнение операторов данной метки, которое продолжается либо до конца оператораswitch. Операторbreakиспользуется для выхода изswitchи осуществляется переход к следующему за ним оператору. Если значения выражения не совпадает ни с одной из меток, но в оператореswitchсуществует меткаdefault, то будут выполняться операторы этой метки. Если меткиdefaultнет, происходит переход к оператору, расположенному за операторомswitch.
В операторе switchнельзя использовать вещественные типы данных, строки и других структуры данных, но разрешает использовать элементы структур данных совместимых с целыми значениями.
main ( )
{char ch;
while ((ch=getchar ( ))!='#'
{ switch (ch){
case f:
case 'F': do_file_menu; break;
case 'r':
case 'R': run_program ( ); break;
case 'c':
case 'C':do_compile ( ); break;
default: Ex ( ); break; }
printf(“Введите букву или #”); }
Основная литература: 1осн[94-101],2осн[168-209],3осн[53-57]
Дополнительная литература:10доп[108-115]
Контрольные вопросы:
1. Назовите логическую операцию самого высокого приоритета?
2. Какой оператор используется для выбора одного варианта из нескольких?
3. В каком случае используется операторы метки default?
4. Какие структуры используются для проверки составных условий?
5. Какой тип данных используются для выражений и меток в операторе выбора switch?