Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_ukazanija C_1-8.docx
Скачиваний:
12
Добавлен:
20.04.2015
Размер:
378.52 Кб
Скачать

Блок-схема алгоритма вычисления составной функции

Блок-схема выбора функции

Контрольные вопросы к лабораторной работе № 2

  1. Как используются операторы логических операций (и, или, исключающее или) в условных выражениях?

  2. Начертите таблицы истинности логических операций.

  3. Укажите тип переменной оператора switch, по значению которой выполняется переключение.

  4. Какое действие может быть выполнено в операторе switchпо умолчанию?

  5. Какой синтаксис записи метки в операторе switch?

  6. Как использовать окно Watch?

  7. Как выполнить программу по шагам (Step overиTrace into)?

  8. Как средствами встроенного редактора производится копирование и вклейка фрагмента текста?

Тема №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), при каждом повторении этого цикла, т.е. внутри него будет выполняться три действия, объединенные в составном операторе:

  1. распечатка строки символов (сначала ACEGI, а потом и других),

  2. переход на следующую строку,

  3. вычисление значения первого символа в следующей строке;

  • в каждой строке необходимо организовать счет (переменная j) по символам (с 1-ого до 5-ого); при каждом повторении цикла будет выполняться три действия (опять нужен составной оператор):

  1. будет проверяться значение печатаемого символа (переменная C), и если окажется, что оно больше ‘I’, тогда переменной C присваивается значение ‘A’,

  2. значение переменной C выводится на экран монитора,

  3. переменной 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оператором декремента («минус-минус»), хотяС– переменная литерного типа.

Вторая программа (сокращенный вариант записи программы) также содержит особенности свойственные языку Си:

  1. переменные iиj- литерного типа, но потом будут использованы как целочисленные;

  2. в циклах 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;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]