Programação Imperativa

Aula Prática 1 (parte A)

Sumário



Noções sobre o Linux

O Linux é um sistema operativo. Um sistema operativo é um conjunto de programas que gerem os recursos do computador, permitindo-nos trabalhar com ele.

O Linux é um sistema operativo multi-utilizador e multi-tarefa (significa que várias pessoas podem usar o mesmo computador ao mesmo tempo e correndo programas diferentes).

O Linux tem um mecanismo de segurança que impede os utilizadores normais de danificarem ficheiros que são essenciais para o bom funcionamento do sistema. Portanto, não tenham medo de experimentar. O computador "não morde", e o pior que pode acontecer é perderem os vossos ficheiros pessoais.

Cada utilizador tem um nome (login name) e uma password, que o identifica no sistema. Tem também uma área de trabalho só dele, a que se chama home, aqui encontram-se todos os ficheiros que lhe pertencem.

O Linux é sensível às maiúsculas e minúsculas.


Comandos Básicos do Linux

Grande parte dos comandos são abreviaturas de palavras inglesas.


Comandos de uso geral

login - identifica os utilizadores que entram no sistema.

    Login:  nome do utilizador
    Password: *********** 

exit - para terminar a sessão de trabalho.

    $ exit 

yppasswd - para alterar a password.

    $ yppasswd 
    Password Actual:
    Password Nova:
    Password Nova (confirmação):

Nota: É importante não esquecer a password.

man - para pedir ajuda sobre um comando (man de manual).

    $ man nome_comando

Para sair da ajuda, tecla q (quit).


Comandos sobre directorias

As directorias servem para agrupar os ficheiros por temas, permitindo uma melhor organização da informação.

pwd - para indicar a directoria corrente (pwd de print working directory).

    $ pwd 

ls - para ver o conteúdo das directorias (ls de list).

    $ ls nome_directoria    - mostra os ficheiros e outras directorias 
                                  no interior da directoria indicada.

    $ ls -F nome_directoria - coloca / à frente das directorias, 
                                  e * à frente dos ficheiros executáveis.

    $ ls -l nome_directoria - mostra mais informação sobre cada 
                                  ficheiro (permissões, links, dono, grupo, 
                  tamanho, data, hora, nome do ficheiro).

cd - para mover entre directorias (cd de change directory).

    $ cd /              - vai para a raíz.

    $ cd ..             - sobe um nível, vai para a directoria a cima.

    $ cd .              - a própria directoria.

    $ cd nome_directoria    - vai para a directoria indicada.

    $ cd                - vai para a home.

mkdir - para criar novas directorias (mkdir de make directory).

    $ mkdir nome_directoria 

rmdir - para apagar directorias (rmdir de remove directory).

    $ rmdir nome_directoria     - apaga apenas se a directoria 
                                          estiver vazia.

nome_directoria: Caminho desde a raíz (/) até á directoria desejada. Para cada novo nível na árvore coloca-se uma nova /.


Comandos sobre ficheiros

cp - para copiar ficheiros (cp de copy).

    $ cp nome_directoria_origem/nome_ficheiros nome_directoria_destino 

mv - para mover ficheiros (mv de move).

    $ mv nome_dirertoria_origem/nome_ficheiros nome_direrctoria_destino/nome_ficheiros

Cuidado porque não pede confirmação e pode-se escrever por cima de dados importantes.

rm - para apagar ficheiros (rm de remove).

    $ rm nome_directoria/nome_ficheiros     - apaga os ficheiros da directoria indicada.

    $ rm nome_directoria -r         - apaga a directoria mesmo sem estar vazia.

more - para ver o conteúdo de ficheiros.

    $ more nome_directoria/nome_ficheiros 

Mostra no écran o contéudo do(s) ficheiro(s).

Comandos essenciais do more:    
    Space - ir para a próxima página
    b - ir para a página anterior
    q - quit (sair)

Metacaracteres (* e ?)

Os metacaracteres podem ser utilizados com qualquer um dos comandos de ficheiros, e facilitam bastante quando se pretende fazer a mesma operação sobre ficheiros que têm algo em comum no seu nome.

O * representa uma cadeia de caracteres.

O ? representa um caracter.


Permissões de Ficheiros

O Linux tem um mecanismo que nos permite proteger os nossos ficheiros dos outros utilizadores. A esse mecanismo chama-se Permissões de ficheiros.

Existem 3 tipos de Permissões:
    r - Leitura (read), pode ler o ficheiro;
    w - Escrita (write), pode escrever no ficheiro;
    x - Execução (execute), pode executar o ficheiro;


Podem ser aplicadas a ficheiros e directorias.


Existem 3 classes de utilizadores, cada classe com o seu tipo de permissões:
    O dono do ficheiro,
    O grupo a que o dono pertence,
    Os outros utilizadores. 

chmod - para mudar as permissões, só o dono o pode fazer.

    $ chmod { a, u, g, o } { +, - } { r, w, x } nome_ficheiros 


Significado:

    { a, u, g, o }  - para definir que classes de utilizadores vai afectar.
                a - all; u - user (dono); g - group; o - other;

    { + , - }       - para definir se atribui (+) ou retira (-) a permissão.    

    { r, w, x }     - para definir os tipos de permissões a mudar.
                r - leitura; w - escrita; x - execução;  

Para ver as permissões existentes:

    $ ls -l 

Surge:
    -  rwx  r--  r--  user  group  tamanho  data  nome_ficheiro

Significado:

    (-)       - tipo do ficheiro

    (rwx)     - permissão do dono (user)
            Neste caso, pode ler, escrever e executar o ficheiro.

    (r--)     - permissão do grupo
            Neste caso, os utilizadores do grupo do dono só podem ler.

    (r--)     - permissão dos outros utilizadores
            Neste caso, igual ao do grupo

    (user)    - quem é o dono

    (group)   - a que grupo pertence

    (tamanho) - tamanho do ficheiro

    (data)    - data do ficheiro 

Nota: As permissões de um ficheiro dependem também das permissões da directoria em que se encontra.


O Ambiente de Trabalho

Para criar um programa numa linguagem de programação qualquer, existem quatro passos que têm sempre que acontecer:

  1. Pensar no problema, de preferência com papel e lápis.
  2. Escrever o programa, para isso é necessário um editor de texto.
  3. Verificar se o código que se escreveu não tem erros, para isso é necessário um compilador da linguagem de programação usada.
  4. Quando o programa estiver livre de erros, criar o ficheiro executável e correr o programa.

Em Linux, como se podem realizar os três últimos passos?


2 - Editar ficheiros

Existem muitos editores de texto em Linux. O vi, o joe, o emacs, o gedit, são apenas alguns deles.

Podem usar qualquer um deles, e até podem gravar os ficheiros numa disquete e continuar a trabalhar com eles em casa.


3 e 4 - Compilar e executar programas

Para compilar/executar um programa devem chamar o compilador gcc na linha de comandos:

        Compilar e tornar executável:   
    

        $ gcc -o nome_ficheiro_executável nome_ficheiro.c 


        Correr o programa: 

        $ nome_ficheiro_executável