Upload
docong
View
217
Download
1
Embed Size (px)
Citation preview
1
Introduction to computers andprogramming
Laurent Falquet, Basel, October 2006Swiss Institute of BioinformaticsSwiss EMBnet node
LF Basel October 2006
Summary of the week
• Monday Intro computers &
programming Intro Unix Tutorial Unix
• Tuesday Intro Perl I
Variables, loops,conditions…
Intro Regexp• Wednesday
Intro Perl II Reference, subroutines,
packages, modules…
• Wednesday Object Oriented
programming BioPerl
• Thursday EMBOSS Database indexing BLAST
• Friday Test HTML & cgi-bin Finish exercises Users questions
2
LF Basel October 2006
Content
• Hardware• Information storage
RAM, ROM HD, DVD
• Display Images Characters (fonts)
• File system/type Encryption Compression
• Network Protocols Packets
• Programming Algorithm Pseudocode Flowchart
• Languages• Source code
Example
LF Basel October 2006
The computer
4
LF Basel October 2006
Information storage
• 1 bit• 8 bits• 16 bits• 32 bits• 64 bits
• bit (1 or 0)• byte (octet) (28)• word (216)• double (232)• long double (264)
Encoding information on a fixed element of length n with abase b gives bn non-redundant possibilities
LF Basel October 2006
Information coding
• Binary 0 or 1
• Octal 0-7
• Hexadecimal 0-9+A-F
• Decimal 0-9
• How to count
• 128+32+16+4+1= 181 (decimal) 265 (octal) B5 (hexadecimal)
• Signed vs unsigned 0 to 255 -127 to +127
128 64 32 16 8 4 2 1
1 0 1 1 0 1 0 1
5
LF Basel October 2006
Operations on bits
• Booleans: 0 = false = no 1 = true = yes
• Operators: AND OR XOR NOT
• Example tables
10100010AND
11110010OR
01110010XOR
LF Basel October 2006
RAM/ROM
Memory mappingAddress Values000000010002......
..FFFF
• Size reminder:• Kilobyte Kb 210 ~103
• Megabyte Mb 220 ~106
• Gigabyte Gb 230 ~109
• Terabyte Tb 240 ~1012
• Petabyte Pb 250 ~1015
• Exabyte Eb 260 ~1018
• …
1 0 1 1 1 0 0 1
0 0 0 0 1 1 1 1
1 1 1 0 0 0 1 1
0 0 1 0 0 1 0 0
6
LF Basel October 2006
HD/DVD
track
sector
head
LF Basel October 2006
Display
• Screen pixel or dots• Color coding: 32 bits• 1 pixel = 3 bytes of color
(RGB)+1 byte alpha channel(transparency)
• 1600x1200x4bytes=7,5 Mb!
• Fonts Bitmap Vectors
TrueType, OpenType,PostScript
7
LF Basel October 2006
Keyboard/Mouse
• Each key (or combinationof keys) of the keyboardsends a code to thecomputer.
• The code is interpretedand converted to thecorresponding ASCII orUnicode number.
• The mouse movements 1 to 4 bytes (vertical &
horizontal)• Buttons
Clicked, pressed, rolled
buttons
LF Basel October 2006
ASCII & Unicode
• ASCII 7/8 bits• Unicode
UTF-8/16/32 bits ISO-8859 (Latin)
• od -c od -h
•
8
LF Basel October 2006
Software layers
ROM
Hardware
Operating System
User Interface
Software
Files
CPU, RAM, HD, DVD
Word, scripts, mail, web browser…
Data (.doc, .mp3)
BIOS/EFI
Linux
CLI, X-Windows
Windows
Windows
MacOSX
Firmware/EFI
Quartz
LF Basel October 2006
File systems
• Method the OS uses to store information Storage unit, directories, subdirectories
(Windows, VMS) Single arborescence (Linux, MacOSX, all Unix)
• What exactly is a file? a piece of information (text, graphic, data, music
program, script) it is identified by a name and an logical address
(or path) other informations: date, size, type, creator,
ownership, physical address…
9
LF Basel October 2006
File system organisation
Disk 1 Disk 2
Directories
Subdirectories
Windows
DOCS PROGS
WORD EXCEL
CONFIG DATA
EXPT1 EXPT2
/
/usr /home
phil johnlocal
bin lib
emacs X11
Unix
D:C:
Disk 1
Disk 2
LF Basel October 2006
Path
• The path is the logical address usedby the system or the user to locate afile.
• Example:/bd_du_Palais/35/etage/4/appart/12/Dupont_ Jean.txt
filenamesuffix
path
10
LF Basel October 2006
File types
• Executable .exe .app Unix requires « x »
• Data Text (.txt) Music (.mp3) Image (.jpg, .gif) Movie (.mpg, .mov) Binary (.bin) Compressed (.zip, .gz)
• Special cases in Unix STDIN STDOUT STDERR
LF Basel October 2006
Encryption / compression
• Compression Reducing the size of files E.g., .mp3, .gz, .jpg, .zip
• Encryption Protecting your privacy E.g., .pgp
• Packing Grouping the files E.g., .tar
11
LF Basel October 2006
Networks
• Direct USB 11Mb-480Mb Firewire 400-800Mb Ethernet 10Mb-1Gb
• Wired Modem 56Kb ADSL 600Kb-8Mb LAN 10Mb-10Gb
• Wireless Bluetooth 1Mb-20Mb WIFI (AirPort) 11Mb-54Mb
LF Basel October 2006
Network (ethernet or wireless)
• Computer talk to eachother via networkprotocols ip, tcp, http, ftp, …
• TCP/IP transmission control
protocol/internetprotocol
• Handshaking• Transmission• Ackowledgement
• DNS Domain Name Server
• URL Universal Resource
Locator• IP addess
192.42.197.51
12
LF Basel October 2006
DNS reminder
Primary DNS
Root DNS
Local DNS
Client query Target server
1
2 3
45
6
www.expasy.org
192.33.215.46
*.org
dns.anywhere.net
client.anywhere.net
www.expasy.org ??
LF Basel October 2006
Packets
The data travels withinunits called packets
13
LF Basel October 2006
Packet breakout
Usual TCP/IP payload per packet: 512 bytes
Introduction to programming
14
LF Basel October 2006
What is a program?
• How to cook?• The algorithm• Are you a programmer?
LF Basel October 2006
Pseudocode
• This is the pseudocode for a game of Monopoly
16
LF Basel October 2006
Languages
• Low level (processor dependent) Machine code, assembler
• High level: structured, procedural Fortran, C, Pascal…
• High level: object oriented C++, Java, C#, Perl, Objective-C…
• Virtual machines Java, C#…
• Scripting Perl, Python, JavaScript…
LF Basel October 2006
Source code -> Object code
• Compiler+linker Fortran, C, Pascal, C++…
• Interpreter Basic, Perl…
• Intermediate Java
• Compiler+linker Fast to execute, but
slow to debug• Interpreter
Slow to execute, butfast to debug (no needto recompile)
• Intermediate Slow…
17
LF Basel October 2006
Source code
• Instructions Statement, blocks Affectation Operators Loops Tests Subroutines Comments
• Data structures Variable List Array Hash Pointers Objects
LF Basel October 2006
Source code (2)
• Statement, blocks One or more
instructions for theprocessor
• Affectation Change to a variable
• Operator affect one or more
variable + * - / AND OR
NOT…
• Variable A region in memory
that can be modified Exists in different
types Scalar, char, numeric,
boolean List, array Hash Combination->data
structure
18
LF Basel October 2006
Source code (3)
• Loops Allow the computer
to repeat blocks• Tests
Decide what to do• Subroutines
Programs frequentlycalled (functions)
• Comments The most important
lines of the sourcecode…
• Pointers Reference to region
in memory (address)• Objects
Combination of dataand code
LF Basel October 2006
Example: a text to treat
« Noon rings out. A wasp, making an ominous sound, a sound akin to a klaxonor a tocsin, flits about. Augustus, who has had a bad night, sits up blinking andpurblind. Oh what was that word (is his thought) that ran through my brain allnight, that idiotic word that, hard as I'd try to pun it down, was always just aninch or two out of my grasp - fowl or foul or Vow or Voyal? - a word in a quizzwhich, by association, brought into play an incongruous mass and magma ofnouns, idioms, slogans and sayings, a confusing, amorphous outpouring which Isought in vain to control or turn off but which wound around my mind awhirlwind of a cord, a whiplash of a cord, a cord that would split again andagain, would knit again and again, of words without communication or anypossibility of combination, words without pronunciation, signification ortranscription but out of which, notwithstanding, was brought forth a flux, acontinuous, compact and lucid flow: an intuition, a vacillating frisson ofillumination as if caught in a flash of lightning or in a mist abruptly rising tounshroud an obvious sign - but a sign, alas, that would last an instant only tovanish for good. »
Gilbert Adair
19
LF Basel October 2006
Result…
a=97b=15c=26d=35f=23g=32h=44i=90j=1k=5l=33m=17
n=91o=104p=15q=1r=43s=59t=77u=52v=4w=31x=2y=13z=2
Do you see any problem??
Try with this:« The quick brown fox, jumpsover the lazy dog. »
LF Basel October 2006
Flowchart
20
LF Basel October 2006
Source code example
#!/usr/bin/perl -w # essential line of all perl scripts
$filename = "avoid.txt"; # affect « avoid.txt » to the variable $filename
# open the file, or exitopen(FILE, $filename) || die "Cannot open file ‘$filename’\n\n";@text = <FILE>; # add each line of the file to an arrayclose FILE;
foreach $line (@text) { # read one line from the array into $line and repeat for each line@table = split(//,$line); # read each character of the line in an arraywhile ($char=pop(@table)) { # read one character of the array 'table' and repeat for all
$char =~ s/[^a-z]//; # keep only the alphabetical character a to zif ($char) { # check if the character exists and execute the block
$count{$char}++; # if yes, increment by one the hash 'count'}
}}
# print each character and its number of occurence one per lineforeach $c (keys %count) {
print "$c=$count{$c}\n";}exit; # quit the program
LF Basel October 2006
Tips
• Think about yourproblem
• Create a flowchart• Create the
pseudocode• Verify the memory
used by yourvariables
• Write the code
• Test the code For all the possible
functions or cases (ifpossible)
Give it to users as abeta (if not possibe)
Sell it (if you workfor Microsoft©… ;-)
• Debug