Introduction to computers and...
Transcript of Introduction to computers and...
Introduction to computers and programming
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
The computer
Internally
The connections
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 a
base b gives bn non-redundant possibilities
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
Operations on bits
• Booleans:
� 0 = false = no
� 1 = true = yes
• Operators:
� AND
� OR
� XOR
� NOT
• Example tablesAND 0 1
0 0 0
1 0 1
OR 0 1
0 0 1
1 1 1
XOR 0 1
0 0 1
1 1 0
RAM/ROM
Memory mapping
Address Values
0000
0001
0002
..
..
..
..
FFFF
• Size reminder:• Kilobyte Kb 210 ~103
• Megabyte Mb 220 ~106
• Gigabyte Gb 230 ~109
• Terabyte Tb 240 ~1012
• Petabyte Pb 250 ~1015
• …
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
HD/DVD
track
sector
head
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
QuickTime™ et undécompresseur TIFF (non compressé)sont requis pour visionner cette image.
Keyboard/Mouse
• Each key (or combination of keys) of the keyboard sends a code to the computer.
• The code is interpreted and converted to the corresponding ASCII or Unicode number.
• The mouse movements
� 1 to 4 bytes (vertical & horizontal)
• Buttons� Clicked, pressed, rolled
buttons
ASCII & Unicode
• ASCII 7/8 bits
• Unicode
� UTF-8/16/32 bits
� ISO-8859 (Latin)
• od -c od -h
•
Software layers
ROM
Hardware
Operating System
User Interface
Software
Files
CPU, RAM, HD, DVD
Word, scripts, mail, web browser…
Data (.doc, .mp3)
BIOS
Linux
CLI, X-Windows
Windows
Windows
MacOSX
Firmware
Quartz
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…
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
Path
• The path is the logical address used by the system or the user to locate a file.
• Example:/bd_du_Palais/35/etage/4/appart/12/Dupont_ Jean.txt
filenamesuffix
path
File types
• Executable� .exe
� .app
� Unix requires « x »
• Data� Text (.txt)
� Music (.mp3)
� Image (.jpg, .gif)
� Movie (.mpg, .mov)
� Binary (.bin)
• Special cases in Unix
� STDIN
� STDOUT
� STDERR
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
Networks
• Direct� USB 11Mb-480Mb
� Ethernet 10Mb-1Gb
• Wired� Modem 56Kb
� ADSL 600Kb-8Mb
� LAN 10Mb-10Gb
• Wireless� Bluetooth 1Mb-20Mb
� WIFI (AirPort) 11Mb-54Mb
Network (ethernet or wireless)
• Computer talk to each other via network protocols
� ip, tcp, http, ftp, …
• TCP/IP� transmission control
protocol/internet protocol
• Handshaking
• Transmission
• Ackowledgement
• DNS� Domain Name Server
• URL� Universal Resource
Locator
• IP addess� 192.42.197.51
DNS reminder
Primary DNS
Root DNS
Local DNS
Client query Target server
1
2 3
45
6
www.expasy.org
129.194.8.64
*.org
dns.anywhere.net
client.anywhere.net
www.expasy.org ??
Packets
The data travels within units called packets
Packet breakout
Usual TCP/IP payload per packet: 512 bytes
Introduction to programming
What is a program?
• How to cook?
• The algorithm
• Are you a programmer?
Pseudocode
• This is the pseudocode for a game of Monopoly
Flowcharts
Flowcharts details
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…
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, but fast to debug (no need to recompile)
• Intermediate� Slow…
Source code
• Instructions
� Statement, blocks
� Affectation
� Operators
� Loops
� Tests
� Subroutines
� Comments
• Data structures
� Variable
� List
� Array
� Hash
� Pointers
� Objects
Source code (2)
• Statement, blocks� One or more
instructions for the processor
• 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
Source code (3)
• Loops� Allow the computer to
repeat blocks
• Tests� Decide what to do
• Subroutines� Programs frequently
called (functions)
• Comments� The most important
lines of the source code…
• Pointers
� Reference to region in memory (address)
• Objects
� Combination of data and code
Example: a text to treat
« Noon rings out. A wasp, making an ominous sound, a sound akin to a klaxon or atocsin, flits about. Augustus, who has had a bad night, sits up blinking and purblind. Ohwhat was that word (is his thought) that ran through my brain all night, that idiotic wordthat, hard as I'd try to pun it down, was always just an inch or two out of my grasp - fowlor foul or Vow or Voyal? - a word in a quizz which, by association, brought into play an
incongruous mass and magma of nouns, idioms, slogans and sayings, a confusing,amorphous outpouring which I sought in vain to control or turn off but which woundaround my mind a whirlwind of a cord, a whiplash of a cord, a cord that would split againand again, would knit again and again, of words without communication or any possibilityof combination, words without pronunciation, signification or transcription but out of
which, notwithstanding, was brought forth a flux, a continuous, compact and lucid flow: anintuition, a vacillating frisson of illumination as if caught in a flash of lightning or in a mistabruptly rising to unshroud an obvious sign - but a sign, alas, that would last an instantonly to vanish for good. »
Gilbert Adair
Result…
a=97
b=15
c=26
d=35
f=23
g=32
h=44
i=90
j=1
k=5
l=33
m=17
n=91
o=104
p=15
q=1
r=43
s=59
t=77
u=52
v=4
w=31
x=2
y=13
z=2
Do you see any problem??
Try with this:
« The quick brown fox, jumps over the lazy dog. »
Flowchart
Source code example
#!/usr/bin/perl -w # essential l ine of all perl scripts
$filename = "avoid.txt"; # affect « avoid.txt » to the variable $filename
# open the fi le, or exit
open(FILE, $filename) || die "Cannot open fi le ‘$filename’\n\n";
@text = <FILE>; # add each line of the file to an array
close 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 array
while ($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 z
if ($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 l ine
foreach $c (keys %count) {
print "$c=$count{$c}\n";
}
exit; # quit the program
Tips
• Think about your problem
• Create a flowchart
• Create the pseudocode
• Verify the memory used by your variables
• Write the code
• Test the code
� For all the possible functions or cases (if possible)
� Give it to users as a beta (if not possibe)
� Sell it (if you work for Microsoft©… ;-)
• Debug
Summary of the week
• Monday
� Intro computers & programming
� Intro Unix
� Tutorial Unix
• Tuesday
� Intro Perl
� Regexp & Perl In-liners
• Wednesday� Object Oriented
programming
� BioPerl
� EMBOSS
• Thursday� Database indexing
� BLAST
� HTML & cgi-bin
• Friday� Finish exercises
� Users questions
Unix
• Next presentation…
Vassilios alias
UnixMan!!!