Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Рабочая программа'
Рабочая программа по предмету «Литературное чтение» 1 класс создана на основе федерального компонента государственного стандарта начального общего об...полностью>>
'Образовательная программа'
- "Санитарно-эпидемиологическими требованиями к устройству, содержанию и организации режима работы в дошкольных организациях. СанПиН 2.4.1.2660-...полностью>>
'Исследование'
Защита состоится «19» декабря 2008 г. в 1500 на заседании диссертационного совета Д 212.285.05 при ГОУ ВПО «Уральский государственный технический уни...полностью>>
'Программа'
По отношению к подростку термин "трудновоспитуемость" означает невосприимчивость и сопротивляемость воспитуемого педагогическому воздействи...полностью>>

1. основы алгоритмизации

Главная > Документ
Сохрани ссылку в одной из сетей:

– вычитание и унарный минус;

+ сложение;

* умножение;

/ деление (при делении целых переменных остаток отбрасывается);

% деление по модулю (дает остаток от целочисленного деления);

++ увеличение на единицу (increment);

– – уменьшение на единицу (decrement).

Старшинство арифметических операций следующее:

++, – –

– (унарный минус)

*, /, %

+, –

Для изменения порядка операций могут использоваться круглые скобки.

Операции отношения и логические операции

Операциями отношения являются

=>, >, =<, <

Все они имеют одинаковое старшинство. Непосредственно за ними по уровню старшинства следуют операции равенства и неравенства:

==, !=,

которые тоже имеют одинаковое старшинство. Операции отношения по старшинству ниже арифметических операций, так что выражения типа i < lim-1 понимаются как i < (lim-1), как и предполагается.

Логические операции && (логическое умножение), || (логическое сложение) и ! (логическое отрицание) более интересны. Выражения, связанные такими операциями, вычисляются слева направо, причем их рассмотрение прекращается сразу же, как только становится ясно, будет ли результат истиной или ложью. Учет этих свойств очень существенен для написания правильно работающих программ. Рассмотрим, например, оператор цикла в считывающей строку функции getline.

for (i = 0; i < lim - 1 && (с = getchar()) != '\n' && c ! = EOF; ++i)

s[i] = c;

Перед считыванием очередного символа в массив s необходимо осуществить проверку трех условий: имеется ли еще место в массиве s, не является ли символ концом строки, не является ли символ концом файла. Наличие свободного места i < lim-1 должно проверяться первым, в случае невыполнения данного условия считывание следующего символа и проверка остальных условий производиться не будут.

Каждое условное выражение проверяется, истинно оно или ложно. В языке Си нет логического (boolean) типа. Поэтому результатом логического выражения является целочисленное арифметическое значение. В языке Си «истинно» – это не ненулевая величина, «ложно» – это нуль. Так, в приведенном примере при отсутствии места в массиве первое условное выражение будет равно нулю, следовательно логическое произведение трех условий также обратится в нуль независимо от выполнения остальных двух условий.

Операция условие ?:

Эта операция имеет вид:

выр1 ? выр2 : выр3

Вычисляется выражение выр1. Если оно имеет ненулевое значение, то вычисляется выр2. Результатом операции будет значение выр2.

Если значение выр1 равно нулю, то вычисляется выр3 и его значение будет результатом операции. В любом случае вычисляется только одно из выражений: выр2 или выр3. Например, эту операцию удобно применять для нахождения наибольшего из двух чисел x и y:

max = (x > y) ? x : y ;

Преобразование типов

В выражениях языка Си допустимо смешение переменных разного типа. Приведем правила, использующиеся для автоматического приведения типов при вычислении арифметического выражения.

1. Все переменные типа char и short int преобразуются в int, все переменные типа float преобразуются в double.

2. Для любой пары операндов: если один из операндов long double, то и другой преобразуется в long double; если один из операндов double, то и другой преобразуется в double; если один из операндов long, то и другой преобразуется в long; если один из операндов unsigned, то и другой преобразуется в unsigned.

3. В операторе присваивания конечный результат приводится к типу переменной в левой части оператора присваивания.

Тип результата вычисления выражения можно изменить, используя конструкцию «приведение», имеющую следующий вид:

(тип) выражение,

где «тип» – один из стандартных типов данных языка Си.

Например, если необходимо, чтобы результат деления переменной х типа int на 2 был типа float, записываем

(float) x/2;

2.6. Ввод и вывод данных

В Си/Си++ нет встроенных средств ввода и вывода – он осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках. Существует два основных способа: функции, унаследованные из Си, и объекты Си++.

Для ввода/вывода данных в стиле Си используются функции, которые описываются в библиотечном файле stdio.h.

1) printf (форматная строка, список аргументов);

Форматная строка – строка символов, заключенных в кавычки, которая показывает, как должны быть напечатаны аргументы. Например:

printf (“Значение числа Пи равно %f\n”, pi);

Форматная строка может содержать: символы, печатаемые текстуально; спецификации преобразования; управляющие символы.

Каждому аргументу соответствует своя спецификация преобразования:

%d, %i – десятичное целое число;

%f – число с плавающей точкой;

%e, %E – число с плавающей точкой в экспоненциальной форме;

%u – десятичное число в беззнаковой форме;

%c – символ;

%s – строка.

В форматную строку также могут входить управляющие символы:

\n – новая строка;

\t – табуляция;

\a – звуковой сигнал и др.

Между знаком % и форматом команды может стоять целое число, указывающее на наименьшее поле, отводимое для печати. Если строка или число больше этого поля, то они печатаются полностью, игнорируя ширину поля. Нуль, поставленный перед целым числом, указывает на необходимость заполнить неиспользованные места поля нулями. Вывод

printf (“%05d”, 15)

даст результат 00015.

Чтобы указать число десятичных знаков после вещественного числа, ставится точка и целое число, указывающее на их количество. Когда такой формат применяется к целому числу или строке, то число, стоящее после точки, указывает на максимальную ширину поля выдачи.

Выравнивание выдачи производится по правому краю поля. Если мы хотим выравнивать по левому знаку поля, то сразу за знаком % следует поставить знак минуса.

2) scanf (форматная строка, список аргументов);

В качестве аргументов используются адреса переменных, куда будут помещены введенные значения.

Например:

scanf(“ %d%f ”, &x,&y);

При использовании библиотеки классов Си++ используется библиотечный файл iostream.h, в котором определены стандартные потоки ввода данных с клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции: << – операция записи данных в поток; >> – операция чтения данных из потока.

Например:

#include <iostream.h>;

. . . . . . . . .

cout << “\nВведите количество элементов: ”;

cin >> n;

3. ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА СИ

Любое выражение, заканчивающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении этого выражения. Частным случаем выражения является пустой оператор ;

3.1. Базовые конструкции структурного программирования

В теории программирования доказано, что для составления программ любой сложности достаточно использовать три структуры: линейную, разветвляющуюся и циклическую. Эти структуры называются базовыми конструкциями структурного программирования.

Линейной называется конструкция, представляющая собой последовательное соединение двух или более операторов.

Ветвление задает выполнение одного из двух операторов, в зависимости от выполнения какого-либо условия.

Цикл задает многократное выполнение оператора.

Целью использования базовых конструкций является получение программы простой структуры. Такую программу легко читать, отлаживать и при необходимости вносить в нее изменения. Операторы управления работой программы называют управляющими конструкциями программы. К ним относят:

- составные операторы;

- операторы выбора;

- операторы циклов;

- операторы перехода.

3.2. Составные операторы

К составным операторам относят собственно составные операторы и блоки. В обоих случаях это последовательность операторов, заключенная в фигурные скобки. Блок отличается от составного оператора наличием определений в теле блока.

Примеры:

{

n++;

summa+=n;

} //это составной оператор

{

int n = 0;

n++;

summa+=n;

} //это блок

3.3. Операторы выбора

Операторы выбора – это условный оператор и переключатель.

1. Условный оператор имеет полную и сокращенную форму.

if (выражение-условие) оператор; //сокращенная форма

В качестве выражения-условия могут использоваться арифметическое выражение, отношение и логическое выражение. Если значение выражения-условия отлично от нуля (т. е. истинно), то выполняется оператор.

Например:

if (x<y&&x<z) min = x;

if ( выражение-условие) оператор1; //полная форма

else оператор2;

Если значение выражения-условия отлично от нуля, то выполняется оператор1, при нулевом значении выражения-условия выполняется оператор2.

Например:

if (d>=0)

{

x1 = (-b-sqrt(d))/(2*a);

x2 = (-b+sqrt(d))/(2*a);

cout<< “\nx1=”<<x1<<“x2=”<<x2;

}

else cout<<“\nРешения нет”;

2. Переключатель определяет множественный выбор. Его основная форма имеет следующий вид:

switch (выражение)

{

case константа1:

операторы1;

break;

case константа2:

операторы2;

break;

. . .

default: операторы;

}

При выполнении оператора switch, вычисляется выражение, записанное после switch, оно должно быть целочисленным. Полученное значение последовательно сравнивается с константами, которые записаны следом за case. При первом же совпадении выполняются операторы, помеченные данной меткой. Если выполненные операторы не содержат оператора перехода, то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель. Если значение выражения, записанного после switch, не совпало ни с одной константой, то выполняются операторы, которые следуют за меткой default. Метка default может отсутствовать.

Когда после последовательности операторов встречается ключевое слово break, то его выполнение приводит к выходу из оператора switch и переходу к следующему оператору программы.

Пример:

#include <iostream.h>

void main(void)

{

int i;

cout<<"\nEnter the number";

cin>>i;

switch(i)

{

case 1:cout<<"\nthe number is one";

case 2:cout<<"\n2*2 = "<<i*i;

case 3: cout<<"\n3*3 = "<<i*i; break;

case 4: cout<<"\n"<<i<<" is very beautiful!";

default: cout<<"\nThe end of work";

}

}

Результаты работы программы:

1. При вводе 1 будет выведено:

The number is one

2*2 = 1

3*3 = 1

2. При вводе 2 будет выведено:

2*2 = 4

3*3 = 4

3. При вводе 3 будет выведено:

3*3 = 9

4. При вводе 4 будет выведено:

4 is very beautiful!

The end of work

5. При вводе всех остальных чисел будет выведено:

The end of work

3.4. Операторы циклов

Циклы необходимы, когда надо повторить некоторые действия несколько раз, как правило, пока выполняется некоторое условие.

Группа действий, повторяющихся в цикле, называется его телом. Однократное выполнение цикла называется его шагом.

В языке Си известно три вида оператора цикла: while, do-while и for.

1. Цикл с предусловием:

while (условие)

{тело цикла;}

Тело цикла выполняется, пока условие истинно. Когда оно становится ложным, цикл завершается и выполняется следующий оператор программы.

Пример:

while (a!=0)

{

cin>>a;

s+=a;

}

2. Цикл с постусловием:

do

{тело цикла;}

while (условие);

Тело цикла выполняется, пока условие истинно.

Пример:

do

{

cin>>a;

s+=a;

}

while(a!=0);

3. Цикл с параметром.

В общем виде имеет следующий вид:

for (выражение1; выражение2; выражение3)

{тело цикла;}

Его основная форма:

for (инициализация; условие; изменение)

{тело цикла;}

В простейшей форме инициализация используется для присвоения начального значения параметру цикла. Условие определяет, когда цикл должен быть завершен. Как только оно становится ложным, начинает выполняться следующий за циклом for оператор. Изменение параметра обычно используется каждый раз при повторении цикла. Любое выражение может отсутствовать, но разделяющие их « ; » должны быть обязательно.

Примеры использования цикла с параметром.

1) Уменьшение шага на 1:

for (n = 10; n>0; n--)

{тело цикла;}

2) Изменение шага на величину, отличную от 1:

for (n = 2; n>60; n+=13)

{тело цикла;}

3) Проверка сложного условия:

for (num = 1; num*num*num<216; num++)

{тело цикла;}

4) Изменение шага может осуществляться не только с помощью сложения или вычитания:

for (d = 100.0; d<150.0; d*=1.1)

{тело цикла;}

for (x=1; y<=75; y=5*(x++)+10)

{тело цикла;}

5) Можно использовать несколько инициализирующих или корректирующих выражений:

for (x=1, y=0; x<10; x++, y+=x)

{тело цикла;}

3.5. Операторы перехода

Операторы перехода выполняют безусловную передачу управления.

1) break – оператор прерывания блока, обычно используется для принудительного выхода из цикла.

{

< операторы>

if (<выражение_условие>) break;

<операторы>

}

Т.е. оператор break целесообразно использовать, когда условие продолжения итераций проверяется в середине цикла.

Пример:

// ищет сумму чисел, вводимых с клавиатуры, до тех пор, пока не

// будет введено 100 чисел или 0

for(s=0, i=1; i<100;i++)

{

cin>>x;

if( x==0) break; // если ввели 0, то суммирование заканчивается

s+=x;

}

2) continue – переход к следующей итерации цикла. Он используется, когда тело цикла содержит ветвления.

Пример:

// ищет количество и сумму положительных чисел

for( k=0, s=0, x=1; x!=0;)

{

cin>>x;

if (x<=0) continue;

k++; s+=x;

}

3) Оператор goto

Оператор goto имеет формат

goto метка;

В теле той же функции должна присутствовать конструкция

метка: оператор;

Метка – это обычный идентификатор, областью видимости которого является функция. Оператор goto передает управления оператору, стоящему после метки. Использование оператора goto оправдано, если необходимо выполнить переход из нескольких вложенных циклов или переключателей вниз по тексту программы или перейти в одно место функции после выполнения различных действий.

Применение goto нарушает принципы структурного и модульного программирования, по которым все блоки, из которых состоит программа, должны иметь только один вход и только один выход.

Нельзя передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию, на операторы, которые стоят после инициализации.

Пример:

int k;

goto m;

. . .

{

int a=3, b=4;

k=a+b;

m: int c=k+1;

. . .

}

В этом примере при переходе на метку m не будет выполняться инициализация переменных a, b и k.

4) Оператор return – оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

return [выражение];

Лабораторная работа 1.

Условный оператор IF и операторы цикла

Вычислить множество значений y, где x меняется с заданным шагом в заданном диапазоне. Сделать три версии программы, используя все операторы цикла.

1. Шаг: 1. Диапазон [-20, 20]

2. Шаг: 5. Диапазон [-30, 30]

3. Шаг: 20. Диапазон [-40, 40]

4. Шаг: 1. Диапазон [-10, 10]

5. Шаг: 5. Диапазон [-20, 20]

6. Шаг: 6. Диапазон [-30, 30]

7. Шаг: 10. Диапазон [-40, 40]

8. Шаг: 8. Диапазон [-50, 20]

Пример

Шаг: 10. Диапазон [-20, 60]

Цикл FOR:

# include <iostream.h>

# include <conio.h>

void main(void)

{const a=-20, b=60, c=10;

float x, y;

clrscr();

for (x=a; x<=b; x+=c)

{

if (x<2) y=30+2*x;

else if (x>=50) y=x+6;

else y=6-2*x;

cout<<"x="<<x<<": y="<<y<<"\n";

}

getche();

}

Цикл WHILE:

# include <iostream.h>

# include <conio.h>

void main(void)

{const a=-20, b=60, c=10;

float x=a, y;

clrscr();

while (x<=b)

{

if (x<2) y=30+2*x;

else if (x>=50) y=x+6;

else y=6-2*x;

cout<<"x="<<x<<": y="<<y<<"\n";

x+=c;

}

getche();

}

Цикл DO-WHILE:

# include <iostream.h>

# include <conio.h>

void main(void)

{const a=-20, b=60, c=10;

float x=a, y;

clrscr();

do

{

if (x<2) y=30+2*x;

else if (x>=50) y=x+6;

else y=6-2*x;

cout<<"x="<<x<<": y="<<y<<"\n";

x+=c;

}

while (x<=b);

getche();

}



Скачать документ

Похожие документы:

  1. Основы алгоритмизации

    Документ
    Исполнитель - это устройство управления, которое выполняет алгоритм. Возможности любого исполнителя ограничены. Он может выполнять только заданный набор команд, называемых допустимыми действиями ис­полнителя или системой команд исполнителя.
  2. Основы алгоритмизации и программирования (11 ч)

    Документ
    Простые и составные условия. Основные алгоритмические конструкции: ветвление, повторение. Запись основных алгоритмических конструкций на языке программирования.
  3. «Основы алгоритмизации и объектно-ориентированного программирования на языке Gambas»

    Тезисы
    Тема «Алгоритмизация и программирование» начинается на всех ступенях средней школы, но на разном уровне. В начальной школе происходит знакомство на интуитивном уровне с понятиями алгоритма, алгоритмических конструкций, основ алгебры логики.
  4. Рабочая программа дисциплины Программирование и основы алгоритмизации (Наименование дисциплины) (2)

    Рабочая программа
    Целью дисциплины «Программирование и основы алгоритмизации» является формирование у студентов знаний об основных принципах алгоритмизации и теории алгоритмов, программе и программировании, а также формирование практических навыков
  5. Методические указания к лабораторной работе по курсу «Информатика» Основы алгоритмизации и программирования на языке Pascal

    Методические указания
    В соответствующую графу записать математическое выражение на языке Pascal и нажать ОК. Если выражение введено не верно, то на экране появится соответствующая запись.

Другие похожие документы..