互联网程序设计实验二word版本
- 格式:doc
- 大小:253.50 KB
- 文档页数:6
温州大学瓯江学院数学与信息工程学院《Python程序设计》实验报告¥(2)随机产生10个数字,每个数字取值范围[1,20],将随机产生的数字存放到列表中;采用字典类型存放数字及其对应的次数,打印出每一个数字及其重复的次数。
代码:import random、sl=[(1,20) for i in range(10)]dictw=dict()for ch in sl:if ch not in dictw:dictw[ch]=1[else:dictw[ch]=dictw[ch]+1print(dictw)(3)文本词频统计。
编写程序接收完整英文语句(包含空格和标点符号,其中标点符号使用空格替换,大写与小写看作同一字符),按英文单词出现频率的降序打印词频。
…代码:import stringbbk="bhgff,jjkjk!,jojlk."for da in :bbk=(da,' '),dictw=dict()for ch in bbk:if ch not in dictw:dictw[ch]=1else:{dictw[ch]=dictw[ch]+1print(dictw)2、完成Hamlet英文词频统计。
根据演示示例所用相关知识,统计Hamlet文档中词频排名前20的英文单词及次数。
the 出现次数为: 1143~and 出现次数为: 966to 出现次数为: 762of 出现次数为: 669i 出现次数为: 631you 出现次数为: 554'a 出现次数为: 546my 出现次数为: 514hamlet出现次数为: 471in 出现次数为: 451代码:¥import stringd=open('','r')txt=()for i in :(i,' ')word=[]dictw=dict()word=()for ch in word:if ch not in dictw:dictw[ch]=1else:dictw[ch]=dictw[ch]+1sd=sorted(),key=lambda item:item[1],reverse=True)print(sd[0:20])3、(选做)模拟轮盘抽奖,假设轮盘共设一等奖、二等奖、三等奖三个价值的奖品。
面向对象程序设计A(Java)实验报告实验名称:____________________________实验类型:____________________________指导教师:____________________________专业班级:____________________________姓名:____________________________学号:____________________________实验地点:____________________________实验成绩:____________________________日期: 年月日实验XX ***********一、实验目的二、实验内容三、实验设计(反映设计原理、设计方法、设计过程、设计结果)四、实验过程(反映实验的基本过程,重点体现实验中遇到的问题和解决方案)五、实验结果(应先列出测试数据,要写明实验的现象,实验数据的分析等。
对于实验结果的表述,一般有三种方法:1、文字叙述:根据实验目的将实验结果系统化、条理化,用准确的专业术语客观地描述实:验现象和结果,要有时间顺序以及各项指标在时间上的关系。
2、图表:用表格的方式使实验结果突出、清晰,便于相互比较。
每一图表应有表目和计量单位,应说明一定的中心问题.3、屏幕截图:实验结果也可以是屏幕截图。
在实验报告中,可任选其中一种或几种方法并用,以获得最佳效果。
)六、讨论与分析(主要部分:通过实验对课程知识点的理解;实验结果的分析;回答实验指导书的实验思考提出的问题等)七、附录:关键代码(给出适当注释,可读性高)注:每个部分根据情况可以再分子标题,前提是层次清晰、逻辑性强。
操作系统教程实验指导书实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。
(2)掌握WINDOWS API的使用方法。
(3)编写测试程序,理解用户态运行和核心态运行。
2、实验内容和步骤(1)编写基本的Win32 Consol Application步骤1:登录进入Windows,启动VC++ 6.0。
步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。
创建一个新的控制台应用程序工程。
步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。
步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。
编译成可执行文件。
步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows “命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:E:\课程\os课\os实验\程序\os11\debug>hello.exe运行结果 (如果运行不成功,则可能的原因是什么?) :答:运行成功,结果:(2)计算进程在核心态运行和用户态运行的时间步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。
步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。
步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。
NCT-Python编程二级-模拟卷4(含答案word一、选择题1.下列选项中,能作为python程序变量名的是()A.if B.2x C.a*b D.x22.在python中,Int()函数的功能是返回不大于x的最大整数,设a=3,b=4,c=5 ,则下列表达式的运算结果中值最大的是()A.math.sqrt(b) B.abs(a- b)C.Int(2*a-c/b)D.a**2+b**2-c**2 3.以下文本框内是一段用Python程序设计语言编写的源代码,功能是输出200以内能被17整除的最大正整数。
这段源代码属于()。
A.软件B.程序C.指令D.高级语言4.计算机能够直接识别和执行的语言是( )A.机器语言B.汇编语言C.Python 语言D.C语言5.在下列程序设计语言中,属于人工智能语言的是()。
A.PythonB.VBC.PascalD.C6.在Python中,已知a=3,b=5,运行下列程序段后,a和b的值为a = a * bb = a // ba = a // bA.a=3 b=5 B.a=15 b=3 C.a=5 b=5 D.a=5 b=37.在Python语言中,用来定义函数的关键字是()。
A.return B.def C.function D.import8.要实现将实数型变量a的值保留三位小数,以下python可以实现的是()A.a%0.001 B.a//0.001 C.round(a,3) D.round(3,a)9.下列Python表达式中,能正确表示不等式方程|x|>1解的是()A.x>1 or x<-1 B.x>-1 or x<1 C.x>1 and x<-1 D.x>-1 and x<1 10.在python中,想输出一行文字,要用到的函数是()。
A.input()B.int()C.print()D.float()11.已知列表list1=[10,66,27,33,23],则python表达式max(list1)的值为()A.10 B.66 C.5 D.2312.关于python程序设计语言,下列说法错误的是()A.python是一种面向对象的编程语言B.python代码只能在交互环境中运行C.python具有丰富和强大的库D.python是一种解释型的计算机程序设计高级语言13.已知a = 6,b = -4,则Python表达式 a / 2 + b % 2 * 3 的值为()A.3 B.3.0 C.5 D.5.014.在Python中,表达式2**3的结果是()A.5 B.8 C.6 D.315.在Python中,设a=2,b=3,表达式 not(b-a>0)值是()A.1 B.-1 C.True D.False二、程序填空16.蒙特卡洛方法不仅可以用来模拟投针实验,还可以用来模拟求解圆周率T。
MATLAB第二版课后答案unit3—8 unit3实验指导1、 n=input('请输入一个三位数:');a=fix(n/100);b=fix((n-a*100)/10);c=n-a*100-b*10;d=c*100+b*10+a2(1)n=input('请输入成绩’);switch ncase num2cell(90:100)p='A';case num2cell(80:89)p='B';case num2cell(70:79)p=’C';case num2cell(60:69)p='D';otherwisep='E';endprice=p(2)n=input(’请输入成绩');if n〉=90&n〈=100p='A’;elseif n>=80&n<=89p='B';elseif n〉=70&n<=79p=’C’;elseif n>=60&n<=69p='D';elsep='E';endprice=p(3)tryn;catchprice='erroe'end3n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);b=n(1);for m=2:20if n(m)>aa=n(m);elseif n(m)<bb=n(m);endendmax=amin=b法2n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];min=min(n)max=max(n)4b=[—3.0:0.1:3.0];for n=1:61a=b(n);y(n)=(exp(0.3*a)-exp(—0。
计算机网络课程设计报告姓名:学号:班级:指导老师:湖南科技大学计算机科学与工程学院2013年6月实验一1。
实验名称:网络聊天程序的设计与实现2。
实验目的:通过本实验能够了解socket通信的原理并在此基础上编写一个聊天程序了解TCP/IP的基础知识,发现TCP与UDP的优缺点以及在网络通信的应用.3.实验原理:从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
当网络的边缘部分中的两个主机使用网络的两个主机使用网络的核心部分进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
从IP层来说,通信的两端是两个主机,IP数据报的首部明确的标志了这两个主机的IP地址.但是严格的讲,两个主机进行通信就是两个主机中的应用进程互相通信。
根据应用程序的不同需求,运输层需要有两种不同的运输协议,即是面向连接的TCP和无连接的UDP。
在使用这两个协议时运输层向高层用户屏蔽了下面的网络核心的细节,它使应用进程看见的就是好像在两个运输层实体间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别.当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。
但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道.由于我在课程设计中采用的是UDP协议进行通信的,这里就只简述一下一些关于UDP的内容,UDP在传送数据之前不需要先建立连接。
远地主机的运输层在收到UDP报文后,不需要给出任何确认。
虽然UDP不提供可靠的交付,但在某些情况下UDP却是一种最有效的工作方式.为此当我们使用UTP协议使两个计算机中的进程要互相通信,不仅必需知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。
实验1 搭建开发环境与第1个Android程序【实验目的】1.熟悉Android开发环境的搭建2.掌握用Eclipse开发Android程序的流程【实验内容】一、搭建Android开发环境按照下面的步骤,完成Android环境的搭建。
1.1 JDK的安装及配置1.根据电脑的系统位数安装软件包里的JDK,安装目录设置为d:\jdk1.x。
(d为你的安装盘,可以设为任意盘;x为你安装的jdk版本)2. WIN7系统环境变量设置(1)环境变量设置一(2)环境变量设置二(3)环境变量设置三(4)环境变量设置四1)创建新的环境变量。
名:JA V A_HOME,值:x:\jdk1.72)修改系统变量Path,在path变量值前添加这段:%JA V A_HOME%\bin;3)修改系统变量classpath,值为:.;%JA V A_HOME%\lib\dt.jar;%JA V A_HOME%\lib\tools.jar;(5)环境变量设置五1)测试开发环境。
在开始->搜索程序和文件里输入cmd.exe,打开cmd。
输入cd c:\ 命令进入c盘根目录。
2)在c盘根目录下使用记事本编写源文件,并存为java文件。
public class MyApp {public static void main (String[] args) {System.out.println(“我能学好Java语言!”);} }3)使用javac命令编译程序,在cmd命令行输入:javac MyApp.java生成class类型文件。
4)使用java命令运行程序,在cmd命令行输入:java MyApp如果在命令行显示结果“我能学好Java语言!”,则JDK环境配置成功。
1.2 Android SDK的安装及配置1. 解压adt-bundle-windows-x86_64-20131030.zip文件,里面的SDK是免安装版。
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第 01 篇基础程序设计01 闪烁的LED/*名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h〉#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x-—){for(i=0;i〈120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include〈reg51。
h〉#include<intrins。
h>#define uchar unsigned char #define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x—-){for(i=0;i〈120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/*名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include〈intrins.h>#define uchar unsigned char #define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x——){for(i=0;i〈120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i〈7;i++){P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51。
实验1基于流式套接字的⽹络程序设计(计算机⽹络Ⅱ)实验1 基于流式套接字的⽹络程序设计⼀、实验环境操作系统:Win10开发⼯具:VS2017使⽤语⾔:C⼆、实验内容1.设计思路(1)流式套接字编程模型①通信过程服务器通信过程如下:1.socket初始化;2.创建套接字,指定使⽤TCP进⾏通信;3.指定本地地址和通信端⼝;4.等待客户端的连接请求;5.进⾏数据传输;6.关闭套接字;7.结束对Windows socket dll的使⽤。
客户端通信过程如下:1.socket初始化;2.创建套接字,指定使⽤TCP进⾏通信;3.指定服务器地址和通信端⼝;4.向服务器发送连接请求;5.进⾏数据传输;6.关闭套接字;7.结束对Windows socket dll的使⽤。
②客户-服务器交互模型在通常情况下,⾸先服务器处于监听状态,它随时等待客户连接请求的到来,⽽客户的连接请求则由客户根据需要随时发出;连接建⽴后,双⽅在连接通道上进⾏数据交互;在会话结束后,双⽅关闭连接。
由于服务器端的服务对象通常不限于单个,因此在服务器的函数设置上考虑了多个客户同时连接服务器的情形,基于流式套接字的客户-服务器交互模型如图1-1所⽰。
图1-1 基于流式套接字的客户-服务器交互模型服务器进程要先于客户进程启动,每个步骤中调⽤的套接字函数如下:1.调⽤WSAStartup()函数加载Windows Sockets DLL,然后调⽤socket()函数创建流式套接字,返回套接字s;2.调⽤bind()函数将套接字s绑定到⼀个本地的端点地址上;3.调⽤listen()将套接字s设置为监听模式,准备好接受来⾃各个客户的连接请求;4.调⽤accept()函数等待接受客户的连接请求;5.如果接受到客户的连接请求,则accept()函数返回,得到新的套接字ns;6.调⽤recv()函数在套接字ns上接收来⾃客户的数据;7.处理客户的服务器请求;8.调⽤send()函数在套接字ns上向客户发送数据;9.与客户结束通信后,由客户进程断开连接。
网络程序设计实验报告实验名称:_______UDP通信实验__________实验类型:_______验证型实验__ ____指导教师:__ __ ___专业班级:___ _________________姓名:_____ _ ________________学号:________ ____________电子邮件:___ ________实验地点:______ ____________实验日期:年月18 日实验成绩:__________________________一、实验目的进一步理解Winsock API的调用方法了解UDP协议的工作原理掌握UDP服务端程序和客户端程序的编写流程熟悉程序的调试方法。
二、实验设计1.背景知识●Winsock编程模型Winsock编程的主要模型分为流套接字编程模型和数据报套接字编程模型两类,主要区别在于:前者提供双向的、有序的、无重复并且无记录边界的数据流服务,即采用有连接的数据传输服务,保证数据可靠到达;后者也支持双向数据流,但不能保证数据的可靠、有序和无重复,它保留了记录边界,是一种无连接、不可靠的数据传输模型。
●数据报套接字编程模型数据报套接字使用UDP协议进行数据的传输,是一种无连接的数据传输模型,编程过程相对简单,采用客户/服务器(C/S)结构进行设计。
在数据报套接字编程模型中,客户端发送数据(也称发送端),服务器端接收数据(也称接收端)。
实际上,由于数据报套接字编程模型也支持双向数据传递,因此,服务器端和客户端的概念已经比较模糊。
为了说明数据报套接字编程模型的工作原理,这里仍然沿用这两个概念。
数据报套接字的服务进程和客户进程不需要在通信前建立连接,仅需要创建各自的套接字,因此程序设计过程相当简单,简述如下:接收端:1、创建数据报套接字;2、绑定本机地址和端口;3、等候接收数据;4、使用完成后关闭套接字。
发送端:1、创建数据报套接字;2、向指定地址和端口发送数据;3、使用完成后关闭套接字。
互联网程序设计实验
二
实验报告(二)
课程名称:互联网程序设计年级:2017级实验日期:
姓名:学号:班级:
教师评语(成绩):
实验名称:实验二用SwingWorker
改写线程(2学时)
一、实验目的及要求
(1)理解并掌握服务器一客户一线程通用技术框架。
(2)理解并掌握 SwingWorker<T,V>后台线程技术。
二、实验环境
多媒体计算机 Windows7操作系统 JDK 8 Netbeans IDE8.2(开发语言Java)
三、实验内容
(1)重温本章完成的 Echo 一客户一线程服务器设计。
(2)学习和理解 SwingWorker<T,V>这个类的用法。
四、实验步骤(或记录)及相关代码
(1)实验步骤:
重新修改页面设计:
修改部分代码:
原代码:
//发送
out.println(outStr);
txtInput.setText("");
修改后代码:
//获取要发送的消息条数
String outStr_Num = txtInputNum.getText();
int outStrNum = Integer.parseInt(outStr_Num);
//发送
while (outStrNum > 0) {
new Thread() {
@Override
public void run() {
//发送
out.println(outStr);
txtInput.setText("");
}
}.start();
//休眠10ms
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(ClientUI.class.getName()).log(Level.SEVERE, null, ex);
}
outStrNum--;
}
实验结果:
(2)用SwingWorker<TV>替代Thread 类定义ClientThread类
程序2.3(修改主要片段):
public class ServerUI extends javax.swing.JFrame {
private ServerSocket listenSocket=null; //侦听套接字
private Socket toClientSocket=null; //与客户机对话的套接字
public static int clientCounts=0; //客户数量编号
public ServerUI() {
initComponents();
}
//启动服务器
private void btnStartActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_btnStartActionPerformed
try {
btnStart.setEnabled(false); //禁用按钮,避免重复启动
String hostName=txtHostName.getText();//主机名
int hostPort=Integer.parseInt(txtHostPort.getText());//端口
//构建服务器的SocketAddress格式地址
SocketAddress serverAddr=new
InetSocketAddress(InetAddress.getByName(hostName),hostPort);
listenSocket=new ServerSocket(); //创建侦听套接字
listenSocket.bind(serverAddr); //绑定到工作地址
txtArea.append("服务器开始等待客户机连接...\n");
} catch (IOException ex) { }
//创建一个匿名线程,用于侦听和接受客户机连接,并创建响应客户机的会话线程
new Thread(new Runnable() {
public void run() {
try {
while (true) { //处理客户机连接
toClientSocket=listenSocket.accept();//侦听并接受客户机连接 clientCounts++;//客户机数量加1
txtArea.append(toClientSocket.getRemoteSocketAddress()+ " 客户机编号: "+clientCounts+ " 会话开始...\n");
//创建客户线程clientThread,实现一客户一线程
SwingWorker<List<String>,String> worker=new ClientThread(toClientSocket,clientCounts);
worker.execute();
} //end while
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "错误提示", JOptionPane.ERROR_MESSAGE);
}
}//end run()
}).start();
}//GEN-LAST:event_btnStartActionPerformed
//关闭服务器之前
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
//关闭服务器之前释放套接字
if (listenSocket!=null) listenSocket=null;
if (toClientSocket!=null) toClientSocket=null;
}//GEN-LAST:event_formWindowClosing
程序2.4(修改主要片段):
public class ClientThread extends Thread {
private Socket toClientSocket=null;//会话套接字
private BufferedReader in; //网络输入流
private PrintWriter out; //网络输出流
private int clientCounts=0;//在线客户机总数
public ClientThread(Socket toClientSocket,int clientCounts) { //构造函数
this.toClientSocket=toClientSocket;
this.clientCounts=clientCounts;
}
@Override
public void run(){
try {
// 创建绑定到套接字toClientSocket上的网络输入流与输出流
in=new BufferedReader(new
InputStreamReader(toClientSocket.getInputStream(),"UTF-8"));
out=new PrintWriter(new
OutputStreamWriter(toClientSocket.getOutputStream(),"UTF-8"),true);
//5. 根据服务器协议,在网络流上进行读写操作
String recvStr;
while ((recvStr=in.readLine())!=null){ //只要客户机不关闭,则反复等待和接收客户机消息
Date date=new Date();
DateFormat format=new SimpleDateFormat("yyyy-mm-dd
hh:mm:ss");
String time=format.format(date);
ServerUI.txtArea.append(toClientSocket.getRemoteSocketAddress()+ " 客户机编号: "+clientCounts+" 消息:"+recvStr+" :"+time+"\n"); //解析并显示收到的消息
//按照echo协议原封不动回送消息
SwingWorker<List<String>,String> worker=new
ClientThread(toClientSocket,clientCounts);
worker.execute();
out.println(toClientSocket.getLocalSocketAddress()+ " 客户机编号: "+clientCounts+" Echo消息:"+recvStr+" : "+time);
}//end while
ServerUI.clientCounts--; //客户机总数减1。