Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП для экзаменов.docx
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
288.26 Кб
Скачать

6.Берілгендерді енгізу операторлары. Мысал

6.scanf() енгізу функциясы жоғарыда қарастырылған түрлендіру спецификация­сының көбін пайдаланады.

scanf (<формат тіркесі>,<аргументтер тізімі>);

Аргументтер ретінде адрес нұсқауыштары пайдаланылады. Мысалы:

scanf("%d%f", &x,&y);

Кейбір айырмашылықтарын атап өтейік.

1)      %е және %f спецификациялары енгізу кезінде бірдей болып табы­­лады;

2)      short типті бүтін санды енгізу кезінде %h спецификациясы қолда­ны­лады.

ЕСКЕРТУ. Айнымалы адресін беру үшін адрестерді жазғанда, айныма­лы адресін анықтау үшін & символы қолданылады. Ал тіркестік (жол­дық) айнымалыны енгізгенде, & символы жазылмайды.

Енді санның дәрежесін есептейтін программа құрайық.

/* Санды дәрежелеу */

#include <conio.h>

#include <stdio.h>

#include <math.h>

main()

{

float x,y,s;

clrscr();

printf("\n х-ті және оның дәрежесін-у енгізіңіз:\n");

scanf("%f%f",&x,&y);

s=pow(x,y);

printf("\nНәтижесі s=%9.2f",s);

}

7.Float және double жылжымалы нүктелі нақты сандар типтері

Нақты сандар компьютерде 2 бөліктен – дәреже мен  мантиссадан тұра­ды. IBM-РС компьютерлерінде float типінің ені – 4 байт, оның бір раз­ряды – сан таңбасы, 7 разряды – дәреже, 24 бит3 – мантисса. 

Егер double типі аты алдында long сөзі тұрса, онда оған 10  байт орын беріледі.

Программалау практикасында көбінесе жылжымалы нүктелі нақ­ты (аралас) сандар пайдаланылады.

Double типті сандар екі еселенген дәлдікпен 64 бит арқылы өр­нектеледі. Double типінің ені – 8 байт, 1 бит – таңба, 11 бит – дәреже және  52 разряд – мантисса. Мантисса ені – санның дәлдігін, ал дәреже ені – оның диапазонын анықтайды.

Кейбір ЭЕМ-дерде мантисса үшін қосымша 32 бит беріледі де, санның дәлдігі артады. Ал кейде санның таңбасы мен дәрежесі үшін 32 бит беріліп, ол санның кескінделу диапазонын арттырады.

Мысалдар:

float s1, s2;

float sum=1.5;

8.Файлға мәлімет жазу және оқу

Файлға мәлімет жазу/оқу үшін жалпы енгізу/шығару функция­лары тәріздес бірсыпыра функциялар пайдаланылады:

fprintf(), fscanf(), fputs(), fgets(), getc(), putc(), fgetc(), fputc().

Бұлардың ішіндегі getc()/fgetc(), putc()/fputc() функ­циялары әрекеттері ұқсас, айырмашылықтары тек getc() пен putc() макроанықтаулар да, aл fgetc() және fputc() – нағыз функциялар болып табылады.

Барлық файлдық функциялар прототиптері <stdio.h> файлында орналасқан.

Файлдардан мәлімет жазу/оқу әрекеттерін үш топқа бөлуге болады:

- символдарды енгізу/шығару операциялары;

- сөз тіркестері жолдарын енгізу/шығару операциялары;

- блок бойынша енгізу/шығару операциялары.

Символдарды енгізу/шығару операцияларында файлдан бір ғана символ оқылады немесе оған бір символ жазылады. Мысалы:

fgetc(FILE *fp);                ашылған файлдан символ оқиды.

fputc(int ch,FILE *fp);     ch символы кодын файлға жазады.

Сөз тіркестері жолдарын енгізу/шығару операцияларында бір мәлімет алмасуы кезінде файлдан сөз тіркесі жолдары оқылады немесе оған сөз тіркесі жазылады. Мысалы:

gets(char *S);  файлдан мәлімет байттарын '\n' символы кездес­кенше біртіндеп оқиды да, оларды  S тіркесіне орналастырып, '\n' сим­волын ‘\0’ (нөл-терминатор) белгісіне айналдырады.

fgets(char *S,int m,FILE *fp);    fp түрінде сипаттал­ған файл­­дан байттарды оқып, оларды '\n' символы кездескенше немесе m байт оқылып біткенше S тіркесі мәні ретінде жазып шығады.

Блок бойынша енгізу/шығару операцияларында мәліметтер алмасу олардың бір блогын толық қамтиды. Мысалы:

   fread (void *ptv, int size, int n, FILE *fp); 

мұнда fp файлынан әрқайсысы size байттан тұратын мәліметтің  n блогы ptv нұсқауышы көрсетіп тұрған жады аймағына оқылады (оқы­ла­тын блок үшін алдын ала орын дайындап қою қажет).

fwrite (void *ptv, int size, int n, FILE *fp);

мұнда ptv нұсқауышы көрсетіп тұрған жады аймағында орналасқан  әрқайсысы size байттан тұратын мәліметтің  n блогы ашық тұрған fp файлына жазылады.

fprintf және fscanf функцияларын пайдалану

fprintf - файлға информация жазу үшін, ал  fscanf – файлдан информация оқу үшін қолданылады. Олардың жалпы жазылу түрі:

fprintf(fp, “спецификация шаблоны”,p);

мұндағы p-өрнек;

fscanf(fp, “спецификация шаблоны”,адрес);

Мысал: Бүтін сандар тізбегін n=5 пернелерден енгізіп, оларды файлға жазу керек болсын.

// файл ашып, оған 5 сан жазу

#include <stdio.h>

#include <conio.h>

main()

{ int k,i,n=5;

  char fname[]="a:\\num.txt\0";

  clrscr();

  FILE *fp;

  fp=fopen(fname,"w");

  clrscr();

  printf("Енгізілген сандар %s файлына жазылады\n",

          fname);

  puts("Әр сан енгізілген соң, Enter басыңыз\n");

  for(i=0; i<n;i++)

  {scanf("%i",&k);

   fprintf(fp,"%d ",k);

  }

  fclose(fp);

  printf("Енгізілген сандар %s файлына жазылды\n",

          fname);

  getch();

}

 

Нәтижесі:

Енгізілген сандар a:\num.txt файлына жазылады

Әр сан енгізілген соң, Enter басыңыз

1

2

3

4

5

Енгізілген сандар a:\num.txt файлына жазылды

Файлдағы мәлімет: 1 2 3 4 5

 

fgets және fputs функцияларын пайдалану

Сөз тіркестерімен жұмыс істегенде fgets және fputs функция­лары қолданылады:

fgets функциясының жалпы жазылу түрі:

fgets(нұсқауыш,MAXLEN,fp);

нұсқауыш – ЭЕМ жадындағы орынға сілтейтін нұсқауыш; MAXLEN – оқылатын тіркестің максимальды ұзындығы; fp - файл нұсқауышы.

Мысалы:

#define L 20

main()

{

  FILE *fp;

  char *st[n];

  fp=fopen(“stroka”,”r”);

  while(fgets(st,L,fp)!=NULL)

puts (st);

}

Файлдарға сөз тіркестерін жазу үшін  fputs функциясы келесі түрде қолданылады:

status=fputs(қатар нұсқауышы,fp);

status – бүтін сан, оның мәні eof функциясында жазылады, егер fputs()функциясы файлдың соңына шыққан болса немесе қате тап­­са, fputs функциясы жазылатын жолдың соңына /0символын жаз­байды.

Төменде осы функцияларды пайдалану мысалы келтірілген.

#include <stdio.h>

void main ()

{

int n;

char str[50], str1[50], ch;

FILE *fp;

// Файлға мәлімет жазу

fp = fopen("ex.txt","w");

puts ("Бүтін сан енгізіңіз: "); scanf("%d",&n);

fprintf (fp, "%d\n", n) ;

puts ("Символ енгізіңіз: "); ch=getchar();

putc (ch, fp);

puts ("Сөз тіркесін енгізіңіз: "); gets(str);

fputs(str, fp);

fclose(fp);

// Файлдан мәлімет оқу

if((fp = fopen("ex.txt","r")) != NULL)

 {

 fscanf (fp, "%d", &n); printf ("n=%d\n", n) ;

 ch = getc (fp); putchar (ch);

 fgets(str1, 50, fp); puts (str1);

 fclose (fp);

 }

 else printf ("\nФайлдан мәлімет оқылмайды!");

}

9. Printf және scanf функциялары

Си тілінде сыртқы ортамен мәліметтер алмасу <stdio.h> енгі­зу-шы­ға­ру функция­лары кітапханасын пайдалану арқылы орындалады. Ол тақы­рып файлы ретінде былай жазылады:

#include <stdio.h>

printf() функциясы  мәліметтерді экранға шығару үшін қолданы­лады. Оның жалпы жазылу түрі:

printf(<формат тіркесі>,<аргументтер тізімі>);

(<формат тіркесі> – қостырнақшамен (”) шектеліп, аргумент­тердің қалай бейнеленетінін көрсетіп тұрады, экранға (баспаға) шыға­ру алдында барлық аргументтер формат специ­фикациясына сәйкес түрлендіріледі, спецификация % символымен басталады және мәлімет­тер типін, оларды түрлендіру тәсілін көрсететін бір әріп жазы­лады. Объектілер ретінде айнымалылар, константалар, өрнектер қолданылуы мүмкін. Мысалы:

printf (“ Пи санының мәні = %f\n”, pi);

Формат тіркесінде мыналар болады:

1)    мәтін ретінде шығарылатын символдар тіркесі;

2)    түрлендіру спецификациялары;

3)    басқару символдары.

Әрбір аргументке өз спецификациясы сәйкес келуі тиіс, олар:

%d – бүтін ондық сан шығарылуы тиіс,

%i – бүтін ондық сан шығарылуы тиіс,

%f – жылжымалы нүктелі нақты ондық сан ([-]dddd.dddd ) жазылып шығады,

%e – жылжымалы нүктелі экспоненциалды сан ([-]d.dddde±dd) шығарылады,

%E – жоғарыдағы сияқты, тек е орнына Е ([-]d.ddddE±dd) шығарылады,

%c – бір символ шығарылуы тиіс,

%s – символдар тіркесі (қатары) шығарылуы тиіс,

%g – нақты сан, сан ұзындығына қарай %e немесе  %f қолданыла алады,

%u – таңбасыз ондық бүтін сан жазылып шығады,

%o – таңбасыз бүтін сегіздік сан шығады,

%x – таңбасыз бүтін он алтылық сан шығады.

\n – келесі жаңа жолға көшуді атқаратын басқару символы.

Мысалы: 

%9i  – бүтін сан ені 9 цифрдан тұрады, сан ені аз болса, оның сол жағында бос орындар орналасады. 

%9.3f  – нақты сан ені 9 цифрдан тұрады, оның 3 таңбасы бөлшекке беріледі, сан ені аз болса, оның сол жағында бос орындар орналасады.

Әрбір спецификация % символынан басталып, түрлендіру симво­лымен аяқталады. Ол екеуінің ортасында мыналар тұруы мүмкін:- минус таңбасы, аргумент мәні сол жақ шетке ығыстырылып жазылады.- цифрлар, бүтін санның жалпы орналасу енін анықтайды. Сан осы енге немесе одан артық болып шығарылады. Егер аргумент ені көрсе­тілген еннен аз болса, онда ол бос орындармен толтырылып жазылады. - нүктеге дейін санның жалпы ені, нүктеден соң бөлшек сандар ені көрсетіледі. - L модификаторы, сәйкес аргумент мәні INT емес LONG екенін білдіреді.

 scanf() енгізу функциясы жоғарыда қарастырылған түрлендіру спецификация­сының көбін пайдаланады.

scanf (<формат тіркесі>,<аргументтер тізімі>);

Аргументтер ретінде адрес нұсқауыштары пайдаланылады. Мысалы:

scanf("%d%f", &x,&y);

Кейбір айырмашылықтарын атап өтейік.

1)      %е және %f спецификациялары енгізу кезінде бірдей болып табы­­лады;

2)      short типті бүтін санды енгізу кезінде %h спецификациясы қолда­ны­лады.

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