System Programming

58
1. STUDY OF ASSEMBLERS Assembler is a system program which converts a program written in assembly language into machine language. Assembly language is a special language in which we use special mnemonic symbols for each instruction . It takes input of an assembly language program known as source program and converts it into an equivalent machine language program which is our object program. General design procedure 1. specify the problem 2. specify data structure 3. define format of DS 4. specific algorithm 5. look for modularity, i.e. capability on one program to be subdivided into several sub programs. 6. Repeat step 1 to 5 until our problem is resolved . Passes in assembler There are two passes in assembler. (1) Pass1 & (2) Pass2 PASS1 The purpose of pass1 is to define symbols and literals . following are the steps included in pass1. 1. determine length of machine imstruction .it is known as MOTGET1. 2. Keep track of location counter . 3. rememeber values of symbols until pass2. it is known as STSTO. 4. process some pseudo ops like EQU, DS . it is known as POTGET!. 5. remember literals . it is known as LITSTO(literal store).

description

System Programming file for partial fulfillment of degree B.Tech.

Transcript of System Programming

Page 1: System Programming

1. STUDY OF ASSEMBLERS

Assembler is a system program which converts a program written in assembly language into machine language. Assembly language is a special language in which we use special mnemonic symbols for each instruction . It takes input of an assembly language program known as source program and converts it into an equivalent machine language program which is our object program.

General design procedure

1. specify the problem2. specify data structure3. define format of DS4. specific algorithm5. look for modularity, i.e. capability on one program to be subdivided into several

sub programs.

6. Repeat step 1 to 5 until our problem is resolved . Passes in assembler

There are two passes in assembler.

(1) Pass1 & (2) Pass2

PASS1

The purpose of pass1 is to define symbols and literals . following are the steps included in pass1.

1. determine length of machine imstruction .it is known as MOTGET1.2. Keep track of location counter .3. rememeber values of symbols until pass2. it is known as STSTO.4. process some pseudo ops like EQU, DS . it is known as POTGET!.5. remember literals . it is known as LITSTO(literal store).

PASS 2

The purpose of pass2 is to generate object program. Following are steps included in pass2.

1. look up value of symbols . it is known as STGET(single table get).2. Generate instructions . it is known as MOTGET.3. Generate data for DS(define storage), DC(define constant) and literals.4. Process of pseudo ops .it is known as POTGET2.

Page 2: System Programming

PASS ONE OF THE TWO PASS ASSEMBLER

Page 3: System Programming

PASS TWO OF THE TWO PASS ASSEMBLER

Page 4: System Programming

2. STUDY OF LEXICAL & SYNTAX ANALYSIS

LEXICAL ANALYSIS:

It is a first phase of the compiler. In this phase compiler separates characters

of source language into groups that logical belongs together. These groups are tokens. This part of

compiler is known as lexical analyzer or scanner. On order to perform lexical analyzer must know

what are the tokens of the language to implemented .i.e. It must we know identifiers ,keywords ,

operators or punctuations symbols etc. so that when it scan the source program it will be able to

return a suitable tokens.

SYNTAX ANALYSIS:

It is also known as passing and the program used for this purpose is known

as parser. A parser obtains a string of tokens from the lexical analyzer and verify whether the string

is valid instruct of the source language .for this purpose of parser either attempts to derive the string

of tokens W from the start symbol S or attempts to reduce W to start symbol S of the grammar.

TWO TYPES OF PARSING:

1.) TOP-DOWN PARSING

2.) BOTTOM-UP PARSING

LEFT MOST DERIVATION:

If while generating a language from a given grammar. We don’t scan

the next variable until the leftmost variable scanned as leftmost derivation.

RIGHT MOST DERIVATION:

While generating a language from a given grammar we don’t scan

the next variable until the rightmost variable is scanned is known as rightmost derivation.

Page 5: System Programming

1. TOP-DOWN PARSING:

In an attempt to generate a leftmost derivation of a given grammar. The

basic idea is to parse our program starting from top and moving bottom. It means until or unless our

first line is not error free or correct according to syntax .we can not move on to next line. E.g.

LL(K) grammar context free grammars called LL(K) from left to right scan producing a left most

derivation with K symbols look ahead if we can always make a correct decision by checking at

most the first K symbols of W. Let this is our context free grammar.

P is S -> A+B-C

A -> b

B -> c

C -> d

2. BOTTOM –UP PARSING:

While parsing our program if we are moving starting from bottom and

going to top of our source program then it is known as bottom up parsing. The basic idea is unless or

until the last line of our source program is not error free or correct according to the syntax. We can

not move to the next line and it is equivalent to finding the right most derivation of any grammar.e.g.

LR (K) grammar: while finding a rightmost derivation of any grammar by looking ahead K symbols

we determine which production to use then is known as LR (K) grammar. It equivalent to finding

the right most derivation of the grammar. Let this is our given grammar.

Page 6: System Programming

3. INSTRUCTION SET OF 8085 MICROPROCESSOR

INTRODUCTION:

An instruction is a command given to the computer to perform a specified operation on given data.

These instructions are classified into following groups:

1. Data Transfer Group

2. Arithmetic Group

3. Logical Group

4. Branch Control

5. I/O and machine Control

Data Transfer Group: Instructions which are used to transfer data from one register

to another register, from memory to register or register to memory. Various commands

are:

1. MOV r1, r2: Move data; Move the content of one register to another.

2. MOV r, M: Move the content of memory to register.

3. MOV M, r: Move the content of register to memory.

4. MVI r, data: Move immediate data register.

5. LXI rp, data 16: Load registers pair immediate.

6. LDA addr: Load accumulator direct.

7. STA addr: Store accumulator direct.

8. LHLD addr: Load H-L pair direct.

9. SHLD addr: Store H-L pair direct.

Page 7: System Programming

10. XCHG: Exchange the contents of H-L with D-E pair.

Arithmetic Group: The instructions of this group perform arithmetic operations such

as addition, subtraction, increment, decrement of the contents of the register or memory.

Various commands are:

1. ADD r: Add register to accumulator.

2. ADD M: Add memory to accumulator.

3. ADC r: Add register with carry to accumulator.

4. ADC M: Add memory with carry to accumulator.

5. ADI data: Add immediate data to accumulator.

6. DAD rp: Add register pair to accumulator.

7. SUB r: Subtract register from accumulator.

8. SUB M: Subtract memory from accumulator.

9. SBI data: Subtract immediate data from accumulator with borrow.

10. INR r: Increment registers content.

11. INR M: Increment memory content.

12. DCR r: Decrement registers content.

Logical Group: The instructions under this group perform logical operations such as

AND, OR, COMPARE, ROTATE etc.Various commands are:

1. ANA r: AND register with accumulator.

2. ANA M: AND memory with accumulator.

3. ANI data: AND immediate data with accumulator.

Page 8: System Programming

4. ORA r: OR register with accumulator.

5. ORA M: OR memory with accumulator.

6. XRA r: EXCLUSIVE –OR register with accumulator.

7. XRA M: EXCLUSIVE-OR memory with accumulator.

8. CMA: Complement accumulator.

9. CMC: Complement the carry status.

10. STC: Set carry status.

11. CPI data: Compare immediate data with accumulator.

12. RLC: Rotate accumulator left.

13. RAL: Rotate accumulator left through carry.

14. RAR: Rotate accumulator right through carry.

Branch Control Group:

This group includes the instructions for conditional and unconditional jump, subroutine call and

return and restart. Various Commands are:

1. JMP addr (label): unconditional Jump: jump to the instruction specified by the address.

2. Conditional jump addr: after the execution of the conditional jump instruction the program

jumps to the instruction specified by the address. If the specified condition is fulfilled.

3. CALL addr: Unconditional call; Call the subroutine identify by the address.

4. RET: Return from subroutine.

5. RST n: Restart: It is a one word CALL instruction.

Stack and I/O, Machine Control Group: This group includes the instructions

from I/O ports, Stack and machine control. Various commands are:

Page 9: System Programming

1. IN Port addr: Input to accumulator from I/O port.

2. OUT Port addr: Output from accumulator to I/O port.

3. PUSH PSW: Push processor status word.

4. PUSH rp: Push the content of register pair to Stack.

5. POP rp: Pop the content of register pair to Stack.

6. HLT: Halt

7. EI: Enable interrupts.

8. DI: Disable interrupts.

9. SIM: Set interrupt mask.

10. RIM: Read interrupt mask.

11. NOP: No operation.

Page 10: System Programming

4. STUDY OF COMPILER AND ITS VARIOUS PHASES

COMPILER:

Compiler is a system program which converts a program written in high level language into

machine language. The high level language program given as input is known as source program

and machine equivalent is known as object program. The functionality of compiler is divided into

seven phases:

1. Lexical Phase 2. Syntax Phase

3. Interpretation Phase 4. Optimisation

5. Storage Assignment 6. Assembly Phase

7. Code Generation

Page 11: System Programming

Phases of a compiler 1. LEXICAL PHASE :

Action of parsing source program into proper classes is the task of lexical analyzer. The

program is scanned and separated into basic elements known as tokens. The basic elements

like identifier, literals are placed into tables as other phases recognize the use and meaning

of elements further information is entered into these tables like data types, length, storage

classes etc.

2. SYNTAX PHASE: Compiler interprets the meaning of the constant syntax analyzer is also known as parsing.

The basic function of the syntax phase is to recognize the major constructs of language and

to calculate the appropriate action routines that will generate the intermediate form or

matrix for these constructs.

3. INTERPRETATION PHASE:

Page 12: System Programming

Once the program is correct according to syntax, the compiler generates a intermediate

code , in this phase , the intermediate code is compiler directed .This intermediate co ode

may be in form of parse tree ,postfix notation and three address code .

4. OPTIMISATION:

Any program is set to be optimized, if it is consumes less memory and the compiler time is

fast. The code optimizer receives intermediate code and optimize them considering the like

memory, execution time and other. This phase removes the redundant code.

5. STORAGE ASSIGNMENT:

It is the process of allocating memory to various resources. The memory can be allocated

to various literals, storage, symbols, machine-OP etc. also the processing environment may

need some memory. All these memory allocation are performed by compiler in this phase.

6. CODE GENERATION:

It is the last phase of compiler. This phase receives optimized intermediate code and

generates the code for execution. This code generated generally will be relocatable machine

code or assembly code. This phase generates the executed code. It receives the input from

intermediate code generator from code optimizer in case of optimizing compilers. The input

to code generator must be error free, it must have undergone lexical analysis, syntax and

other intermediate phases. The target program may be in the form of

1. Assembly language

2. Relocate machine code

3. Absolute machine language

The absolute machine code is 1 which is ready to be executed. It is

Linker and loaded by the loader, thus making it ready for execution.

Page 13: System Programming

5. DEBUGGING IN C++ ENVIRONMENT

Locating and removing errors is known as debugging.

A debugger is a system program which locates bugs and removes them.

Debugging Procedure:

1. Type any program in the given language.

2. Compile it.

3. Look for errors.

4. Remove errors and recompile the program.

5. Repeat steps 3 & 4 until our program becomes error free.

CASE STUDY:

Debugging in C++ environment

Page 14: System Programming

We can divide the debugging procedure in C++ in two main categories:

1. Single-step control debugging

2. Break point control debugging

1. Single step control debugging:

There are three main methods of debugging in C++ environment under this category:

a) Single line control

b) Watch window

c) Procedure control

a) Single line control: After compilation if there are any errors in our program then pressing

the F7 key will check our program in a single line control. Where there is any error or bug in

any line then that particular line is skipped and the control is transferred to the next adjacent

line.

Watch window: After pressing F7 key, if we press Ctrl+F7 then a watch window will be displayed

on the screen. The user has to type a variable in the add watch window and the value of that

variable will be displayed.

b) Procedure control: This debugging technique is used if our program is very large and it is

divided into several sub-procedures. Simply pressing F8 key will result our program to be

compiled on procedure basis.

2. Break point control debugging:

The break point method as the name employs allows the user to set break points in the program in

order to check the contents of registers, memories and other programming entities like variables

etc. In fact the break point allows the user to halt the execution of the program at that break point.

Then the user can examine the intermediate results or contents of various registers, memories,

variables, addresses and I/O ports. The break point can be inserted at any particular position in our

program by the user himself

Page 15: System Programming

6. STUDY OF EDITORS AND TYPES OF EDITORS

Editor is a system program that interfaces a program with the entity that generates a data

(originator). It also interfaces the results of the program with the entity that consumes them

(consumer).There are a few steps in program development:

1) program design, coding and documentation

2) preparation of programs in machine readable form

3) program translation, linking and coding

4) program testing an d debugging

5) performance enhancement of the program

6) reforming the data or the result of the program

Design and Coding:

There are two methods for design and coding:

Program Generator:

Page 16: System Programming

It generates a program which performs a set of functions described in its specifications. The user

has to only specify the functions to be performed and not how to perform them.

Program Environment:

It supports programming by including awareness of the programming language syntax and

semantics in the language editor

Program entry and editing:

The soft tools used are text editors. Editor function in two modes

1. Command Mode

It accepts the user commands specifying the editing function to be performed.

2. Data Mode

The user keys in the text to be added to the files.

Testing and Debugging:

Various task to be performed here are selection of test data for the programs, analysis of test

results to detect errors if any and debugging. Software tools used to implement these steps are:

1. Test data generators

They help the user to select test data for the program. Test data is a set of input values that

satisfy the conditions required for correct flow of data.

2. Automated test drivers

Here the program correctness is verified by subjecting is to a standard set of tests after

every modification. This is called regression testing.

3. Debug Monitors

It is a software which provides debugging support for a program. It executes the

program been debugged under its control. It also enables the monitor to perform dynamically

specified debugging actions. They perform the following facilities for dynamic debugging:

a) Setting break points in a program.

Page 17: System Programming

b) Initiate a debug conversation when the control reaches the break point.

c) Display the value of variables.

d) Assign new values to variables.

e) Testing user defined assertions involving program variables.

Enhancement of program performance:

Program efficiency depends on efficiency of the algorithm and efficiency of the coding. Editor

comes in different forms:

1) Line editor

2) Stream editor

3) Screen editor

4) Word processors

5) Structure editor

6) Graphical editors

LINE EDITOR

The scope of edit operations on line editor is limited to line of text.

The line is designated:

a) Positionally

b) By specifying a serial number in text

Contextually

a) By specifying a unique character string in it.

The primary advantage of line editors is there simplicity.

STREAM EDITOR

Page 18: System Programming

A stream editor views the entire text as a stream of character this permits edit operations to cross

line boundaries. Stream editors typically supports character oriented , line oriented and context

oriented modes. The current pointer can be manipulated using all these modes.

SCREEN EDITORS

Line or stream editors do not display the text in manner it would appear if printed. Screen editor

uses the “What-you-see-is-what-you-get principle. The editor displays a screen full of text at a

time the user can move the cursor over the screen, position it at a point where we want to perform.

Some editing proceeds with the editing directly. Thus it is possible to see the effect of an edit

operation on screen.

WORD PROCESSOR

Word processors are document editors with additional features to produce well formatted hard

copy output. Essential features of word processor are command for moving, merging of texts and

searching and replacing of words. Many word processors supports spell check options with the

adventure of personal computers. Word processors have seen wide spread use among authors,

office personal and computer professional.

STRUCTURE EDITOR

A structure editor incorporate an awareness of the structure of a document .This is useful in

browsing through a document

CASE STUDY OF MS-WORD, DOS EDITOR , VI –EDITOR

DOS EDITOR

Introduction

1. How to start the Dos editor.

2. How to create a file in the editor.

3. What is a batch file.

4. How to create a batch file.

5. How to execute a batch file.

Page 19: System Programming

What is DOS Editor?

The DOS Editor is used to display , create , print , and modify files.

The DOS Editor looks a little like a word process

EDIT

How do you access the DOS Editor?

Type EDIT at the command prompt and press the ENTER key.

To name a file before starting type EDIT and the filename. Press the ENTER key.

Why do you want to use DOS Editor?

You use the DOS Editor to create Batch Files.

What are Batch Files?

A batch file contains a series of DOS commands.

Batch files have a .bat extension.

What do you do with a batch file?

Batch file are like icons on a toolbar. They simplify your life.

Imagine if you had a room full of computers. You wanted ti perform the same function on each of

the computers. You have a few options.

Sit at each computer and perform the function.

Build a batch file. Execute the batch file. Have time to relax before your next project.

How do you run or execute a batch file?

Type the batch file name.

There is no need to type the .bat extension.

How do you stop or pause a batch file?

Page 20: System Programming

Interrupt batch file: CTRL+S

Cancel batch fil

What are some special batch file commands and what is the purpose of each?

ECHO OFF

This turns off all DOS commands after the ECHO OFF command.

If a DOS command has related questions you will see the questions. The only thing you do not see are the DOS commands.

@ ECHO OFF

This turn off all DOS commands including the ECHO OFF command .

Now , do you understand the difference between ECHO OFF and @ECHO OFF?

ECHO OFF - You see ECHO OFF

@ECHO OFF - You don’t see ECHO OFF

ECHO.

This create a blank line.

ECHO

This display a message on a monitor.

PAUSE

This pause your computer until you press any key.

VI EDITOR

INTRODUCTION

The VI editor is a screen based editor used by many Unix users . The VI editor has a powerful

feature to aid programmer, but many beginning users avoid using VI because the different features

overwhelm them. This tutorial is written to help beginning users get accustomed to using the VI

Page 21: System Programming

editor , but also contains section relevant to regular users of VI as well. Examples are provided ,

and the best way to learn is to try these examples as well………. There’s no better way than to

experience things yourself.

Starting the VI Editor

The VI editor lets a user create new files or edit existing files . The command to start the

VI editor is vi, followed by the file name. For example to edit a file called temporary, you would

type vi temporary and then return . You can start VI without a filename , but when you want to save

your work , you will have to save your work , you will have to tell VI which filename to save it into

later

The Two Modes of VI

The first thing most users learn about the VI editor is that it has two modes : command and insert .

The command mode allows the entry of commands to manipulate text . these commands are usually

one or two characters long, and can be entered with few keystrokes. The insert mode puts anything

typed on the keyboard into the current file. into insert mode . The most commonly used commands

to get into insert mode are a and i . These VI starts out in command mode. There are several

commands that put the VI editor two commands are described below . Once you are in insert

mode , you get out of it by hitting the escape key . If your terminal does not have an escape key , ^

[ should work(control-)]. You can hit escape two times in a row and VI would definitely be in

command mode . Hitting escape while you are already in command mode doesn’t take the editor

out of command mode . It may beep to tell you that you are already in that mode.

Page 22: System Programming

7. C++ PROGRAMS

i. Write a program to generate lexical & syntax analyzer for a

declaration statement .

#include<iostream.h>

#include<conio.h>

#include<string.h>

#include<process.h>

#include<stdio.h>

void main()

Page 23: System Programming

{clrscr();

char b[20],c1[20],c2[20],c3[20];

int i,j=0,l=0,first,second,m=0,c=0;

cout<<"enter a string"<<endl;

gets(b);

for(i=0;b[i]!='\0';i++)

{if(b[i]==' ')

{c++;}}

if(c!=2)

{cout<<"wrong"<<endl;

getch();

exit(0);}

cout<<endl;

for(i=0;b[i]!=' ';i++)

{c1[j]=b[i];

j++;}

c1[j]='\0';

cout<<"c1="<<c1;

first=i;

for(i=first+1;b[i]!=' ';i++)

{c2[l]=b[i];

l++; }

c2[l]='\0';

cout<<endl<<"c2="<<c2;

second=i;

for(i=second+1;b[i]!='\0';i++)

{c3[m]=b[i];

Page 24: System Programming

m++;}

c 3[m]='\0';

cout<<endl<<"c3="<<c3<<endl;

if(strcmp(c3,";")!=0)

{cout<<"invalid statement"<<endl;}

if(strcmp(c1,"int")==0)

{cout<<"datatype is integer";}

else if(strcmp(c1,"ch")==0)

{cout<<"datatype is character";}

else if(strcmp(c1,"float")==0)

{cout<<"datatype is float";}

else

{cout<<"datatype is wrong";

}getch();}

Page 25: System Programming

Output:

Page 26: System Programming

ii. Write a program to generate various data structures of lexical analysis phase .

#include<iostream.h>

#include<conio.h>

#include<string.h>

#include<stdio.h>

#include<process.h>

void main()

{

clrscr();

int n,a,x=0;

int lin=0,ch=0;

int tc=0,ic=0,lc=0,uc=0,symb=0;

int i=0,l=0;

char terminal[15][15],identifier[15][15],literal[15][15],usymbol[15][15],symbinfo[15][15];

char str[20][20];

cout<<"Enter no of statements of source program "<<endl;

cin>>n;

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

{ gets(str[a]);}

cout<<endl;

for(lin=0;lin<n;lin++) // outer loop

{

ch=0;

while(str[lin][ch]!=' ') // inner loops start here

Page 27: System Programming

{

terminal[tc][i]=str[lin][ch];

usymbol[uc][i]=str[lin][ch];

ch++;

i++;

}

strcpy(symbinfo[uc],"Terminal");

terminal[tc][i]='\0';

usymbol[uc][i]='\0';

while(x<uc)

{

if(strcmp(usymbol[uc],usymbol[x])==0)

{

uc--;

break;

}

x++;

}

x=0;

while(x<tc)

{

if(strcmp(terminal[tc],terminal[x])==0)

{

tc--;

break;

}

x++;

Page 28: System Programming

}

x=0;

ch++;

i=0;

tc++;

uc++;

while(str[lin][ch]!=' ')

{

identifier[ic][i]=str[lin][ch];

usymbol[uc][i]=str[lin][ch];

ch++;

i++;

}

strcpy(symbinfo[uc],"Identifier");

identifier[ic][i]='\0';

usymbol[uc][i]='\0';

while(x<ic)

{

if(strcmp(identifier[lc],identifier[x])==0)

{

ic--;

break;

}

x++;

}

x=0;

while(x<uc) // this checks the duplicacy of symbol table

Page 29: System Programming

{

if(strcmp(usymbol[uc],usymbol[x])==0)

{

uc--;

break;

}

x++;

}

x=0;

i=0;

ic++;

uc++;

ch++;

while(str[lin][ch]!=' ')

{

terminal[tc][i]=str[lin][ch];

usymbol[uc][i]=str[lin][ch];

i++;

ch++;

}

strcpy(symbinfo[uc],"Terminal");

terminal[tc][i]='\0';

usymbol[uc][i]='\0';

while(x<tc)

{

if(strcmp(terminal[tc],terminal[x])==0)

{

Page 30: System Programming

tc--;

break;

}

x++;

}

x=0;

while(x<uc)

{

if(strcmp(usymbol[uc],usymbol[x])==0)

{

uc--;

break;

}

x++;

}

x=0;

ch++;

tc++;

uc++;

i=0;

while(str[lin][ch]!=' ')

{

literal[lc][i]=str[lin][ch];

usymbol[uc][i]=str[lin][ch];

ch++;

i++;

Page 31: System Programming

}

strcpy(symbinfo[uc],"Literal");

literal[lc][i]='\0';

usymbol[uc][i]='\0';

while(x<lc)

{

if(strcmp(literal[lc],literal[x])==0)

{

lc--;

break;

}

x++;

}

x=0;

while(x<uc)

{

if(strcmp(usymbol[uc],usymbol[x])==0)

{

uc--;

break;

}

x++;

}

x=0;

i=0;

lc++;

uc++;

Page 32: System Programming

ch++;

while(str[lin][ch]!='\0')

{

terminal[tc][i]=str[lin][ch];

usymbol[uc][i]=str[lin][ch];

ch++;

i++;

}

strcpy(symbinfo[uc],"Terminal");

terminal[tc][i]='\0';

usymbol[uc][i]='\0';

while(x<tc)

{

if(strcmp(terminal[tc],terminal[x])==0)

{

tc--;

break;

}

x++;

}

x=0;

while(x<uc)

{

if(strcmp(usymbol[uc],usymbol[x])==0)

{

uc--;

break;

Page 33: System Programming

}

x++;

}

x=0;

i=0;

tc++;

uc++;

}

cout<<"terminals table "<<endl;

for(l=0;l<tc;l++)

{cout<<l<<" ";

puts(terminal[l]);

cout<<endl;

}

cout<<"Identifier table "<<endl;

for(l=0;l<ic;l++)

4{cout<<l<<" ";

puts(identifier[l]);

cout<<endl;

}

cout<<"Literal table "<<endl;

for(l=0;l<lc;l++)

{cout<<l<<" ";

puts(literal[l]);

cout<<endl;

}

cout<<"uniform symbol "<<endl;

Page 34: System Programming

for(l=0;l<uc;l++)

{cout<<l<<" ";

cout<<usymbol[l]<<" "<<symbinfo[l];

cout<<endl;

}

getch();

}

Page 35: System Programming

Output:

Page 36: System Programming

iii. Write a program to perform different set operations i.e. union , intersection etc. .

#include<iostream.h>#include<conio.h>

void main(){ clrscr(); int a[20],b[20],c[40],j,n,m,k,choice; int i; cout<<"Enter no of elements of a"; cin>>n; cout<<"\nEnter "; for(i=0;i<n;i++) { cin>>a[i]; } cout<<"Enter no of elements of b"; cin>>m; cout<<"\nEnter "; for(i=0;i<m;i++) { cin>>b[i]; } while(1) {cout<<"\n\t\tMENU"; cout<<"\n\t\t1.inter"; cout<<"\n\t\t2.union"; int ch; cout<<"\nEnter choice"; cin>>ch;

if(ch==2) { for(i=0;i<n;i++) { c[i]=a[i]; } int k=n; for(i=0;i<m;i++) { for(j=0;j<n+i;j++)

Page 37: System Programming

{ if(c[j]==b[i])break;

} if(j==n+i) {

c[k]=b[i];k++;

} } cout<<"\nUNION "; for(i=0;i<k;i++) { cout<<c[i]; } } k=0; if(ch==1) { for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(a[i]==b[j])

{ c[k]=a[i]; k++; break;}

} }cout<<"\nINTERSECTION "; for(i=0;i<k;i++) { cout<<c[i]; } } cout<<"\nWANT TO EXIT?(enter1)"; cin>>choice; if(choice==1) break; }}

Page 38: System Programming

OUTPUT:

Page 39: System Programming

iv. Write a program to write some names and store them into corresponding files according to the alphabets and tell the location where they are placed.

#include<fstream.h>

#include<conio.h>

void main()

{

clrscr();

int A=0,B=0,C=0,D=0,nc[20],mc[20],ac[20],sc[20];

char p;

do

{

char word[20];

cin>>word;

ofstream n;

n.open("nf.txt",ios::app);

ofstream m;

m.open("mf.txt",ios::app);

ofstream a;

a.open("af.txt",ios::app);

ofstream s;

s.open("sf.txt",ios::app);

if(word[0]=='n')

{ n<<word<<endl;

A++;

}

if(word[0]=='m')

{ m<<word<<endl;

B++;

Page 40: System Programming

}

if(word[0]=='a')

{ a<<word<<endl;

C++;

}

if(word[0]=='s')

{ s<<word<<endl;

D++;

}

n.close();

m.close();

a.close();

s.close();

cout<<"file is created ";

cout<<endl<<"locations of n are::"<<A<<endl;

cout<<endl<<"locations of m are "<<B<<endl;

cout<<endl<<"locations of a are "<<C<<endl;

cout<<endl<<"locations of s are "<<D<<endl;

cout<<"do u want to continue?? enter y else n\n";

cin>>p;

}

while(p=='y');

getch();

}

Page 41: System Programming

Output:

Page 42: System Programming

v. Write a program to read and write a string into a file.

#include<iostream.h>

#include<conio.h>

#include<fstream.h>

#include<stdio.h>

#include<string.h>

void main()

{ clrscr();

char indata[100];

cout<<"\nENTER THE DATA TO BE WRITTEN ON FILE\n";

gets(indata);

ofstream q("data.txt");

q<<indata;

q.close();

char o;

cout<<"\nTHE DATA IN FILE IS::::\n";

ifstream w("data.txt");

while(w)

{ w.get(o);

Cout<<o;}

w.close();

getch();

}

Page 43: System Programming

Output:

Page 44: System Programming

vi. Write a program to create a file for student (name, roll. no , marks) and perform the following operations

a) Store name , roll. no , marks of students into a file.

b) Print the contents of the file.

c) Add one or more student information into the file.

d) Print total number of students in the file.

e) Modify any student information.

#include<iostream.h>

#include<conio.h>

#include<fstream.h>

#include<iomanip.h>

class student

{

char name[10];

int rn;

float marks;

public:

void getdata()

{

cout<<"Enter name";cin>>name;

cout<<"Enter Roll No.";cin>>rn;

cout<<"Enter Marks";cin>>marks;

}

Page 45: System Programming

void showdata()

{

cout<<setw(10)<<name<<setw(10)<<rn<<setprecision(2)<<setw(10)<<marks<<endl;

}

};

void main()

{

clrscr();

int q;

cout<<"Enter the no. of students::";

cin>>q;

student std;

fstream file;

file.open("sun.txt" , ios::out|ios::binary);

for( int i=1;i<=q;i++)

{

cout<<"Enter the information of"<<i<<"student\n";

std.getdata();

file.write( (char*) & std,sizeof(std) );

}

file.close();

file.open("sun.txt",ios::ate|ios::in|ios::out|ios::binary);

file.seekg(0,ios::beg);

while(file.read((char*)&std,sizeof(std)))

{

Page 46: System Programming

std.showdata();

}

file.clear();

cout<<"Add another student to the data\n";

std.getdata();

file.write((char*)&std,sizeof(std));

file.seekg(0);

clrscr();

while(file.read((char*)&std,sizeof(std)))

{

std.showdata();

}

int last=file.tellg();

int n=last/sizeof(std);

cout<<"\nNo. of students in the file="<<n<<endl;

cout<<"Total bytes in file="<<last<<endl;

cout<<"Enter the student no. to be modified";

int objno;

cin>>objno;

int location=(objno-1)*sizeof(std);

if(file.eof()) file.clear();

file.seekp(location);

cout<<"Enter new values for student";

std.getdata();

file.write((char*)&std,sizeof(std));

Page 47: System Programming

file.seekg(0);

clrscr();

cout<<"contents of updated file\n";

while(file.read((char*)&std,sizeof(std)))

{

std.showdata();

}

file.close();

getch();}

Page 48: System Programming

Output: