Лекции по увод в програмирането


октомври – семинарни занятия



страница6/16
Дата25.07.2016
Размер0.96 Mb.
#5224
ТипЛекции
1   2   3   4   5   6   7   8   9   ...   16

24 октомврисеминарни занятия

Илюстрация на форматните спецификации за дробни и цели числа:


#include

void main ()

{ int i;

long lng;

float flt;

double dbl;

printf (“Въведете i: “);

scanf (“%d”, &i);

printf (“Въведете lng: “);

scanf (“%ld”, &lng);

printf (“Въведете flt: “);

scanf (“%f”, &flt);

printf (“Въведете dbl: “);

scanf (“%lf”, &dbl);

}
Адресът на една променлива е адресът на полето в оперативната памет, където се намира първият байт от променливата;
Изчисляване на y = (1 + x + x2/2!)(1 + x3/3! + x5/5!)
#include

void main ()

{ int x, y;

printf (“Въведете x: “);

scanf (“%d”, &x);

y = (1 + x + x*x/2)*(1 + x*x*x/6 + x*x*x*x*x/120);

printf (“y = %d\n”, y);

}
Oт голямо значение в горната програма е типа на x и y; щом и двете променливи са от тип int, тогава всички аритметични операции са целочислени (връщат цели числа); например при x = 1 горната програма извежда y = 2; ако направим x променлива от float, тогава аритметичните операции връщат дробни числа, но тъй като y все още е int, резултатът ще е цялата част на израза; например при x = 1, програмата oтново ще изведе y = 2, но стойността на израза е 2.9375


Функция pow (x, n) – приема реални аргументи (x0) и връща като резултат x на степен n; горната програма може да се напише с функция pow;

24 октомври

suma = h.norma, h40; 40.norma + 1,5.(h-40).norma, h>40


#include

void main ()

{ int cod;

float h, norma, suma;

printf (“Въведете cod, h, norma: “);

scanf (“%d %f %f”,&cod,&h,&norma);

suma = (h<=40) ? (h*norma) : (40*norma + 1.5*(h-40)*norma);

printf (“cod = %6d”, cod);

printf (“suma = %10.2f\n”, suma);

}
%[n][.m]fs – задаване на форматна спецификация; променливата се изписва в поле от най-малко n символа (подравнена отдясно) и ако е дробно число – с точност m цифри; форматната спецификация е fs


Условен оператор


Синтаксис на пълен вариант:

i
Край

Начало

false

true

Е

S1

S2
f (E) S1 else S2

E – израз; S1 и S2 – оператори

Блок-схема:
Синтаксис на съкратен вариант:

if (E) S


E – израз; S – оператор
Б
Край

Начало

false

true

Е

S
лок-схема:

В последната програма можем да заменим операцията за условен израз с условния оператор: if (h<=40) suma = h*norma;

else suma = 40*norma + 1.5*(h-40)*norma;
Операцията за условен израз е по-ефективна от условния оператор и нейната употреба е за предпочитане в случай, че има възможност за избор;
Важно: Принципът за поставяне на “;” в C е различен от този в Pascal; в C “;” се поставя в края на всеки оператор
Съставен оператор – няколко оператора заградени с фигурни скоби; при условния оператор се използва, когато трябва да се изпълнят повече от един оператори. Пример:
float x, y, max;

if (x>y) { max = x; x--; }

else { max=y; --y; }
if (E1) if (E2) S1 else S2
Този израз допуска две различни тълкувания:


    • ако съпоставим else на втория if, вторият if е в пълна форма, а първия е в кратка форма; този начин е възприет в C; текста на програмата се обработва от ляво надясно и когато се попадне на else се търси първият if, който е наляво от този else

    • ако съпоставим този else на първия if, вторият if е в кратка форма; изразът написан в такъв формат няма да се изпълни по този начин, освен ако не заградим във фигурни скоби вторият if - if (E1) { if (E2) S1 } else S2 - тогава компилатора ще свърже else с първия if, тъй като вторият е част от съставен оператор

Добре е да се избягват сложните конструкции; опростяването на програмата повишава нейната ефективност; препоръчва се условният оператор да се използва в следния вид (ако алгоритъмът го позволява):

if (E1) S1

else if (E2) S2

else if (E3) S3

else if (En) Sn



[else Sn+1]
при условие, че Si не са условни оператори за всяко i; този условен оператор работи по следния начин: ако някое Еi е изпълнено, но Е1, Е2, ..., Еi-1 не са изпълнени тогава се изпълнява Si; ако никое Ei не е изпълнено, тогава ако последният ред присъства се изпълнява Sn+1, в противен случай нищо не се изпълнява
Пример за условен оператор с по-сложен вид на условието:
if (r=getchar())!=’Y’ && r!=’y’) оператор;
getchar е функция, която чете символ; в това условие съществено е, че r присвоява стойност в първия операнд на логическото “и”; трите операции, които изискват изпълнението да се започне от първи операнд са операция за условен израз, логическо “и” (&&) и логическо “или” (||). При това положение трябва да се внимава с комутативните операции.




Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   16




©obuch.info 2024
отнасят до администрацията

    Начална страница