Академический Документы
Профессиональный Документы
Культура Документы
Horrios
Introduo aos Computadores 2012-2013 2
Pgina da disciplina
Prticas: http://www.dcc.fc.up.pt/~rpribeiro/ic1213/ Tericas: http://www.dcc.fc.up.pt/~vsc/IC/
Bibliografia
Computer Science an Overview (11th Edition) J Glenn Brookshear, Pearson, 2011. Material complementar estar disponvel na pgina das tericas
Avaliao
Mini testes ao longo do semestre Exame final Parte prtica dos testes e exame incidir sobre pequenos trabalhos prticos realizados durante o semestre possvel fazer a disciplina apenas com os testes (regras na ficha curricular da disciplina no sigarra)
Introduo aos Computadores 2012-2013 5
Avaliao
Ateno: Os trabalhos prticos no so obrigatrios, mas contam para a frequncia e para o bom desempenho na parte prtica dos testes e exame! Mais detalhes: pgina da disciplina no sigarra
Durante as aulas (fortemente recomendado!) Gabinetes dos profs: DCC 1.45, 1.74, 1.31
Introduo aos Computadores 2012-2013 7
Laboratrios
Localizados no prdio do departamento de cincia de computadores (DCC), piso 1 lab1 e lab2 (todos no mesmo corredor) Ateno: todos os alunos precisam ter uma conta de acesso s mquinas dos labs do DCC, que diferente da conta do sigarra/FCUP.
Laboratrios
Ambiente: computadores com Unix Fedora Core Software utilizado para submisso de trabalhos prticos: mooshak
Programa (1)
Noes bsicas de arquitetura de computadores. Representao digital de informao e seu processamento. Estrutura de computadores, componentes principais. Modelos abstratos de mquinas. Mquinas programveis: linguagens mquina, assembladores, assembladores mnimos.
Introduo aos Computadores 2012-2013
10
Programa (2)
Linguagens de programao: evoluo, classificao. Paradigmas de programao. Sintaxe e semntica de linguagens. Compiladores e interpretadores. Carregadores e ligadores. Ferramentas de ajuda programao.
Introduo aos Computadores 2012-2013
11
Programa (3)
Sistemas de operao (referncia principal: UNIX/Linux). Sistema de Ficheiros. Organizao e administrao de memria central. Linguagens de comandos. Utilitrios. Controle de perifricos. Redes de computadores: protocolos.
Introduo aos Computadores 2012-2013 12
O computador
UCP: Unidade Central de Processamento (CPU) UAL: Unidade Aritmtica e Lgica (ALU) MEMRIA PRINCIPAL UCP UAL DMA deixa a UCP disponvel para outro processamento em paralelo Troca de informaes (dados ou instrues) Sinais de controle (fluxo unidirecional) disco, impressora, teclado, rato, cmera, CD, Ipod, telemvel etc DISPOSITIVOS DE ENTRADA E SADA
13
Prembulo
Comeamos pela explicao da interface bsica que nos permite manipular os recursos de um computador:
o sistema de operao
Foco neste curso: Unix (linux) Vrios dos conceitos aprendidos em Unix tambm so vlidos para o sistema Windows, porm em Windows os detalhes esto muito mais escondidos
Introduo aos Computadores 2012-2013 14
15
Outras opes
Se sua mquina tiver o sistema de operao windows:
cygwin: um ambiente Linux para Windows (http://www.cygwin.com/) wubi: instalador de Ubuntu Linux para windows. Faz dual boot de windows e ubuntu sem reparticionamento (http://wubi-installer.org/) Qualquer CD de linux (http://www.livecdlist.com) VMWare: mquina virtual Linux, corre linux em windows
16
compilers
17
Shell Unix
Um shell um programa que permite a interao entre o utilizador e o sistema UNIX:
L e analisa (parse) comandos do utilizador Avalia caracteres especiais Inicia pipes, redirees e processamento em background Encontra e inicia programas para execuo
18
Nosso foco no bash: sintaxe mais simples e o shell default em muitos sistemas
Introduo aos Computadores 2012-2013 19
Sistema de ficheiros
Ficheiros so organizados em diretrios, que, por sua vez so organizados numa estrutura hierrquica
root
20
Permisses
Ficheiros podem ter permisses para leitura, escrita ou execuo
21
Exemplo
22
Ficheiros
Podem ter tipos diferentes, normalmente identificados pela extenso Tipos esto relacionados com o formato dos ficheiros Por exemplo, ficheiros com extenso doc ou docx esto em formato editvel pelo Microsoft Office, LibreOffice ou OpenOffice Ficheiros com extenso txt esto em formato texto ASCII
Introduo aos Computadores 2012-2013 23
24
25
Comandos Bsicos
cd dir troca para o diretrio com nome dir cd .. troca para um diretrio acima do diretrio corrente cd ~ troca para o diretrio home
Introduo aos Computadores 2012-2013 27
Comandos Bsicos
cp -i file1 file2 copia file1 para file2 mv -i file1 path move file1 to path rm -i file1 remove file1 O que e por que utilizar a opo -i?
28
Comandos Bsicos
cp -i file1 file2 copia file1 para file2 mv -i file1 path move file1 to path rm -i file1 remove file1 O que e por que utilizar a opo -i? Para garantir que ficheiros no so removidos ou alterados por engano!
Introduo aos Computadores 2012-2013 29
cat file1 - mostra o contedo de file1 mkdir dir - cria um diretrio com nome dir ls dir - mostra o contedo do diretrio dir
30
cmd arg1 arg2 ... argn Alguns comandos esperam uma entrada que pode vir do teclado (canal de entrada padro ou stdin standard input) ou de um ficheiro em disco Outros comandos servem para mostrar resultados. Estes normalmente vo para o ecr (canal de sada padro ou stdout standard output) Vrios comandos esperam por uma entrada e escrevem na sada
Introduo aos Computadores 2012-2013
31
33
Piping (smbolo |)
cmd1 | cmd2 executa cmd1 e envia sua sada diretamente ao comando cmd2 Composio de pipes: cmd1 < file1 | cmd2 | cmd3 | cmd4 > file2 Exemplo: $ echo H cinco palavras nesta frase" | wc w
35
$ echo $? 0
37
Expresses regulares
Permitem rapidamente encontrar padres em textos
38
O comando egrep
Caracter ^ $ . Significado Incio da linha Fim da linha Qualquer caracter Ex ^g e$ .. Match gate gate Qualquer string com pelo menos 2 caracteres gate, gae Not match the gate gates a
gat?e
garage
39
egrep
Caracter () [] Significado Grupo de caracteres Grupo de caracteres opcionais Intervalo de caracteres Uma ou mais ocorrncias do caracter precedente
Introduo aos Computadores 2012-2013 40
Ex g(at)e g[at]e
g[a-c]te gate[1-3]+
egrep
Caracter * Significado Zero ou mais ocorrncias do caracter precedente Nmero de repeties do caracter precedente Prximo caracter no interpretado pelo comando Alternativa Ex gate[1-3]* Match gate, gate31 Not match gate4
{,}
a{2,5}
aa,aaaaa
a,xx3
20\*3
20*3
2053
(|)
(gate|gateaux)
gate, gateaux
grid
41
egrep
^[A-Z].* matches possveis: The gate is open T Testando zip codes: ^[0-9]{5}(\-[0-9]{3})?$ 21920-030 or 21920
Introduo aos Computadores 2012-2013 42
egrep
Qualquer string contendo o caracter @ que termine com .com ^.+@.+\.com$ Ex: xpto@company.com
43
Benefcios:
Reutilizao e partilha de cdigo Geralmente, cdigo menor e mais limpo que C, Java etc
Introduo aos Computadores 2012-2013 44
Vamos olhar um script muito simples HelloWorld.sh: #! /bin/bash echo Ol, meu nome $USER, gostaria de dizer Ol ao mundo usando $SHELL em $HOSTNAME, uma $MACHTYPE mquina. "
Quando terminar de editar este ficheiro, mude as permisses para que este fique executvel:
chmod +x Helloworld.sh
Introduo aos Computadores 2012-2013 45
48
52
53
Utilitrios Unix
Utilitrios essenciais para processamento de textos e dados: gawk cat head less tail tr wc sort uniq grep sed Note: sed and gawk provide a whole language!
Introduo aos Computadores 2012-2013 57
grep
grep -i ignora capitalizao grep -A 20 -B 10 mostra as 10 linhas antes e as 20 linhas aps cada match grep -v inverte o match grep -o mostra somente a substring que faz match com a expresso regular grep -n mostra o nmero da linha onde o padro que faz match com a expresso regular foi encontrado
Introduo aos Computadores 2012-2013 58
grep
Exemplo: $ grep '[Mm]onster' Frankenstein.txt | wc -l 33
59
Translate (tr)
Converte um conjunto de caracteres em outro tr aeiou AEIOU < file mostra o contedo de file com todas as vogais em maisculas tr -d '!@#$%^&*' <file remove do contedo de file os caracteres especificados entre plicas tr [A-Z] [a-z] < file converte maisculas para minsculas em file
Introduo aos Computadores 2012-2013 61
Translate (tr)
Exemplo: $ echo "$USER" o meu nome, mas mais interessante sem as vogais" | tr -d aeiouAEIOU ns m nm, ms ms ntrstng sm s vg
62
Sort
Ordena alfabeticamente linhas de textos sort -r u file ordena em ordem reversa e remove linhas duplicadas sort -n -k 2 -t : file faz ordenao numrica pela segunda coluna usando o : como separador
$ echo -e "62\n5\n1\n11\n8" | sort -n 1 5 8 11 Introduo aos Computadores 2012-2013 62
63
Sort
Sem a opo n (compare com o slide anterior) $ echo -e "62\n5\n1\n11\n8" | sort 1 11 5 62 8
64
Contagens
wc Mostra o nmero de linhas, palavras e bytes (carcacteres) de um ficheiro wc -l <file mostra o nmero de linhas em file wc -w <file pmostra o nmero de palavras em file $ echo Quantas palavras nesta frase? | wc -w 4 Quantas palavras existem no livro Frankestein? $ wc -w <Frankenstein.txt 77889
Introduo aos Computadores 2012-2013 65
Aliasing
Quanto mais usamos a shell, mais longos os comandos vo ficando porque mais opes usamos. Por exemplo, ls -l para ver as permisses de ficheiros, ou rm -i para garantir que um ficheiro no removido acidentalmente. Seria bom se pudssemos criar shortcutsPara isto, usamos o comando alias Alias: alias name=command O comando alias permite renomear e digitar um comando simples em vez de digitar um comand muito ongo Um alias pode ser definido na linha de comando Para que um alias fique permanente, necessrio adiicon-lo ao ficheiro .bashrc ou .bashrc_profile.
Introduo aos Computadores 2012-2013 66
Aliasing: exemplos
alias ls='ls --color=auto' alias dc=cd alias rm='rm -i' alias ll='ls -l' alias install='sudo apt-get install
67
Aliasing
Plicas so necessrias se a string contm mais que uma palavra Para ver os aliases ativos digite: alias Nota: em ficheiros script, por exemplo, .bashrc, o smbolo # o caracter de comentrio. Qualquer linha que inicie com um # um comentrio, com exceo da linha que inicia com #!,
Introduo aos Computadores 2012-2013 68
Podemos redirecionar simultaneamente as sadas de erro e sada padro para o mesmo ficheiro
cmd &> output
69
Redireo
Podemos utilizar um dispositivo especial do sistema, /dev/null, para suprimir a sada. Basta redirecionar a sada para /dev/null Por que o seguinte comando no executa corretamente? cmd < file > file
70
Redireo
Porque antes do comando ser executado, file aberto para leitura e escrita. Quando abrimos o ficheiro para escrita, ele iniciado como ficheiro vazio ( criado como novo ficheiro ).
71
Curiosidade
Qual o resultado deste comando? echo '1337 5p34k !5 n07 5p0k3n 4m0n9 2341 h4ck325' | tr '01234579!' 'olreastgi'
72
Curiosity
73
Variveis
Variveis so definidas por um nome, por exemplo: varname=value Sem espaos! Contedo da varivel varname: $varname $ world=mundo $ echo "Meu $world" Meu mundo H vrias variveis pr-definidas no sistema ($USER $SHELL ... etc)
Introduo aos Computadores 2012-2013
74
Variveis especiais
$0, $1, $2, etc. so parmetros (argumentos) posicionais, passados na linha de comando para um script, uma funo ou atribudos a uma varivel $# Nmero de argumentos na linha de comando $* lista de todos os argumentos numa palavra nica. "$*" precisa estar entre aspas $@ Smesmo que $*, mas cada argumento vem numa palavra separada
Introduo aos Computadores 2012-2013 75
Script simples
#!/bin/bash tr ' ' '\n' $1 | grep '^[[:upper:]]' | wc -l $1 se refere ao primeiro argumento passado ao script '^[[:upper:]]' uma expresso regular
^ se refere ao incio da linha [[:upper:]] qualquer letra maisculas
76
77
78
79
Substitui todos os endereos de email da Uporto com domnio up.pt pela frase porto email removed em file Com a opo -r entende expresses regulares estendidas
Introduo aos Computadores 2012-2013 80
sed
Alm de substituio e remoo, sed tambm pode:
Concatenar linhas trocar linhas inserir linhas mostra linhas etc
81
sed Arkanoid
sed uma linguagem de programao. Exemplo de jogo escrito em sed: http://aurelio.net/soft/sedarkanoid/
82
Aritmtica
Bash interpreta expresses aritmticas se estiverem entre parnteses duplos (( )). Uma expresso aritmtica retorna 0 se o valor for no zero e 1 se o valor for 0 (;-)) Se queremos o resultado do clculo escrevemos: $((exprmath)) Entre os parnteses duplos, as substituies de valores de variveis so feitos automaticamente sem a necessidade do $ antes do nome da varivel
Introduo aos Computadores 2012-2013 83
Aritmtica
84
Quando passamos argumentos a um script bash, acedemos seus valores usando: $1, $2, ... ${10}, ${11} so os valores do primeiro, segundo etc argumentos $0 nome do script $# - Nmero de argumentos $* - Todos os argumentos, "$*" expandido para "$1 $2 ... $n",
Introduo aos Computadores 2012-2013 85
$@ - Todos os argumentos, "$@" expandido para "$1" "$2" ... "$n" O mais comum usar $@ em vez de $* $? cdigo de sada do ltimo programa execurtado $$ - identificador UNIX (nico) do processo corrente
86
O comando if
Estrutura: if cmd1 then cmd2 cmd3 elif cmd4 then cmd5 else cmd6 fi if cmd1 then cmd2; cmd3 elif cmd4 then cmd5 else cmd6 fi
Cada expresso condicional avaliada true se cmd executar com sucesso (retornar um cdigo de sada igual a zero) podemos usar o smbolo ; para escrever sequncias de comandos na mesma linha a estrutura da esquerda equivalente ao da direita
Introduo aos Computadores 2012-2013 87
Exemplo 1
if cmp file1 file2 then echo "Files are the same" else echo "Files are different" fi
88
Exemplo 2
if grep -q bash filename then echo "There is at least one instance of bash in $1" fi
89
Exemplo 3
#! /bin/bash # Este script procura um texto num ficheiro # e retorna se o texto foi ou no encontrado # Se o texto no for encontrado, adiciona-o ao # ficheiro if grep "$1" $2 &> /dev/null then echo "$1 found in file $2" else echo "$1 not found in file $2, appending." echo $1 >> $2 Introduo aos Computadores 2012-2013 fi
90
Expresses de teste
Bash tem uma sintaxe especial de teste na forma [ testexpr ] Para comparar dois nmeros:
n1 -eq n2 testa se n1 = n2 n1 -ne n2 testa se n1 6= n2 n1 -lt n2 testa se n1 < n2 n1 -le n2 testa se n1 n2 n1 -gt n2 testa se n1 > n2 n1 -ge n2 testa se n1 >= n2
testes
#! /bin/bash # Created on [2/20/2009] by David Slater # Purpose of Script: Searches a file for two strings and prints which is more frequent # Usage: ./ifeq.sh <file> string1 string2 arg=`grep $2 $1 | wc -l` arg2=`grep $3 $1 | wc -l` if [ $arg -lt $arg2 ] then echo "$3 is more frequent" elif [ $arg -eq $arg2 ] then frequent" echo "Equally frequent" else echo "$2 is more frequent" frequent" fi Note: Could have used (( $arg < $arg2 )) and (( $ arg == $arg2 ))
92
Comparao de strings
Forma:
s1 == s2 - s1 e s2 so idnticas? s1 != s2 - s1 e s2 so diferentes? s1 - s1 no a string nula
93
Comparao de strings
Combinao de testes: if [[ testexp1 && testexp2 ]] then cmd fi && - e ( -a for test ) || - ou ( -o for test ) ! testexp1 - not (mesmo smbolo para a sintaxe de teste vista antes)
Introduo aos Computadores 2012-2013 94
[[ versus [
[ sinnimo de teste [[ uma verso melhorada do teste. Tm muitas coisas em comum, mas algumas diferenas
96
[[ versus [
Comparao de strings:
[[ usa > [[ usa < [ usa \> [ usa \<
regulares [ no permite o uso de expresses regulares [[ usa = for pattern matching [ no permite pattern matching
Introduo aos Computadores 2012-2013
97
[[: exemplos
[[ $name = a* ]] || echo "name does not start with an 'a': $name [[ $(date) =~ ^Fri\ ...\ 13 ]] \ && echo "It's Friday the 13th!"
98
99
101
102
107
Lendo de ficheiros
Podemos ler iterativamente linhas de um ficheiro em disco cat datafile | while read line do if (( $line < 10 )) then echo $line fi done
Introduo aos Computadores 2012-2013 108
Referncias
[1] D. M. Ritchie and K. Thompson, The UNIX Time-Sharing System, Communications of the ACM, 1974, v. 17, pp. 365375. [2] W. Richard Stevens and Stephen A. Rago, Advanced Programming in the UNIX Environment, 2ed., Addison-Wesley Professional, 2005. [3] Marc J. Rochkind, Advanced Unix Programming, 2ed., AddisonWesley Professional, 2004. [L1] Advanced Unix Programming Home: http://basepath.com/aup/ [L2] Advanced Bash-Scripting Guide: http://tldp.org/LDP/abs/html/ [L3] Advanced Linux Programming http://www.advancedlinuxprogramming.com/ [L4] Basic Unix commands by Philippe Renard: http://members.unine.ch/philippe.renard/unix1.html [L5] Advanced Unix commands by Philippe Renard: http://members.unine.ch/philippe.renard/unix2.html 109 Introduo aos Computadores 2012-2013