Introdução A Linguagem C

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 70

2º Semestre 2022/23

Sumário
1

➢ Apresentação
➢ Programa
➢ Bibliografia
➢ Objectivos da Semana 1
➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Sumário
2

➢ Apresentação
➢ Objectivos da Semana 1
➢ Bibliografia
➢ Introdução à linguagem C

➢ Breve história e conceitos básicos


➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Apresentação
3

• Disciplina:
Programação para Engenharia

• Professor da Disciplina:
Sediangani Daniel Nunes Sofrimento
Grau Académico: Licenciatura em Engenharia informática (Portugal)

Experiência profissional:
• Web developer na Empresa Create It(Portugal)
• Web developer na Empresa Bee Engineering (Portugal)
• Web developer na Empresa Novabase (Portugal)

Outros:
Certificado Microsoft de programação Web e C#
Sumário
4

➢ ApresentaçãoObjectivos da Semana
➢ Objectivos da Semana 1
➢ Bibliografia
➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Objectivos da Semana 1
5

o Compreeender os conceitos básicos da programação.

o Entender os componentes e a estrutura de um programa em C

o Compreender o que são tipos de dados, variáveis, e a sua sintaxe de declaração e


inicialização.

o Compreender os Operadores e expressões da linguagem C.

o Compreender os comando de entrada e saída.

o Conhecer o ambiente de desenvolvimento (Devc ++).


Sumário
6

➢ Apresentação
➢ Programa
➢ Objectivos da Semana 1
➢ Bibliografia
➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Bibliografia
7

Principal

• Linguagem C 14º Edição, Luís Damas,


ISBN: 978-972-722-156-1, FCA editora

• Linguagem C 10º Edição, Luís Damas,


ISBN: 85-216-1519-1, FCA editora
Sumário 8

➢ Apresentação
➢ Programa
➢ Objectivos da Semana 1
➢ Bibliografia
➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Introdução 9

➢ Programação imperativa – exemplos: Pascal, C, Basic. Segue o modelo segundo


o qual, tanto o programa como os dados estão armazenados na memória do
computador. Durante a execução do programa, as células de memória são
acedidas, interpretadas e actualizadas. A base da programação imperativa
reside na operação de atribuição através da qual uma variável recebe o
resultado de uma operação. Também na programação imperativa se recorre a
métodos para especificar e controlar a execução de sequências de instruções.
Breve História do C 10

• 1972 – A linguagem C foi desenvolvida por, Dennis Ritchie, em AT&T Bell


Labs

• 1973 – Dennis Ritchie e Ken Thompson reescrevem, em C, o Sistema


operative UNIX

• 1977 – Iª edição do livro: “the C programming language”

• 1983 – o American National Standards Institute (ANSI) nomeia um comité


para produzir uma nova definição, não ambígua independente de qualquer
arquitectura, para a linguagem C

• 1988 – 2ª edição do livro: “the C programming language” usando a definição


de ANSI

• Linguagens como o Java e o C# foram influenciados pelo C.


Conceitos básicos 11

• Algoritmo: é um conjunto de instruções bem definidas que, quando


executadas em sequência, levam à conclusão de uma tarefa.

Exemplo: Pseudo – Código que aprenderam em Algoritmos e Logica de


Progamação

• Programa: é um algoritmo escrito numa linguagem que é entendida por


um computador, chamada linguagem de programação
Conceitos básicos
12

➢ Ciclo de desenvolvimento de um programa


Conceitos básicos
13

Sintaxe: é o conjunto de regras que definem quais as relações válidas entre os


componentes da linguagem, tais como as palavras e as frases. A sintaxe nada
diz em relação ao significado das frases da linguagem.

Exemplo: Palavras reservadas da linguagem

auto break case char const continue default do


double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while

Semântica: define qual o significado de cada frase da linguagem.


Conceitos básicos 14

➢ Compilador

• É um programa que traduz o programa escrito por nós em código fonte (source
code) para código máquina, pronto para ser executado pelo computador;

• Lê todo o programa “source”, valida a sintaxe e traduz tudo para linguagem
máquina, introduzindo algumas optimizações;

• Se existirem erros publica uma lista do que encontrou e não produz o


executável;

• Só detecta erros de sintaxe e algumas más práticas de programação. Não


detecta os erros de lógica, que são da nossa responsabilidade;

Exemplos: C, C++, Java


Conceitos básicos 15

Compilação
➢ Compilação
swap (int v[], int k) {
int temp;
Programa em temp = v[k]; Compilador
linguagem C v[k] = v[k+1];
v[k+1] = temp;
}
...
Programa em add $2, $4,$2
linguagem Assembler
lw $15, 0($2)
Assembly lw $16, 4($2)
...

00000000101000010000000000011000
00000000100011100001100000100001
Programa em 10001100011000100000000000000000
linguagem 10001100111100100000000000000100
máquina 10101100111100100000000000000000
Conceitos básicos 16

➢ Interpretador

• Não necessitam de compilação prévia para serem executadas.

• Traduz e executa linha a linha. Os erros de sintaxe referem-se apenas à linha que
está a ser executada;

• A execução é mais lenta, pois inclui a interpretação;

Exemplos: Basic, Prolog, Perl


Sumário
17

➢ Apresentação
➢ Programa
➢ Bibliografia

➢ Introdução à linguagem C

➢ Breve história e conceitos básicos


➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Estruturas Básicas do C 18

➢ Expressão
❑ Conjunto de acções que, após calculado, pode produzir um resultado ou valor

❑ Pode ser constituído por


▪ Um conjunto de valores numéricos e operadores
▪ Ex: (5+3) * 7
▪ Variáveis e operadores
▪ Ex: (x-1) % y

➢ { } – expressam agrupamento de expressões

➢ { – início

➢ } – final
Estruturas Básicas do C 19

➢ Instrução

❑ É uma expressão terminada por “;” (ponto e vírgula)

❑ É a unidade independente mais elementar de um programa em C


▪ Ex:
▪ int numero;
▪ numero = 3 +2;
▪ printf(“ola mundo !”);
Estruturas Básicas do C 20

➢ Comentários
❑ são úteis para os humanos mas são ignorados pelo computdor.São em geral
usados para descrever o código
❑ Formatos
▪ Multilinha

Ex: /* int x = 2;
int idade = 26; */

▪ Linha a Linha

Ex: // int x = 2;
// int idade = 26;

➢ Função – grupo de instruções logicamente relacionadas. É composta por: tipo de


retorno(output), nome, lista de argumentos (input) e expressões
Estrutura Básica de um Programa em C 21
Estrutura Básica de um Programa em C 22
Sumário 23

➢ Apresentação
➢ Programa
➢ Bibliografia

➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Tipos de dados em C 24

➢ Numa linguagem de programação um tipo de dados

• Define o tipo de informação que vai ser tratada


• Define as operações que sobre eles se podem efectuar

➢ Cada linguagem de programação disponibiliza ao programador


um conjunto de tipo de dados próprio.
Tipos de dados em C 25

❑ Podem ser organizados em 3 grupos consoante multiplicidade de valores


que estes representam

➢ void
Vamos começar por
▪ Multiplicidade = 0 aqui!

➢ Escalares (ex: inteiro)


▪ Multiplicidade = 1

➢ Agregados (ex: vetores)


▪ Multiplicidade >= 1
Tipos Escalares 26

❑ char representa valores do tipo caracteres

❑ int representa valores inteiros

❑ enum representa um conjunto especifico de inteiros (enumerados)

❑ float e double representam valores reais


Tipos Escalares 27

❑ As restantes palavras reservadas qualificam os tipos (não


representam tipos por si)

▪ Devem preceder o nome do tipo a modificar

❑ Mas não podem ser aplicadas em todos os tipos, por exemplo:

▪ int – pode ser precedido por todos os qualificadores


▪ double – pode apenas ser precedido por long
Tipos Inteiros 28

❑ Incluem os números que pertencem ao conjunto Z

❑ Em C podem ser
▪ com sinal – representam números quer negativos, quer positivos
▪ Sem sinal – representam apenas valores absolutos (números >= 0
Limites dos Tipos Inteiros 29

❑ Dependem do número de bytes usados para os armazenar

▪ Depende dos qualificadores utilizados

▪ Influenciam o número e magnitude de números que é possível


representar
Limites dos Tipos Inteiros 30

Tipo #Bytes Mínimo Máximo


char 1 -128 127
short int 2 -32.768 32.767
int 4 -2.147.483.648 2.147.483.647
long int 4 ou 8 9.223.372.036.854.775.808 9.223.372.036.854.775.807

Tipo #Bytes Mínimo Máximo


unsigned char 1 0 255
unsigned short int 2 65.535
unsigned int 4 4.294.967.295
unsigned long int 4 ou 8 18.446.744.073.709.551.615
Declaração de variáveis do tipo Inteiro 31
Declaração de variáveis do tipo Inteiro(Cont) 32

➢Para definir literais dos tipos unsigned int e long int


deve-se usar os sufixos U e L:

▪ long int nl = -0xAAB321L;

▪ unsigned int n2 = 55U;

▪ unsigned long int n3 = 077777UL;


Caracteres 33

❑ São sempre armazenados sob forma de sequência de


bits, independentemente da linguagem de
programação

❑ Em C não há distinção entre caracteres e inteiros


❑ Podemos usá-los nas operações como sendo
inteiros
Caracteres Especiais 34

❑ São precedidos por ‘\’

Caracter Significado
\a beep

\b Backspace

\f Form feed

\n Newline

\r Carriage return

\t Tab horizontal

\v Tab vertical

\\ Barra invertida
Declaração de variáveis do tipo caracter 35

❑ char c1;

❑ unsigned char c2;

❑ Os valores ou literais do tipo char podem ser definidos


entre plicas:
Lógicos ou Booleanos 36

❑ Na linguagem estes são representados à custa de


inteiros

▪ Tudo o que é 0 é considerado falso


▪ Tudo o resto é considerado verdadeiro

▪ int verdade = 1;
▪ int falso = 0;
Reais 37

❑ Incluem os números que pertencem o conjunto R,


podendo ser positivos ou negativos.

❑ Existem 3 tipos

❑ float
❑ double
❑ long double
Limites dos Números Reais 38
Dimensão dos Tipos de Dados 39

❑ O operador sizeof permite saber o tamanho em bytes


de uma variável ou tipo.
Enumerados 40

❑ É um tipo inteiro limitado a um conjunto restrito de valores

❑ A sua definição é a seguinte:

❑ enum nome { valor1[=literal_int_1], valor2[=literal_int_2],


…]}

❑ Exemplos:
❑ enum mes {Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out,
Nov, Dez };

Por omissão Jan = 0, Fev = 1, …


Enumerados (Cont) 41

❑ + Exemplos

❑ enum mes {Jan=1, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out,
Nov, Dez };

Neste caso Jan = 1, Fev = 2, …

❑ Os valores dos literais por omissão são sequenciais e não se


podem repetir
Declaração de variáveis e literais do tipo 42
enum

❑ enum booleano {false, verd} b1, b2;

❑ enum mes aulas, ferias;

❑ Quando se declara o tipo podem-se logo criar variáveis (ex; b1 e b2)

▪ Mas é mais comum declarar primeiro o tipo e só depois as variáveis (ex:


aulas e ferias)

❑ Atenção que em ambos os casos o nome do tipo deve ser sempre precedido
de enum:

▪ enum booleano
▪ enum mes
Sumário 43

➢ Apresentação
➢ Programa
➢ Bibliografia

➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis e Constantes
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comando de entrada e saída
➢ Comandos de atribuição
Variáveis 44

• Uma variável representa uma localização(endereço) de memória na qual


podemos guardar um valor de um dado tipo.

• A cada variável está associada um tipo de dados e um identificador(nome da


variável).

• O nome de uma variável começa obrigatariamente por uma letra ou pelo carácter
“_” (underscore). Os restantes caracteres podem ser letras, algarismos ou o
underscore.

• O valor de uma variável pode variar durante a execução do programa.

• O compilador distingue letras maiúsculas das minúsculas pelo que contador,


Contador, CONTADOR são 3 identificadores distintos.

• O nome (identificador) de uma variável não pode ser uma palavra reservada da
linguagem .

• Todas as variáveis têm ser declaradas antes de serem utilizadas.


45
Variáveis

❑ As variáveis são declaradas usando a sintaxe:

tipo_de_dado nome_variavel;

Exemplo:
int x ; double y;
double z; int mes;

❑ As variáveis podem também ser inicializadas logo na declaração, por exemplo:

int idade = 12;


double media = 16.4;

❑ Variáveis do mesmo tipo podem ser declaradas na mesma linha:


int j = 0, k;
float x, y = 0.0;
46
Constantes

❑ Constants (variáveis que não podem ver o seu valor alterado ao longo da execução
do código

❑Com recurso ao pré-processador


❑ #define MAXIMO 1500
❑ #define LINHAS 25

❑Com o qualificador const

❑const double PI = 3.1415926;


❑const int LIMITE = 1024;
Sumário 47

➢ Apresentação
➢ Programa
➢ Bibliografia

➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Compontentes e Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis e Constantes
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Operadores 48

❑ Operadores aritméticos
▪ Binários

▪ Incremento ou decremento
Operadores 48
++op vs op++

❑ Exemplo 1 ❑ Exemplo 2

▪ Qual será o resultado? ▪ Qual será o resultado?


• cont vale 1
• cont vale 2
• cont vale 2
• cont vale 2

• Para simplificar, podemos pensar que a expressão ++cont significa “incremente cont
imediatamente” enquanto que a expressão cont++ significa “use agora o valor de cont
e depois incremente-o”.
Operadores 49

❑ Operadores relacionais
Operadores 50

❑ Operadores de atribuição
▪ Operador de atribuição normal =

▪ Operadores de atribuição compactos:


Operadores 51

❑ Operadores Lógicos
Operador Ternário 52
?:

❑ Operador Ternário (?:)

▪ Tem um funcionamento semelhante a um if


▪ exp1 ? exp2 : exp3
▪ exp1 é avaliada.
▪ Se for verdadeira, a expressão condicional devolve o termo exp2
▪ Se for falsa, devolve termo exp3

❑Exemplo 1

8
Operador Ternário 53
?:

❑Exemplo 2
▪ 'x' > 'T' ? 10 : 5
▪ 1 ? 10 : 5 = 10
Sumário 54

➢ Apresentação
➢ Programa
➢ Bibliografia

➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Compontentes e Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Conversão entre tipos de dados
➢ Comandos de entrada e saída
Conversão entre tipos de dados 55

❑Todos os tipos de dados cuja representação é compatível entre si


são convertido de forma automática
❑ Nos restantes casos é preciso fazer uma conversão explícita
(cast)

❑Ex 1: operações entre inteiros e reais


• 3.5 + 4
• Não existe operador para fazer a soma entre real e
inteiro
• 4 é convertido pra 4.0 e é usada a soma real

❑Ex 2: operações entre inteiros


▪ short a = 100;
▪ int b = a;
▪ a é convertido para int
Conversão entre tipos de dados 56

➢ Ex 3: Operações entre caracteres e inteiros

➢ Não existe operador para fazer a comparação/soma entre caracter e inteiro

▪ 'A' e 'Z' e 'a' são convertidos para inteiro


Regra geral de conversão entre tipo de dados 57

➢ O espaço ocupado pelos diversos tipo de dados é limitador às conversões automáticas.

Genericamente, podemos concluir que é possível converter um valor para um tipo


que ocupe mais espaço, mas o inverso não é verdadeiro.

➢ Assumindo a precisão do tipo de dados é verdadeira a seguinte relação:

❑ byte > short > int > long > float > double

O oposto é falso
Conversão de Tipos Explícita 58
Operador Cast

➢ O operador cast têm a função de forçar uma variável a ser de um tipo diferente do que
foi declarado.

➢ Exercio 1 - Sem Operador Cast

➢ Para n1 = 3, n2 = 2, n3 = 4, n4 = 1 o valor da soma seria 10, logo se a dividirmos por 4 , o


resultado deve ser 2,50, já que res é do tipo float.

➢ Mas se executarmos o programa o resultado será igual a 2,00. Porque?


Conversão de Tipos Explícita 59
Operador Cast (Cont)

➢ Os valores para n1, n2, n3, e n4 são todos inteiros logo a soma destes também dá um
número inteiro. Essa soma foi dividida por um número inteiro (4), que é um número
inteiro.

➢ Em C, uma operação realizada apenas com números inteiros não passa um valor de
outro tipo como resposta.

➢ Para forçarmos que uma variável seja de um outro tipo temos de recorrer ao operador
Cast.

➢ Sintaxe do Cast

❑ variavel = (tipo) operação;


Conversão de Tipos Explícita 60
Operador Cast

➢ Exercio 1 - Com Operador Cast

➢ Na linha 12 foi utilizado o operador Cast


Sumário 61

➢ Apresentação
➢ Programa
➢ Bibliografia

➢ Introdução à linguagem C
➢ Breve história e conceitos básicos
➢ Instalação e utilização do compilador (Devcpp-4.9.9.4)
➢ Compontentes e Estrutura de um programa em C
➢ Tipos de dados em C
➢ Variáveis
➢ Operadores e expressões
➢ Comandos de entrada e saída
Saída de dados 62

❑ Em C, para apresentar mensagens no monitor pode utilizar-se a função printf. Esta


função está definida na biblioteca stdio.h e permite diversos argumentos.

▪ Exemplo:
printf(“Olá Mundo!”);

❑ Chama a função printf com o argumento “Olá Mundo!” que é a cadeia de


caracteres que se pretende mostrar no ecrã.

❑ De notar que a cadeia de caracteres pode conter sequências de escape, por exemplo
printf(“Ola\nMundo!”);

Mostrará no monitor:
Olá
Mundo!

❑ \n equivale a New line (nova linha)


Saída de dados 63

❑ Para imprimir um numéro inteiro no ecrã


printf("Eu tenho %d anos", 18);

❑ Dentro do printf, entre as aspas, os números inteiros são representados por: %d

❑ Podemos colocar vários números inteiros representados por %d dentro das


aspas, e seus valores serão os que vem após a vírgula, na mesma ordem.

❑ Por exemplo, um programa em C que imprima no ecrã "Eu nasci em 2112, no dia
21 do mes 12”

printf("Eu nasci no ano %d, no dia %d do mes %d", 2112, 21, 12);
Saída de dados 64

❑Tabela que apresenta qual o carácter que devemos utilizar


para imprimir os diferentes tipos de dados

Carácter mostra argumento como…


d ou i inteiro
c carácter
s string
f reais
Leitura de dados 65

❑ Para a entrada de dados existe uma função análoga a printf, a função


scanf com a sintaxe:

scanf(“%caracter_equivalente_ao_tipo_da_variavel ”, &nome_da_variavel)

& - equivale ao endereço de memória da variável ou seja ao espaço reservado


quando declaramos a variável.

▪ Para lermos um numéro inteiro do teclado por exemplo:

int numero;
scanf(“%d”, &numero);

• O erro mais comum é esquecer o &, cuidado!


Leitura de dados 66

❑ Podemos receber mais do que um numéro dentro de uma função scanf

scanf("%d %d", &num1, &num2);


Leitura de dados 67

❑Tabela que apresenta qual o carácter que devemos utilizar


para leitura dos diferentes tipos de dados

Carácter Tipo de dados


d ou i inteiro
c carácter
s string
f float
lf double
Dúvidas 67

Você também pode gostar