求软件工程作业!

求软件工程作业!,第1张

《东北大学软件工程冲刺网课资料》百度网盘资源免费下载

 kkvy

1、语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。

2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:、、jar、java、javac、javadoc、javap、javaw、、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。

3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。

c语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。

早期的 *** 作系统等系统软件主要是用汇编语言编写的(包括

unix *** 作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行 *** 作),例如:对内存地址的 *** 作、位 *** 作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,c语言就在这种情况下应运而生了。

c语言是在b语言的基础上发展起来的,它的根源可以追溯到algol

60。

1960年出现的algol

60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了cpl(combinedprogram-

ming

language)语言。cpl语言在algol

60的基础上接近了硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的matin

richards对

cpl语言作了简化,推出了bcpl(basic

combined

programming

language)语言。1970年美国贝尔实验室的

ken

thompson以

bcpl语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的

b语言(

bcpl的第一个字母),并用

b语言写第一个unix *** 作系统,在pdp-7上实现。

1971年在pdp-11/20上实现了b语言,并写了unix *** 作系统。但b语言过于简单,功能有限。1972年至

1973年间,贝尔实验室的

dmritchie在b语言的基础上设计出了c语言(取

bcpl的第二个字母)。c语言既保持了bcpl和b语言的优点(精练、接近硬件),又克服了它们的缺点(过于简单、数据无类型等)。

最初的c语言只是为描述和实现unix *** 作系统提供一种工作语言而设计的。1973年,kthom-

pson和dmritchie两人合作把unix的90%以上用

c改写(unix第5版。原来的

unix *** 作系统是1969年由美国的贝尔实验室的

kthompson和dmritchie开发成功的,是用汇编语言写的)。

1,高级语言(High-level programming language)相对于机器语言(machine language,是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据)而言。是高度封装了的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。

2,高级语言程序设计是指C/C++,JAVA,VB,VF等程序设计语言,可以让编程者读懂的程序设计语言,机器不能够直接编译;其次是汇编语言,人和机器都可以读懂,机器可以直接编译的语言;最低端的是机器语言,机器可以直接编译但是编程者不以读懂。

3,VB是指Visual Basic。是一种由 Microsoft 公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。从任何标准来说,VB都是世界上使用人数最多的语言——不管是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。

参考一下吧。可能有些错误,但思路是绝对正确的。

优先级调度算法程序:

#include "stdioh"

#include "stdlibh"

#include "stringh"

typedef struct node

{

char name[10]; /进程标识符/

int prio; /进程优先数/

int round; /进程时间轮转时间片/

int cputime; /进程占用CPU时间/

int needtime; /进程到完成还要的时间/

int count; /计数器/

char state; /进程的状态/

struct node next; /链指针/

}PCB;

PCB finish,ready,tail,run; /队列指针/

int N; /进程数/

/将就绪队列中的第一个进程投入运行/

firstin()

{

run=ready; /就绪队列头指针赋值给运行头指针/

run->state='R'; /进程状态变为运行态/

ready=ready->next; /就绪对列头指针后移到下一进程/

}

/标题输出函数/

void prt1(char a)

{

if(toupper(a)=='P') /优先数法/

printf(" name cputime needtime priority state\n");

else

printf(" name cputime needtime count round state\n");

}

/进程PCB输出/

void prt2(char a,PCB q)

{

if(toupper(a)=='P') /优先数法的输出/

printf(" %-10s%-10d%-10d%-10d %c\n",q->name,

q->cputime,q->needtime,q->prio,q->state);

else/轮转法的输出/

printf(" %-10s%-10d%-10d%-10d%-10d %-c\n",q->name,

q->cputime,q->needtime,q->count,q->round,q->state);

}

/输出函数/

void prt(char algo)

{

PCB p;

prt1(algo); /输出标题/

if(run!=NULL) /如果运行指针不空/

prt2(algo,run); /输出当前正在运行的PCB/

p=ready; /输出就绪队列PCB/

while(p!=NULL)

{

prt2(algo,p);

p=p->next;

}

p=finish; /输出完成队列的PCB/

while(p!=NULL)

{

prt2(algo,p);

p=p->next;

}

getch(); /压任意键继续/

}

/优先数的插入算法/

insert1(PCB q)

{

PCB p1,s,r;

int b;

s=q; /待插入的PCB指针/

p1=ready; /就绪队列头指针/

r=p1; /r做p1的前驱指针/

b=1;

while((p1!=NULL)&&b) /根据优先数确定插入位置/

if(p1->prio>=s->prio)

{

r=p1;

p1=p1->next;

}

else

b=0;

if(r!=p1) /如果条件成立说明插入在r与p1之间/

{

r->next=s;

s->next=p1;

}

else

{

s->next=p1; /否则插入在就绪队列的头/

ready=s;

}

}

/轮转法插入函数/

insert2(PCB p2)

{

tail->next=p2; /将新的PCB插入在当前就绪队列的尾/

tail=p2;

p2->next=NULL;

}

/优先数创建初始PCB信息/

void create1(char alg)

{

PCB p;

int i,time;

char na[10];

ready=NULL; /就绪队列头指针/

finish=NULL; /完成队列头指针/

run=NULL; /运行队列指针/

printf("Enter name and time of process\n"); /输入进程标识和所需时间创建PCB/

for(i=1;i<=N;i++)

{

p=malloc(sizeof(PCB));

scanf("%s",na);

scanf("%d",&time);

strcpy(p->name,na);

p->cputime=0;

p->needtime=time;

p->state='w';

p->prio=50-time;

if(ready!=NULL) /就绪队列不空调用插入函数插入/

insert1(p);

else

{

p->next=ready; /创建就绪队列的第一个PCB/

ready=p;

}

}

clrscr();

printf(" output of priority:\n");

printf("\n");

prt(alg); /输出进程PCB信息/

run=ready; /将就绪队列的第一个进程投入运行/

ready=ready->next;

run->state='R';

}

/轮转法创建进程PCB/

void create2(char alg)

{

PCB p;

int i,time;

char na[10];

ready=NULL;

finish=NULL;

run=NULL;

printf("Enter name and time of round process\n");

for(i=1;i<=N;i++)

{

p=malloc(sizeof(PCB));

scanf("%s",na);

scanf("%d",&time);

strcpy(p->name,na);

p->cputime=0;

p->needtime=time;

p->count=0; /计数器/

p->state='w';

p->round=2; /时间片/

if(ready!=NULL)

insert2(p);

else

{

p->next=ready;

ready=p;

tail=p;

}

}

clrscr();

printf(" output of round\n");

printf("\n");

prt(alg); /输出进程PCB信息/

run=ready; /将就绪队列的第一个进程投入运行/

ready=ready->next;

run->state='R';

}

/优先数调度算法/

priority(char alg)

{

while(run!=NULL) /当运行队列不空时,有进程正在运行/

{

run->cputime=run->cputime+1;

run->needtime=run->needtime-1;

run->prio=run->prio-3; /每运行一次优先数降低3个单位/

if(run->needtime==0) /如所需时间为0将其插入完成队列/

{

run->next=finish;

finish=run;

run->state='F'; /置状态为完成态/

run=NULL; /运行队列头指针为空/

if(ready!=NULL) /如就绪队列不空/

firstin(); /将就绪对列的第一个进程投入运行/

}

else /没有运行完同时优先数不是最大,则将其变为就绪态插入到就绪队列/

if((ready!=NULL)&&(run->prio<ready->prio))

{

run->state='W';

insert1(run);

firstin(); /将就绪队列的第一个进程投入运行/

}

prt(alg); /输出进程PCB信息/

}

}

/时间片轮转法/

roundrun(char alg)

{

while(run!=NULL)

{

run->cputime=run->cputime+1;

run->needtime=run->needtime-1;

run->count=run->count+1;

if(run->needtime==0)/运行完将其变为完成态,插入完成队列/

{

run->next=finish;

finish=run;

run->state='F';

run=NULL;

if(ready!=NULL)

firstin(); /就绪对列不空,将第一个进程投入运行/

}

else

if(run->count==run->round) /如果时间片到/

{

run->count=0; /计数器置0/

if(ready!=NULL) /如就绪队列不空/

{

run->state='W'; /将进程插入到就绪队列中等待轮转/

insert2(run);

firstin(); /将就绪对列的第一个进程投入运行/

}

}

prt(alg); /输出进程信息/

}

}

/主函数/

main()

{

char algo; /算法标记/

clrscr();

printf("type the algorithm:P/R(priority/roundrobin)\n");

scanf("%c",&algo); /输入字符确定算法/

printf("Enter process number\n");

scanf("%d",&N); /输入进程数/

if(algo=='P'||algo=='p')

{

create1(algo); /优先数法/

priority(algo);

}

else

if(algo=='R'||algo=='r')

{

create2(algo); /轮转法/

roundrun(algo);

}

}赞同26| 评论

程序员的主要工作内容是设计、编写、测试和维护计算机程序。他们通常需要通过计算机语言和工具将软件需求转化为可执行的程序。具体来说,程序员的工作内容包括:

1需求分析:与客户或其他团队成员沟通,了解软件需求,分析问题并提出解决方案。

2设计:根据需求分析结果,设计软件架构、模块和流程,确保程序的高效性、可扩展性和可维护性。

3编码:使用计算机语言和开发工具编写程序代码,遵循编码规范和最佳实践。

4测试:编写测试用例并进行测试,以确保程序的质量和正确性。

5维护:对已有程序进行维护和优化,修复错误和缺陷,更新程序功能。

6文档编写:编写软件文档和用户手册,以便用户和其他开发人员了解软件的功能和使用方法。

7团队合作:与其他团队成员进行合作和沟通,如产品经理、设计师、测试人员等,以确保项目的顺利开展。

除了以上工作内容,程序员还需要不断学习新的技术和工具,以保持竞争力并提高自己的技能水平。

以上就是关于求软件工程作业!全部的内容,包括:求软件工程作业!、高级程序员需要学习哪些技术_程序员需要的技能、大一C语言计算机作业等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9710365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存