Post on 03-Jun-2020
1
Aula 01:Introdução à linguagem C
MCTA001Algoritmos e Estruturas de Dados I
Prof. Jesús P. Mena-Chalco
1Q-2019
2
Linguagens de programação
3
Linguagem de programação
É um conjunto limitado de:Símbolos (e.g., comandos, identificadores, caracteres)Regras de sintaxe (descrevem de forma precisa ações)
4
Tipos de linguagem de programação
Linguagem de máquina
Compreendida pelo computador. Dependente da arquitetura do computador
Linguagem debaixo nível
Utiliza mnemonicos para a representação de ações elementaresEx. Assembler
Linguagem de alto nível
Utiliza instruções próximas da linguagem humanaEx. C, Java, Python, PHP
(*) Fonte: http://www.webopedia.com/TERM/A/assembly_language.html
Linguagens de programação
250 linguagens de programção: 01/02/2015
https://www.oreilly.com/programming/free/files/2016-european-software-development-salary-survey.pdf
(*) Fonte: http://www.circuitstoday.com/compilers-vs-interpreters-an-overview-of-the-differences
CC++
PythonScilabPHP
Compilar Vs Interpretar
11
Sobre a linguagem de programação
Atualmente existem várias linguagens que são consideradas para este tipo de disciplinas...(Python, C, C++, Java, Haskell, Ruby)
Também vários paradigmas de programação (e.g. procedural, orientado a objetos,) podem ser consideradas...
Todo programador competente deve saber/entender a linguagem C/C++.
Tradicionalmente é utilizada a linguagem C.
Nessa disciplina usaremos C.
12
A linguagem de programação C
13
Sobre a linguagem C
Permite escrever programas de alta desempenho.
C funciona em um nível mais baixo que outras linguagens (da uma ideia melhor do que realmente está acontecendo).
É preferida no mundo científico:Poucas palavras reservadas.Bom controle da máquina.SO livres (Linux/UNIX) são feitos em C.Base de outras linguagens: C++, Java, C#
14
Sobre a linguagem C
C é uma linguaguem estruturada, desenvolvida nos Laboratórios BELL(1969-1972), por Dennis Ritchie.É uma linguagem de propósito geral
Dialetos:K&R C (1978)ANSI CISO CC99C11 (Dez. 2011)
Kenneth L. Thompson (ling. B) Dennis M. Ritchie (ling. C)
(*) Fonte: http://www.catb.org/~esr/jargon/html/U/Unix.html
15
The National Medal of Technology and Innovation 1998 Laureates
(*) Fonte: http://www.uspto.gov/about/nmti/recipients/1998.jsp
Kenneth L. Thompson (1943-) Dennis M. Ritchie (1941-2011)
16
Sobre a linguagem C
Influenciada por:ALGOL 68AssemblyBBCPLCPLFortranPL/I
Influenciou:AWK, BitC, C++, C#, C Shell, D, Euphoria, Go, Java, JavaScript, Limbo, Logic Basic, Objective-C, Perl, PHP, Python, ...
17
Sobre a linguagem C
18
C VS Java
Não possui suporte a orentação a objetos.
Linguagem de nível intermediário:controle mais direto do hardware, porém
também suporta estruturas complexas
Gerenciamento de memória explícito.
Detecção de erro explícita (sem try/catch).
Maior performance do programa final.
Maior dificuldade de manutenção.
19
20
Aná
lise
su
bjet
iva
(*) Fonte: https://helloacm.com/a-quick-performance-comparison-on-languages-at-codeforces/
21
Sobre a linguagem C
Precisa instalar um compilar no seu computador:Usaremos o GNU Compiler Collection (gcc)
No Linux: é padrão.No Mac/OS: tera que instalar as ferramentas Xcode/Developer.No MS-Windows:
Cygwin (simulação completa de um ambiente UNIX).
Ming-W (Minimalist GNU for Windows).
22
Sobre o IDE (Integrated development environment)
Ambiente de desenvolvimento integrado:
● Kdevelp● Code Blocks● Netbeens C++● Eclipse CDT● Dev C++● C-Free ● Vi● Emacs
● Cloud9● Replit
24
Repl.it
É uma ambiente de desenvolvimento integrado (IDE) muito popular para testes rápidos.
Tem suporte para as principais linguagens de programação.
25
Linguagem C
char tem 8 bits (não é 16 bits como em Java)
26
Saída e entrada de dados, stdio.h
27
Linguagem C
não existe tipo booleano (usar int ou char):0 falso
≠ 0 verdadeiro
tipos inteiros podem ser signed ou unsigned
Na verdade C99 permite o uso de palavras true/false nos programas (mas o compilador os trata como os valores 1 e 0 de qualquer forma)
28
Linguagem C: inteiros e reais
29
Linguagem C: Tipos de dados
Tipos de dados primários.Tipos de dados derivados.Tipos definidos pelo usuário.
(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php
30
Tipos de dados
char: 1short: 2int: 4long: 8float: 4double: 8long louble: 16
31
Conversão de tipo
int a = 20; long b;
b = (long) a;
→ Valor preservado, só o tipo é alterado
32
Conversão de tipo
int a;long b = 32;
a = (int) b;
→ Perigoso: se b não “cabe” num int, seu valor será truncado
33
Conversão de tipo
int a = 17;int b = 3;
double x = a / b;
→ Neste caso x contém o valor 5
34
Conversão de tipo
int a = 17;int b = 3;
double x = a / (double) b;
→ Neste caso x contém o valor 5.66667
35
Conversão de tipo
double x = 5.93487;int j = (int) x;
→ Neste caso j contém o valor 5
36
Vetores
Para declarar um vetor de inteiros de comprimento 100 faça:int V[100];
→ Note que os índices vão de 0 a 99
Para inicializar o vetor com zeros faça:int V[100] = {0};
Para inicializar com outra constante faça manualmente (usando um laço)
37
Vetores
38
Vetores
39
Vetores
vetor
40
Vetores
vetor
...
...
41
Atividade em aula
42
Questão: 1
Critique o código.Qual seria o resultado da execução da segunda linha?
43
Questão: 2
Escreva um programa, que através de um laço, imprima os 100 primeiros números impares, na sua ordem crescente:
1 3 5 7 9 ...
44
Questão: 2
Escreva um programa, que através de um laço, imprima os 100 primeiros números impares, na sua ordem crescente:
1 3 5 7 9 ...
45
Questão: 2
46
Questão: 3
Escreva um programa, que através de chamadas recursivas, imprima os 100 primeiros números impares, na sua ordem crescente:
1 3 5 7 9 ...
47
Questão: 3
Escreva um programa, que através de chamadas recursivas, imprima os 100 primeiros números impares, na sua ordem crescente:
1 3 5 7 9 ...
48
Qual é a diferença?