Курс 2 Семестр 3 Лекции: 36 (часа) Лабораторные работы: 18(часов) Составитель к ф. м н. доцент Харитонов С. И. Самара 2010

Вид материалаЛекции
Расчет специальных функций
Имя поля: %s, значение поля: %s
Расчет функций Бесселя
Расчет Гамма-функции
Правая граница: %f,",xright); printf("Шаг: %f,",xstep); printf("Порядок функции: %d
Расчет специальных функций
Подобный материал:
1   2   3   4   5   6   7   8

Расчет специальных функций

");

/* printf("Исходная строка %s \n",str);*/

printf("
");


p=str;

while(*p!=0){

tok=strtok(p,"&");

str1=tok+strlen(tok)+1;

ptr_paramname=strtok(p,"=");

ptr_paramvalue=ptr_paramname+strlen(ptr_paramname)+1;

p=str1;

prm[i].name=ptr_paramname;

prm[i].value=ptr_paramvalue;

// printf("

Имя поля: %s, значение поля: %s

",prm[i].name,prm[i].value);


i++;

}

xleft=(double)atof(prm[0].value);

xright=(double)atof(prm[1].value);

xstep=(double)atof(prm[2].value);

xorder=atoi(prm[3].value);

if(strcmp(prm[4].value,"Bessel\0")==0){

switchval=1;

printf("

Расчет функций Бесселя

");


}

if(strcmp(prm[4].value,"Neiman\0")==0){

switchval=2;

printf("

Расчет функций Неймана

");


}

if(strcmp(prm[4].value,"Gamma\0")==0){

switchval=3;

printf("

Расчет Гамма-функции

");


}

if(strcmp(prm[4].value,"Erf\0")==0){

switchval=4;

printf("

Расчет функции ошибок

");


}

printf("

Левая граница: %f,

",xleft);


printf("

Правая граница: %f,

",xright);


printf("

Шаг: %f,

",xstep);


printf("

Порядок функции: %d,

",xorder);


x=xleft;

// printf("

Переключатель %d,

",switchval);


while(x<=xright){

switch(switchval){

case 1:

printf("

x=%f %f ",x,jn(xorder,x));

break;

case 2:

printf("

x=%f %f ",x,yn(xorder,x));

break;

case 3:

printf("

x=%f %f ",x,exp(gamma(x)));

break;

case 4:

printf("

x=%f %f ",x,erf(x));

break;

default:

break;

}

x=x+xstep;

}

system("(echo \"set terminal gif\"; echo \"plot cos(x)\")|gnuplot > /var/lib/apache/htdocs/prognoz/3.gif ");

printf("

");


printf ("");

printf ("");


}


else {

printf ("Content-type: text/html\n");

printf ("\n");

printf ("");

printf (" Расчет специальных функций");

printf ("");

printf ("");

printf("

Расчет специальных функций

");


printf ("");

printf ("");

printf ("");


}

}


Приложение 1


Межпроцессное взаимодействие с помощью неименованных каналов


#include

#include

#include

#include

#define MSGSIZE 16

char msg1[]="Привет Сергей";

char msg2[]="Привет Ксюша";

char msg3[]="Привет Лена";


int fatal(char* s){

perror(s);

exit(1);

}

main(){

char inbuf[MSGSIZE];

int p[2],j;

if (pipe(p)==-1){

fatal("Ошибка вызова pipe");

exit(1);

}

write(p[1],msg1,MSGSIZE);

write(p[1],msg2,MSGSIZE);

write(p[1],msg3,MSGSIZE);

for (j=0;j<3;j++){

read(p[0],inbuf,MSGSIZE);

printf("%s\n",inbuf);

}

exit(0);

}


#include

#include

#include

#include

#define MSGSIZE 16

char msg1[]="Привет Сергей";

char msg2[]="Привет Ксюша";

char msg3[]="Привет Лена";


int fatal(char* s){

perror(s);

exit(1);

}

main(){

char inbuf[MSGSIZE];

int p[2],j;

pid_t pid;

if (pipe(p)==-1){

fatal("Ошибка вызова pipe");

exit(1);

}


switch(pid=fork()){

case -1:

fatal("Ошибка вызова fork");

exit(2);

case 0:

write(p[1],msg1,MSGSIZE);

write(p[1],msg2,MSGSIZE);

write(p[1],msg3,MSGSIZE);

break;

default:

for (j=0;j<3;j++){

read(p[0],inbuf,MSGSIZE);

printf("%s\n",inbuf);

}

wait(NULL);

}

exit(0);

}


Создание процессов

#include

#include

#include

#include


int main() {

int pid=10,i;

printf("Начало pid=%d\n",pid);

pid=fork();

for(i=0;i<3;i++){

printf("pid=%d i=%d\n",pid,i);

}

switch (pid) {

case -1: perror("fork");

break;

case 0:

printf("Дочерний процесс создан pid=%d \n", pid);

return 0;

default:

printf("Родительский процесс после вызова fork() pid=%d\n",pid);

}

printf("Конец pid=%d\n",pid);

return 0;

}


#include

#include

/*#include*/

#include

#include

#include

#include

int main() {

int pid=10,i=0,j;

int status;

pid_t child_pid,pd;

for(j=0;j<5;j++){

printf("до fork() pid=%d j=%d\n",pid,j);

}

fflush(stdout);

pid=fork();

if(pid==-1){

perror("fork");

exit(1);

}

for(i=0;i<3;i++){

printf("После fork() pid=%d i=%d\n",pid,i);

}

if(pid==0){

printf("Дочерний процесс создан pid=%d\n",pid);

}

else{

printf("Родительский процесс после вызова fork() pid=%d\n",pid);

}

printf("Значение pid=%d в конце \n",pid);

return 0;

}


#include

#include

#include

#include


int main() {

printf("Начало\n");

switch (fork()) {

case (pid_t)-1: perror("fork");

break;

case (pid_t)0:

printf("Дочерний процесс создан \n");

return 0;

default:

printf("Родительский процесс после вызова fork()\n");

}

return 0;

}


#include

#include

#include

#include

#include

#include

#include

int main() {

int pid=10,i=0,j;

int status;

pid_t child_pid,pd;

for(j=0;j<5;j++){

printf("до fork() pid=%d j=%d\n",pd,j);

}

fflush(stdout);

pd=fork();

if(pd==-1){

perror("fork");

exit(1);

}

for(i=0;i<3;i++){

printf("После fork() pid=%d i=%d\n",pd,i);

}

if(pd==0){

printf("Дочерний процесс создан pid=%d\n",pd);

}

else{

printf("Родительский процесс после вызова fork() pid=%d\n",pd);

waitpid(child_pid,&status,WUNTRACED);

}

printf("Значение pid=%d в конце \n",pd);

if(WIFEXITED(status))

cerr << child_pid << " exist: " << WEXITSTATUS(status) << endl;

else if(WIFSTOPPED(status))

cerr << child_pid << " stoped by: " << WSTOPSIG(status) <

else if(WIFSIGNALED(status))

cerr << child_pid << " killed by: " << WTERMSIG(status) << endl;

else perror("waitpid");

_exit(0);

return 0;

}

#include

#include

#include

#include

#include

#include

#include

#include


int System(const char* cmd) {

int status;

pid_t pid;

switch (pid=fork()){

case -1:return -1;

case 0: execl("/bin/bash","bash","-c",cmd,0 );

perror("execl");

exit(errno);

}

if(waitpid(pid,&status,0)==WIFEXITED(status))

return WEXITSTATUS(status);

return -1;

}

int main() {

int rc=0;

char buf[256];

do {

printf("bash> ");fflush(stdout);

if(!gets(buf)) break;

rc=System(buf);

}while(!rc);

return(rc);

}


#include

main(){

printf("запуск программы ls\n");

execl("/bin/ls","ls","-l",(char*)0);

/*если возврашает значение, то вызов неудачный*/

perror("Вызов не смог з0апустить задачу ls");

exit(1);

}


#include

main(){

printf("запуск программы ls\n");

execl("/bin/ls","ls","-l",(char*)0);

/*если возврашает значение, то вызов неудачный*/

perror("Вызов не смог запустить задачу ls");

exit(1);

}

#include

#include

#include

int fatal(char* s){

perror(s);

exit(1);

}

main(){


char *const av[]={"ls","-l",(char*)0};

pid_t pid;

switch (pid=fork()){

case -1:

fatal("Ошибка вызова fork()");

break;

case 0:

execv("/bin/ls",av);

fatal("Ошибка вызова exec()");

break;

default:

wait((int*)0);

printf("программа ls завершилась\n");

exit(0);

}

}


Сигналы и процессы


#include

#include

main(){

static struct sigaction act;

void catchint(int);

act.sa_handler=catchint;

sigfillset(&(act.sa_mask));

sigaction(SIGINT,&act,NULL);

printf("Вызов sleep номер 1\n");

sleep(3);

printf("Вызов sleep номер 2\n");

sleep(3);

printf("Вызов sleep номер 3\n");

sleep(3);

printf("Вызов sleep номер 4\n");

sleep(3);

printf("Выход\n");

exit(0);

}


void catchint(int signo){

printf("\n Сигнал CATCHINT:signo=%d\n",signo);

printf("\n Сигнал CATCHINT:Возврат\n\n");

}


#include

#include


main(){

static struct sigaction act;

void catchint(int);

act.sa_handler=SIG_IGN;

sigfillset(&(act.sa_mask));

sigaction(SIGINT,&act,NULL);

sigaction(SIGQUIT,&act,NULL);

printf("Вызов sleep номер 1\n");

sleep(3);

printf("Вызов sleep номер 2\n");

sleep(3);

printf("Вызов sleep номер 3\n");

sleep(3);

printf("Вызов sleep номер 4\n");

sleep(3);

printf("Выход\n");

exit(0);

}


void catchint(int signo){


printf("\n Сигнал CATCHINT:signo=%d\n",signo);

printf("\n Сигнал CATCHINT:Возврат\n\n");

}


#include

#include


main(){

sigset_t set1,set2;

/*Создать полный набор сигналов*/

sigfillset(&set1);

/*Создать полный набор сигналов не включающий sigint sigquit*/

sigfillset(&set2);

sigdelset(&set2,SIGINT);

sigdelset(&set2,SIGQUIT);

/*Некритический участок кода*/

/*установим блокировку всех сигналов*/

sigprocmask(SIG_SETMASK,&set1,NULL);

/*критический участок кода*/

/*установим блокировку двух сигналов*/

sigprocmask(SIG_UNBLOCK,&set1,NULL);

/*менее критический участок кода*/

sigprocmask(SIG_UNBLOCK,&set2,NULL);

/*Отменить блокировку сигналов*/

sigprocmask(SIG_UNBLOCK,&set1,NULL);


}

#include

#include

#include

#include


int ntimes=0;


main(){

pid_t pid,ppid;

void p_action(int),c_action(int);

static struct sigaction pact,cact;

pact.sa_handler=p_action;

sigaction(SIGUSR1,&pact,NULL);

switch(pid=fork()){

case -1:

perror("syncro");

exit(1);

case 0:

cact.sa_handler=c_action;

sigaction(SIGUSR1,&cact,NULL);

ppid=getppid();

for(;;){

sleep(1);

kill(ppid,SIGUSR1);

pause();

}

default:

for(;;){

pause();

sleep(1);

kill(pid,SIGUSR1);

}

}


}

void p_action(int sig){

printf("Родительский процесс получил сигнал#%d\n",ntimes++);

}


void c_action(int sig){

printf("Дочерний процесс получил сигнал#%d\n",ntimes++);

}


Приложение 2


Содержание аудиторных занятий





Дисциплины и разделы, используемые в данном разделе

изучаемой

дисциплины

Лекционные занятия

Практические занятия

Дисциплины, использующие данный раздел

1

Семестр, наименование и содержание раздела

Объем в часах


Содержание

Объем в часах







1

2

3

4

5

6




Семестр 7

1

Информатика

Операционная система UNIX. Историческая справка

2

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


Работа в операционной системе UNIX. Компиляция и отладка простейших программ

4

Прикладная информатика

2

Информатика

Структура операционной системы UNIX . Файловая подсистема. Подсистема управления процессами. Подсистема ввода-вывода. Программный интерфейс UNIX

2






Прикладная информатика

3

Информатика

Файловая подсистема. Типы файлов. Структура файловой системы. Владельцы файлов.

Права доступа к файлам. Базовая файловая система SYSTEM V

Базовая файловая система BSD

Архитектура файловой системы

2

Лабораторная работа 2


Использование системных вызовов для работы с файловой подсистемой

4

Прикладная информатика

4

Информатика

Основные системные функции для работы с файлами. Пользователи системы.

2







Прикладная информатика

5

Информатика

Программы и процессы. Типы процессов. Атрибуты процессов. Жизненный цикл процесса.

2































6

Информатика

Структуры данных процесса. Состояние процесса. Основные системные функции для работы с процессами. Создание процесса. Завершение выполнения процесса.

2







Прикладная информатика

7

Информатика

Взаимодействие процессов. Каналы. FIFO. Архитектура файловой системы

FIFO файлы

2

Лабораторная работа 3


Взаимодействие между процессами с помощью каналов и FIFO файлов

4

Прикладная информатика

8

Информатика

Взаимодействие процессов.

Семафоры. Разделяемая память.

2










9




Взаимодействие процессов.

Программный интерфейс сокетов.

2

Лабораторная работа 4


Взаимодействие между процессами с помощью сокетов UNIX

Взаимодействие между процессами с помощью сокетов internet

6

Прикладная информатика

10




Пользовательская среда UNIX

2










11

Информатика

Общие принципы построения сетей. Топология физических сетей. Адресация компьютеров. Физическая структуризация сетей. Сетевые службы. Базовые технологии локальных сетей Технология ETHERNET Технология TOKEN RING Технология FDDI. Сетевые адаптеры. Концентраторы. Принципы работы мостов. Коммутаторы. Протокол ATM

2







Прикладная информатика

12

Информатика

Модель OSI. Требования к современным сетям.

2







Прикладная информатика

13

Информатика

Линии связи. Аппаратура линий связи. Характеристики линий связи.

2

)





Прикладная информатика

14

Информатика

Методы передачи дискретных данных на физическом уровне.

Аналоговая модуляция. Цифровое кодирование. Синхронная и асинхронная передачи.

2

)





Прикладная информатика

15




Методы передачи данных канального уровня. Асинхронные протоколы. Синхронные байт и бит ориентированные протоколы.

4







Прикладная информатика

16

Информатика

IP-адресация. Маска подсети. Разбиение на подсети с помощью масок. Классы сетей Служба DNS Средства анализа и управления сетями

4







Прикладная информатика




Итого




36




18





Приложение 3

Олифер В Олифер Н.

ссылка скрыта